FICO
FICO Xpress Optimization Examples Repository
FICO Optimization Community FICO Xpress Optimization Home
Back to examples browserPrevious exampleNext example

Folio - Advanced modelling and solving tasks

Description
Advanced modelling and solving tasks for a portfolio optimization problem:
  • Automated solver tuning (foliolptune.mos)
  • Defining an integer solution callback (foliocb.mos, callback specification by name: foliocbm.mos; using an 'mpsol' object: foliocb_sol.mos)
  • Using the solution enumerator for multiple MIP solutions (folioenumsol.mos)
  • Handling infeasibility
    • handling infeasibility through deviation variables (folioinfeas.mos)
    • retrieving infeasible row/column from presolve (folioinfcause.mos)
    • retrieving IIS - LP, MIP, NLP infeasible (folioiis.mos, foliomiis.mos, folionliis.mos)
    • using the built-in infeasibility repair functionality (foliorep.mos)
    • same as foliorep, using an 'mpsol' object (foliorep_sol.mos)
  • Data transfer in memory
    • running foliomemio.mos with data transfer in memory (runfolio.mos)
    • same running foliomemio2.mos, grouping tables with identical index sets in "initializations" blocks (runfolio2.mos)
    • main model running several model instances in parallel (runfoliopar.mos)
  • Remote models on a distributed architecture
    • running foliomemio.mos on a remote instance of Mosel (runfoliodistr.mos)
    • main model running several model instances in parallel, each on a different (remote) instance of Mosel (runfoliopardistr.mos)
  • Remote execution via XPRD
    • See examples in the Mosel Whitepapers directory moselpar/XPRD
  • XML and JSON data formats
    • reading data from an XML file, solution output in XML format on screen and to a new file (folioxml.mos, folioxmlqp.mos)
    • generate HTML output file as an XML document (runfolioxml.mos)
    • using JSON-format data files, reading data from a JSON file, solution output in JSON format on screen and to a new file (foliojson.mos)
  • HTTP
    • starting an HTTP server managing requests from HTTP clients (foliohttpsrv.mos)
    • HTTP client exchanging XML data files with an HTTP server (foliohttpclient.mos)


Source Files

Data Files





folioqpvar.xml

<variance>
 <var ind1="1" ind2="1">0.1</var>
 <var ind1="2" ind2="2">19</var>
 <var ind1="2" ind2="3">-2</var>
 <var ind1="2" ind2="4">4</var>
 <var ind1="2" ind2="5">1</var>
 <var ind1="2" ind2="6">1</var>
 <var ind1="2" ind2="7">1</var>
 <var ind1="2" ind2="8">0.5</var>
 <var ind1="2" ind2="9">10</var>
 <var ind1="2" ind2="10">5</var>
 <var ind1="3" ind2="2">-2</var>
 <var ind1="3" ind2="3">28</var>
 <var ind1="3" ind2="4">1</var>
 <var ind1="3" ind2="5">2</var>
 <var ind1="3" ind2="6">1</var>
 <var ind1="3" ind2="7">1</var>
 <var ind1="3" ind2="9">-2</var>
 <var ind1="3" ind2="10">-1</var>
 <var ind1="4" ind2="2">4</var>
 <var ind1="4" ind2="3">1</var>
 <var ind1="4" ind2="4">22</var>
 <var ind1="4" ind2="6">1</var>
 <var ind1="4" ind2="7">2</var>
 <var ind1="4" ind2="9">3</var>
 <var ind1="4" ind2="10">4</var>
 <var ind1="5" ind2="2">1</var>
 <var ind1="5" ind2="3">2</var>
 <var ind1="5" ind2="5">4</var>
 <var ind1="5" ind2="6">-1.5</var>
 <var ind1="5" ind2="7">-2</var>
 <var ind1="5" ind2="8">-1</var>
 <var ind1="5" ind2="9">1</var>
 <var ind1="5" ind2="10">1</var>
 <var ind1="6" ind2="2">1</var>
 <var ind1="6" ind2="3">1</var>
 <var ind1="6" ind2="4">1</var>
 <var ind1="6" ind2="5">-1.5</var>
 <var ind1="6" ind2="6">3.5</var>
 <var ind1="6" ind2="7">2</var>
 <var ind1="6" ind2="8">0.5</var>
 <var ind1="6" ind2="9">1</var>
 <var ind1="6" ind2="10">1.5</var>
 <var ind1="7" ind2="2">1</var>
 <var ind1="7" ind2="3">1</var>
 <var ind1="7" ind2="4">2</var>
 <var ind1="7" ind2="5">-2</var>
 <var ind1="7" ind2="6">2</var>
 <var ind1="7" ind2="7">5</var>
 <var ind1="7" ind2="8">0.5</var>
 <var ind1="7" ind2="9">1</var>
 <var ind1="7" ind2="10">2.5</var>
 <var ind1="8" ind2="2">0.5</var>
 <var ind1="8" ind2="5">-1</var>
 <var ind1="8" ind2="6">0.5</var>
 <var ind1="8" ind2="7">0.5</var>
 <var ind1="8" ind2="8">1</var>
 <var ind1="8" ind2="9">0.5</var>
 <var ind1="8" ind2="10">0.5</var>
 <var ind1="9" ind2="2">10</var>
 <var ind1="9" ind2="3">-2</var>
 <var ind1="9" ind2="4">3</var>
 <var ind1="9" ind2="5">1</var>
 <var ind1="9" ind2="6">1</var>
 <var ind1="9" ind2="7">1</var>
 <var ind1="9" ind2="8">0.5</var>
 <var ind1="9" ind2="9">25</var>
 <var ind1="9" ind2="10">8</var>
 <var ind1="10" ind2="2">5</var>
 <var ind1="10" ind2="3">-1</var>
 <var ind1="10" ind2="4">4</var>
 <var ind1="10" ind2="5">1</var>
 <var ind1="10" ind2="6">1.5</var>
 <var ind1="10" ind2="7">2.5</var>
 <var ind1="10" ind2="8">0.5</var>
 <var ind1="10" ind2="9">8</var>
 <var ind1="10" ind2="10">16</var>
</variance>

Back to examples browserPrevious exampleNext example