Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und...

69
Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik WS 2010/11

Transcript of Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und...

Page 1: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Computerpraktikum Lineare und Kombinatorische

Optimierung

26. – 29. April 2011

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik WS 2010/11

Page 2: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

0. Organisatorisches

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 2

Page 3: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Alle Materialien des Praktikum unter

https://www-m9.ma.tum.de/WS2010/CPOpt

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 3

0. Organisatorisches

Material

Informationen zu Mosel und Xpress:

• Xpress Help in der Xpress IVE

• Dokumentationen im Xpress-Installationsordner

<xpressmp>\docs

Page 4: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

1. Einführung in Xpress-MP

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 4

Page 5: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Softwarepaket zur Linearen und Gemischt-Ganzzahligen Optimierung

• Komponenten:

• Optimizer (primaler und dualer Simplex, Barrier, MIP, Presolver, Heuristiken)

• Programmier- und Modellierungssprache Mosel

• Bibliotheken zur Einbindung von Mosel in C/C++/Java/VB

• Entwicklungstools (Debugger, Profiler, IDE)

• Weitere Module (Datenzugriff, Graphik, …)

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 5

1. Einführung in Xpress-MP

Was ist Xpress-MP?

Page 6: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 6

1. Einführung in Xpress-MP

Was ist Xpress-MP?

Modell

Ausgabe

Mosel Optimizer

Daten

Interaktion

Lösung

Page 7: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 7

1. Einführung in Xpress-MP

Xpress IVE

Tool Bar

Project Bar

Editor Run Bar

Info Bar

Page 8: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• zeigt alle Variablen, Funktionen … an

Nach einem Programmdurchlauf:

• Zeigen auf einen Variablennamen (auch im Editor) Variablenwert in einem Popup angezeigt

• Doppelklick auf einen Variablennamen Variablenwert in einem Fenster angezeigt

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 8

1. Einführung in Xpress-MP

Project Bar

Page 9: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Output/Input: Ausgabe

• Stats: Statistiken zur Optimierung

• Matrix: Darstellung der Nebenbedingungsmatrix

• Solutions: bisher gefundene Lösungen

• BB tree: Branch & Bound Baum

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 9

1. Einführung in Xpress-MP

Run Bar

Knoten mit ganzzahliger Lösung

Knoten in dem verzweigt wird

abgeschnittener Knoten

unzulässiger Knoten

Page 10: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

2. Einführung in Mosel

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 10

Page 11: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 11

2. Einführung in Mosel

Modellaufbau

model ModelName

options ! Optionen

uses ! optionale Bibliotheken

parameters

! optionale Parameter

end-parameters

declarations

! Variablendeklaration

end-declarations

! Programmcode

end-model

Page 12: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Modell zwischen model und end-model

• jedes Modell muss einen Modellnamen haben

• ! leitet Kommentare ein

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 12

2. Einführung in Mosel

Modellaufbau

model ModelName

! ...

end-model

Beispiel:

Page 13: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• durch options eingeleitet

• am Modellanfang

• Vereinfachung der Fehlersuche:

• Option noimplicit : jede Variable muss deklariert werden

• Option explterm : jeder Befehl muss mit ; abgeschlossen werden

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 13

2. Einführung in Mosel

Optionen

model ModelName

options noimplicit, explterm;

! ...

end-model

Beispiel:

Page 14: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• durch uses eingeleitet

• am Modellanfang

• Bibliothek "mmxprs" : Xpress-Optimizer

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 14

2. Einführung in Mosel

Bibliotheken

model ModelName

options noimplicit, explterm;

uses "mmxprs";

! ...

end-model

Beispiel:

Page 15: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Parameter zwischen parameters und

end-parameters

• definiert Parameter, die auch nach dem Kompilieren noch gesetzt werden können

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 15

2. Einführung in Mosel

Parameter

parameters

datafile = "../data.dat";

end-parameters

Beispiel:

Page 16: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Variablen müssen vor Verwendung deklariert werden

• Variablendeklaration zwischen declarations und end-declarations

