02.06.2015lpl-einführung1 kommune.lpl eine einführung in lpl a lp-language
Post on 06-Apr-2016
212 Views
Preview:
TRANSCRIPT
26.04.23 LPL-Einführung 1
kommune.lplkommune.lpl
Eine Einführung in LPLA LP-Language
26.04.23 LPL-Einführung 2
ProjektzieleProjektziele
Erstellung eines LPL-Programmes.Erklärung der wesentlichen
Elemente.Erklärung der einzelnen Schritte.
26.04.23 LPL-Einführung 3
Grundelemente des ProgrammsGrundelemente des Programms
MODELSETPARAMETERVARIABLECONSTRAINTMAXIMIZE oder MINIMZEEND
26.04.23 LPL-Einführung 4
MODEL-SektionMODEL-Sektion
MODEL Kommune;
Ein Kommentar kann eingefügt werden, indem er in (*Text*) hinter dem Semikolon eingefügt wird.
MODEL kommune; (*Beispiel*)
26.04.23 LPL-Einführung 5
SET-SektionSET-Sektion
SETIn dieser Sektion werden die Indexmengen definiert, und es können sofort die Werte zugeordnet werden.
i = /1 2 3/;j = /1:3/;
26.04.23 LPL-Einführung 6
Besonderheiten der SET-DefinitionBesonderheiten 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 *)
26.04.23 LPL-Einführung 7
PARAMETER-SektionPARAMETER-Sektion
In dieser Sektion werden alle Daten symbolisch definiert. Es können durch die „= Zuweisung“ unmittelbar folgend die Datenwerte zugewiesen werden.
26.04.23 LPL-Einführung 8
PARAMETER-Definition 1PARAMETER-Definition 1
Syntax:– name1 = wert1; (* Einzelwert *)– name2 {Indexmenge} = [wert1 wert2 .. ];
Mehrfachindizierte Parameter– name{i-menge1,j-menge2} =
Wertzuweisung;
26.04.23 LPL-Einführung 9
PARAMETER-Definition 2PARAMETER-Definition 2
Wertzuweisung:name {i,j} =
/: 1 2 3 :1 w11 w12 w132 w21 w22 w233 w31 w32 w33/; (* Text *)
Falls der Name nicht aussagekräftig genug ist, kann man einen (* Kommentar *) anfügen.
26.04.23 LPL-Einführung 10
PARAMETER-Definition 3PARAMETER-Definition 3
In einem Vektor oder einer Matrix können Werte durch ihren sog. "Default" ersetzt werden: "."
Für Untergrenzen: 0Für Obergrenzen: ∞
26.04.23 LPL-Einführung 11
PARAMETER gesamtPARAMETER gesamtland {j} = [ 400 600 300];untergrenze {i,j} =/: 1 2 3 :1 . 50 . 2 . . 603 75 . . /;obergrenze {i,j} =/: 1 2 3 :1 . 100 100 2 . 250 1203 . . . /;wasser {j} = [ 900 800 375 ];quote {i} = [ 600 500 325 ]; faktor {j} = [ 1 1.05 1.1 ];ertrag {i} = [ 400 290 150 ];
26.04.23 LPL-Einführung 12
VARIABLE-SektionVARIABLE-Sektion
In dieser Sektion werden die Variablen definiert.
Gleichzeitig kann man zwischen kontinuierlichen und ganzzahligen Variablen unterscheiden.
Schließlich kann man sinnvolle Namen konstruieren.
26.04.23 LPL-Einführung 13
VARIABLE 1VARIABLE 1
Syntax:– name1; (* Einzelvariable *)– name2 {i}; (* Einfach indizierte V. *)– name3 {i,j}; (* Mehrfach indizierte V. *)
26.04.23 LPL-Einführung 14
VARIABLE 2VARIABLE 2Es 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!
26.04.23 LPL-Einführung 15
VARIABLE 3VARIABLE 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.
26.04.23 LPL-Einführung 16
VARIABLE-Definition 1VARIABLE-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.
26.04.23 LPL-Einführung 17
VARIABLE-Definition 2VARIABLE-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
26.04.23 LPL-Einführung 18
CONSTRAINT-SektionCONSTRAINT-Sektion
Dieser Teil enthält die Nebenbedingungen des Modells und die Definition der Zielfunktion.
Nebenbedingung:– name: funktional = rechte Seite;
Zielfunktion:– zielname: funktional;
26.04.23 LPL-Einführung 19
CONSTRAINT-Definition: nameCONSTRAINT-Definition: nameEinzelname: name:einfach indizierter Name: name {i}:mehrfach indiz. Name: name {i,j}:bedingter Name:
name {i | log. Beding.}:– log. Bedingung: i<=10; i>4: i<>5;– name {i,j | name2} nur falls name2
ungleich dem Default-Wert
26.04.23 LPL-Einführung 20
CONSTRAINT: name-KonstruktionCONSTRAINT: 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
26.04.23 LPL-Einführung 21
Beispiele von NB-NamenBeispiele von NB-Namen
nebenbedingung:flaeche {i}:lowerbounds {i,j | untergrenze}:gewinn:
26.04.23 LPL-Einführung 22
CONSTRAINT-Definition: CONSTRAINT-Definition: funktionalfunktionalEin 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.
26.04.23 LPL-Einführung 23
Beispiele für FunktionaleBeispiele 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];
26.04.23 LPL-Einführung 24
Alternative FormulierungenAlternative 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!
26.04.23 LPL-Einführung 25
ZielfunktionZielfunktion
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.04.23 LPL-Einführung 26
END-SektionEND-Sektion
Jedes Programm wird beschlossen durch:– END (ohne Seminkolon!)
26.04.23 LPL-Einführung 27
Lösung mit LPL und XALö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 Kurzform2. PRN-File = Ausführliche
Lösungsdarstellung
26.04.23 LPL-Einführung 28
Auszug aus dem SOL-FileAuszug 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
26.04.23 LPL-Einführung 29
PRN-File Sektion StatistikPRN-File Sektion StatistikSTATISTICS - 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
26.04.23 LPL-Einführung 30
PRN-File Sektion LösungPRN-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%
26.04.23 LPL-Einführung 31
PRN-File Sektion VariablenPRN-File Sektion VariablenFile: $$$ Mon May 05 08:44:02 2003 Page 1SOLUTION (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 |-------------------------------------------------------------------------------
26.04.23 LPL-Einführung 32
PRN-File Sektion ConstraintsPRN-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 | ---------------------------------------------------------------------------
top related