+ All Categories
Home > Documents > Solving MINLP problems with AIMMS

Solving MINLP problems with AIMMS

Date post: 22-Feb-2016
Category:
Upload: leyna
View: 39 times
Download: 7 times
Share this document with a friend
Description:
Solving MINLP problems with AIMMS. Pittsburgh June 4, 2014 Marcel Hunting AIMMS Software Developer. Overview. Introducing AIMMS Generated Math Program (GMP) Outer Approximation AIMMS Presolver Implement Branch-and-Bound. AIMMS Modeling Structure. - PowerPoint PPT Presentation
Popular Tags:
18
www.aimms.com Solving MINLP problems with AIMMS Pittsburgh June 4, 2014 Marcel Hunting AIMMS Software Developer
Transcript
Page 1: Solving MINLP problems with AIMMS

www.aimms.com

Solving MINLP problems with AIMMS

PittsburghJune 4, 2014

Marcel Hunting AIMMS Software Developer

Page 2: Solving MINLP problems with AIMMS

www.aimms.com

Overview

• Introducing AIMMS

• Generated Math Program (GMP)

• Outer Approximation

• AIMMS Presolver

• Implement Branch-and-Bound

Page 3: Solving MINLP problems with AIMMS

www.aimms.com

AIMMS Modeling Structure• AIMMS, integrated &

interactive modeling system– Modeling language, integrated

GUI, direct access to solvers,advanced deployment options,and extensive development tools

Page 4: Solving MINLP problems with AIMMS

www.aimms.com

AIMMS Modeling Structure• AIMMS, integrated &

interactive modeling system– Modeling language, integrated

GUI, direct access to solvers,advanced deployment options,and extensive development tools

Page 5: Solving MINLP problems with AIMMS

www.aimms.com

Model generation

Variables:JobSchedule(j,s)StartTime(s,m)TimeSpan

Constraints:OneJobPerSchedule(s)OneSchedulePerJob(j)MachineStartTime(s,m)ScheduleStartTime(s,m)

Columns:

c0 … c48

c49 … c118

c119

Rows:

r0 … r6

r7 … r13

r14 … r76

r77 … r136

Solve

Page 6: Solving MINLP problems with AIMMS

www.aimms.com

Generated MP

Matrix• generated columns

• generated rows

• generated matrix coefficients

• mappings from/to variables and constraints

Solution Repository

1

• solution status

• level values

• [basis information]

2

• solution status

• level values

• [basis information]

. . .

Pool of Solver Sessions

1

• solver

• option settings

2

• solver

• option settings

. . .

Symbolic MP

• symbolic variables

• symbolic constraints

Generated Math Program (GMP)

Page 7: Solving MINLP problems with AIMMS

www.aimms.com

Basic GMP

Normally: solve MathProgram;

GMP: myGMP := GMP::Instance::Generate(MathProgram); GMP::Instance::Solve(myGMP);

Modify: GMP::Column::SetUpperBound(myGMP,StartTime(s1,m1),5);

Page 8: Solving MINLP problems with AIMMS

www.aimms.com

Selection of GMP functions• GMP::Instance:: Generate, Solve, Copy, FixColumns,

CreateFeasibilityProblem, CreatePresolved

• GMP::Column:: Add, Delete, Freeze, SetLowerBound

• GMP::Row:: Add, Delete, SetRightHandSide

• GMP::Coefficient:: Set, Get, SetQuadratic, GetQuadratic

• GMP::Solution:: Copy, SendToModel, GetColumnValue

• GMP::Linearization:: Add, Delete

• GMP::SolverSession:: Execute, AsynchronousExecute

Page 9: Solving MINLP problems with AIMMS

www.aimms.com

Outer Approximation module

• Module: GMPOuterApproximation

• Call:

myGMP := GMP::Instance::Generate( myMathProgram ) ; GMPOuterApprox::DoOuterApproximation( myGMP );

• Uses AIMMS presolver by default

• Can be combined with Multi-start module

• Quesada & Grossmann (1992) version for convex MINLP• Uses lazy constraints callback• Uses nested solve