• Modell kann mehr als einen Deklarationsblock enthalten

• einfache Variablentypen:

boolean true oder false

integer ganze Zahlen

real „reelle“ Zahlen

string Zeichenketten

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 16

2. Einführung in Mosel

Variablendeklaration

Page 17: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Mosel-eigene Variablentypen:

mpvar Entscheidungsvariable

linctr linearer Ausdruck

• Entscheidungsvariablen sind implizit reellwertig und ≥ 0

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 17

2. Einführung in Mosel

Variablendeklaration

declarations

n: integer;

x, y: mpvar;

end-declarations

Beispiel:

Page 18: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 18

2. Einführung in Mosel

Modellierung

Aufgabe 1: Veredelung von Rohöl

Crack Prozess 1

2 l Schweröl 2 l mittleres Öl 1 l Leichtöl

Kosten: 3 €

Nebenbedingungen:

mind. 3 l Schweröl 5 l mittleres Öl 4 l Leichtöl

Zielfunktion: minimiere Kosten

10 l Rohöl

Crack Prozess 2

1 l Schweröl 2 l mittleres Öl 4 l Leichtöl

Kosten: 5 €

x1 x2

Page 19: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

im mathematischen Modell:

Implementierung:

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 19

2. Einführung in Mosel

Nebenbedingungen

2*x1 + x2 >= 3;

• Operatoren: <= , = , >=

• Nebenbedingungen können als Variablen abgespeichert werden (Zuweisung mit := ) späterer Zugriff möglich

Page 20: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 20

2. Einführung in Mosel

Zielfunktion

minimize(3*x1 + 5*x2);

• auch Zielfunktionen können als Variablen abgespeichert werden

• maximize() bzw. minimize() starten die Optimierung

erst am Modellende

(Bibliothek "mmxprs" muss eingebunden werden!)

im mathematischen Modell:

Implementierung:

Page 21: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Befehle write() und writeln()

• Werte der Entscheidungsvariablen und linearen Ausdrücke:

getsol(<variable>) oder <variable>.sol

• Wert der Zielfunktion: getobjval

• Formatierung der Ausgabe:

strfmt(<variable>,<i1>,<i2>)

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 21

2. Einführung in Mosel

Ausgabe

reservierte Vorkommastellen

Nachkommastellen

Page 22: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• model und end-model umschließen Modell

• uses zur Einbindung von Bibliotheken

• declarations und end-declarations umschließen Variablendeklaration

• maximize() und minimize() starten die Optimierung

• write() und writeln() zur Ausgabe

• getsol() gibt Lösung zurück

• getobjval gibt Zielfunktionswert zurück

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 22

2. Einführung in Mosel

Zusammenfassung

Page 23: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

3. Variablentypen

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 23

Page 24: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• einfache Variablentypen:

boolean true oder false

integer ganze Zahlen

real „reelle“ Zahlen

string Zeichenketten

• Mosel-eigene Variablentypen:

mpvar Entscheidungsvariable

linctr linearer Ausdruck

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 24

3. Weitere Variablentypen

Wiederholung

Page 25: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 25

3. Weitere Variablentypen

Entscheidungsvariablen

• Wertebereich von Entscheidungsvariablen:

(weitere siehe Mosel-Dokumentation)

declarations

x : mpvar;

end-declarations

x is_integer;

Beispiel:

Wertebereich

automatisch

is_binary

is_integer

is_free

Page 26: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• statische Mengen:

• dynamische Mengen:

• Deklaration:

• Zuweisung:

• Umwandlung in statische Menge:

• Operatoren: + (Vereinigung), - (Differenz), * (Schnitt)

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 26

3. Weitere Variablentypen

Mengen

declarations

<setname> : set of <vartype>;

end-declarations

<setname> := {<setcontent>};

finalize(<setname>);

declarations

<setname> = {<setcontent>};

end-declarations

Page 27: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 27

3. Weitere Variablentypen

Mengen

! statische Menge

declarations

s1 = {1,2,3,7};

end-declarations

! dynamische Menge

declarations

s2 : set of string;

