optimization modeling and programming in xpress-...
TRANSCRIPT
![Page 1: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/1.jpg)
![Page 2: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/2.jpg)
Optimization Modeling and Programming in Xpress-Mosel
Alkis VazacopoulosCAPD MeetingCarnegie Mellon UniversityPittsburgh, PAMarch 11-13, 2007
![Page 3: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/3.jpg)
Agenda• Modeling Basics
– Modeling and Programming Features– Optimization– Deployment
• Modeling Advanced– Algorithms– Debugging & Profiling– Mosel Modules– I/O Drivers– Model Separation
![Page 4: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/4.jpg)
Developing an optimization model in Mosel
• Describe the business problem in the Mosel algebraic modeling language
• Ex: Capital Budgeting• Set of projects with net return• Each project has capital and personnel
requirements• Limited capital and personnel resources• Select set of projects to maximize return
![Page 5: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/5.jpg)
Developing an optimization model
Building Block 1• Model name and parameters
model "CapitalBudgeting"
uses "mmxprs" ! Use Xpress optimizer
parameters ! Change at run-timeDATA_FILE = ‘projects.dat’
end-parameters………
end-model
![Page 6: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/6.jpg)
Developing an optimization model
Building Block 2• Data declaration and reading
declarationsPROJECTS : set of stringCAPITAL_MAX : realCAPITAL : array (PROJECTS) of real
end-declarations
initializations from DATA_FILECAPITAL_MAXCAPITAL as ‘CAPITAL_DATA'
end-initializations
![Page 7: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/7.jpg)
Developing an optimization model
Building Block 3• Variable and constraint declarations
declarationsdo_project: array( PROJECTS ) of mpvar
! Decision variableMaxReturn, Capital, Personnel: linctr
! Constraintsend-declarations
forall ( p in PROJECTS )do_project (p) is_binary ! Binary variable
![Page 8: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/8.jpg)
Developing an optimization model
Building Block 4• Build constraints and objective
Total return is sum of selected projects returns
MaxReturn :=
sum ( p in PROJECTS ) RETURN(p) * do_project(p)
![Page 9: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/9.jpg)
Developing an optimization model
Building Block 5• Solve optimization model
maximize ( MaxReturn )
![Page 10: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/10.jpg)
Developing an optimization model
Building Block 6• Solution
if getprobstat=XPRS_OPT thenwriteln("Solution:\n Objective: ", getobjval)forall(i in PROJECTS)
write(" x(", i, "): ", getsol(x(i)))end-if
![Page 11: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/11.jpg)
Deploying Optimization Models
Mosel source file
Mosel binary file
developer
end-user
• protects intellectual property
• platform independent
• efficient
![Page 12: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/12.jpg)
More Mosel Features
• Modeling– Variable: free, integer, partial integer, semi-
continuous, sos1, sos2
• Programming– Dynamic arrays – Sparse data – Selections: if-then-elif-then-else, case– Loops: forall, while, repeat-until
![Page 13: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/13.jpg)
Subroutines
Functions
forward function add ( a : integer, b : integer) : integer
…..Temp := add(10,20) ! this will return "30“…..function add ( a : integer, b : integer ) : integer
returned := a + b
end-function
![Page 14: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/14.jpg)
Algorithms
These functionalities allow• Multiple optimization calls in one model• Create and solve different problems in one
model file• Implement advanced algorithms, experiment
and try more new ideas
Benefit: Spend more time in ‘designing’rather than ‘implementing’
![Page 15: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/15.jpg)
Algorithms: Modifying the Problem
After solving first problem, one can• Create ‘additional’ new variables and constraints• Delete existing constraints• Add / delete variables to existing constraints• Hide / Un-hide constraints
Solve second modified problem ….
![Page 16: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/16.jpg)
Algorithms: Modifying the Problem
Add / delete variables to existing constraints
Constraint := 5*x + 2*y <= 20…maximize ( Objective_1 )…Constraint += 7*y the ‘revised’ constraint is… Constraint := 5*x + 9*y <= 20maximize ( Objective_2)…
![Page 17: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/17.jpg)
Algorithms: Modifying the Problem
Can implement algorithms / heuristics such as• Chronological decomposition of planning period
in scheduling problems• Draw efficient frontier by changing R.H.S.• Add constraints and monitor change in objective• Column Generation (Master and Sub-problem)
![Page 18: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/18.jpg)
Algorithms: Interact with Optimizer
OptimizerSolve
Program Starts
Program Terminates
Model Execution
Callback functions
ResultRetrieval
Data Input
Output Results
![Page 19: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/19.jpg)
Algorithms
• Intermediate MIP solutionSet-up for integer solution
setcallback (XPRS_CB_INTSOL, "WriteReport" )
! Callback to function ‘WriteReport’……
minimize ( Cost )
![Page 20: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/20.jpg)
• Branch and Cut
Set-up for cut generation
setcallback ( XPRS_CB_CM, "add_cut" )
! Cut manager callback to function ‘add_cut’……
minimize ( Cost )
Algorithms: Interact with Optimizer
![Page 21: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/21.jpg)
Debugging & Profiling
![Page 22: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/22.jpg)
Modules
• mmodbc: ODBC connectivity• mmquad: QP, MIQP• mmxslp: NLP, MINLP• mmsp: Stochastic LP, MILP• mmive: Graphing• mmxad: GUI builder• kalis: CP
Extend Mosel: NI can be used to create user defined modules
![Page 23: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/23.jpg)
Stochastic model
• mmrng: Simulation runs• mmsp: Stochastic LP• mmxad: Visual Interface
![Page 24: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/24.jpg)
I/O drivers
• Data exchange between concurrent models:
– reading and writing data from/to memory– synchronization of data access
1. shmem2. mempipe
![Page 25: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/25.jpg)
Model Separation
• module: mmjobs• Sequential model• Parallel model• Exs:
– Column Generation– Dantzig-Wolfe Decomposition
![Page 26: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/26.jpg)
Column generation -Flowchart
Solve Knapsack problem
Initial Master Problem Columns
Master ProblemSolve LP
Master ProblemSolve MIP
Define new Problem
add columnProfitable Pattern?
No
Yes
![Page 27: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/27.jpg)
Dantzig-Wolfe Decomposition
• Multi-item, multi-period production planning
![Page 28: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/28.jpg)
Dantzig-Wolfe decomposition
Sub Problem for Factory 1
dual
Sub Problem for Factory 2
Master Problem
Proposals
![Page 29: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/29.jpg)
Modeling statements with Xpress-Mosel and Xpress-IVE
![Page 30: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/30.jpg)
Modeling and programming statements with Xpress-Mosel
![Page 31: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/31.jpg)
Browsing the solution and model entities in Xpress-IVE
![Page 32: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/32.jpg)
Run statistics in Xpress-IVE
![Page 33: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/33.jpg)
Problem matrix in Xpress-IVE
![Page 34: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/34.jpg)
Problem matrix/solution in Xpress-IVE
![Page 35: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/35.jpg)
Deployment wizard in Xpress-IVE
![Page 36: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/36.jpg)
Deployment wizard in Xpress-IVE
![Page 37: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/37.jpg)
Visualization, model controls, and mapping with Xpress-XAD
![Page 38: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/38.jpg)
One Program: Mosel model as procedure called from GUI
![Page 39: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/39.jpg)
Interactive solving through GUI with all data in computer memory
![Page 40: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/40.jpg)
Scenario Management
![Page 41: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/41.jpg)
Scenario comparison/visualization
![Page 42: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/42.jpg)
Scenario with stricter service miles requirements and shortfalls
![Page 43: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/43.jpg)
Visualization: Pop-up information
![Page 44: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/44.jpg)
Visualization: Forcing facilities open or closed
![Page 45: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewo/docs/Mosel_evolution.pdf · Programming in Xpress-Mosel Alkis Vazacopoulos CAPD Meeting Carnegie Mellon](https://reader033.vdocuments.us/reader033/viewer/2022051810/6019e3b5af043b7241624865/html5/thumbnails/45.jpg)