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

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

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
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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