end-declarations

s2 := {"Bli", "Bla", "Blub"};

finalize(s2);

Beispiel:

Page 28: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• spezielle Mengen, effizientere Speichernutzung

• statische Intervalle:

• dynamische Intervalle:

• Deklaration:

• Zuweisung:

• Umwandlung in statisches Intervall:

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 28

3. Weitere Variablentypen

Intervalle

declarations

<rangename> : range;

end-declarations

<rangename> := <lb>..<ub>;

finalize(<rangename>);

declarations

<rangename> = <lb>..<ub>;

end-declarations

Page 29: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 29

3. Weitere Variablentypen

Intervalle

! statisches Intervall

declarations

r1 = 3..7;

end-declarations

! dynamische Menge

declarations

r2 : range;

end-declarations

r2 := 3..7;

finalize(r2);

Beispiel:

Page 30: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• statische Felder:

• dynamische Felder:

• Deklaration:

• Zuweisung:

• Zugriff:

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 30

3. Weitere Variablentypen

Felder

<arrayname> :: (<indexset>) [<arraycontent>];

declarations

<arrayname> = [<arraycontent>];

end-declarations

declarations

<arrayname> : array(<indexset>) of <vartype>;

declarations

<arrayname>(<index>);

Page 31: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 31

3. Weitere Variablentypen

Felder

! dynamisches Feld

declarations

s = {"Bli", "Bla", "Blub"};

a : array(s) of integer;

end-declarations

a :: (["Bla", "Blub", "Bli"]) [1,2,3];

writeln(a("Blub"));

Beispiel:

• insbesondere können Intervalle Indexsets sein vereinfachte Zuweisung :

<arrayname> :: [<arraycontent>];

! Output: 2

Page 32: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• mehrdimensionale Felder:

• Deklaration:

• Zuweisung:

• Zugriff:

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 32

3. Weitere Variablentypen

Mehrdimensionale Felder

declarations

<arrayname> : array(<indexset1>,<indexset2>)

of <vartype>;

declarations

<arrayname> :: (<indexset>,<indexset2>)

[<arraycontent>];

<arrayname>(<index1>, <index2>);

Page 33: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 33

3. Weitere Variablentypen

Mehrdimensionale Felder

! mehrdimensionales dynamisches Feld

declarations

s = {"Bli", "Bla", "Blub"};

r = 1..2;

a : array(s,r) of integer;

end-declarations

a :: (["Bli", "Bla", "Blub"],[1,2]) [1,2,3,4,5,6];

writeln(a("Blub",1));

Beispiel:

! Output: 5

Page 34: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Strukturen fassen Variablen verschiedener Variablentypen zusammen

• Deklaration:

• Zugriff auf einen Teil der Struktur: <recordname>.<varname>

• Zuweisung: jeden Teil der Struktur einzeln

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 34

3. Weitere Variablentypen

Strukturen

declarations

<recordtyp> = record

! Deklaration der Teile der Struktur

analog Deklarationsblock

<varname> : <vartype>;

end-record;

<recordname> : <recordtyp>;

end-declarations

Page 35: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 35

3. Weitere Variablentypen

Strukturen

declarations

tier = record

id : integer;

tierlaut : string;

end-record;

kuh, schaf : tier;

end-declarations

kuh.id := 1; kuh.tierlaut := "Muh";

schaf.id := 2; schaf.tierlaut := "Maeh";

Beispiel:

Page 36: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

4. Kontrollstrukturen

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 36

Page 37: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• if-Anweisung:

• Bedingungen: < , <= , = , >= , > , ...

• Verknüpfung von Bedingungen: and , or

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 37

4. Kontrollstrukturen

if-Anweisungen

if (<condition>) then

<commands>

elif (<condition>) then ! optional

<commands>

else ! optional

<commands>

end-if

Page 38: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• für Fallunterscheidungen mit vielen Fällen

• testet auf Gleichheit

• case of-Anweisungen:

• mehrere Anweisungen durch do … end-do einschließen

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 38

4. Kontrollstrukturen

