ilp a gyakorlatban - budapest university of technology and...

42
1 ILP a gyakorlatban Tapolcai János [email protected]

Upload: others

Post on 16-Jan-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

1

ILP a gyakorlatban

Tapolcai János

[email protected]

Page 2: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Az utazó ügynök probléma

• Traveling Sales Person (TSP)

• Bemenet

– irányított, összefüggő gráf G(V,E)

– Éleken költségfüggvény c

• Cél

– a gráf legrövidebb Hamilton-körét keressük (c

szerint)

• NP-nehéz

2

Page 3: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

TSP felírása ILP-ként

• Változók – Élekhez rendelve x

• 1 – ha az él része az útnak

• 0 – különben

• Költségfüggvény – Az él költsége

• Kényszerek (Hamilton-kör)

– a gráf minden pontján pontosan egyszer

megy át • minden pont be-foka 1

• minden pont ki-foka 1

• a pontok minden S ⊂ V részhalmazának ki-foka legalább 1

3

Page 4: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

ILP

• Exponenciális számú feltétel 4

Page 5: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

TSP polinom méretű ILP-ként

• Miller-Tucker-Zemlin, 1960

• Feszültség kényszer

– vezessünk be egy új segédváltozót

• zi: a i ∈ V pont a Hamilton-kör éppen zi -edik

állomása legyen zv = 1

5

1

2 3 4

5

6

7

8

Page 6: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Feszültség kényszer

6

Page 7: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

TSP polinom méretű ILP-vel

7

Page 8: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

FELÍRTUK AZ ILP FELADATOT,

MI A KÖVETKEZŐ LÉPÉS?

8

Page 9: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

ILP megoldó

9

http://plato.asu.edu/ftp/path.html

27 Mar 2014 =========================================

MILP cases that are slightly pathological

=========================================

H. Mittelmann ([email protected])

Scaled shifted geometric mean of runtimes and problems solved (25 total)

--------------------------------------------------

CBC CPLEX FSCIP GUROBI SCIP XPRESS

--------------------------------------------------

15.1 1.04 8.36 1 13.4 2.29

7 25 15 25 12 19

--------------------------------------------------

Page 10: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

28 Mar 2014 =======================================================

Mixed Integer Linear Programming Benchmark (MIPLIB2010)

=======================================================

H. Mittelmann ([email protected])

Shifted geometric means of times

All non-successes are counted as max-time.

The second line lists the number of problems (87 total) solved.

1 thr CBC CPLEX GLPK GUROBI LPSOLVE SCIPC SCIPL SCIPS XPRESS

-------------------------------------------------------------------------------

scaled 12.4 1 26.5 1.04 22.8 4.03 11.3 5.57 1.34

solved 36 82 1 82 5 63 39 60 82

--------------------------------------------------------------------------------

4 thr CBC CPLEX FSCIPC FSCIPS GUROBI XPRESS

-------------------------------------------------------------

scaled 15.6 1.13 6.75 10.9 1 1.17

solved 50 84 68 64 87 86

-------------------------------------------------------------

12 thr CBC CPLEX FSCIPC FSCIPS GUROBI XPRESS

-------------------------------------------------------------

scaled 15.6 1 9.29 16.7 1 1.04

solved 57 87 69 63 87 87

-------------------------------------------------------------

http://plato.asu.edu/ftp/milpc.html 10

Page 11: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

11

A következő lépés

• A solver-ek lényegében mátrixos formában várják az ILP feladatot

• Érdemes valami modellező nyelvet használni – AMPL

• An Algebraic Modeling Language for Mathematical Programming

• CPLEX

– GNU MathProg modeling language • Egyszerűsített AMPL GLPK-hoz

• Ingyenes

– LEMON MILP interfész

Page 12: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

12

Működési felépítés

AMPL

solver

(CPLEX)

MPS Format

Convert to MPS Read MPS file

Call Solver Model

User Application

C++,

JAVA,

VB,

Etc…

Callable

Libraries,

API

Page 13: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

13

AMPL model fájl

var x1 >= 0;

var x2 >= 0;

minimize total_cost:

20*x1 + 15*x2;

subject to gasoline_reqt:

0.3*x1 + 0.4*x2 >= 2.0;

subject to jetfuel_reqt:

0.4*x1 + 0.2*x2 >= 1.5;

subject to lubricant_reqt:

0.2*x1 + 0.3*x2 >= 0.5;

subject to saudi_avail:

x1 <= 9;

subject to venezuelan_avail:

x1 <= 6;

