optimization services instance language (osil)
DESCRIPTION
Optimization Services Instance Language (OSiL). Robert Fourer Jun Ma Northwestern University Kipp Martin University of Chicago. Kipp Martin University of Chicago [email protected]. Outline. 1. Background and motivation for an instance standard. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/1.jpg)
Robert Fourer, Jun Ma, Kipp Martin
Optimization Services Instance Language (OSiL)
Kipp MartinUniversity of Chicago
Robert Fourer
Jun Ma
Northwestern University
Kipp Martin
University of Chicago
![Page 2: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/2.jpg)
Robert Fourer, Jun Ma, Kipp Martin2
Outline
1. Background and motivation for an instance standard
2. Why use XML for the instance standard
3. Optimization Services instance Language (OSiL) - thisreplaces LPFML for the linear case and can be used torepresent a wide variety of optimization problems.
4. The OSiL schema
5. The OSExpressTree data structure
6. Real time data and user defined functions
7. Extensions
![Page 3: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/3.jpg)
Robert Fourer, Jun Ma, Kipp Martin3
A Distributed Modeling Environment
![Page 4: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/4.jpg)
Robert Fourer, Jun Ma, Kipp Martin4
A Distributed Modeling Environment
In a loosely coupled setting we have a separationof the modeling language process and solver process.
Key idea: model versus instance
The solver wants an instance as opposed to a model
![Page 5: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/5.jpg)
Robert Fourer, Jun Ma, Kipp Martin5
A MODEL
set PROD; # products set DEP; # processing departments
param hours {DEP}; # time available in each department param rate {DEP,PROD}; # hours used in each dept per product unit made param profit {PROD}; # profit per unit of each product made var Make {PROD} >= 0; # number of units of each product to be made
maximize TotalProfit: sum {j in PROD} profit[j] * Make[j];
subject to HoursAvailable {i in DEP}:sum {j in PROD} rate[i,j] * Make[j] <= hours[i];
This is a model. It is symbolic, general, concise, and understandable (Fourer, 1983).
![Page 6: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/6.jpg)
Robert Fourer, Jun Ma, Kipp Martin6
DATA
param: PROD: profit := std 10 del 9 ;
param: DEP: hours := cutanddye 630 sewing 600 finishing 708 inspectandpack 135 ;
param: rate: std del := cutanddye 0.7 1.0 sewing 0.5 0.8333 finishing 1.0 0.6667 inspectandpack 0.1 0.25 ;
![Page 7: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/7.jpg)
Robert Fourer, Jun Ma, Kipp Martin7
MODEL + DATA = INSTANCE
maximize TotalProfit: 10*Make[‘std’] + 9*Make[‘del’];
subject to HoursAvailable[‘cutanddye’]: 0.7*Make[‘std’] + Make[‘del’] <= 630;
subject to HoursAvailable[‘sewing’]: 0.5*Make[‘std’] + 0.8333*Make[‘del’] <= 600;
subject to HoursAvailable[‘finishing’]: Make[‘std’] + 0.6667*Make[‘del’] <= 708;
subject to HoursAvailable[‘inspectandpack’]: 0.1*Make[‘std’] + 0.25*Make[‘del’] <= 135;
Objective: represent a model instance using XML.
![Page 8: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/8.jpg)
Robert Fourer, Jun Ma, Kipp Martin8
There is a proliferation of modeling languagesand solvers
AIMMS CLP
AMPL CPLEX
GAMS GLPK
LINGO LINDO
Mosel MINOS
MPL MOSEK
OPL Xpress-MP
![Page 9: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/9.jpg)
Robert Fourer, Jun Ma, Kipp Martin9
Consequence: a lot of drivers are need for everymodeling language to talk to every solver
![Page 10: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/10.jpg)
Robert Fourer, Jun Ma, Kipp Martin10
It would be nice to have an instance representationlanguage.
![Page 11: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/11.jpg)
Robert Fourer, Jun Ma, Kipp Martin11
The Case for XML
1. Validation against a schema provides for error checking
2. Validation against a schema promotes stability of a standard
3. The schema can restrict data values to appropriate types, e.g. row names to string, indices to integer, coefficients to double
4. The schema can define keys to insure, for example, no row or column name is used more than once.
5. The schema can be extended to include new constraint types or solver directives
6. There is a lot of open source software to make parsing easy.
![Page 12: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/12.jpg)
Robert Fourer, Jun Ma, Kipp Martin12
XML and Optimization Systems
1. When instances are stored in XML format, optimization technology solutions are more readily integrated into broader IT infrastructures
2. XML is used for Web Services – important for distributed computing
3. The XML format lends itself well to compression – more on this later
4. The XML format can be combined with other technologies, e.g. XSLT to present results in human readable formats
5. Encryption standards are emerging for XML – possibly important in a commercial setting.
![Page 13: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/13.jpg)
Robert Fourer, Jun Ma, Kipp Martin13
XML Concepts
XML (Extensible Markup Language) – an XML file contains both data and Markup (Elements (tags) and Attributes)
The tags are organized in a tree like structure. The closing tag of a child element preceding the closing tag of its parent.
<constraints> <con name=“cutanddye" ub="630"/> <con name="sewing" ub="600"/> <con name="finishing" ub="708"/> <con name="inspectandpack" ub="135"/></constraints>
ELEMENTATTRIBUTE
![Page 14: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/14.jpg)
Robert Fourer, Jun Ma, Kipp Martin14
OSiL Instance Representation
€
min100(x1 − x02)2 + (1− x0)2 + 9* x1
€
x0 + 3* x0 * x1 + x12 ≤10
€
ln(x0x1) + 7* x0 + 5 * x1 ≥10
€
x0,x1 ≥ 0
![Page 15: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/15.jpg)
Robert Fourer, Jun Ma, Kipp Martin15
OSiL Instance Representation
The variables:
<variables number="2"> <var lb="0" name="x0" type="C"/> <var lb="0" name="x1" type="C"/></variables>€
x0,x1 ≥ 0
<variables number="2"> <var lb="0" ub=“INF” name="x0" type="C"/> <var lb="0" ub=“INF” name="x1" type="C"/></variables>
-OR-
![Page 16: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/16.jpg)
Robert Fourer, Jun Ma, Kipp Martin16
OSiL Instance Representation
€
min 9* x1The objective functions:
<objectives number="1"> <obj maxOrMin="min" name="minCost">] <coef idx="1">9</coef> </obj></objectives>
![Page 17: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/17.jpg)
Robert Fourer, Jun Ma, Kipp Martin17
OSiL Instance Representation
€
≤10The constraints:
€
≥10
<constraints number="2"> <con name=“row0” ub="10.0"/> <con name=“row1” lb="10.0"/></constraints>
![Page 18: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/18.jpg)
Robert Fourer, Jun Ma, Kipp Martin18
OSiL Instance Representation
€
x0The linear constraint terms:
€
7 * x0 + 5 * x1
<linearConstraintCoefficients> <start> <el>0</el><el>2</el><el>3</el> </start> <rowIdx> <el>0</el><el>1</el><el>1</el> </rowIdx> <value> <el>1.0</el><el>7.0</el><el>5.0</el> </value></linearConstraintCoefficients>
![Page 19: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/19.jpg)
Robert Fourer, Jun Ma, Kipp Martin19
OSiL Instance Representation
The nonlinear terms:
€
100(x1 − x02)2 + (1− x0)2
€
3* x0 * x1 + x12
€
ln(x0x1)
<nl idx="1"> <ln> <times> <var idx="0"/> <var idx="1"/> </times> </ln></nl>
![Page 20: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/20.jpg)
Robert Fourer, Jun Ma, Kipp Martin20
OSiL Instance Representation
The nonlinear terms:
€
100(x1 − x02)2 + (1− x0)2
€
3* x0 * x1 + x12
€
ln(x0x1)
<nl idx="0"> <quadratic> <qpTerm idxOne="0" idxTwo="1" coef="3"/> <qpTerm idxOne="0" idxTwo=”0" coef=”1"/> </quadratic></nl>
![Page 21: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/21.jpg)
Robert Fourer, Jun Ma, Kipp Martin21
XML Schema
Schema Class
XML File Object
Key idea – a schema. Similar to the concept of a class in object orient programming. Critical for parsing!
We need a schema to represent an instance.
![Page 22: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/22.jpg)
Robert Fourer, Jun Ma, Kipp Martin22
Schema – a Constraints Object
<constraints number="2"> <con name=“row0” ub="10.0"/> <con name=“row1” lb="10.0"/></constraints>
![Page 23: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/23.jpg)
Robert Fourer, Jun Ma, Kipp Martin23
Schema – a Constraints and Con Class
<xs:complexType name="constraints"><xs:sequence>
<xs:element name="con" type="con" maxOccurs="unbounded"/></xs:sequence><xs:attribute name="number" type="xs:nonNegativeInteger" use="required"/>
</xs:complexType><xs:complexType name="con">
<xs:attribute name="name" type="xs:string" use="optional"/><xs:attribute name="lb" type="xs:double" use="optional" default="-INF"/><xs:attribute name="ub" type="xs:double" use="optional" default="INF"/><xs:attribute name="mult" type="xs:positiveInteger" use="optional" default="1"/>
</xs:complexType>
![Page 24: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/24.jpg)
Robert Fourer, Jun Ma, Kipp Martin24
The OSiL Schema
![Page 25: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/25.jpg)
Robert Fourer, Jun Ma, Kipp Martin25
The OSiL Schema
![Page 26: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/26.jpg)
Robert Fourer, Jun Ma, Kipp Martin26
OSnLNode
Problem: parsing, doing function and gradient evaluations,etc. a real PAIN with numerous operators and operands.
We avoid this by having EVERY nonlinear node an OSnLNodeinstance.
<xs:complexType name="OSnLNode" mixed="false"/> <xs:element name="OSnLNode" type="OSnLNode" abstract="true">
![Page 27: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/27.jpg)
Robert Fourer, Jun Ma, Kipp Martin27
OSnLNode
<xs:complexType name="OSnLNodeTimes"> <xs:complexContent> <xs:extension base="OSnLNode"> <xs:sequence minOccurs="2" maxOccurs="2"> <xs:element ref="OSnLNode"/> </xs:sequence> </xs:extension> </xs:complexContent></xs:complexType><xs:element name="times" type="OSnLNodeTimes" substitutionGroup="OSnLNode"/>
The Multiplication Operator Extend OSnLNode
![Page 28: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/28.jpg)
Robert Fourer, Jun Ma, Kipp Martin28
OSExpressionTree
€
100(x1 − x02)2 + (1− x0)2 + 9 * x1
QuickTime™ and aTIFF (Uncompressed) decompressor
are needed to see this picture.
![Page 29: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/29.jpg)
Robert Fourer, Jun Ma, Kipp Martin29
OSExpressionTee (Parsing)
A traditional C approach for parsing. Construct*e a pointer to root of expression tree. Then processthe expression tree.
double evaluate\_function (expr *e, double x[]){ ... opnum = e->op switch(opnum){ case PLUS_opno: ... case MINU_opno: ... ... }}
![Page 30: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/30.jpg)
Robert Fourer, Jun Ma, Kipp Martin30
OSExpressionTree (Parsing)
We take an object oriented approach, every node inthe expression tree is an instance in the OSnLNode class
OSnLNode nlNode = null; String sNodeName = "";try{ sNodeName = ele.getLocalName(); String sNlNodeClass = m\_sPackageName + "." + m\_sNlNodeStartString +] sNodeName.substring(0, 1).toUpperCase() + sNodeName.substring(1); Class nlNodeClass = Class.forName(sNlNodeClass); nlNode = (OSnLNode)nlNodeClass.newInstance();} // now process attributes
“OSnLNodeTimes”An instance of OSnLNode which isan OSnLNodeTimes
![Page 31: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/31.jpg)
Robert Fourer, Jun Ma, Kipp Martin31
Real Time Data
In many cases the instance generated by the solvercontains time sensitive data. For example, in many financialmodels.
Before solving we can:
1. Repeat entire modeling process and have modeling language generate a new model from scratch.
OR
2. Have the “reader” library update only the necessarydata before sending it to the solver.
![Page 32: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/32.jpg)
Robert Fourer, Jun Ma, Kipp Martin32
Real Time Data
Real timedata
![Page 33: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/33.jpg)
Robert Fourer, Jun Ma, Kipp Martin33
Real Time Data
![Page 34: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/34.jpg)
Robert Fourer, Jun Ma, Kipp Martin34
Real Time Data
![Page 35: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/35.jpg)
Robert Fourer, Jun Ma, Kipp Martin35
Markowitz Example
€
min ps(R − Rsi=1
3
∑ )2
€
R_
≥ r
€
r[s,msft]x[msft] + r[s, pg]x[pg] + r[s,ge]x[ge] = Rs
€
pss=1
3
∑ Rs = R_
€
x[msft] + x[pg] + x[ge] =1
€
x[msft],x[pg],x[ge] ≥ 0
![Page 36: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/36.jpg)
Robert Fourer, Jun Ma, Kipp Martin36
Markowitz and Real Time Data
€
R_
≥ r
<variables number="4"> <var name="msft" lb="0.0" ub=".75"/> <var name="pg" lb="0.0" ub=".75"/> <var name="ge" lb="0.0" ub=".75"/> <var name="RBAR" lb=".05"/></variables>
<realTimeData> <defaultURI>http://www.stockdata.com/stockdata.xml</defaultURI> <variables> <var idx="3" type="lb"> <xPath path="/xmlData/portfolioReturn/text()" /> </var> </variables></realTimeData>
![Page 37: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/37.jpg)
Robert Fourer, Jun Ma, Kipp Martin37
User Defined Functions
Many istances often:
1. Contain terms repeated many times, either verbatim orWith small systematic changes
2. Contain definitional variables
![Page 38: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/38.jpg)
Robert Fourer, Jun Ma, Kipp Martin38
User Defined Functions
€
r[s,msft]x[msft] + r[s, pg]x[pg] + r[s,ge]x[ge] = Rs
<userFunction name="stockRet" numArg="2"> <xPath path="//scenario[@id=$scenario]/stock[@name=$name]/@return"> <xPathIndex indexName="scenario"> <arg idx="0"/> </xPathIndex> <xPathIndex indexName="name"> <arg idx="1"/> </xPathIndex> </xPath></userFunction>
Idx=0 idx = 1
![Page 39: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/39.jpg)
Robert Fourer, Jun Ma, Kipp Martin39
User Defined Functions
<userFunction name = "scenarioRet" numArg="1"> <sum> <times> <userF name="stockRet"> <arg idx="0"/> <string value="msft"/> </userF> <var idx="0"/> </times>
</sum></userFunction>
€
r[s,msft]x[msft] + r[s, pg]x[pg] + r[s,ge]x[ge] = Rs
![Page 40: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/40.jpg)
Robert Fourer, Jun Ma, Kipp Martin40
OSrL - Optimization Services Result Language
![Page 41: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/41.jpg)
Robert Fourer, Jun Ma, Kipp Martin41
OSrL - Optimization Services Result Language
![Page 42: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/42.jpg)
Robert Fourer, Jun Ma, Kipp Martin42
OSrL - Optimization Services Result Language
![Page 43: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/43.jpg)
Robert Fourer, Jun Ma, Kipp Martin43
A Distributed Modeling Environment
![Page 44: Optimization Services Instance Language (OSiL)](https://reader035.vdocuments.site/reader035/viewer/2022081519/5681364e550346895d9dcf47/html5/thumbnails/44.jpg)
Robert Fourer, Jun Ma, Kipp Martin44
http://www.optimizationservices.org
QUESTIONS?