case-Anweisungen

case <linke Seite> of

<rechte Seite 1> :

<command>

<rechte Seite 2> :

<command>

! ...

else ! optional

<commands>

end-case

Page 39: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• forall-Schleife:

• Vereinfachung bei nur einer Anweisung: forall (<index> in <indexset>) <command>

• Summation über mehrere Indexmengen möglich:

effizientere Behandlung als bei Schachtelung

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 39

4. Kontrollstrukturen

forall-Schleifen

forall (<index> in <indexset>) do

<commands>

end-do

forall (<index1> in <indexset1> ,

<index2> in <indexset2> ) do

<commands>

end-do

Page 40: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Bedingungen an den Schleifenindex möglich:

effizientere Behandlung als bei Schachtelung

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 40

4. Kontrollstrukturen

forall-Schleife

forall (<index> in <indexset> | <condition>) do

<commands>

end-do

forall (i in 1..10, j in 1..100 | i^2 = j) do

writeln(j, " ist das Quadrat von ", i);

end-do

Beispiel:

Page 41: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• while-Schleife:

• Vereinfachung bei nur einer Anweisung: while (<condition>) <command>

• repeat-Schleife:

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 41

4. Kontrollstrukturen

while- und repeat-Schleifen

while (<condition>) do

<commands>

end-do

repeat

<commands>

until <condition>

Page 42: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• spezielle forall-Schleifen

• Implementierung der mathematische Summe

mittels sum(<index> in <indexset>) <command>;

• auch Summation über mehrere Indexmengen und unter Nebenbedingungen möglich

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 42

4. Kontrollstrukturen

Summen

Page 43: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

5. Umgang mit Daten

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 43

Page 44: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Modell und Daten trennen

• Daten aus Textdateien einlesen und in Textdateien ausgeben

• Dateinamen als Parameter

Dateiname kann geändert werden, ohne das Modell neu zu kompilieren

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 44

5. Umgang mit Daten

Warum?

Page 45: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Daten einlesen mittels initializations from Block

• unterscheiden sich Variablenname in Modell und Datendatei:

<modellvarname> as "<datavarname>";

• Mengen, die Indexmengen von Feldern sind, werden automatisch eingelesen

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 45

5. Umgang mit Daten

Daten einlesen

initializations from "<filename>"

<varname>; ! ...

end-initializations

Page 46: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 46

5. Umgang mit Daten

Daten einlesen

parameters

datafile = "daten.dat";

end-parameters

declarations

s1, s2: set of string;

a: array(s1,s2) of integer;

end-declarations

initializations from datafile

a;

end-initializations

Beispiel:

Page 47: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Formatierung der Daten:

• einfache Variablentypen:

• Mengen:

• Felder:

• Elemente können durch Leerzeichen oder Komma getrennt werden

• Eingaben nicht durch ein Semikolon abschließen!

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 47

5. Umgang mit Daten

Datendatei

"<varname>" : <value>

"<setname>" : [<element1> <element2> ...]

"<arrayname>" : [(<index1>) <element1>

(<index2>) <element2> ...]

Page 48: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 48

5. Umgang mit Daten

Datendatei

! Datenfile daten.dat

"s1": ["Bli", "Bla", "Blub"]

"s2": ["Muh", "Maeh"]

"a": [("Bli" ,"Muh") 1, ("Bli" ,"Maeh") 2,

("Bla" ,"Muh") 3, ("Bli" ,"Maeh") 4,

("Blub","Muh") 5, ("Blub","Maeh") 6]

Beispiel:

Page 49: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Datenausgabe mittels initializations to Block

• sollen Variablen in der Datendatei unter anderem Namen gespeichert werden:

<modellvarname> as "<datavarname>";

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 49

5. Umgang mit Daten

Datenausgabe

initializations to "<filename>"

<varname>; ! ...

end-initializations

Page 50: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

6. Benutzergraph

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 50

Page 51: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• zur graphischen Veranschaulichung der Lösung

• einzubindende Bibliothek: "mmive"