Page 10: Solving MINLP problems with AIMMS

www.aimms.com

Results AOA - COA

Problem AOA COABatchS151208M 17 6BatchS201210M 41 6CLay0205H 17 5CLay0305H 31 8FLay04H 33 2FLay05H > 3hr 172fo7_2 54 11fo9 1161 5183netmod_dol2 388 63netmod_kar1 142 5no7_ar3_1 142 265

Problem AOA COAo7 4494 629o7_ar4_1 2923 643RSyn0840M04H 7 8RSyn0840M04M 33 15SLay08H 63 5SLay09M 48 5SLay10H > 3hr 505Syn40M04H 2 2trimloss4 356 17Water0303 13 5Water0303R 22 12

Page 11: Solving MINLP problems with AIMMS

www.aimms.com

Results COA: 1 versus 4 Threads

Problem 1 thr 4 thrCLay0305H 8 3FLay05H 172 62fo7_2 11 5fo9 5183 937netmod_dol2 63 22no7_ar3_1 265 33o7 629 323

Problem 1 thr 4 thro7_ar4_1 643 432RSyn0840M04H 8 8RSyn0840M04M 15 7SLay09H 17 24SLay10H 505 191trimloss4 17 13Water0303R 12 13

Page 12: Solving MINLP problems with AIMMS

www.aimms.com

AIMMS Presolver

• Delete redundant constraints & fixed variables

• Bound Tightening - Feasibility based – Variable x: range [0,inf) -► range [10,55]– Linear & nonlinear constraints

• Improve coefficients (possibly using probing)

• Linearize quadratic constraints

Page 13: Solving MINLP problems with AIMMS

www.aimms.com

Linearize quadratic constraints

Constraint ( binary, and continuous or integer)

Linearization:

∑𝑘𝑎𝑘𝑧𝑘=𝑥∑

𝑖𝑑𝑖 𝑦 𝑖with𝐿≤∑

𝑖𝑑𝑖 𝑦 𝑖≤𝑈

Page 14: Solving MINLP problems with AIMMS

www.aimms.com

Branch-and-Bound

MINLP problem with binary variables x(i) and y(i,j).

Implement branching; choose most fractional column.

gmpBB: Generated Math Program for a node in B&B tree

Page 15: Solving MINLP problems with AIMMS

www.aimms.com

Branchingfor (i) do xLev(i) := GMP::Column::GetColumnValue( gmpBB, 1, x(i) ); xHalfGap(i) := abs( xLev(i) - 0.5 );endfor;xMostFractionalColumn := ArgMin( i, xHalfGap(i) );

for (i,j) do yLev(i,j) := GMP::Column::GetColumnValue( gmpBB, 1, y(i,j) ); yHalfGap(i,j) := abs( yLev(i,j) - 0.5 );endfor;yMostFractionalColumn := ArgMin( (i,j), yHalfGap(i,j) );

MostFractionalColumn := …

Page 16: Solving MINLP problems with AIMMS

www.aimms.com

Branching - Improved Vars := { ‘x’, ‘y’ }; ColNrs := GMP::Instance::GetColumnNumbers( gmpBB, Vars );

For example: ColNrs = {3,4,…,10,20,21,…,43} index: c

for (c) do Lev(c) := GMP::Column::GetColumnValue( gmpBB, 1, c ); HalfGap(c) := abs( Lev(c) - 0.5 );endfor;

MostFractionalColumn := ArgMin( c, HalfGap(c) );

Page 17: Solving MINLP problems with AIMMS

www.aimms.com

Branching - Improved Vars := AllIntegerVariables;ColNrs := GMP::Instance::GetColumnNumbers( gmpBB, Vars );

For example: ColNrs = {3,4,…,10,20,21,…,43} index: c

for (c) do Lev(c) := GMP::Column::GetColumnValue( gmpBB, 1, c ); HalfGap(c) := abs( Lev(c) - 0.5 );endfor;

MostFractionalColumn := ArgMin( c, HalfGap(c) );

Page 18: Solving MINLP problems with AIMMS

www.aimms.com


Recommended