Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

02.06.2015LPL-Einführung1 kommune.lpl Eine Einführung in LPL A LP-Language.

Ähnliche Präsentationen


Präsentation zum Thema: "02.06.2015LPL-Einführung1 kommune.lpl Eine Einführung in LPL A LP-Language."—  Präsentation transkript:

1 02.06.2015LPL-Einführung1 kommune.lpl Eine Einführung in LPL A LP-Language

2 02.06.2015LPL-Einführung2 Projektziele Erstellung eines LPL-Programmes. Erklärung der wesentlichen Elemente. Erklärung der einzelnen Schritte.

3 02.06.2015LPL-Einführung3 Grundelemente des Programms MODEL SET PARAMETER VARIABLE CONSTRAINT MAXIMIZE oder MINIMZE END

4 02.06.2015LPL-Einführung4 MODEL-Sektion MODEL Kommune; Ein Kommentar kann eingefügt werden, indem er in (*Text*) hinter dem Semikolon eingefügt wird. MODEL kommune; (*Beispiel*)

5 02.06.2015LPL-Einführung5 SET-Sektion SET In dieser Sektion werden die Indexmengen definiert, und es können sofort die Werte zugeordnet werden. i = /1 2 3/; j = /1:3/;

6 02.06.2015LPL-Einführung6 Besonderheiten der SET-Definition ALIAS –Der Index wird intern als Zahl verarbeitet. Da er als Zahlenwert wenig aussagekräftig ist, kann man einen sog. ALIAS-Name vergeben, der hinter dem Index durch Punkt getrennt angefügt wird: –Index.Alias Kommentar kann wieder hinter dem Semikolon in (* Kommentar *) eingefügt werden. –i = / 1.alias1 2.alias2 3.alias3 /; (* Kommentar *) Beispiel: –j = / 1.K1 2.K2 3.K3 /; (* Kommunen *) –i = / 1.ZU 2.BA 3.HI /; (* Pflanzsorten *)

7 02.06.2015LPL-Einführung7 PARAMETER-Sektion In dieser Sektion werden alle Daten symbolisch definiert. Es können durch die „= Zuweisung“ unmittelbar folgend die Datenwerte zugewiesen werden.

8 02.06.2015LPL-Einführung8 PARAMETER-Definition 1 Syntax: –name1 = wert1;(* Einzelwert *) –name2 {Indexmenge} = [wert1 wert2.. ]; Mehrfachindizierte Parameter –name{i-menge1,j-menge2} = Wertzuweisung;

9 02.06.2015LPL-Einführung9 PARAMETER-Definition 2 Wertzuweisung: name {i,j} = /: 1 2 3 : 1 w11 w12 w13 2 w21 w22 w23 3 w31 w32 w33/; (* Text *) Falls der Name nicht aussagekräftig genug ist, kann man einen (* Kommentar *) anfügen.

10 02.06.2015LPL-Einführung10 PARAMETER-Definition 3 In einem Vektor oder einer Matrix können Werte durch ihren sog. "Default" ersetzt werden: "." Für Untergrenzen: 0 Für Obergrenzen: ∞

11 02.06.2015LPL-Einführung11 PARAMETER gesamt land {j} = [ 400 600 300]; untergrenze {i,j} = /: 1 2 3 : 1. 50. 2.. 60 3 75.. /; obergrenze {i,j} = /: 1 2 3 : 1. 100 100 2. 250 120 3... /; wasser {j} = [ 900 800 375 ]; quote {i} = [ 600 500 325 ]; faktor {j} = [ 1 1.05 1.1 ]; ertrag {i} = [ 400 290 150 ];

12 02.06.2015LPL-Einführung12 VARIABLE-Sektion In dieser Sektion werden die Variablen definiert. Gleichzeitig kann man zwischen kontinuierlichen und ganzzahligen Variablen unterscheiden. Schließlich kann man sinnvolle Namen konstruieren.