• es ist nur ein einziger Benutzergraph möglich aber: in den Graphen kann in mehreren Ebenen gezeichnet werden

• Ausgabe des Benutzergraphen in der „Run Bar“, Registerkarte „User graph“

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 51

6. Benutzergraph

Grundlagen

Page 52: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• speichere jede Ebene als Variable ab

um die graphischen Elemente (Punkte, Linien, ...) den einzelnen Ebenen zuordnen zu können

• Erstellen einer neuen Ebene:

• alle Elemente einer Ebene haben dieselbe Farbe

• Farben: IVE_BLACK, IVE_BLUE, IVE_GREEN, usw. oder Funktion IVE_RGB()

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 52

6. Benutzergraph

Ebenen

declarations

<plotvarname> : integer;

end-declarations

<plotvarname> := IVEaddplot("<plotlabel>",<color>);

Page 53: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Beschriftung:

• Punkt:

• Linie:

• Pfeil:

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 53

6. Benutzergraph

Elemente

IVEdrawpoint(<plotvarname>,<x>,<y>);

IVEdrawlabel(<plotvarname>,<x>,<y>,<text>);

IVEdrawline(<plotvarname>,<x1>,<y1>,

<x2>,<y2>);

IVEdrawarrow(<plotvarname>,<x1>,<y1>,

<x2>,<y2>);

Page 54: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

7. Prozeduren und Funktionen

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 54

Page 55: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Mosel unterscheidet zwischen Prozeduren und Funktionen

• Prozeduren haben keinen Rückgabewert

• Funktionen haben einen Rückgabewert

• Prozeduren/Funktionen müssen vor ihrem ersten Aufruf deklariert werden

• Prozeduren/Funktionen können auf (globale) Modellvariablen zugreifen

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 55

7. Prozeduren und Funktionen

Was ist der Unterschied?

Page 56: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Deklaration:

• Aufruf: <procedurename>(<varname>);

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 56

7. Prozeduren und Funktionen

Prozeduren

procedure printSolution (x : array(r : range) of mpvar,

obj : linctr)

forall(i in r) writeln("x(", i, ") = ", x(i).sol);

writeln("obj = ", obj.sol);

end-procedure

printsolution(x, z);

procedure <procedurename> (<inputname> : <inputtype>) ! Anweisungen

end-procedure

Beispiel:

Page 57: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Deklaration:

• Aufruf: <functionname>(<varname>);

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 57

7. Prozeduren und Funktionen

Funktionen

function summe (a : real, b : real) : real

returned := a+b;

end-function

c := summe(1,2);

function <functionname> (<inputname> : <inputtype>): <outputtype> ! einfacher Variablentyp

! Anweisungen

returned := <output>; ! Rückgabe

end-function

Beispiel:

Page 58: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

„Prozeduren/Funktionen müssen vor ihrem ersten Aufruf deklariert werden“

Alternative:

• Prozedur/Funktion vor dem ersten Aufruf ankündigen

(kein Semikolon am Ende!)

• erst am Modellende deklarieren

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 58

7. Prozeduren und Funktionen

Deklaration

forward procedure <procedurename> (<inputname> : <inputtype>)

forward function <functionname> (<inputname> : <inputtype>):

<outputtype>

Page 59: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

8. Optimizer Modul

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 59

Page 60: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• das was Xpress ausmacht

• einzubindende Bibliothek: "mmxprs„

• Bereits bekannte Funktionen des Moduls:

maximize()

minimize()

getsol()

getobjval

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 60

8. Optimizer Modul

Grundlagen

Page 61: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• liefert den Lösungsstatus:

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 61

8. Optimizer Modul

getprobstat

declarations

status : string;

end-declarations

case getprobstat of

XPRS_OPT: status := "Optimum found";

XPRS_UNF: status := "Unfinished";

XPRS_INF: status := "Infeasible";

XPRS_UNB: status := "Unbounded";

XPRS_OTH: status := "Failed";

else status := "???";

end-case

Page 62: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Funktionen:

• Parameter:

XPRS_PRESOLVE Presolver

