Folio - Modelling examples from 'Getting started'
Description
- Chapter 3 Inputting and Solving a Linear Programming problem
- foliolp.mos: modeling and solving a small LP problem
- foliolperr.mos: LP model with syntax errors
- foliolps.mos: LP model using string indices
- Chapter 4 Working with data
- foliodata.mos (data file: folio.dat): data input from file, result
output to a file, model parameters
- folioodbc.mos (data files: folio.xls, folio.mdb, folio.sqlite): data input
from a spreadsheet or database, result output to a spreadsheet or database,
model parameters
- folioexcel.mos (data file: folio.xls): same as folioodbc.mos but
with Excel-specific data input and output (Windows only)
- foliosheet.mos (data file: folio.xls): same as folioodbc.mos but
with data input and output through generic spreadsheet access
- foliocsv.mos (data file: folio.csv): same as folioodbc.mos but
with data input and output through generic spreadsheet access in CSV format
- Chapter 5 Drawing user graphs
- folioloop.mos (data files: folio.dat, foliodev.dat): re-solving with
varied parameter settings
- folioloop_graph.mos (data files: folio.dat, foliodev.dat): re-solving with
varied parameter settings, graphical solution display
- foliolps_graph.mos: same as foliolps, adding graphical solution display
- Chapter 6 Mixed Integer Programming
- foliomip1.mos (data file: folio.dat): modeling and solving a small
MIP problem (binary variables)
- foliomip2.mos (data file: folio.dat): modeling and solving a small
MIP problem (semi-continuous variables)
- Chapter 7 Quadratic Programming
- folioqp.mos (data file: folioqp.dat): modeling and solving a QP and
a MIQP problem
- folioqp_graph.mos (data files: folioqp.dat, folioqpgraph.dat):
re-solving a QP problem with varied parameter settings, graphical solution
display
- folioqc.mos (data file: folioqp.dat): modeling and solving a QCQP and
- foliomiqc.mos (data file: folioqp.dat): modeling and solving a MIQCQP
- Chapter 8 Heuristics
- folioheur.mos (data file: folio.dat): heuristic solution of a MIP problem
Source Files
By clicking on a file name, a preview is opened at the bottom of this page. Data Files
foliomip2.mos
(!******************************************************
Mosel Example Problems
======================
file foliomip2.mos
``````````````````
Modeling a small MIP problem
to perform portfolio optimization.
-- Imposing a minimum investment per share --
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Aug. 2003
*******************************************************!)
model "Portfolio optimization with MIP"
uses "mmxprs"
parameters
MAXRISK = 1/3 ! Max. investment into high-risk values
MINAM = 0.5 ! Min. investment into N.-American values
MAXVAL = 0.3 ! Max. investment per share
MINVAL = 0.1 ! Min. investment per share
end-parameters
declarations
SHARES: set of string ! Set of shares
RISK: set of string ! Set of high-risk values among shares
NA: set of string ! Set of shares issued in N.-America
RET: array(SHARES) of real ! Estimated return in investment
end-declarations
initializations from "folio.dat"
RISK RET NA
end-initializations
declarations
frac: array(SHARES) of mpvar ! Fraction of capital used per share
end-declarations
! Objective: total return
Return:= sum(s in SHARES) RET(s)*frac(s)
! Limit the percentage of high-risk values
sum(s in RISK) frac(s) <= MAXRISK
! Minimum amount of North-American values
sum(s in NA) frac(s) >= MINAM
! Spend all the capital
sum(s in SHARES) frac(s) = 1
! Upper and lower bounds on the investment per share
forall(s in SHARES) do
frac(s) <= MAXVAL
frac(s) is_semcont MINVAL
end-do
! Solve the problem
maximize(Return)
! Solution printing
writeln("Total return: ", getobjval)
forall(s in SHARES) writeln(s, ": ", getsol(frac(s))*100, "%")
end-model
|