13 02.06.2015LPL-Einführung13 VARIABLE 1 Syntax: – name1; (* Einzelvariable *) – name2 {i}; (* Einfach indizierte V. *) – name3 {i,j}; (* Mehrfach indizierte V. *)

14 02.06.2015LPL-Einführung14 VARIABLE 2 Es ist sinnvoll, den Variablen mnemotechnische Namen zu geben. Die Namen können laut LPL-Syntax fast beliebig lang sein; sie müssen mit einem Buchstaben beginnen. Wichtig: Der anschließende Optimierer XA unterscheidet nur Namen der Länge mit 8 Zeichen!

15 02.06.2015LPL-Einführung15 VARIABLE 3 Will man eine ganzzahlige Variable definieren, so wird INTEGER und das Werteintervall hinzugefügt: var {j} INTEGER [0,100]; 0 ≤ var ≤ 100 → ganzzahlige Variable.

16 02.06.2015LPL-Einführung16 VARIABLE-Definition 1 Der Name der Variablen wird durch einen String nach der Definition und vor dem Semikolon gebildet: –variablenname 'string'; Ein String 'string" = 'za1a2' besteht aus: –z = eine Zahl, die angibt, wieviele der ersten z Buchstaben des Variablennamens verwendet werden. –a1 und a2 sind die ALIAS der Indizes 1 und 2 ersetzt.

17 02.06.2015LPL-Einführung17 VARIABLE-Definition 2 Die Variablen des Beispiels: –anbau {i,j}; –Jetzt würden i bzw. j durch die Indizes der Mengen i und j ersetzt. Unter Benutzung der ALIAS: –anbau {i,j} '4a1a2'; –Jetzt würden i bzw. j durch die ALIAS der Mengen i und j ersetzt: –anbaZUK1  Anbau von Zucker in Komm. K1

18 02.06.2015LPL-Einführung18 CONSTRAINT-Sektion Dieser Teil enthält die Nebenbedingungen des Modells und die Definition der Zielfunktion. Nebenbedingung: –name: funktional = rechte Seite; Zielfunktion: –zielname: funktional;

19 02.06.2015LPL-Einführung19 CONSTRAINT-Definition: name Einzelname: name: einfach indizierter Name: name {i}: mehrfach indiz. Name: name {i,j}: bedingter Name: name {i | log. Beding.}: –log. Bedingung: i 4: i<>5; –name {i,j | name2}  nur falls name2 ungleich dem Default-Wert

20 02.06.2015LPL-Einführung20 CONSTRAINT: name-Konstruktion Der Namen einer Bedingung kann analog zum Variablennamen durch einen String unter Nutzung der ALIAS konstruiert werden: nebenbedname {i} '6a1': ergibt die Zeile: nebenbZU

21 02.06.2015LPL-Einführung21 Beispiele von NB-Namen nebenbedingung: flaeche {i}: lowerbounds {i,j | untergrenze}: gewinn:

22 02.06.2015LPL-Einführung22 CONSTRAINT-Definition: funktional Ein funktional ist ein nach den Regeln der Arithmetik aufgebauter Ausdruck. Operatoren: +, -, *, SUM {i} Indizes sind in eckige Klammern zu setzen, wenn sie keine Mengen sind.

23 02.06.2015LPL-Einführung23 Beispiele für Funktionale lbound {i,j}: anbau [i,j]>=ugrenze [i,j]; flaeche{i}: SUM {i} anbau [i,j]<=land [j]; kont{j}: SUM {i} verbrauch [i]*anbau [i,j] <= wasser [j]; gewinn: SUM {i,j} ertrag [i]*anbau [i,j];

24 02.06.2015LPL-Einführung24 Alternative Formulierungen lbound {i,j}: anbau[i,j] >= ugrenze[i,j];  lbound {i,j}: anbau >= ugrenze; flaeche {j}: SUM {i} anbau <= land;  flaeche {i}: SUM {i} anbau[i,j] <= land [j]; kont {j}: SUM {i} verbrauch[i] * anbau[i,j] <= wasser[j];  kont {j}: SUM {i} verbrauch * anbau <= wasser; Jedoch Vorsicht: Die Bindung zu den Mengen muss eindeutig sein!