XPRS_MIPPRESOLVE Presolver für MIPs

XPRS_HEURSTRATEGY Heuristiken für MIPs

XPRS_CUTSTRATEGY Schnittebenengenerierung

XPRS_VERBOSE Output des Optimizers

XPRS_MIPLOG zusätzlicher Output bei MIPs

XPRS_THREADS Anzahl Threads (Parallel Computing)

und viele mehr …

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 62

8. Optimizer Modul

Optimierungsparameter

getparam(<parametername>)

setparam(<parametername>,<value>)

Page 63: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Eingriff in den Ablauf des Optimizers

• Funktionen:

• Callback gibt an, wann die Prozedur/Funktion aufgerufen wird

• Callbacks:

XPRS_CB_CUTMGR Schnittebenengenerierung

XPRS_CB_CHGBRANCH Branchingentscheidung

und viele mehr …

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 63

8. Optimizer Modul

Callbacks

setcallback(<callbackname>,<procedurename>)

setcallback(<callbackname>,<functionname>)

Page 64: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• wird in Knoten aufgerufen, die nach der Lösung der Relaxation nicht abgeschnitten wurden und nicht unzulässig sind

• ruft Funktion auf

• Übergabewerte: keine

• Rückgabewert: Boolean

true Knoten muss erneut bearbeitet werden (inkl. erneutem Aufruf des Callbacks)

false Knoten muss nicht erneut bearbeitet werden

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 64

8. Optimizer Modul

Callback CB_CUTMGR

Page 65: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Schnittebenen hinzufügen:

cutid ID um den Schnitt wiederfinden zu können

type Art der (Un)gleichung:

CT_LEQ kleiner gleich CT_EQ gleich CT_GEQ größer gleich

linexp Ungleichung

• Reserviere am Modellanfang zusätzliche Zeilen in der Matrix:

8. Optimizer Modul

Callback CB_CUTMGR

addcut(cutid : integer, type : integer,

linexp : linctr)

setparam("XPRS_EXTRAROWS", MAX_CUTS)

Page 66: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

8. Optimizer Modul

Callback CB_CUTMGR

! Reserviere Zeilen in der Matrix

MAX_CUTS := 1000;

setparam("XPRS_EXTRAROWS", MAX_CUTS);

! kündige Funktion an

forward function cb_node : boolean

! setze Callback

setcallback(XPRS_CB_CUTMGR, "cb_node");

! ... maximize()

function cb_node : boolean

! ...

addcut(1, CT_LEQ, x(1))

end-function

Beispiel:

Page 67: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• wird in Knoten aufgerufen, in denen verzweigt werden soll

• ruft Prozedur auf

• Übergabewerte:

e Index der Variable, auf der verzweigt wird

u Teilproblem, das zuerst bearbeitet wird

d geschätzte Zielfunktionswertverringerung

(Achtung: Optimizer beginnt Variablenindizierung mit 0)

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 67

8. Optimizer Modul

Callback CB_CHGBRANCH

(e : integer, u : integer, d : real)

Page 68: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

• Beeinflussen der Branching Entscheidung:

x Entscheidungsvariable, auf der verzweigt wird

u, d wie oben

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 68

8. Optimizer Modul

Callback CB_CHGBRANCH

setucbdata(x : mpvar, u : integer, d : real)

Page 69: Computerpraktikum Lineare und Kombinatorische Optimierung · Computerpraktikum Lineare und Kombinatorische Optimierung 26. – 29. April 2011 Melanie Bestle – Lehrstuhl für Angewandte

Melanie Bestle – Lehrstuhl für Angewandte Geometrie und Diskrete Mathematik 69

8. Optimizer Modul

Callback CB_CHGBRANCH

! kündige Funktion an

forward procedure cb_chgbranch (e : integer, u : integer,

d : real)

! setze Callback

setcallback(XPRS_CB_CHGBRANCH, "cb_chgbranch");

! ... maximize()

procedure cb_chgbranch (e : integer, u : integer, d : real)

! ...

setucbdata(x(e), u, d)

end-procedure

Beispiel: