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

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Variablen und Datentypen
Programmieren in Logik
10. Grundlagen imperativer Programmiersprachen
Finale Semantik und beobachtbares Verhalten
Seminar Stochastik im WS 02/03
der Universität Oldenburg
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Polymorphie (Vielgestaltigkeit)
Robotik mit LEGO Mindstorms
Perl-Grundlagen Teile der Präsentation von A. Grupp,
Datentransformation und deskriptive Statistik I
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 5 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung
Beispiele für Ausdrucksalgebren
Ganzzahligkeit in LP-Modellen
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
Zusammenfassung Vorwoche
Das erste Programm (Folie 16)
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Wichtige Fachausdrücke in C
Einführung in die Programmiersprache C 1
Java programmieren mit JavaKara
Hyperlinks und Anker Links notieren
Übungsaufgaben für Microsoft Excel
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Unterprogramme in JAVA
Lösen von quadratischen Ungleichungen
Arrays / Felder Themen: Arrays / Felder / Vektoren Was soll das eigentlich? Erstellen von Arrays Arrays auslesen. Wie sie verwaltet werden.
Einführung in PHP.
Einführung in PHP 5.
MODULA-2.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
3. Lineare Befehle 3.1 Die Ausgabefunktion
Programmieren in C Grundlagen C 2
PHP: Operatoren und Kontrollstrukturen
Zeichenketten in PASCAL
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
1 Tagesüberblick 5 Lösung Hausaufgabe/Fragen Assoziative Felder Funktionen zu Variablenbehandlung.
Anführungszeichen?! echo 'Apfel$atf'; // ergibt: Apfel$aft
Nichtlineare Optimierung
Vordefinierte Datentypen (1)
(Syntax, Strings/Zahlen, Variablen, Arrays)
1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
IntelliVideo1 / 25 IntelliVideo Der intelligente Videorekorder.
Optimierungs- Algorithmen Petra Mutzel Technische Universität Wien Institut für Computergraphik und Algorithmen Algorithmen und Datenstrukturen 2.
Extended Pascal Erweiterung von Pascal shadi Behzadipour shadi Shadi behzadipour.
Variablen und Datentypen
Die STL. Schreiben und Lesen von Dateien  Einbinden von  Lesen und Schreiben über stream-Objekte Streams führen Transformationen zwischen Programmobjekten.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Tutorium Software-Engineering SS14 Florian Manghofer.
Lineare Optimierung Nakkiye Günay, Jennifer Kalywas & Corina Unger Jetzt erkläre ich euch die einzelnen Schritte und gebe Tipps!
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
Datentypen: integer, char, string, boolean
 Präsentation transkript:

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

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

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

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

LPL-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/;

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

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

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

LPL-Einführung9 PARAMETER-Definition 2 Wertzuweisung: name {i,j} = /: : 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.

LPL-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: ∞

LPL-Einführung11 PARAMETER gesamt land {j} = [ ]; untergrenze {i,j} = /: : /; obergrenze {i,j} = /: : /; wasser {j} = [ ]; quote {i} = [ ]; faktor {j} = [ ]; ertrag {i} = [ ];

LPL-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.

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

LPL-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!

LPL-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.

LPL-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.

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

LPL-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;

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

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

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

LPL-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.

LPL-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];

LPL-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!

LPL-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;

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

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

LPL-Einführung28 Auszug aus dem SOL-File "MPSXNAME","$$$ ","Mon May 05 08:44: ", "MAX" 11, 9, , 10 "anbaZUK1", , , , "IN", "anbaBAK1", ,"(NB) ", "anbaZUK2", , , , "LOWER", "(NB) ", , "(RS) ", "anbaBAK3", , , , "UPPER", "(RS) ", , "(NB) ",

LPL-Einführung29 PRN-File Sektion Statistik STATISTICS - FILE: $$$ TITLE: MPSXNAME Mon May 05 08:44: 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

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

LPL-Einführung31 PRN-File Sektion Variablen File: $$$ Mon May 05 08:44: Page 1 SOLUTION (Maximized): MPSXNAME | Variable | Activity | Cost | Variable | Activity | Cost | I anbaZUK | anbaZUK | | REDUCED COST | REDUCED COST |

LPL-Einführung32 PRN-File Sektion Constraints File: $$$ Mon May 05 08:44: Page 2 CONSTRAINTS: MPSXNAME |Constraint| Activity | RHS |Constraint| Activity | RHS | I flaechK < I flaechK < | | DUAL VALUE | DUAL VALUE |