25 02.06.2015LPL-Einführung25 Zielfunktion Die Zielfunktion ist ein Funktional ohne rechte Seite: –gewinn: SUM {i,j} ertrag * anbau; Die Optimierungsrichtung wird durch MAXIMIZE bzw. MINIMIZE bestimmt: –MAXIMIZE gewinn;

26 02.06.2015LPL-Einführung26 END-Sektion Jedes Programm wird beschlossen durch: –END (ohne Seminkolon!)

27 02.06.2015LPL-Einführung27 Lösung mit LPL und XA Wenn bei der Compilierung kein Fehler auftritt, wird automatisch XA aufgerufen und das entsprechende LP-Modell gelöst. Es gibt zwei Lösungsdarstellungen: 1.SOL-File = Lösung in Kurzform 2.PRN-File = Ausführliche Lösungsdarstellung

28 02.06.2015LPL-Einführung28 Auszug aus dem SOL-File "MPSXNAME","$$$ ","Mon May 05 08:44:02 2003", "MAX" 11, 9,256208.6908, 10 "anbaZUK1", 214.05680, 400.00000, 0.00000, "IN", "anbaBAK1", 290.00000,"(NB) ", -0.00000 "anbaZUK2", 50.00000, 400.00000, -135.15152, "LOWER", "(NB) ", -0.00000, "(RS) ", 535.15152 "anbaBAK3", 120.00000, 290.00000, 67.57576, "UPPER", "(RS) ", 222.42424, "(NB) ", -0.00000

29 02.06.2015LPL-Einführung29 PRN-File Sektion Statistik STATISTICS - FILE: $$$ TITLE: MPSXNAME Mon May 05 08:44:02 2003 xa VERSION 10.0 Intel Extended-DOS x86 USABLE MEMORY 7,605K BYTES VARIABLES 9 MAXIMUM 50,000 3 LOWER, 0 FIXED, 4 UPPER, 0 FREE CONSTRAINTS 11 MAXIMUM 10,000 0 GE, 2 EQ, 9 LE, 0 NULL/FREE, 0 RANGED. CAPACITY USED BY CATEGORY- 0.0% VARIABLE, 0.1% CONSTRAINT, 48 NON-ZEROS, WORK 778,338 MAXIMIZATION. MPS FORMAT- OBJECTIVE: gew RHS:..rhs RANGE: ? BOUND: Bounds

30 02.06.2015LPL-Einführung30 PRN-File Sektion Lösung O P T I M A L S O L U T I O N ---> OBJECTIVE 256208.6908 SOLVE TIME 00:00:00 ITER 10 MEMORY USED 0.0%

31 02.06.2015LPL-Einführung31 PRN-File Sektion Variablen File: $$$ Mon May 05 08:44:02 2003 Page 1 SOLUTION (Maximized): 256208.6908 MPSXNAME ------------------------------------------------------------------------------- | Variable | Activity | Cost | Variable | Activity | Cost | ------------------------------------------------------------------------------- I anbaZUK1 214.05680 400.00000 | anbaZUK2 50.00000 400.00000 | | REDUCED COST 0.00000 | REDUCED COST -135.15152 | -------------------------------------------------------------------------------

32 02.06.2015LPL-Einführung32 PRN-File Sektion Constraints File: $$$ Mon May 05 08:44:02 2003 Page 2 CONSTRAINTS: MPSXNAME --------------------------------------------------------------------------- |Constraint| Activity | RHS |Constraint| Activity | RHS | --------------------------------------------------------------------------- I flaechK1 289.05680 < 400.00000 I flaechK2 433.58520 < 600.00000 | | DUAL VALUE 0.00000 | DUAL VALUE 0.00000 | ---------------------------------------------------------------------------


Herunterladen ppt "02.06.2015LPL-Einführung1 kommune.lpl Eine Einführung in LPL A LP-Language."

Ähnliche Präsentationen


Google-Anzeigen