vity)(nonnegati 02,1

avail.)n (Venezuela 62

ty)availabili (Saudi 91

reqt.) (lubricant 5.023.012.0

reqt.) fuel(jet 5.122.014.0

reqt.) (gasoline 0.224.013.0 s.t.

cost) (total 1520min 21

xx

x

x

xx

xx

xx

xx

.mod kiterjesztésű txt fájl

Page 14: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

14

AMPL futtatása 1. AMPL licensz (fizetős szoftver)

2. C:\APML101\ampl.exe

Page 15: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

AMPL TSP feladatra (tsp.mod) param n >= 1, integer; # number of vertices

param m >= 1, integer; # number of edges

set V := 1..n;

set E within {V,V};

param c{E}; # edge weights

var x{E} binary;

var z{E} integer;

minimize lenght :

sum{(u,v) in E} x[u,v] * c[u,v];

subject to befok {v in V} :

sum{u in V: (u,v) in E} x[u,v] <= 1;

15

Page 16: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

AMPL TSP feladatra

param n := 10; # of nodes

param m := 12; # of arcs

# edge : cost indicator

param : E : c :=

4 9 1

6 10 1

7 10 1

2 8 1

8 7 1

4 1 1

5 3 1

;

model tsp.mod;

data graph.dat;

option solver cplex;

solve;

display x;

model tsp.mod;

data graph.dat;

option solver cplex;

solve;

display x;

16

Graph.data Graph.data

Page 17: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

LEMON

• ELTE-n fejlesztik

– http://lemon.cs.elte.hu

• C++ template könyvtár gráfokhoz

– Nyílt forráskódú

• Graphviz

– http://www.graphviz.org/

• Boost Graph Library

– http://www.boost.org/doc/libs/1_42_0/libs/graph/doc/index.html

• igraph

– http://igraph.sourceforge.net/introduction.html

• OGDF

– http://www.ogdf.net/ogdf.php?id=

17

Page 18: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Gráfok LEMONban

• Gráf létrehozása

using namespace lemon;

ListDigraph g;

• Élek és pontok hozzáadása

ListDigraph::Node u = g.addNode();

ListDigraph::Node v = g.addNode();

ListDigraph::Arc a = g.addArc(u,v);

• És törlése

g.erase(a);

g.erase(v);

18

Page 19: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Map-ek LEMONban

• Map létrehozása

– Ha változókat akarunk élekhez vagy pontokhoz

rendelni ListDigraph::NodeMap<std::string> label(g);

ListDigraph::ArcMap<int> cost(g);

• Accessing map values label[s] = "source";

cost[e] = 2 * cost[f];

• Automatikus

– Pl. törlődik, ha élt törölsz 19

Page 20: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

.lgf LEMON fájl formátum

@nodes

label coordinate

0 (20,100)

...

41 (600,100)

@arcs

label cost

0 1 0 16

...

36 41 123 21

@attributes

source 0

• Egy paranccsal beolvasható a

gráf using namespace lemon;

ListDigraph g;

Graph::ArcMap<int> cost(g);

Graph::NodeMap<dim2::Point<int>>

coord(g);

digraphReader(g, "input.lgf")

.nodeMap("coord", coord)

.arcMap("cost", cost)

.run();

20

Page 21: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

LEMON MILP interfész

• Solver-ek

– GLPK: open source (GNU license)

– Clp, Cbc: open source (COIN-OR LP and MIP

solvers)

– CPLEX: commercial

– SoPlex: academic license

– Gurobi: free academic licence

• Fordításnál össze kell linkelni a solver lib-jével

– Callable library

21

Page 22: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Példa LP feladat

Lp lp;

Lp::Col x1 = lp.addCol();

Lp::Col x2 = lp.addCol();

lp.max();

lp.obj(10 * x1 + 6 * x2);

lp.addRow(0 <= x1 + x2 <= 100);

lp.addRow(2 * x1 <= x2 + 32);

lp.colLowerBound(x1, 0);

lp.solve();

std::cout << "Solution: " << lp.primal() << std::endl;

std::cout << "x1 = " << lp.primal(x1) << std::endl;

std::cout << "x2 = " << lp.primal(x2) << std::endl;

22

Page 23: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Példa MIP TSP

Mip mip;

Graph::ArcMap<Mip::Col> x(g);

for(ArcIt e(g);e!=INVALID;++e){

x[e]=mip.addCol();

mip.colBounds(x[e],0,1);

mip.colType(x[e], Mip::INTEGER);

}

for(NodeIt n(g);n!=INVALID;++n){

Mip::Expr eq;

for(OutArcIt e(g,n);e!=INVALID;++e) eq+=x[e];

mip.addRow(eq==1);

}

23

Page 24: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Példa MIP (folyt) mip.min();

Mip::Expr obj;

for(ArcIt e(g);e!=INVALID;++e)obj+=x[e]*cost[e];

mip.obj(obj);

mip.solve();

if (mip.type() == Mip::OPTIMAL) {

cout<< "Objective function value: " << mip.solValue();

ListDigraph::ArcMap<int> res(g);

for(ArcIt e(g);e!=INVALID;++e)

res[a]=mip.sol(x[e]);

IdMap<Graph,Node> idn(g);

graphToEps(g,„result.eps").

nodeTexts(idn).

coords(coords).

arcWidths(res).run();

}

24

C++ környezetben könnyen

értelmezhetjük az eredményt

Page 25: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

ILP SOLVER MŰKÖDÉSE

25

Page 26: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

26

[www.ilog.com ]

Branch-and-Bound módszere

Page 27: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

May 22, 2007 27

Branch and Bound fa

• Megfelelő tört változó kiválasztása

• Megfelelő BB pont kiválasztás

• Cutting plane módszerekkel ötvözve – Branch and cut

Page 28: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Hatékonyság

• ILP-t akkor lehet hatékonyabban

megoldani ha a relaxált és az egész

megoldás között kicsi a GAP

28

Page 29: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Chvátal-Gomory vágások

29

n

j

ijji bxa1

,

n

j

ijji ubxua1

,0u

n

j

ijji ubxua1

,

egész

n

j

ijji ubxua1

,

0,

591110..

65min

21

21

21

xx

xxts

xx

10

1521 uxx

.

. .

. . .

. . . .

. . . . .

x1

x2

Page 30: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

CPLEX log

31

Aktuálisan

megoldott LP

költsége

Itt vágásokat

generál

Page 31: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Best Node

32

Jól választott

BB pontot

Page 32: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Best Integer

33

Egyre jobb

megoldásokat talál.

Jól választott kerekített

változókat

Page 33: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Heurisztikák

34

Page 34: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

MITŐL JÓ EGY ILP FELÍRÁS?

35

Page 35: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Facility location

• Bement:

– n lehetséges terület raktár építésére, melyeknek ára cj.

– m darab bolt szállítási költség dij (i. bolttól a j. raktárba)

• Kimenet

– Melyik területeken építsünk raktárakat?

– Az egyes boltok melyik raktárból kapják az árut?

36

Page 36: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Facility location - ILP

• PF1 PF2

– Ahol PX a relaxált LP-hez tartozó polyhedront jelenti

37

i

i,j

i,j

i

j

i,j

n+nm kényszer n+m kényszer

F1 F2

Page 37: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Geometriai ábrázolása

38

x1 ≤ y

x2 ≤ y x1+ x2 ≤ 2y

Page 38: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Minimális költségű feszítő fa

• Változók – Élekhez rendelve x

• 1 – ha az él része a fának

• 0 – különben

• Költségfüggvény – Az él költsége

39

Page 39: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Él-független feszítőfák

• Bement: G gráf

• Kimenet: két él-független feszítőfa

• Változók – x minden élhez

• 1 – ha az él része az egyik fának

• 0 – különben

– y minden élhez

• 1 – ha az él része a másik fának

• 0 – különben

• Kényszerek

– Mint feszítő fáknál x-re és y-ra

– xe+ye 1 minden e-re

40

1 1

1 1

1 1

1 1

1

Page 40: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Pont-független feszítőfák

• A gráf tetszőleges két u és v pontja között

a két fában vezető út pont-független

– Hasunuma, 2000

– NP-nehéz

• ILP-t írjuk fel rá

– Jelölje Tx és Ty a két fát

41

Page 41: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Észrevétel

• Adott Tx vagy Ty pont-független fában a gráf

bármely v pontja legfeljebb egy fában lehet

belső pont.

– Biz: Indirekt.

• Vissza felé is igaz: ha a gráf minden v pontja

legfeljebb egy fában belső pont és a két fa él-

független, akkor Tx vagy Ty pont-független.

– Biz: Indirekt 42

Page 42: ILP a gyakorlatban - Budapest University of Technology and ...opti.tmit.bme.hu/.../02_ilp_gyakorlatban_v4.pdf · Mixed Integer Linear Programming Benchmark (MIPLIB2010) ===== H. Mittelmann

Példa

43