Presentation is loading. Please wait.

Presentation is loading. Please wait.

Www.aimms.com Solving MINLP problems with AIMMS Pittsburgh June 4, 2014 Marcel Hunting AIMMS Software Developer.

Similar presentations


Presentation on theme: "Www.aimms.com Solving MINLP problems with AIMMS Pittsburgh June 4, 2014 Marcel Hunting AIMMS Software Developer."— Presentation transcript:

1 www.aimms.com Solving MINLP problems with AIMMS Pittsburgh June 4, 2014 Marcel Hunting AIMMS Software Developer

2 www.aimms.com Overview Introducing AIMMS Generated Math Program (GMP) Outer Approximation AIMMS Presolver Implement Branch-and-Bound

3 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

4 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

5 www.aimms.com (Some) AIMMS Features Point & Click / Drag & Drop IDE Global & local compilation Procedural execution & definitions Advanced diagnostic & development tools: debugger, profiler, MP Inspector, data pages Data management & batch run options Modeling of time constructs Broad class of commercial and open source solvers Broad call of model types (LP, MIP, NLP, MINLP, CP, etc.)

6 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

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

8 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);

9 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

10 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

11 www.aimms.com Results AOA - COA ProblemAOACOA BatchS151208M176 BatchS201210M416 CLay0205H175 CLay0305H318 FLay04H332 FLay05H> 3hr172 fo7_25411 fo911615183 netmod_dol238863 netmod_kar11425 no7_ar3_1142265 ProblemAOACOA o74494629 o7_ar4_12923643 RSyn0840M04H78 RSyn0840M04M3315 SLay08H635 SLay09M485 SLay10H> 3hr505 Syn40M04H22 trimloss435617 Water0303135 Water0303R2212

12 www.aimms.com Results COA: 1 versus 4 Threads Problem1 thr4 thr CLay0305H83 FLay05H17262 fo7_2115 fo95183937 netmod_dol26322 no7_ar3_126533 o7629323 Problem1 thr4 thr o7_ar4_1643432 RSyn0840M04H88 RSyn0840M04M157 SLay09H1724 SLay10H505191 trimloss41713 Water0303R1213

13 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

14 www.aimms.com Linearize quadratic constraints

15 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

16 www.aimms.com Branching for (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 := …

17 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) );

18 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) );

19 www.aimms.com


Download ppt "Www.aimms.com Solving MINLP problems with AIMMS Pittsburgh June 4, 2014 Marcel Hunting AIMMS Software Developer."

Similar presentations


Ads by Google