Top Banner
45

Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Jul 07, 2018

Download

Documents

duongdung
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization
Page 2: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Developing an optimization model

Building Block 5• Solve optimization model

maximize ( MaxReturn )

Page 10: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

• 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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Debugging & Profiling

Page 22: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Stochastic model

• mmrng: Simulation runs• mmsp: Stochastic LP• mmxad: Visual Interface

Page 24: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Dantzig-Wolfe Decomposition

• Multi-item, multi-period production planning

Page 28: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

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/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Modeling statements with Xpress-Mosel and Xpress-IVE

Page 30: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Modeling and programming statements with Xpress-Mosel

Page 31: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Browsing the solution and model entities in Xpress-IVE

Page 32: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Run statistics in Xpress-IVE

Page 33: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Problem matrix in Xpress-IVE

Page 34: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Problem matrix/solution in Xpress-IVE

Page 35: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Deployment wizard in Xpress-IVE

Page 36: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Deployment wizard in Xpress-IVE

Page 37: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Visualization, model controls, and mapping with Xpress-XAD

Page 38: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

One Program: Mosel model as procedure called from GUI

Page 39: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Interactive solving through GUI with all data in computer memory

Page 40: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Scenario Management

Page 41: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Scenario comparison/visualization

Page 42: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Scenario with stricter service miles requirements and shortfalls

Page 43: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Visualization: Pop-up information

Page 44: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization

Visualization: Forcing facilities open or closed

Page 45: Optimization Modeling and Programming in Xpress- Moselegon.cheme.cmu.edu/ewocp/docs/Mosel_evolution.pdf · Optimization Modeling and Programming in Xpress- ... Developing an optimization