foliorun.c |
/********************************************************
Mosel Library Example Problems
==============================
file foliorun.c
```````````````
Loading and running a BIM file.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Aug. 2003
********************************************************/
#include
#include "xprm_rt.h"
int main(int argc, char *argv[])
{
XPRMmodel model;
int result;
XPRMinit(); /* Initialize Mosel */
model = XPRMloadmod("foliodata.bim", NULL); /* Load compiled model */
XPRMrunmod(model, &result, NULL);
XPRMunloadmod(model);
return 0;
}
|
|
folioexec.c |
/********************************************************
Mosel Library Example Problems
==============================
file folioexec.c
````````````````
Executing a Mosel model.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Aug. 2003
********************************************************/
#include
#include "xprm_mc.h"
int main(int argc, char *argv[])
{
int result;
XPRMinit(); /* Initialize Mosel */
/* Execute = compile/load/run a model */
XPRMexecmod(NULL, "foliodata.mos", NULL, &result, NULL);
return 0;
}
|
|
folioparam.c |
/********************************************************
Mosel Library Example Problems
==============================
file folioparam.c
`````````````````
Parameterized model execution.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Aug. 2003
********************************************************/
#include
#include "xprm_mc.h"
int main(int argc, char *argv[])
{
XPRMmodel model;
int result;
char params[128];
XPRMinit(); /* Initialize Mosel */
sprintf(params, "OUTFILE=result2.dat,MAXRISK=0.4,MAXVAL=0.25");
/* Execute = compile/load/run a model */
XPRMexecmod(NULL, "foliodata.mos", params, &result, &model);
XPRMunloadmod(model);
return 0;
}
|
|
foliomat.c |
/********************************************************
Mosel Library Example Problems
==============================
file foliomat.c
```````````````
Exporting a matrix.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Aug. 2003
********************************************************/
#include
#include "xprm_mc.h"
int main(int argc, char *argv[])
{
int result, type;
XPRMmodel model;
XPRMalltypes rvalue;
XPRMlinctr obj;
XPRMinit(); /* Initialize Mosel */
/* Execute = compile/load/run a model */
XPRMexecmod(NULL, "foliodata.mos", NULL, &result, &model);
/* Retrieve a model object by its name */
type = XPRMfindident(model, "Return", &rvalue);
if((XPRM_TYP(type)!=XPRM_TYP_LINCTR)|| /* Check the type: */
(XPRM_STR(type)!=XPRM_STR_REF)) /* it must be a reference to a linear
constraint */
return 1;
obj = rvalue.linctr; /* Store the objective function reference */
XPRMexportprob(model, "p", "folio", obj);
return 0;
}
|
|
folioobj.c |
/********************************************************
Mosel Library Example Problems
==============================
file folioobj.c
```````````````
Accessing model results.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Aug. 2003
********************************************************/
#include
#include "xprm_mc.h"
int main(int argc, char *argv[])
{
XPRMmodel model;
XPRMalltypes rvalue, itemname;
XPRMarray varr;
XPRMmpvar x;
XPRMset set;
int result, indices[1], type;
XPRMinit(); /* Initialize Mosel */
/* Execute = compile/load/run a model */
XPRMexecmod(NULL, "foliodata.mos", NULL, &result, &model);
/* Test whether a solution is found
and print the objective value */
if((XPRMgetprobstat(model)&XPRM_PBRES)==XPRM_PBOPT)
printf("Objective value: %g\n", XPRMgetobjval(model));
/* Retrieve the decision variables */
type=XPRMfindident(model,"frac",&rvalue); /* Get model object 'frac' */
if((XPRM_TYP(type)!=XPRM_TYP_MPVAR)|| /* Check the type: */
(XPRM_STR(type)!=XPRM_STR_ARR)) /* it must be an `mpvar' array */
return 1;
varr = rvalue.array;
/* Retrieve the index names */
type = XPRMfindident(model,"SHARES",&rvalue); /* Get model object 'SHARES'*/
if((XPRM_TYP(type)!=XPRM_TYP_STRING)|| /* Check the type: */
(XPRM_STR(type)!=XPRM_STR_SET)) /* it must be a set of strings */
return 2;
set = rvalue.set;
XPRMgetfirstarrentry(varr, indices); /* Get the first entry of array varr
(we know that the array is dense
and has a single dimension) */
do /* Print out the solution */
{
XPRMgetarrval(varr,indices,&x); /* Get a variable from varr */
printf("%s:\t%g%%\n", XPRMgetelsetval(set, indices[0], &itemname)->string,
XPRMgetvsol(model,x)*100); /* Print the solution value */
} while(!XPRMgetnextarrentry(varr, indices)); /* Get the next index */
return 0;
}
|
|
foliorun.cs |
/********************************************************
Mosel Library Example Problems
==============================
file foliorun.cs
````````````````
Loading and running a BIM file.
(c) 2009 Fair Isaac Corporation
author: J.Farmer, Jun. 2009
********************************************************/
using System;
using Mosel;
namespace mosel_getting_started {
public class foliorun
{
public static void Main(string[] args)
{
XPRM mosel;
XPRMModel mod;
mosel = XPRM.Init(); // Initialize Mosel
mod = mosel.LoadModel("foliodata.bim"); // Load compiled model
mod.Run();
Console.WriteLine("`foliodata' returned: " + mod.Result);
}
}
}
|
|
folioexec.cs |
/********************************************************
Mosel Library Example Problems
==============================
file folioexec.cs
`````````````````
Compiling, loading and running a model file.
(c) 2009 Fair Isaac Corporation
author: J.Farmer, Jun. 2009
********************************************************/
using Mosel;
using System;
namespace mosel_getting_started {
public class folioexec
{
public static void Main(string[] args)
{
XPRM mosel;
XPRMModel mod;
mosel = XPRM.Init(); // Initialize Mosel
mosel.Compile("foliodata.mos"); // Compile the model
mod = mosel.LoadModel("foliodata.bim"); // Load compiled model
mod.Run(); // Run the model
Console.WriteLine("`foliodata' returned: " + mod.Result);
}
}
}
|
|
folioparam.cs |
/********************************************************
Mosel Library Example Problems
==============================
file folioparam.cs
``````````````````
Parameterized model execution.
(c) 2009 Fair Isaac Corporation
author: J.Farmer, Jun. 2009
********************************************************/
using System;
using Mosel;
namespace mosel_getting_started {
public class folioparam
{
public static void Main(string[] args)
{
XPRM mosel;
XPRMModel mod;
mosel = XPRM.Init(); // Initialize Mosel
mosel.Compile("foliodata.mos"); // Compile the model
mod = mosel.LoadModel("foliodata.bim"); // Load compiled model
// Set the run-time parameters
mod.ExecParams = "OUTFILE=result2.dat,MAXRISK=0.4,MAXVAL=0.25";
mod.Run(); // Run the model
Console.WriteLine("`foliodata' returned: " + mod.Result);
}
}
}
|
|
foliomat.cs |
/********************************************************
Mosel Library Example Problems
==============================
file foliomat.cs
````````````````
Exporting a matrix.
(c) 2009 Fair Isaac Corporation
author: J.Farmer, Jun. 2009
********************************************************/
using Mosel;
namespace mosel_getting_started {
public class foliomat
{
public static void Main(string[] args)
{
XPRM mosel;
XPRMModel mod;
mosel = XPRM.Init(); // Initialize Mosel
mosel.Compile("foliodata.mos"); // Compile the model
mod = mosel.LoadModel("foliodata.bim"); // Load compiled model
mod.Run(); // Run the model
mod.ExportProblem("p", "folio");
}
}
}
|
|
folioobj.cs |
/********************************************************
Mosel Library Example Problems
==============================
file folioobj.cs
````````````````
Accessing model results.
(c) 2009 Fair Isaac Corporation
author: J.Farmer, Jun. 2009
********************************************************/
using Mosel;
using System;
namespace mosel_getting_started {
public class folioobj
{
public static void Main(string[] args)
{
XPRM mosel;
XPRMModel model;
XPRMArray varr;
XPRMMPVar x;
XPRMSet shares;
int[] indices;
mosel = XPRM.Init(); // Initialize Mosel
mosel.Compile("foliodata.mos"); // Compile the model
model = mosel.LoadModel("foliodata.bim"); // Load compiled model
model.Run(); // Run the model
// Test whether a solution is found
// and print the objective value
if(model.ProblemStatus==XPRMProblemStatus.PB_OPTIMAL)
Console.WriteLine("Objective value: " + model.ObjectiveValue);
// Retrieve the decision variables
varr=(XPRMArray)model.FindIdentifier("frac"); // Get model object 'frac',
// it must be an array
// Retrieve the index names
shares=(XPRMSet)model.FindIdentifier("SHARES"); // Get model object 'SHARES',
// it must be a set
indices = varr.FirstIndex; // Get the first entry of array varr
// (we know that the array is dense)
do
{
x = varr.Get(indices).AsMPVar(); // Get a variable from varr
Console.WriteLine(shares.Get(indices[0]) + ":\t" + x.Solution*100 + "%");
// Print the solution value
} while(varr.NextIndex(indices)); // Get the next index
}
}
}
|
|
foliorun.java |
/********************************************************
Mosel Library Example Problems
==============================
file foliorun.java
``````````````````
Loading and running a BIM file.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Mar. 2006
********************************************************/
import com.dashoptimization.*;
public class foliorun
{
public static void main(String[] args) throws Exception
{
XPRM mosel;
XPRMModel mod;
mosel = new XPRM(); // Initialize Mosel
mod = mosel.loadModel("foliodata.bim"); // Load compiled model
mod.run();
System.out.println("`foliodata' returned: " + mod.getResult());
}
}
|
|
folioexec.java |
/********************************************************
Mosel Library Example Problems
==============================
file folioexec.java
```````````````````
Compiling, loading and running a model file.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Mar. 2006
********************************************************/
import com.dashoptimization.*;
public class folioexec
{
public static void main(String[] args) throws Exception
{
XPRM mosel;
XPRMModel mod;
mosel = new XPRM(); // Initialize Mosel
mosel.compile("foliodata.mos"); // Compile the model
mod = mosel.loadModel("foliodata.bim"); // Load compiled model
mod.run(); // Run the model
System.out.println("`foliodata' returned: " + mod.getResult());
}
}
|
|
folioparam.java |
/********************************************************
Mosel Library Example Problems
==============================
file folioparam.java
````````````````````
Parameterized model execution.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Mar. 2006
********************************************************/
import com.dashoptimization.*;
public class folioparam
{
public static void main(String[] args) throws Exception
{
XPRM mosel;
XPRMModel mod;
mosel = new XPRM(); // Initialize Mosel
mosel.compile("foliodata.mos"); // Compile the model
mod = mosel.loadModel("foliodata.bim"); // Load compiled model
// Set the run-time parameters
mod.execParams = "OUTFILE=result2.dat,MAXRISK=0.4,MAXVAL=0.25";
mod.run(); // Run the model
System.out.println("`foliodata' returned: " + mod.getResult());
}
}
|
|
foliomat.java |
/********************************************************
Mosel Library Example Problems
==============================
file foliomat.java
``````````````````
Exporting a matrix.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Mar. 2006
********************************************************/
import com.dashoptimization.*;
public class foliomat
{
public static void main(String[] args) throws Exception
{
XPRM mosel;
XPRMModel mod;
mosel = new XPRM(); // Initialize Mosel
mosel.compile("foliodata.mos"); // Compile the model
mod = mosel.loadModel("foliodata.bim"); // Load compiled model
mod.run(); // Run the model
mod.exportProblem("p", "folio");
}
}
|
|
folioobj.java |
/********************************************************
Mosel Library Example Problems
==============================
file folioobj.java
``````````````````
Accessing model results.
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Mar. 2006
********************************************************/
import com.dashoptimization.*;
public class folioobj
{
public static void main(String[] args) throws Exception
{
XPRM mosel;
XPRMModel model;
XPRMArray varr, darr;
XPRMMPVar x;
XPRMSet set;
int[] indices;
mosel = new XPRM(); // Initialize Mosel
mosel.compile("foliodata.mos"); // Compile the model
model = mosel.loadModel("foliodata.bim"); // Load compiled model
model.run(); // Run the model
// Test whether a solution is found
// and print the objective value
if(model.getProblemStatus()==XPRMModel.PB_OPTIMAL)
System.out.println("Objective value: " + model.getObjectiveValue());
// Retrieve the decision variables
varr=(XPRMArray)model.findIdentifier("frac"); // Get model object 'frac',
// it must be an array
// Retrieve the index names
set=(XPRMSet)model.findIdentifier("SHARES"); // Get model object 'SHARES',
// it must be a set
indices = varr.getFirstIndex(); // Get the first entry of array varr
// (we know that the array is dense)
do
{
x = varr.get(indices).asMPVar(); // Get a variable from varr
System.out.println(set.get(indices[0]) + ":\t" + x.getSolution()*100 + "%");
// Print the solution value
} while(varr.nextIndex(indices)); // Get the next index
}
}
|
|
foliorun.bas |
Attribute VB_Name = "Module1"
Option Explicit
' ********************************************************
' Mosel Library Example Problems
' ==============================
' file foliorun.bas
' `````````````````
' Loading and running a BIM file.
'
' (c) 2008 Fair Isaac Corporation
' author: S.Heipcke, Aug. 2003
' ********************************************************
Sub Main()
Dim result As Long
Dim model
' Initialize Mosel
XPRMinit
' Load compiled model
model = XPRMloadmod("foliodata.bim", "")
XPRMrunmod model, result, ""
XPRMunloadmod (model)
model = XPRM_NULL
End Sub
|
|
folioexec.bas |
Attribute VB_Name = "Module1"
Option Explicit
' ********************************************************
' Mosel Library Example Problems
' ==============================
' file folioexec.bas
' ``````````````````
' Executing a Mosel model.
'
' (c) 2008 Fair Isaac Corporation
' author: S.Heipcke, Aug. 2003
' ********************************************************
Sub Main()
Dim result As Long
Dim model
' Initialize Mosel
XPRMinit
' Execute = compile/load/run a model
XPRMexecmod "", "foliodata.mos", "", result, model
XPRMunloadmod (model)
model = XPRM_NULL
End Sub
|
|
folioparam.bas |
Attribute VB_Name = "Module1"
Option Explicit
' ********************************************************
' Mosel Library Example Problems
' ==============================
' file folioparam.bas
' ```````````````````
' Parameterized model execution.
'
' (c) 2008 Fair Isaac Corporation
' author: S.Heipcke, Aug. 2003
' ********************************************************
Sub Main()
Dim result As Long
Dim model
' Initialize Mosel
XPRMinit
' Execute = compile/load/run a model
XPRMexecmod "", "foliodata.mos", "OUTFILE=result2.dat,MAXRISK=0.4,MAXVAL=0.25", result, model
XPRMunloadmod (model)
model = XPRM_NULL
End Sub
|
|
foliodata.mos |
(!******************************************************
Mosel Example Problems
======================
file foliodata.mos
``````````````````
Modeling a small LP problem
to perform portfolio optimization.
-- Parameters, data input from file,
result output to file --
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Aug. 2003
*******************************************************!)
model "Portfolio optimization with LP"
uses "mmxprs"
parameters
DATAFILE= "folio.dat" ! File with problem data
OUTFILE= "result.dat" ! Output file
MAXRISK = 1/3 ! Max. investment into high-risk values
MAXVAL = 0.3 ! Max. investment per share
MINAM = 0.5 ! Min. investment into N.-American values
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 DATAFILE
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 bounds on the investment per share
forall(s in SHARES) frac(s) <= MAXVAL
! Solve the problem
maximize(Return)
! Solution printing to a file
fopen(OUTFILE, F_OUTPUT)
writeln("Total return: ", getobjval)
forall(s in SHARES)
writeln(strfmt(s,-12), ": \t", strfmt(getsol(frac(s))*100,5,2), "%")
fclose(F_OUTPUT)
end-model
|
|
folioexcel.mos |
(!******************************************************
Mosel Example Problems
======================
file folioexcel.mos
```````````````````
Modeling a small LP problem
to perform portfolio optimization.
-- Parameters, data input from Excel,
result output to Excel --
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Feb. 2007
*******************************************************!)
model "Portfolio optimization with LP (Excel)"
uses "mmxprs", "mmsheet"
parameters
DATAFILE = "folio.xls" ! Spreadsheet with problem data
DBDATA = "foliodata" ! Spreadsheet range with problem data
DBSOL = "folioresult" ! Range for solution data
MAXRISK = 1/3 ! Max. investment into high-risk values
MAXVAL = 0.3 ! Max. investment per share
MINAM = 0.5 ! Min. investment into N.-American values
end-parameters
declarations
SHARES: set of string ! Set of shares
RET: array(SHARES) of real ! Estimated return in investment
RISK: array(SHARES) of boolean ! List of high-risk values among shares
NA: array(SHARES) of boolean ! List of shares issued in N.-America
end-declarations
! Data input from spreadsheet
initializations from "mmsheet.excel:" + DATAFILE
[RET,RISK,NA] as DBDATA
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 SHARES | RISK(s)) frac(s) <= MAXRISK
! Minimum amount of North-American values
sum(s in SHARES | NA(s)) frac(s) >= MINAM
! Spend all the capital
sum(s in SHARES) frac(s) = 1
! Upper bounds on the investment per share
forall(s in SHARES) frac(s) <= MAXVAL
! Solve the problem
maximize(Return)
! Solution printing
writeln("Total return: ", getobjval)
forall(s in SHARES)
writeln(strfmt(s,-12), ": \t", strfmt(getsol(frac(s))*100,5,2), "%")
! Solution output to spreadsheet
declarations
Solfrac: array(SHARES) of real ! Solution values
end-declarations
forall(s in SHARES) Solfrac(s):= getsol(frac(s))*100
initializations to "mmsheet.excel:" + DATAFILE
Solfrac as "grow;"+DBSOL
end-initializations
end-model
|
|