Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
GAMS-Übung
Fakultät Verkehrswissenschaften „Friedrich List“ Institute of Logistics and Aviation
Professur für Betriebswirtschaftslehre, insb. Verkehrsbetriebslehre und Logistik
Dipl.-Wirt.-Inf. Andrea Förster
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 2
Agenda
1: Allgemeines
2: Modellierung von Entscheidungsproblemen
3: Überführung formaler Entscheidungsmodelle in GAMS-Syntax
4: Lösen von Modellen mit GAMS
5: GAMS-Output: Listing
6: Weitere Aspekte
7: Ablaufgestaltung in GAMS (Schleifen, Bedingungen)
8: Gestaltung eigener Ausgabedateien
9: Häufige Fehlermeldungen und mögliche Ursachen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 3
1: Allgemeines
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 4
• GAMS = General Algebraic Modeling System
• Merkmale einer deklarativen Programmiersprache:
Beschreibung eines mathematischen Modells
indizierte Variablen und Gleichungen in relationaler Algebra
• Merkmale einer prozeduralen Programmiersprache:
Bedingungen: if-else
Schleifen: loop, while, repeat
1. Allgemeines
GAMS
• aktuelle Version: GAMS Distribution 22.4, Feb 14, 2007
• algebraische Modellierungssprache
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 5
• weitere Informationen und Möglichkeit zum Download einer
Demoversion (Größe lösbarer Modelle ist begrenzt) unter:
www.gams.com
1. Allgemeines
GAMS
• Dokumentation in GAMS (auch zum Download, s. Literatur):
• GAMS IDE (Integrated Development Environment)(downloadbar, bzw. Menü Help – Help Topics)
• GAMS - A User´s Guide (Menü Help – GAMS Users Guide)
• A GAMS Tutorial (2. Kapitel des GAMS User´s Guide)
• Sammlung verschiedener Modelle – Model Library (Menü File – Model Library)
• McCarl Guide (Menü Help – McCarl Guide)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 6
GAMSIDE starten (Windows)
Start Programme gamsideo. ä. Pfad (je nach Installation)
neues Projekt anlegen
Projekte sollten alle zusammengehörigen Dateien zusammenfassen. An dem Ort, wo die aktuelle Projektdatei (Dateiendung .gpr) liegt, werden die Ausgabedateien u. ä. (.lst, .log) standardmäßig abgelegt.
File Project New Project
1. Allgemeines
bestehendes Projekt öffnen
File Project Open Project
Projektdateien haben die Dateiendung .gpr.
zurzeit aktuelles Projekt
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 7
Neue Eingabedatei anlegen (Dateiendung .gms)
Menü File New
Menü File Save as (wo .gpr-Datei)
1. Allgemeines
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 8
2: Modellierung von Entscheidungsproblemen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 9
KonstruktionReale Welt Modellwelt
ProblemMathematisches
Modell
Modell
vereinfachtes Abbild eines realen Problems oder Systems
Mathematisches Modell
vereinfachtes Abbild eines realen Problems, das in mathematischen Symbolen und Termen ausgedrückt wird
Entscheidungs-/Optimierungsmodell
formale Darstellung eines Entscheidungs- oder Planungsproblems, das in seiner einfachsten Form mindestens eine Menge von Alternativen und eine zu bewertende Zielfunktion enthält
Domschke (2005), S. 3
2. Modellierung von Entscheidungsproblemen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 10
2. Modellierung von Entscheidungsproblemen
Ein Binnenschiffer hat die Möglichkeit, in Dresden Schüttgut zu laden.
Die einzelnen Produkte unterscheiden sich hinsichtlich des Volumens, des
Gewichts und der maximal zu transportierenden Menge in .
Insgesamt besteht die Möglichkeit Ladung bis zu 200 (Volumen) und
bis zu 200 (Gewicht) aufzunehmen.
3mt
Produktbezeichnung
6229364235Erlös in Euro pro
70508011090Max. Ladung
2.21.31.71.91.5Volumen in pro
EDCBA
Aufgrund technischer Rahmenbedingungen können maximal nur drei Aufträgeangenommen werden.
3m
t
ttt
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 11
Reales Problem Mathematisches Modell
Zielfunktion
Ziel:= Gesamterlös aus der Fahrt
maximieren
= Schiffsbeladung-Auftragsannahme
= Schiffsbeladung –Auftragsannahme
Gegebene Daten Gegebene Daten (Parameter)
- Volumen des Schiffes
- Tragfähigkeit des Schiffes
zu beachten:
- max. Auftragsanzahl
2. Modellierung von Entscheidungsproblemen
Restriktion
Restriktion
Restriktionssystem
Restriktion
Definition der verwendeten Symbole (Parameter, Variablen)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 12
Gegebene Daten
- Mengen, Parameter -
2. Modellierung von Entscheidungsproblemen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 13
Menge J („Behältnis“)
2. Modellierung von Entscheidungsproblemen
ACB E
DJA∈
Produkt A gehört zur Menge J = istElement der Menge J
Zusammenfassung der Produkte A, B, C, D und E zu einer
Produktmenge J
Relevante Daten der Produkte
Mengen
Produktmenge Jj∈J
},,,,{ EDCBAJ =Elemente der Menge J:
GJG∉
j Element der Menge J
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 14
t
2. Modellierung von Entscheidungsproblemen
Ein Binnenschiffer hat die Möglichkeit, in Dresden Schüttgut zu laden. Die
einzelnen Produkte unterscheiden sich hinsichtlich des Volumens, des
Gewichts und der maximal zu transportierenden Menge in .
Insgesamt besteht die Möglichkeit Ladung bis zu 200 (Volumen) und
bis zu 200 (Gewicht) aufzunehmen.
3m
Produktbezeichnung
6229364235Erlös in Euro pro
70508011090Max. Ladung
2.21.31.71.91.5Volumen in pro
EDCBA
Aufgrund technischer Rahmenbedingungen können maximal nur drei Aufträgeangenommen werden.
3m
t
ttt
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 15
2. Modellierung von Entscheidungsproblemen
Parameter
Erlös, Volumen und verfügbare Lademenge sind abhängig vom
jeweiligen Produkt Index j
CB
D
J
jejvjL
A
E
Erlös des Produkts A: 35 t/€Erlös des Produkts E: 62 t/€
Volumen des Produkts E: 2.2 tm /3
Max. Lademenge des Produkts E: 70 t
Max. Lademenge des Produkts A: 90 t
Volumen des Produkts A: 1.5 tm /3
Erlös pro Tonne des Produkts
Volumen pro Tonne des Produkts
verfügbare Lademenge von Produkt ][t]/[ 3 tm
]/[€ tjj
j
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 16
Ein Binnenschiffer hat die Möglichkeit, in Dresden Schüttgut zu laden. Die
einzelnen Produkte unterscheiden sich hinsichtlich des Volumens, des
Gewichts und der maximal zu transportierenden Menge in .
Insgesamt besteht die Möglichkeit Ladung bis zu 200 (Volumen) und
bis zu 200 (Gewicht) aufzunehmen.
3m
Produktbezeichnung
6229364235Erlös in Euro pro
70508011090Max. Ladung
2.21.31.71.91.5Volumen in pro
EDCBA
Aufgrund technischer Rahmenbedingungen können maximal nur drei Aufträgeangenommen werden.
2. Modellierung von Entscheidungsproblemen
3m
t
ttt
t
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 17
2. Modellierung von Entscheidungsproblemen
Parameter - Fortsetzung
max. 200 (Gewicht)
max. 200 (Volumen)
Relevante (technische) Daten des Binnenschiffs
t
3m
http://www.river-liners.de.vu/
GRA
max. 3 Aufträge
maximale Tragfähigkeit des Binnenschiffs (Gewicht)
Volumen des Binnenschiffs
maximale Anzahl annehmbarer Aufträge
][t][ 3m
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 18
Gesuchte Unbekannte
– (Entscheidungs-) Variablen –
2. Modellierung von Entscheidungsproblemen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 19
2. Modellierung von Entscheidungsproblemen
Variablen
jxjyF
Auftrag über Produkt annehmen
A B C D E
ja ja ja ja janein nein nein nein nein
0 0 0 0 0
Gesamterlös?
von Produkt zu transportierende Menge
Entscheidung über Auftragsannahme des Produkts (ja/nein)
j ][tj
Gesamterlös (Zielfunktionswert) [€]
?t ?t ?t ?t ?t
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 20
Modellformulierung:
– Zielfunktion,
Nebenbedingungen und
Wertebereiche der Variablen –
2. Modellierung von Entscheidungsproblemen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 21
2. Modellierung von Entscheidungsproblemen
Zielfunktion
∑∈
=Jj
jj xeFmax
Ziel ist es, diejenige Kombination an zu transportierenden Produktenund Mengen zu finden, die den Gesamterlös aus der Fahrt maximiert.
EDCBA xxxxxF 6229364235max ++++=
EEDDCCBBAA xexexexexeF ++++=max
Gesamterlös aus der Fahrt
zu transportierende Menge von Produkt A in t
Erlös pro transportierter von Produkt A
t
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 22
2. Modellierung von Entscheidungsproblemen
Unter den Nebenbedingungen
RxvJj
jj ≤∑∈
1. Volumenrestriktion des Schiffes
2002.23.17.19.15.1 ≤++++ EDCBA xxxxx
Einschränkung der Größe der transportierbaren Mengen durch:
Rxvxvxvxvxv EEDDCCBBAA ≤++++
Volumen pro transportierter von Produkt B
tzu transportierende Menge von Produkt B in t
Volumen des Schiffes in t
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 23
2. Modellierung von Entscheidungsproblemen
Unter den Nebenbedingungen - Fortsetzung
GxJj
j ≤∑∈
2. Gewichtsrestriktion des Schiffes
200≤++++ EDCBA xxxxx
Gxxxxx EDCBA ≤++++
Maximale Tragfähigkeit des Schiffes in t
zu transportierende Menge von Produkt B in t
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 24
2. Modellierung von Entscheidungsproblemen
(sog. Kopplungsgleichung)
3. Verfügbare Lademenge der Produkte
• falls ein Produkt transportiert wird, darf maximal dessen verfügbare Lademenge transportiert werden
• ein Produkt kann nur transportiert werden, wenn das Produkt auch geladen wird
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 25
2. Modellierung von Entscheidungsproblemen
Unter den Nebenbedingungen - Fortsetzung
jjj yLx ≤ Jj∈
AA yx 90≤
BB yx 110≤ CC yx 80≤ EE yx 70≤DD yx 50≤
Entscheidung über Auftragsannahme
0:0 =→= AA xy1o.0:0 ==→= AAA yyxFälle:
zu transportierende Menge von Produkt A in t
verfügbare Lademenge von Produkt A in t
jLxu.1:0 ≤=→> AA yx AAA Lxy ≤→= :1
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 26
2. Modellierung von Entscheidungsproblemen
Unter den Nebenbedingungen - Fortsetzung
AyJj
j ≤∑∈
Es dürfen nur maximal 3 Aufträge angenommen werden.
3≤++++ EDCBA yyyyy
Einschränkung der Anzahl der annehmbaren Aufträge:
Entscheidung über Auftragsannahme Produkt A
maximale Anzahl an Aufträgen (=Produkten) ist 3
Ayyyyy EDCBA ≤++++
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 27
2. Modellierung von Entscheidungsproblemen
Wertebereiche der Entscheidungsvariablen
0≥jx}1,0{∈jy
Jj∈
Jj∈
Variablen : zu transportierende Menge des Produkts
0≥Ex0≥Ax 0≥Bx 0≥Cx 0≥Dx
}1,0{∈Ay }1,0{∈By }1,0{∈Cy }1,0{∈Dy }1,0{∈Ey
ja/nein-Entscheidung, d.h. Wert ist entweder 0 oder 1 (Binärvariablen)
ausschließlich nichtnegative Werte ( 0)
Variablen : Entscheidung über Auftragsannahme
≥jx
jy
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 28
Mengen
Produktmenge Jj∈J
Erlös pro Tonne des Produkts
Volumen einer Tonne des Produkts
verfügbare Lademenge von Produkt
jvjL
je
maximale Tragfähigkeit des Binnenschiffs (Gewicht)
Volumen des Binnenschiffs
GR
maximale Anzahl annehmbarer Aufträge (=Produkte) AVariablen
von Produkt zu transportierende Menge
Entscheidung über Auftragsannahme des Produkts (ja/nein)
Gesamterlös (Zielfunktionswert)
jxjyF
j ][tj
[€]
2. Modellierung von Entscheidungsproblemen
][t][t
]/[€ t
][ 3m
]/[ 3 tmj
jj
Parameter
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 29
Zielfunktion
∑∈
=Jj
jj xeFmax
Unter den Nebenbedingungen
RxvJj
jj ≤∑∈
GxJj
j ≤∑∈
jjj yLx ≤ Jj∈
AyJj
j ≤∑∈
Wertebereiche der Entscheidungsvariablen0≥jx
}1,0{∈jyJj∈Jj∈
2. Modellierung von Entscheidungsproblemen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 30
3: Überführung formaler Entscheidungsmodelle in
GAMS-Syntax
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 31
Parameter
Mathematisches Modell GAMS-Modell
Zielfunktion
Nebenbedingungen
VariablenWertebereich variable(s)
equation(s)
2. Überführung formaler Entscheidungsmodelle in GAMS-Syntax
Mathematisches Modell <-> GAMS
set(s)
parameter(s)scalar(s)table(s)
Daten
Mengen (Indizes)
model(s)+
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 32
• GAMS-Modell = Sammlung von Anweisungen in GAMS-Sprache
3. Überführung formaler Entscheidungsmodelle in GAMS-Syntax
Allgemeine Hinweise
(1) „erklären, dass etwas existiert“
declaration = Festlegung des Typs + Vergabe eines eindeutigen Bezeichners (Namens)
• Erzeugung von entities besteht aus zwei Teilen:
(2) „dem etwas einen bestimmten Wert oder eine bestimmte Form geben“definition = Initialisierung durch Wertzuweisung mit /.../ (Daten) oder
symbolische Definition (Un-/Gleichungen) oder assignment = Wertzuweisung durch Gleichung, in der der Bezeichner
auf der linken Seite steht
• MERKE: Bevor ein Bezeichner (Name eines entities) in Un-/Gleichungen etc. verwendet werden kann, muss er deklariert worden sein.
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 33
3. Überführung formaler Entscheidungsmodelle in GAMS-Syntax
Erzeugung von entities
• Bezeichner müssen mit einem Buchstaben beginnen, dem bis zu 30 weitere Buchstaben oder Zeichen folgen können.
• keine Unterscheidung zwischen Groß- und Kleinschreibung
• mehrfache Verwendung gleichnamiger Bezeichner ist verboten
Regeln für Bezeichner
TypDesEntities NameDesEntities Kommentar /Wertzuweisung/ ;
declaration definition
• Deklaration und Definition/Assignment können wie oben zusammenoder separat erfolgen (Ausnahme: equations/variables immer separat)
• Mehrere entities gleichen Typs können separat mit je einer Anwei-sung oder zusammen in einer Anweisung deklariert werden (Trennung durch Komma oder Zeilenumbruch).
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 34
• Leerzeichen und Leerzeilen zur besseren Lesbarkeit beliebig einsetzbar
• mehrzeilige Anweisungen bzw. mehrere Anweisungen auf einer Zeile sind erlaubt
• alle Anweisungen vorerst immer durch Semikolon abschließen, um Fehler zu vermeiden (nicht alle Semikolons sind zwingend erforderlich)
• Kommas in Dezimalzahlen werden durch Punkte dargestellt
• Kommentare zur Dokumentation (u. a.):
• direkt bei der Deklaration der sets, parameter, equations usw.
• gesamte Zeile: * am Zeilenanfang
• bestimmte Schlüsselworte und Symbole sind reserviert und dürfennicht anderweitig verwendet werden
3. Überführung formaler Entscheidungsmodelle in GAMS-Syntax
Weitere Hinweise
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 35
set J Produktmenge / A, B, C, D, E / ;
eindeutiger Bezeichner(Name der Menge)
Kommentar (Dokumenta-tion, optional, max. 80 Zei-chen)
Elemente der Menge, Trennung durch Komma oder Zeilenumbruch
Mengen
Produktmenge }),,,,{( EDCBAJJj =∈J
3. Überführung formaler Entscheidungsmodelle in GAMS-Syntax
declaration = Festlegung des Typs + Vergabe eines eindeutigen Bezeichners (Namens)
definition = Initialisierung durch Wertzuweisung mit /... /
Abschluss der Anwei-sung
Schlüsselwort zur Declarationvon Mengen
(auch: sets)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 36
3. Überführung formaler Entscheidungsmodelle in GAMS-Syntax
parameter e(j) Erlös pro Tonne des Produkts j / A 35B 42C 36D 29E 62 / ;
eindeutiger Bezeichner(Name des Parameters)
Kommentar (optional)
Parameter
Erlös pro Tonne des Produkts je
Domäne = Index
Datenangabe, Trennung durch Zeilenumbruch oder Komma
Index Wert
Schlüsselwortzur Declarationvon Daten in Listenform (mit Index/Indices)
(auch: parameters)Auch möglich: A=35
Deklaration eines entities in einer Anweisung
j
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 37
3. Überführung formaler Entscheidungsmodelle in GAMS-Syntax
Parameter - Fortsetzung
Volumen pro Tonne des Produkts
verfügbare Lademenge von Produkt
jvjL
parameters v(j) Volumen pro Tonne des Produkts j / A 1.5B 1.7C 1.9D 1.3E 2.2 /
L(j) verfügbare Lademenge von Produkt j / A 90B 110C 80D 50E 70 / ;
Deklaration mehrerer entities gleichen Typs in einer Anweisung
jj
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 38
Beispiel für Trennung zwischen Declaration und Definition/Assignment
3. Überführung formaler Entscheidungsmodelle in GAMS-Syntax
Parameter - Fortsetzung
maximale Tragfähigkeit des Binnenschiffs (Gewicht)
Volumen des Binnenschiffs
GR
maximale Anzahl annehmbarer Aufträge A
scalars G maximale Tragfähigkeit des Schiffs / 200 /
R Volumen des Binnenschiffs / 200 /
A maximale Anzahl annehmbarer Aufträge / 3 / ;Schlüsselwortzur declarationeinzelner Zahlen (Daten ohne Index) (auch: scalar)
G=200; Assignmentscalars G maximale Tragfähigkeit des Schiffs ; Declaration
Definition
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 39
3. Überführung formaler Entscheidungsmodelle in GAMS-Syntax
positive variable x(j) von Produkt j zu transportierende Menge ;
eindeutiger Bezeichner(Name der Variable)
Kommentar (optional)
0≥jx Jj∈
Entscheidungsvariablen inkl. Wertebereich
von Produkt zu transportierende Menge jx
Domäne = Index
Abschluss der Anwei-sung
Schlüsselwort zur Declaration einer Variable mit nichtnegativem Wertebereich
(auch: variables)) bis 0( ∞+
j
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 40
3. Überführung formaler Entscheidungsmodelle in GAMS-Syntax
binary variable y(j) Entscheidung über Auftragsannahme ;
}1,0{∈jy Jj∈
Entscheidungsvariablen inkl. Wertebereich
Entscheidung über Auftragsannahme des Produkts (ja/nein)jy j
Gesamterlös (Zielfunktionswert) F [€]
Schlüsselwort zur Declaration einer Variable mit binärem Wertebereich })1,0({
Schlüsselwort zur Declaration einer unbeschränkten (free) Variable ) bis ( ∞+−∞
Zielfunktionswert muss unbeschränkt sein und darf keinen Index haben
variable F Zielfunktionswert ;
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 41
Stufe 1: Declaration
zweistufig: (1) Declaration(2) Definition
equations zf Zielfunktion (Erlösmaximierung) volres Volumenrestriktiongewres Gewichtsrestriktionkoppgl(j) Kopplungsgleichunganzauftr maximale Auftragsanzahl einhalten ;
Zielfunktion/Restriktionen
Domäne (Index)
eindeutiger Bezeichner(Name der equation)
Kommentar (optional) Abschluss der Anwei-sung
3. Überführung formaler Entscheidungsmodelle in GAMS-Syntax
Schlüsselwortzur Declarationvon Un-/Gleichungen
(o. equation)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 42
3. Überführung formaler Entscheidungsmodelle in GAMS-Syntax
Stufe 2: Definition
Zielfunktion/Restriktionen
∑∈
=Jj
jj xeFBezeichner..
Summenfunktion
Abschluss„mal“
≤≥
„ “ less or equal=g= „ “greater or equal
equal
volres.. sum ( j , v(j)*x(j) ) =l= R ;
gewres.. sum ( j , x(j) ) =l= G ;
koppgl(j).. x(j) =l= L(j)*y(j) ;
anzauftr.. sum ( j , y(j) ) =l= A ;
zf.. F =e= sum ( j , e(j)*x(j) ) ;
Mehrere Indices werden in Klammern gesetzt und durch Komma getrennt, z. B.:sum( (i,j) , …)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 43
model schiffsbeladung / zf, volres, gewres, koppgl, anzauftr / ;
eindeutiger Bezeichner im Modell
enthaltene equations
Modell
Abschluss der Anweisung
3. Überführung formaler Entscheidungsmodelle in GAMS-Syntax
Schlüsselwortzur declarationvon Modellen
(auch:models)
model schiffsbeladung / all/ ;
c
alle equations, die deklariert+definiertwurden, sind im Modell enthalten
Gleichbedeutend:
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 44
4: Lösen von Entscheidungsmodellen mit
GAMS
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 45
solve schiffsbeladung maximizing F using mip ;
Schlüsselwortzum Lösen von Modellen
Bezeichner(Name) des zu lösenden Modells
Richtung der Optimierung (o. minimi-zing)
Modell lösen
4. Lösen von Entscheidungsmodellen mit GAMS
zu optimie-rende Variab-le (Zielfunk-tionswert)
Typ des Modells: mip (mixed inte-ger programming)
da diskrete (binä-re/integer) Va-riablen enthalten
lp: linear programming (weder diskrete Variablen noch nichtlineare Terme)
rmip: relaxed mixed integer programming (Aufhebung der Ganzzahligkeits-forderung für diskrete Variablen)
Weitere relevante Modelltypen:
bewirkt Aufruf eines Solvers: Cplex (standardmäßig voreingestellt für mip-Modelle)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 46
Compilieren – Überprüfung des Quellcodes auf Fehler
4. Lösen von Entscheidungsmodellen mit GAMS
Menü File Compile (Shift+F9)
Lösen starten
Menü File Run
bzw. Button mit rotem Pfeil in der Symbolleiste (F9)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 47
zur solve summaryim Listing springen
Process Window
GAMS-Output-Datei =Listing wird geöffnet
(Logfile)
4. Lösen von Entscheidungsmodellen mit GAMS
Navigationshilfe im Listing
• .lst-Datei mit gleichem Namen wie .gms-Datei
• Speicherort: wo aktuelle .gpr-Datei)
(.log mit gleichemNamen wie .gms)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 48
5: GAMS – Output:
Listing
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 49
Ausschnitt Schiff.lst
Compilation Output - Echo Print
Wiedergabe des Quellcodes
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e mC o m p i l a t i o n
1 *Mengen - Produktmenge2 set j Produktmenge3 /A4 B5 C6 D7 E/ ;8 *Ende der Anweisung910 *Sonstige Daten11 parameters e(j) Erlös pro Tonne des Produkts j / A 3512 B 4213 C 3614 D 2915 E 62 /1617 v(j) Volumen pro Tonne des Produkts j / A 1.518 B 1.919 C 1.720 D 1.321 E 2.2 /22...
5. GAMS – Output: Listing
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 50
Equation Listing SOLVE schiffsbeladung Using MIP From line 66
---- zf =E= Zielfunktion (Erlösmaximierung)
zf.. - 35*x(A) - 42*x(B) - 36*x(C) - 29*x(D) - 62*x(E) + F =E= 0 ; (LHS = 0)
---- volres =L= Volumenrestriktion
volres.. 1.5*x(A) + 1.9*x(B) + 1.7*x(C) + 1.3*x(D) + 2.2*x(E) =L= 200 ;
(LHS = 0)
---- gewres =L= Gewichtsrestriktion
gewres.. x(A) + x(B) + x(C) + x(D) + x(E) =L= 200 ; (LHS = 0)
---- koppgl =L= Kopplungsgleichung
koppgl(A).. x(A) - 90*y(A) =L= 0 ; (LHS = 0)
koppgl(B).. x(B) - 110*y(B) =L= 0 ; (LHS = 0)
koppgl(C).. x(C) - 80*y(C) =L= 0 ; (LHS = 0)
REMAINING 2 ENTRIES SKIPPED
Equation Listing
Möglichkeit zur Überprüfung der Richtigkeit der Formulierung
Anzeige der ersten 3 ausformulierten Restriktionen pro equation (default)
(Bsp. hier: koppgl(A), koppgl(B), koppg(C) von koppgl(j))
Ausformulierung der Zielfunktion und der Restriktionen
Ausschnitt Schiff.lst
Form: linke Seite (LHS) Variablen mit Koeffizienten – rechte Seite Konstante
5. GAMS – Output: Listing
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 51
---- koppgl =L= Kopplungsgleichung
koppgl(A).. x(A) - 90*y(A) =L= 0 ; (LHS = 0)
koppgl(B).. x(B) - 110*y(B) =L= 0 ; (LHS = 0)
koppgl(C).. x(C) - 80*y(C) =L= 0 ; (LHS = 0)
koppgl(D).. x(D) - 50*y(D) =L= 0 ; (LHS = 0)
koppgl(E).. x(E) - 70*y(E) =L= 0 ; (LHS = 0)
Equation Listing
model schiffsbeladung /all/;
*Anzeige von bis zu 5 ausformulierten Nebenbedingungen je equation
schiffsbeladung.limrow=5;*Lösen des Modells
solve schiffsbeladung maximizing F using mip ;
Ausschnitt Schiff.lst
5. GAMS – Output: Listing
Wert der linken Seite zu Beginn ist 0 (alle Variablen haben zu Beginn den Wert 0)d. h. Gleichungen sind nicht erfüllt (infeasible= INFES) (z. B.: 0 ≠ 30)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 52
Column Listing SOLVE schiffsbeladung Using MIP From line 68
---- x von Produkt j zu transportierende Menge
x(A)(.LO, .L, .UP = 0, 0, +INF)
-35 zf1.5 volres1 gewres1 koppgl(A)
x(B)(.LO, .L, .UP = 0, 0, +INF)
-42 zf1.9 volres1 gewres1 koppgl(B)
x(C)(.LO, .L, .UP = 0, 0, +INF)
-36 zf1.7 volres1 gewres1 koppgl(C)
REMAINING 2 ENTRIES SKIPPED
Column ListingAngabe der Koeffizienten der Variablen in allen equationssowie des Wertebereichs und Startwerte
Ausschnitt Schiff.lst
Wert zu Beginn (level value)
obere Schranke (upper bound)
untere Schranke (lower bound)
5. GAMS – Output: Listing
Koeffizient vor Variable in equation
Anzeige der ersten 3 ausformu-liertenVariablen pro allge-meinerVariable
(Bsp. hier: x(A), x(B), x(C) von x(j))
(Anzahl beeinfluss-bar mit „limcol“)
(Spalte in der Koeffizientenmatrix)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 53
Model Statistics SOLVE schiffsbeladung Using MIP From line 68
MODEL STATISTICS
BLOCKS OF EQUATIONS 5 SINGLE EQUATIONS 9BLOCKS OF VARIABLES 3 SINGLE VARIABLES 11NON ZERO ELEMENTS 31 DISCRETE VARIABLES 5
GENERATION TIME = 0.031 SECONDS 4 Mb WIN220-143 Jul 27, 2005
Model Statistics (mip)
Ausschnitt Schiff.lst
Zeitbedarf zum Generieren des Modells
Anzahl diskreter Variablen
5. GAMS – Output: Listing
Anzahl aller Elemente in der Koeffi-zien-tenmatrix, die nicht 0 sind
Anzahl allgemeiner equations/ variables
Anzahl ausformulierter equations/variables
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 54
Solution Report SOLVE schiffsbeladung Using MIP From line 68
S O L V E S U M M A R Y
MODEL schiffsbeladung OBJECTIVE FTYPE MIP DIRECTION MAXIMIZESOLVER CPLEX FROM LINE 68
**** SOLVER STATUS 1 NORMAL COMPLETION**** MODEL STATUS 1 OPTIMAL**** OBJECTIVE VALUE 5413.3333
RESOURCE USAGE, LIMIT 0.093 1000.000ITERATION COUNT, LIMIT 3 10000
Solve Summary mit Status Reports
Richtung der Optimierung
Name der optimierten Variable (Zielfunktionswert)
Name des gelösten Modells
Typ des Modells
verwendeter Solver
Wert der optimierten Variable (Zielfunktionswert)
vom Solver zur Lösung benötigte Zeit (CPU-Time)
maximal zulässiger Zeitbedarf
vom Solver zur Lösung benötigte Iterationen
maximal zulässige Anzahl Iterationen
Ausschnitt Schiff.lst
5. GAMS – Output: Listing
wichtige Infos
„solverseitig keine Probleme“ optimale Lösung gefunden
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 55
GAMS/Cplex Aug 1, 2005 WIN.CP.CP 22.0 029.032.041.VIS For Cplex 9.1Cplex 9.1.2, GAMS Link 29
Proven optimal solution.
MIP Solution: 5413.333333 (3 iterations, 0 nodes)Final Solve: 5413.333333 (0 iterations)
Best possible: 5413.333333Absolute gap: 0.000000Relative gap: 0.000000
Solve Summary – Solver Report
nachgewiesene optimale Lösung
absolute Abweichung zur besten bekannten Lösung = 0
relative Abweichung zur besten bekannten Lösung= 0
beste mögliche Lösung
Ausschnitt Schiff.lst
5. GAMS – Output: Listing
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 56
LOWER LEVEL UPPER MARGINAL
---- EQU zf . . . 1.000---- EQU volres -INF 200.000 200.000 23.333---- EQU gewres -INF 100.667 200.000 .
zf Zielfunktion (Erlösmaximierung)volres Volumenrestriktiongewres Gewichtsrestriktion
---- EQU koppgl Kopplungsgleichung
....
LOWER LEVEL UPPER MARGINAL
---- EQU anzauftr -INF 2.000 3.000 .
anzauftr maximale Auftragsanzahl einhalten
---- VAR x von Produkt j zu transportierende Menge
LOWER LEVEL UPPER MARGINAL
A . 30.667 +INF .B . . +INF -2.333C . . +INF -3.667D . . +INF -1.333E . 70.000 +INF .
Solver Solution Reports
untere Schranke (lower bound)
Wert (level value) obere Schranke (upper bound)
Werte und Schranken der equations(EQU) und Variablen (VAR)
Ausschnitt Schiff.lst
5. GAMS – Output: Listing
=0
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 57
**** REPORT SUMMARY : 0 NONOPT0 INFEASIBLE0 UNBOUNDED
Report SummaryAnzahl
nichtoptimaler
Zeilen/Spalten
nicht lösbarerunbeschränkter
Ausschnitt Schiff.lst
File Summary
**** FILE SUMMARY
Input G:\Schiff.gms
Output G:\Schiff.lst
Speicherort und Name der Eingabe-datei
Speicherort und Name des Listings
Ausschnitt Schiff.lst
5. GAMS – Output: Listing
wichtige Infos
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 58
Display-Anweisung (nach der solve-Anweisung)
Anzeige der Elemente von Mengen, Daten und der optimalen Werte der Variablen nach der Report Summary
display jeRGAx.ly.lF.l ;
Anzeige der optimalen Werte von Variablen mit .l (level value)
Anzeige von Elementen von sets oder der Werte von scalars, parameters
Die Display-Anweisung kann nach der Wertzuweisung eingesetzt werden.
5. GAMS – Output: Listing
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 59
---- 81 SET j Produktmenge
A, B, C, D, E
---- 81 PARAMETER e Erlös pro Tonne des Produkts j
A 35.000, B 42.000, C 36.000, D 29.000, E 62.000
---- 81 PARAMETER R = 200.000 Volumen des Binnenschiffs
PARAMETER G = 200.000 maximale Tragfähigkeit des Binnenschiffs
PARAMETER A = 3.000 maximale Anzahl annehmbarer Aufträge
---- 81 VARIABLE x.L von Produkt j zu transportierende Menge
A 30.667, E 70.000
---- 81 VARIABLE y.L Entscheidung über Auftragsannahme
A 1.000, E 1.000
---- 81 VARIABLE F.L = 5413.333 Zielfunktionswert=Gesamerloes
Display-Anweisung
Ausschnitt Schiff.lst
5. GAMS – Output: Listing
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 60
6. Weitere Aspekte
6.1 Mengen
Definition von Elementen
Mehrere Namen für ein set
Teilmenge aus einem übergeordneten set – subset
Zuweisung von Elementen nach Deklaration
Mehrdimensionale sets
Position von Elementen in Mengen
Anzahl von Elementen in einer Menge
6.2 Daten
6.3 Variablen
6.4 Equations
6.5 Modelltypen und Lösen von Modellen
6.6 Listing, Kommentare, Aufbau von GAMS-Modellen, sonstiges
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 61
Sets – Definition von Elementen
set i Knotenmenge / 1, 2, 3, 4, 5, 6 / ;
set i Knotenmenge / 1*6 / ;
• Unterscheiden sich die Elemente eines sets durch eine Erhöhung um den Wert 1 (Elemente mit Zahlen), reicht es aus, nur das erste und das letzte Element anzugeben und beide durch einen * zu verbinden.
• Variieren dürfen nur Zahlen; enthaltene Zeichen in Elementnamen(Buchstaben, +/-) müssen im ersten und letzten Element identisch sein.
• Die im ersten Element enthaltene Zahl muss kleiner als die im letzten Element sein.
6. Weitere Aspekte6.1 Mengen
Gleichbedeutend:
12
34
6
5
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 62
Sets – Mehrere Namen für ein set
set i Knotenmenge / 1, 2, 3, 4, 5, 6 / ;
alias( i, k, l) ;
• Einem set dürfen beliebig viele weitere Namen gegeben werden.
• Die Reihenfolge der Bezeichner in der alias-Anweisung ist egal.
• Beachte: Nur ein Bezeichner darf vorher schon deklariert worden sein.
}6,5,4,3 ,2 ,1{=== lki
Trennung der Namen durch Komma
6. Weitere Aspekte6.1 Mengen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 63
Sets – Teilmenge aus einem übergeordneten set - subset
sets i Knotenmenge /1*6/
q(i) Startknoten /1/ ;
Ist eine Menge von Elementen eine Teilmenge einer übergeordnetenMenge, empfiehlt es sich die übergeordnete Menge in Klammern anzugeben, um Fehler zu vermeiden, die durch eine fehlerhafte Angabe der Elemente der Teilmenge entstehen. Bei der Compilierung wird dadurch ein domain checking durchgeführt, d. h. es wird überprüft, ob die Elemente der Teilmenge wirklich Elemente der übergeordneten Menge sind.
Bezeichner der übergeordneten Menge
6. Weitere Aspekte6.1 Mengen
12
34
6
5
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 64
Sets - Zuweisung (assignment) von Elementen nach Deklaration
sets i Knotenmenge /1*6/q(i) Quelle(Startknoten)s(i) Senker(i) Restknoten (weder Quelle noch Senke) ;
q("1")= yes ; Zugehörigkeit eines Elements zu einer Menge: ja (yes) (=Hinzufügen) oder nein (no) (=Entfernen)
Bezug auf einzelne Elemente: Name des Elements in " " oder ' '
Bei Subsets Bezug auf alle Elemente des übergeordneten Sets: Bezeichner des übergeordneten Sets
6. Weitere Aspekte6.1 Mengen
Entfernen der Quelle
r(i)= yes ;
r("1")= no ;
r("6")= no ;
s("6")= yes ;
}6,5,4,3 ,2 ,1{=i}6,5,4,3 ,2 {=i
}5,4,3 ,2 {=iEntfernen der Senke
Durch diese Art der Elementzuweisung werden Mengen dynamisch.
12
3
46
5
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 65
Sets – Mehrdimensionale sets
sets i Knotenmenge / 1, 2, 3, 4, 5, 6 /
p(i,i) Pfeilmenge / 1.21.32.42.63.4
5.6 / ;
4.5
set p(i,i) Pfeilmenge/ 1.(2,3)
2.(4,6)3.4
Zusammenfassende Schreibweise z.B.
6. Weitere Aspekte6.1 Mengen
4.(5,6)
Index 1 Index 2
Ein Pfeil verbindet zwei Knoten (=zwei Elemente aus der Menge Knoten) miteinander.
Verbindung der Elemente durch .
Bis zu 10 Dimensionen möglich.
1
2
3
4
6
54.6
5.6 / ;
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 66
Sets – Position von Elementen in Mengen
set i Knotenmenge /1*6/ ;parameter e(i) Position eines Knotens in der Menge i ;e(i) = ord(i) ;
---- 10 PARAMETER e Position eines Knotens in der Menge i
1 1.000, 2 2.000, 3 3.000, 4 4.000, 5 5.000, 6 6.000
Sets – Anzahl von Elementen in einer Menge
set i Knotenmenge /1*6/ ;scalar a Anzahl der Knoten in der Menge i ;a = card(i) ;---- 10 PARAMETER a = 6.000 Anzahl der Knoten in
der Menge i
6. Weitere Aspekte6.1 Mengen
ord() ist nicht bei dynamischen Mengen anwendbar
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 67
6. Weitere Aspekte
6.1 Mengen
6.2 Daten
Eingabe mehrdimensionaler Daten in Tabellenform
Einlesen von Daten aus Textdateien
Verwendung vorhandener zur Erzeugung neuer Daten
Bedingte Wertzuweisungen
6.3 Variablen
6.4 Equations
6.5 Modelltypen und Lösen von Modellen
6.6 Listing, Kommentare, Aufbau von GAMS-Modellen, sonstiges
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 68
220570630390460M
670420150490500HH
630570290540200B
SKHFDDStandort/Kunde
Entfernung der Standorte zu den Kunden in km
6. Weitere Aspekte6.2 Daten (Tabellen)
Tables – Eingabe mehrdimensionaler Daten in Tabellenform
Beispiel: tabellarisch darstellbare Daten
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 69
Domänen = Indices (durch Komma getrennt)
Index 1 Index 2auch: M.DD=460
sets s Standorte / B, HH, M /k Kunden / DD, F, H, K, S / ;
parameter d(s,k) Distanz zwischen Standort s und Kunde k
/ B.DD 200, B.F 540, B.H 290, B.K 570, B.S 630
HH.DD 500, HH.F 490, HH.H 150, HH.K 420, HH.S 670
M.DD 460, M.F 390, M.H 630, M.K 570, M.S 220 / ;
Tables – Eingabe mehrdimensionaler Daten in Tabellenform
Als Parameter (listenartig):
6. Weitere Aspekte6.2 Daten (Tabellen)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 70
Zeilenumbruch vor Wertetabelle
Werte müssen den zugehörigen Spaltennamen überlappen ! Wertetabelle nicht in / /!
Alternativ komfortabler in tabellarischer Form:
Index 2
Index 1
Schlüsselwort zur Deklaration von mehrdimensionalen Daten in Tabellenform
table d(s,k) Distanz zwischen Standort s und Kunde k DD F H K S
B 200 540 290 570 630HH 500 490 150 420 670M 460 390 630 570 220 ;
Tables – Eingabe mehrdimensionaler Daten in Tabellenform
6. Weitere Aspekte6.2 Daten (Tabellen)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 71
Falls nicht alle Spalten auf eine Zeile passen – Fortsetzung wie folgt:
Tables – Eingabe mehrdimensionaler Daten in Tabellenform
table d(s,k) Distanz zwischen Standort s und Kunde kDD F H
B 200 540 290 HH 500 490 150 M 460 390 630
+ K SB 570 630HH 420 670M 570 220 ;
6. Weitere Aspekte6.2 Daten (Tabellen)
• tables haben eine fest vorgegebene Struktur
• es kann nur eine table pro table-Anweisung deklariert werden
• tables können bis zu 10 Dimensionen haben
• für weitere Einzelheiten siehe User‘s Guide
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 72
Einlesen von Daten aus Textdateien (am Bsp. einer table)
DD F H K S
B 200 540 290 570 630
HH 500 490 150 420 670
M 460 390 630 570 220
table d(s,k) Distanz zwischen Standort s und Kunde k
$include Distanzen.txt
;
$include D:\Daten\Distanzen.txt
am Ort der aktuellen .gpr-Datei
laut Pfadangabe
Distanzen.txt
Durch Tabstopp getrennte Textdatei (.txt):
6. Weitere Aspekte6.2 Daten (Einlesen)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 73
Einlesen von Daten aus Textdateien (am Bsp. einer table)
dummy,DD,F,H,K,SB,200,540,290,570,630HH,500,490,150,420,670M,460,390,630,570,220
table d(s,k) Distanz zwischen Standort s und Kunde k
$ondelim
$include Distanzen.csv
$offdelim
;
Distanzen.csv
Durch Trennzeichen getrennte Textdatei KOMMA! (.csv):
in erster Zeile und erster Spalte muss ein Eintrag vorhanden sein, gleich welcher
Einträge müssen durch Kommagetrennt sein
6. Weitere Aspekte6.2 Daten (Einlesen)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 74
Verwendung vorhandener Daten zur Erzeugung neuer Daten
table d(s,k) Distanz zwischen Standort s und Kunde k DD F H K S
B 200 540 290 570 630HH 500 490 150 420 670M 460 390 630 570 220 ;
scalar f Frachtkosten pro Stück und 100 km /0.5/ ;
parameter c(s,k) Transportkosten pro Stück zw. s und k ;
c(s,k) = d(s,k) / 100 * f ;
Berechnung von c für jede Kombination aus s und k
auf konkrete Elemente wird über 'Element' Bezug genommen
6. Weitere Aspekte6.2 Daten (Wertzuweisung)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 75
Operatoren für numerische Beziehungen
ungleich<>ne
größer oder gleich>=ge
größer >gt
=
<=
<
gleicheq
kleiner oder gleichle
kleiner alslt
BedeutungOperator
Logische Operatoren
oderor
exklusiv oderxor
undand
nichtnot
BedeutungOperator
0 = falsch (false)
<>0 = wahr (true)
wahr oder falsch
Bedingungen mittels:
6. Weitere Aspekte6.2 Daten (Bedingte Wertzuweisung)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 76
Beispiele für $-Bedingung
$ auf der linken Seite der Anweisung
scalar x
y /6/ ;
x$(y < 5) = 10;
---- 6 PARAMETER x = 0.000
scalar x /2/
y /6/ ;
x$(y < 5) = 10;
---- 6 PARAMETER x = 2.000
Es wird nur dann eine Zuweisung durchgeführt, wenn die Bedingung erfüllt ist. Falls noch kein Wert vorhanden ist, wird der Wert 0zugewiesen, falls die Bedingung nicht erfüllt ist.
6. Weitere Aspekte6.2 Daten (Bedingte Wertzuweisung)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 77
Beispiele für $-Bedingung
$ auf der rechten Seite der Anweisung
scalar x /2/
y /6/ ;
x = 10 $(y < 5);
---- 6 PARAMETER x = 0.000
scalar x /2/
y /6/ ;
x = 10 $(y > 5);
---- 6 PARAMETER x = 10.000
Es wird immer eine Zuweisung durchgeführt. Falls die Bedingung nicht erfüllt ist, wird der Wert 0 zugewiesen.
6. Weitere Aspekte6.2 Daten (Bedingte Wertzuweisung)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 78
6. Weitere Aspekte
6.1 Mengen
6.2 Daten
6.3 Variablen
Arten von Variablen
Veränderung des Wertebereichs
6.4 Equations
6.5 Modelltypen und Lösen von Modellen
6.6 Listing, Kommentare, Aufbau von GAMS-Modellen, sonstiges
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 79
Variablen – Arten von Variablen
nur ganzzahlige Werte innerhalb der Schranken, beide Schranken veränderbar (diskrete Variable)
1000integer
Wert entweder 0 oder 1, nicht veränderbar (diskrete Variable)10binary
untere Schranke veränderbar0negative
obere Schranke veränderbar0positive
beide Schranken veränderbarfree (default)
Anmerkung
Obere Schranke (Upper Bound)
–default –
Untere Schranke (Lower Bound)
–default –Variablentyp
∞+
∞+
∞−
∞−
6. Weitere Aspekte6.3 Variablen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 80
Variablen - Veränderung des Wertebereichs
fester Wert (fixed value) – untere und obere Schranke sind identisch.fx
obere Schranke (upper bound).up
untere Schranke (lower bound).lo
BedeutungSuffix
x.up('B','DD') = 0;
x.lo('M','K') = 100;
x.fx('HH','H') = 50;
Kunde in DD darf nicht von Standort B beliefert werdenKunde in K muss mindestens 100 ME aus M erhaltenKunde in H erhält genau 50 ME aus HH
Variable .Suffix Index bzw. Indizes, hier: gilt nur für bestimmte Variablen
6. Weitere Aspekte6.3 Variablen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 81
6. Weitere Aspekte
6.1 Mengen
6.2 Daten
6.3 Variablen
6.4 Equations
Arten von Equations
Bedingte Equations
6.5 Modelltypen und Lösen von Modellen
6.6 Listing, Kommentare, Aufbau von GAMS-Modellen, sonstiges
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 82
Beispiele für $-Bedingung Bedingte Equations
equations nbk(i) Nebenbedingungen als <= Restriktion ;
nbk(i)$(ord(i)=2).. sum( j, a(i,j)*x(j) ) =l= b(i) ;
Es wird lediglich eine Nebenbedingung für das zweite Element derMenge i aufgebaut.
Arten von Equations
6. Weitere Aspekte6.4 Equations
Kleiner-gleich-Bedingung (≤)=l=
Größer-gleich-Bedingung (≥)=g=
Gleichung (=)=e=
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 83
Beispiele für $-Bedingung – Bedingte Equations
sets J Menge Strukturvariablen (Spalten) /1*3/
I Menge Nebenbedingungen (Zeilen) /1*3/
KG(i) Menge aller Nebenbedingungen mit kleiner oder gleich /2/
GG(i) Menge aller Nebenbedingungen mit größer oder gleich /1, 3/;.....
equations zf Zielfunktion
nbk(i) Nebenbedingungen als <=-Restriktion
nb(i) Nebenbedingungen als =-Restriktion
nbg(i) Nebenbedingungen als >=-Restriktion ;
zf.. F =e= sum(j, c(j)*x(j));nbk(i)$(kg(i)).. sum(j, a(i,j)*x(j) ) =l= b(i);nb(i)$((not kg(i)) and (not gg(i))).. sum(j, a(i,j)*x(j) ) =e= b(i);nbg(i)$(gg(i)).. sum(j, a(i,j)*x(j) ) =g= b(i);
Die Restriktionen werden nur für diejenigen Elemente der Menge iaufgebaut, die dem entsprechenden subset zugeordnet wurden.
6. Weitere Aspekte6.4 Equations
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 84
6. Weitere Aspekte
6.1 Mengen
6.2 Daten
6.3 Variablen
6.4 Equations
6.5 Modelltypen und Lösen von Modellen
Modelltypen
Lösen von linearen Opt.-Problemen (lp)
Einstellen des Optimalitätskriteriums bei mip
Verändern der Zeit- bzw. Iterationsbeschränkung
6.6 Listing, Kommentare, Aufbau von GAMS-Modellen, sonstiges
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 85
6. Weitere Aspekte6.5 Modelltypen
relaxed mixed integer programming (Aufheben der Ganzzahligkeits-forderung für diskrete Variablen
rmip
mixed integer programming (diskrete Variablen enthalten)mip
linear programming (keine diskreten (binäre/integer) Variablen enthalten)
lp
AnwendungsgebietModelltyp
Festlegung des relevanten Modelltypen im Quelltext: siehe Folie 45
Modelltypen
bewirkt Aufruf eines Solvers: Cplex(standardmäßig voreingestellt für mip-Modelle)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 86
4321 40705090max xxxxF +++=
362123241321302112
34321
24321
14321
=++−+=+−++=+++−
yxxxxyxxxx
yxxxx
0,,,,,, 3214321 ≥yyyxxxx
unter den Nebenbedingungen
Beispiel: Gleichungssystem
Lösen von linearen Optimierungsproblemen (lp)
6. Weitere Aspekte6.5 Lösen von Modellen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 87
Mengen
Menge der Strukturvariablen (Spalten) mit Jj∈JMenge der Nebenbedingungen (Zeilen) mit I
Variablen
Strukturvariablen (x-Variablen)
Schlupfvariablen (y-Variablen)
Zielfunktionswert
jxiyF
Ii∈
Zielfunktionskoeffizient der Variable
Konstante auf der rechten Seite der Nebenbedingung
Koeffizient in der Restriktion vor Variable (Koeffizientenmatrix) jc jija
ib
j
Beispiel: Allgemeine Modellformulierung
Parameter
i
i
Lösen von linearen Optimierungsproblemen (lp)
6. Weitere Aspekte6.5 Lösen von Modellen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 88
Zielfunktion
∑∈
=Jj
jj xcFmax
Unter den Nebenbedingungen
Wertebereich der Variablen
0≥jx0≥iy
Jj∈Ii∈
iiJj
jij byxa =+∑∈
Ii∈
Beispiel: Allgemeine Modellformulierung
Lösen von linearen Optimierungsproblemen (lp)
6. Weitere Aspekte6.5 Lösen von Modellen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 89
sets J Menge der Strukturvariablen (Spalten) /1,2,3,4/I Menge der Nebenbedingungen /1,2,3/ ;
parameters b(i) Konstante auf der rechten Seite der Gleichung i /1 30, 2 24, 3 36/c(j) Zielfunktionskoeffizient vor Variable x(j) /1 90
2 503 704 40/ ;
table a(i,j) Koeffizient in den Restriktionen vor Variable x(j) (Koeffizientenmatrix)1 2 3 4
1 2 -1 1 22 1 2 3 -13 3 2 -1 2 ;
positive variables x(j) Strukturvariableny(i) Schlupfvariablen ;
variable F Zielfunktionswert ;equations zf Zielfunktion
nb(i) Nebenbedingungen ;
zf.. F =e= sum(j, c(j)*x(j)) ;nb(i).. sum(j, a(i,j)*x(j) ) + y(i) =e= b(i) ;model aufgabe2_3_6 /all/ ;
solve aufgabe2_3_6 maximizing F using lp ; GS.gms
Beispiel: Allgemeine Modellformulierung in GAMS
Lösen von linearen Optimierungsproblemen (lp)
6. Weitere Aspekte6.5 Lösen von Modellen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 90
Model Statistics SOLVE gs Using LP From line 40
MODEL STATISTICS
BLOCKS OF EQUATIONS 2 SINGLE EQUATIONS 4BLOCKS OF VARIABLES 3 SINGLE VARIABLES 8NON ZERO ELEMENTS 20
GENERATION TIME = 0.063 SECONDS 4 Mb WIN222-145 Apr 21, 2006
Zeitbedarf zum Generieren des Modells
Anzahl aller Elemente in der Koeffi-zien-tenmatrix, die nicht 0 sind
Anzahl allgemeiner equations/ variables
Anzahl ausformulierter equations/variables
Ausschnitt GS.lst
Lösen von linearen Optimierungsproblemen (lp)
Beispiel: Model Statistics
6. Weitere Aspekte6.5 Lösen von Modellen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 91
GAMS/Cplex Apr 21, 2006 WIN.CP.CP 22.2 031.034.041.VIS For Cplex 10.0Cplex 10.0.1, GAMS Link 31
Optimal solution found.Objective : 1513.333333
nachgewiesen optimale Lösung
5. GAMS – Output: Listing
Ausschnitt GS.lst
Lösen von linearen Optimierungsproblemen (lp)
Beispiel: Solve Summary – Solver Report
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 92
LOWER LEVEL UPPER MARGINAL
---- EQU zf . . . 1.000
zf Zielfunktion
---- EQU nb Nebenbedingungen
LOWER LEVEL UPPER MARGINAL
1 30.000 30.000 30.000 18.148 2 24.000 24.000 24.000 21.481 3 36.000 36.000 36.000 12.593
Beispiel: Solver Solution Reports
Simplexmultiplika-toren(marginal/dual value)
Wie viel mal wurde die NB auf die ZF addiert (=Simplexmultiplikatoren )?
Bzw. wie verändert sich der ZFW F, wenn die rechte Seite der equation(Gleichung) (Konstante) um eine marginale Einheit erhöht wird?
iπ
hier: ZFW steigt=verbessert sich (da max), Entschärfung der NB
iπ
Veränderung von F um ∆· iπ
Ausschnitt GS.lst
Lösen von linearen Optimierungsproblemen (lp)
6. Weitere Aspekte6.5 Lösen von Modellen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 93
LOWER LEVEL UPPER MARGINAL
---- VAR F -INF 1513.333 +INF .
F Zielfunktionswert
---- VAR x Strukturvariablen
LOWER LEVEL UPPER MARGINAL
1 . . +INF -5.556 2 . 7.333 +INF . 3 . 8.000 +INF . 4 . 14.667 +INF .
---- VAR y Schlupfvariablen
LOWER LEVEL UPPER MARGINAL
1 . . +INF -18.148 2 . . +INF -21.481 3 . . +INF -12.593
reduzierte Kosten/ Schattenpreise (marginal/dual value)
Wie verändert sich der ZFW F, wenn der Wert der Variable (bzw. ) um eine marginale Einheit ∆ erhöht wird? (=Auf-nahme in die Basis) (reduzierte Kosten )
jx iy
jcVeränderung von F um ∆· jc
GILT NUR BEI NICHT DEGENERIERTEN LÖSUNGEN!
Ausschnitt GS.lst
Beispiel: Solver Solution Reports
Lösen von linearen Optimierungsproblemen (lp)
6. Weitere Aspekte6.5 Lösen von Modellen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 94
Einschub: Vergleich Solver Solution Reports - Simplextableau
1513,33312,59321,48118,1480005,5556
14,6670,1851-0,0370,29621001,1111
7,3330,25920,1481-0,1850010,5555
8-0,1110,22220,22220100,33331x 2x 3x 4x
3x2x4x
1y
F
2y 3y bOptimaltableau Simplexalgorithmus
3211 593,12481,21148,18556,53,1513 yyyxF −−−−=
556,511−== ccx
148,1851−== ccy
481,2162−== ccy
593,1273−== ccy
556,511=−=− ccx
---- VAR x Strukturvariablen
LOWER LEVEL UPPER MARGINAL
1 . . +INF -5.556 2 . 7.333 +INF . 3 . 8.000 +INF . 4 . 14.667 +INF .
---- VAR y Schlupfvariablen
LOWER LEVEL UPPER MARGINAL
1 . . +INF -18.148 2 . . +INF -21.481 3 . . +INF -12.593
Ausschnitt GS.lst
6. Weitere Aspekte6.5 Lösen von Modellen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 95
---- 42 VARIABLE x.L Strukturvariablen
2 7.333, 3 8.000, 4 14.667
---- 42 VARIABLE y.L Schlupfvariablen
( ALL 0.000 )
---- 42 VARIABLE x.M Strukturvariablen
1 -5.556
---- 42 VARIABLE y.M Schlupfvariablen
1 -18.148, 2 -21.481, 3 -12.593
---- 42 VARIABLE F.L = 1513.333 Zielfunktionswert
---- 42 EQUATION nb.M Nebenbedingungen
1 18.148, 2 21.481, 3 12.593
solve gs maximizing F using lp ;
display x.l, y.lx.m, y.mF.lnb.m ;
Ausgabe des marginal value von variables/equations am Ende des Listings mittels display-Anweisung
Ausschnitt GS.lst
Upper bound.up
Lower bound.lo
Marginal.m
Level.l
6. Weitere Aspekte6.5 Lösen von Modellen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 96
Einstellen des Optimalitätskriteriums bei mip
set j Produktmenge /1*100/ ;
parameters e(j) Erloes pro Tonne des Produkts j
v(j) Volumen pro Tonne des Produkts j
L(j) verfuegbare Lademenge von Produkt j ;
e(j)=uniform(10,80);
v(j)=uniform(0.5,5);
L(j)=uniform(10,140);
scalars R Volumen des Binnenschiffs /200/
G maximale Tragfaehigkeit des Binnenschiffs /200/
A maximale Anzahl annehmbarer Auftraege /4/ ;
Erweiterung des Beispiels Schiffsbeladung auf 100 Produkte und zufällig generierte Erlöse, Volumina und Lademengen
zwischen 10 und 80 normalverteilte Werte für alle je
6. Weitere Aspekte6.5 Lösen von Modellen
Ausschnitt Schiff_big.lgms
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 97
Einstellen des Optimalitätskriteriums bei mip
Solution satisfies tolerances.
MIP Solution: 13057.128334 (3 iterations, 0 nodes)
Final Solve: 13057.128334 (0 iterations)
Best possible: 13530.634998
Absolute gap: 473.506664
Relative gap: 0.036264
Lösung – Solve Summary GanzzahligeLösung liegt innerhalb der Toleranz, keine Optimalität nachgewiesen
absolute Abweichung der ganzzahligen Lösung zur besten möglichen Lösung
relative Abweichung der ganzzahligenLösung zur besten möglichen Lösung
beste mögliche Lösung
%63,313,13057
51,473=
51,47364,1353013,13057
=
−
6. Weitere Aspekte6.5 Lösen von Modellen
Ausschnitt Schiff_big.lst
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 98
Einstellen des Optimalitätskriteriums bei mip
option optcr=0;
solve schiffsbeladung maximizing F using mip ;
Proven optimal solution.
MIP Solution: 13519.911667 (5 iterations, 0 nodes)
Final Solve: 13519.911667 (2 iterations)
Best possible: 13519.911667
Absolute gap: 0.000000
Relative gap: 0.000000
nachgewiesene optimale ganzzahligeLösung gefunden
optimale Lösung finden (default: 0.1, also 10 % Differenz zulässig)
Einstellen der Genauigkeit erfolgt über die Option optcr (irgendwo) vor dem solve-Statement:
6. Weitere Aspekte6.5 Lösen von Modellen
Ausschnitt Schiff_big.lst
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 99
Verändern der Zeit- bzw. Iterationsbeschränkung
S O L V E S U M M A R Y
MODEL schiffsbeladung OBJECTIVE F
TYPE MIP DIRECTION MAXIMIZE
SOLVER CPLEX FROM LINE 56
**** SOLVER STATUS 1 NORMAL COMPLETION
**** MODEL STATUS 1 OPTIMAL
**** OBJECTIVE VALUE 13519.9117
RESOURCE USAGE, LIMIT 0.109 1000.000
ITERATION COUNT, LIMIT 7 10000
Maximal zulässiger Zeitbedarf zum Lösen (default: 1000 Sekunden)
Maximal zulässige Anzahl von Iterationen zum Lösen (default: 10000 Iterationen)
vom Solver zur Lösung benötigte Zeit (CPU-Zeit)
vom Solver zur Lösung benötigte Iterationen
6. Weitere Aspekte6.5 Lösen von Modellen
Ausschnitt Schiff_big.lst
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 100
Verändern der Zeit- bzw. Iterationsbeschränkung
Cplex 10.0.1, GAMS Link 31
Cplex licensed for 1 use of lp, qp, mip and barrier, with 2 parallel threads.
Resource limit exceeded, no integer solution found.
No solution returned
6. Weitere Aspekte
Bei größeren Problemen kann eine Erhöhung notwendig sein, da bspw. innerhalb der vorgegebenen Zeit keine Lösung gefunden wird.
Bsp. für Zeitüberschreitung:
Ausschnitt Schiff_big.lst
6.5 Lösen von Modellen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 101
Verändern der Zeit- bzw. Iterationsbeschränkung
Über model.reslim bzw. model.iterlim (irgendwo) vor dem solve-Statement:
schiffsbeladung.reslim=20000;
solve schiffsbeladung maximizing F using mip ;Erhöhung der Rechenzeit auf 20.000 Sekunden
ITERATION COUNT, LIMIT 7 50000
6. Weitere Aspekte
RESOURCE USAGE, LIMIT 0.109 20000.000
Ausschnitt Schiff_big.lst
schiffsbeladung.iterlim=50000;
solve schiffsbeladung maximizing F using mip ;
Erhöhung der Iterations-anzahl auf 50.000
Ausschnitt Schiff_big.lst
6.5 Lösen von Modellen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 102
6. Weitere Aspekte
6.1 Mengen
6.2 Daten
6.3 Variablen
6.4 Equations
6.5 Modelltypen und Lösen von Modellen
Modelltypen
Lösen gemischt-ganzzahliger Opt.-Probleme (mip)
Einstellen des Optimalitätskriteriums bei mip
Verändern der Zeit- bzw. Iterationsbeschränkung
6.6 Listing, Kommentare, Aufbau von GAMS-Modellen, sonstiges
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 103
6. Weitere Aspekte6.6 Listing
limcol - Anzahl der aufgelisteten Spalten pro Variable
model gs /all/;gs.limcol=4;solve gs maximizing F using lp ;
analog: limrow - Anzahl der im Equation Listing ausformulierten Zeilen pro Equation
Anzeige von 4 ausformulierten Nebenbedingungen je equation
Column Listing SOLVE gs Using LP From line 40
---- x Strukturvariablenx(1)
(.LO, .L, .UP = 0, 0, +INF)-90 zf2 nb(1)1 nb(2)3 nb(3)
x(2)(.LO, .L, .UP = 0, 0, +INF)
-50 zf-1 nb(1)2 nb(2)2 nb(3)
x(3)(.LO, .L, .UP = 0, 0, +INF)
-70 zf1 nb(1)3 nb(2)-1 nb(3)
REMAINING ENTRY SKIPPEDnun
Column Listing SOLVE gs Using LP From line 40
---- x Strukturvariablenx(1)
(.LO, .L, .UP = 0, 0, +INF)-90 zf2 nb(1)1 nb(2)3 nb(3)
x(2)(.LO, .L, .UP = 0, 0, +INF)
-50 zf-1 nb(1)2 nb(2)2 nb(3)
x(3)(.LO, .L, .UP = 0, 0, +INF)
-70 zf1 nb(1)3 nb(2)-1 nb(3)
x(4)(.LO, .L, .UP = 0, 0, +INF)
-40 zf2 nb(1)-1 nb(2)2 nb(3)
bisher
Ausschnitt GS.lst
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 104
Setzen eines Titels bzw. Untertitels im Echo Print (Listing)
$title Lösung der Aufgabe 2.3.6
$stitle Sets
• Titel erscheint in jedem Seitenkopf im Listing, Untertitel nur im Echo Print
• mit $stitle/$title beginnt eine neue Seite im Echo Print
�GAMS Rev 145 x86/MS Windows 10/30/06 08:03:08 Page 2Lösung der Aufgabe 2.3.6Sets
4 5 sets6 J Menge der Strukturvariablen (Spalten) /1*4/7 I Menge der Nebenbedingungen /1*3/ ;
$ immer in der 1. Spalte
6. Weitere Aspekte6.6 Kommentare
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 105
Mehrzeilige Kommentare
$title Lösung der Aufgabe 2.3.6$ontextzum Vergleich siehe Simplextableau – Übungsunterlagen mehrzeiliger Kommentar$offtext* Lösung der Aufgabe 2.3.6 (einzeiliger Kommentar)
�GAMS Rev 145 x86/MS Windows 10/30/06 08:06:59 Page 1Lösung der Aufgabe 2.3.6C o m p i l a t i o n
zum Vergleich siehe Simplextableau – Übungsunterlagenmehrzeiliger Kommentar
6 * Lösung der Aufgabe 2.3.6 (einzeiliger Kommentar)
Zeilennummern werden ausgeblendet
6. Weitere Aspekte6.6 Kommentare
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 106
DatenMengenParameter
ModellVariablenEquationsModel
Lösung
Bisherige Vorgehensweise Alternative Vorgehensweise
Beachte: Unterschied zwischen Deklaration und Definition
ModellMengenParameterVariablenEquationsModel
DatenMengenParameter
Lösung
DeklarationUnd Definition
DeklarationDeklaration + DefinitionDefinition
Deklaration
Definition
Definition
6. Weitere Aspekte6.6 Aufbau von GAMS-Modellen
Möglichkeiten
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 107
U. a. Bereitstellung
• verschiedener Optionen über Kommandozeile (Command Line options), z. B. zum Aussehen des Listings, Systemeinstellungen u. a. m.
• verschiedener Optionen über $-Anweisungen (Dollar Control Options), z. B. zur Formatierung des Outputs, Verwendung von Kommentaren u. a. m.
• verschiedener Optionen über die option-Anweisung, z.B. für die Wahl des zu verwendenden Solvers, solverspezifischeParameter, Inhalt des Listings u. a. m.
• bei Bedarf: siehe User´s Guide
6. Weitere Aspekte6.6 Sonstiges
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 108
7:
Ablaufgestaltung in GAMS
(Schleifen, Bedingungen)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 109
7. Ablaufgestaltung in GAMS
Schleifen – loop („wiederhole etwas für alle Elemente einer Menge“)
loop( j,
) ;
loop( j$(y.l(j)=1),Anweisungen ;loop( i,
Anweisungen ;) ;
) ;
Anweisungen ;
loop((i,j),Anweisungen ;
) ;
• keine Deklaration und keine Definition von equations innerhalb loop
geschachtelte Schleife, wobei die Anweisungen nur für die Elemente von j ausgeführt werden, für die die Variable y(j) den Wert 1 hat (bedingte loop)
Menge, für deren Elemente die Anweisungen ausgeführt werden sollen
mehrere Indizes durch Komma trennen und in Klammern setzen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 110
7. Ablaufgestaltung in GAMS
Schleifen – for („wiederhole etwas genau x-mal“)
scalar zaehler, p / 0 /;
for( zaehler = 1 to 10,
) ;display p ;
p = p + 10 ;
• keine Deklaration und keine Definition von equations innerhalb for
---- 16 PARAMETER p = 100.000
von Startwert bis Endwert
scalar zaehler, p / 0 /;for( zaehler = 1 to 10 by 2,
) ;
p = p + 10 ;
---- 16 PARAMETER p = 50.000
Zähler (scalar, kein set)
default: Erhöhung des Zählers pro Durchlauf um 1
Anweisung wird 10mal ausgeführt
Erhöhung des Zählers pro Durchlauf um 2
Anweisung wird 5mal ausgeführt
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 111
Schleifen – while („wiederhole etwas solange wie“)
parameter p /0/ ;
while( p<=20, a(s) = a(s) + p *a(s) ;
solve transport minimizing F using lp ;
a(s) = a(s)/(1+p) ;
p = p + 5;
) ;
wiederhole die folgenden Anweisungen solange die Bedingung erfüllt ist
Anweisungen, die pro Durchlauf ausgeführt werden
• keine Deklaration und keine Definition von equations innerhalb while, aber z.B. solve zum mehrfachen Lösen von Modellen
7. Ablaufgestaltung in GAMS
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 112
Bedingungen – if-elseif-else
if( y<5,
x = 10 ;
elseif y>5,
x = 2 ;
else x = 0 ;
) ;
• elseif ist optional und kann beliebig oft verwendet werden
• mehrere Bedingungen am besten gut einklammern
• keine Deklaration und keine Definition von equations innerhalb if, aber z.B. solve zum mehrfachen Lösen von Modellen
7. Ablaufgestaltung in GAMS
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 113
8:
Gestaltung eigener Ausgabedateien
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 114
8. Gestaltung eigener Ausgabedateien
Deklaration + Definition einer Ausgabedatei
file out / Ausgabe_Transport.txt / ;
put out ;
Festlegung, in welche Datei geschrieben werden soll
Schlüsselwort zur Deklaration von Dateien
Eindeutiger Bezeichner(Name)
Dateiname mit Endung und ggf. Pfadangabe; ohne Pfad: Speicherung am Speicherort der aktuellen .gpr-Datei
Schlüsselwort zum Schreiben in Dateien
Bezeichner der Datei, in die ab sofort geschrieben werden soll
Erklärungen am Beispiel Transportplanung
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 115
file out /Ausgabe_Transport.txt/;put out;
put "Transportproblem" // ;put a.ts /;
loop(s,put @3, s.tl , @10, a(s)/;
);put /;
Zeilenumbruch /
Ausgabe von Text erfolgt in "…" bzw. '...'
„für jedes Element aus der Menge s wiederhole“
Schreibe das, was folgt, in die 3. Spalte der aktuellen Zeile (@Spaltennr.)
Name des betrachteten Elements (.tl)
Wert des Parameters a(s) des betrachtetenElements
Leerzeile Trennung der Einträge hinter put durch Komma (zu empfehlen) oder Leerzeichen
Schreibe Kommentar zum parameter s
Beispiel
8. Gestaltung eigener Ausgabedateien
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 116
put b.ts /;loop(k,
put @3, k.tl , @10, b(k)/;);put /;
put "Transportkosten: " z.l /;put /;
put "Transportmengen" //;
put "von":8, "nach":8, "Menge":>8 //;loop((s,k),
put s.tl:8, k.tl:8, x.l(s,k):8:2 /;);
Zielfunktionswert (Variable) schreiben
Anzahl der Stellen, die für diesenEintrag reserviert werden (Feldbreite)
Ausrichtung des Eintrags innerhalbder reservierten Feldbreite, hier: rechtsbündig
Anzahl an Dezimalstellen von derFeldbreite, hier: 2 von 8 Stellen (nurbei numerischen Einträgen)
Beispiel - Fortsetzung
8. Gestaltung eigener Ausgabedateien
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 117
Transportproblem
Kapazität am Standort sB 350.00HH 500.00M 550.00
Nachfrage des Kunden kDD 300.00F 300.00K 250.00S 150.00H 350.00
Transportkosten: 1910.00
Transportmengen
von nach Menge
B DD 300.00B F 0.00B K 0.00B S 0.00B H 50.00HH DD 0.00HH F 0.00HH K 200.00HH S 0.00HH H 300.00M DD 0.00M F 300.00M K 50.00M S 150.00M H 0.00
Entstehende Ausgabedatei
Ausgabe_Transport.txt
8. Gestaltung eigener Ausgabedateien
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 118
Transportmengen als Tabelle - Quellcode
put "":10:0;
loop(k,put k.tl:>10 ;
);
put /;
scalar i ;
for(i=1 to 60,put "-";
);
put /;
loop(s,put s.tl:10:0 ;
loop(k,put x.l(s,k):10:2 ;
);
put /;
);
Tabellenkopf erzeugen
Strich über gesamte Tabellenbreite erzeugen
geschachtelte loop-Anweisungzur Ausgabe einer Tabelle
Äußerer loop: Zeilen
Innerer loop: Spalten
8. Gestaltung eigener Ausgabedateien
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 119
DD F K S H
------------------------------------------------------------
B 300.00 0.00 0.00 0.00 50.00
HH 0.00 0.00 200.00 0.00 300.00
M 0.00 300.00 50.00 150.00 0.00
Transportmengen als Tabelle - Ausgabedatei
8. Gestaltung eigener Ausgabedateien
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 120
Zusammenfassung Ausgabeobjekte
• Text in Ausgabedatei schreiben:
• einfacher Text: in "…" bzw. '... '
• Kommentare zu Bezeichnern: Bezeichner.ts
• Namen von Elementen: BezeichnerMenge.tl
• u. a.
• Numerische Objekte in Ausgabedatei schreiben:
• Werte von parameters etc.: Bezeichner(Indexmenge)
• Wert/Schranken von variables/equations: Bezeichner.l/.m/.lo/.up(Indexmenge)
• Mengenzugehörigkeit in Ausgabedatei schreiben:
• Zugehörigkeit von Elemente zu Mengen: Bezeichner(Index)
8. Gestaltung eigener Ausgabedateien
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 121
• Text: linksbündig 0 Stellen
• Namen: linksbündig 12 Stellen
• numerische Objekte: rechtsbündig 12 Stellen
• Elemente von Mengen: rechtsbündig 12 Stellen
Formatierung von Ausgabeobjekten (lokal)
Standardmäßig: Ausrichtung Feldbreite
Anpassung für einzelne Outputobjekte:
Objekt: Ausrichtung Feldbreite:Dezimalstellen
Ausgabe-objekt
Optional:> Rechtsbündig< Linksbündig<> zentriert
Anzahl der Stellen des reservierten Platzes
Anzahl der Dezimalstellen an der Gesamtzahl der Stellen
8. Gestaltung eigener Ausgabedateien
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 122
Weitere Anmerkungen zu Ausgabedateien
Mittels verschiedener Suffixe:
• Möglichkeiten zur globalen Formatierung der Ausgabeobjekte
• diverse Möglichkeiten zur Gestaltung des Seitenlayouts (Seitenformat, Seitenabschnitte)
• Möglichkeit zur einfachen Ausgabe formatierter Dateien zum Einlesen in Excel oder Datenbanken (leerzeichen-, tabstopp- bzw. kommagetrennt)
• Möglichkeiten zur Cursor- und Seitenkontrolle
• u. a. siehe User´s Guide
8. Gestaltung eigener Ausgabedateien
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 123
9:
Häufige Fehlermeldungen und mögliche Ursachen
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 124
• Logfile (.log-Datei):
Fehlermeldungen werden mit Zeilenangabe in der Reihenfolge ihres Auftretens im logfile-Fenster angezeigt.
Doppelklick auf die rot markierte Fehlermeldung führt zur fehlerhaften Zeile in der .gms-Datei.
Fehleranzeige
Ein Fehler führt oft zu mehreren Fehlermeldungen, die erste Fehler-meldung ist die wichtigste.
9. Häufige Fehlermeldungen und mögliche Ursachen
• Echo Print (im Listing):
Fehlernummer erscheint im Echo Print direkt in der Zeile unterhalb der (scheinbar) fehlerhaften Zeile an entsprechender Stelle und die Zeile wird durch **** markiert.
Am Ende des Echo Prints werden alle aufgetretenen Fehlernummern mit Beschreibung des Fehlers aufgeführt.
(Beispiele für Fehlermeldungen beziehen sich auf die bisher behandelten Beispiele)
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 125
--- Starting compilation--- Schiff.gms(40) 3 Mb 1 Error*** Error 36 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
'=' or '..' or ':=' or '$=' operator expectedrest of statement ignored
--- Schiff.gms(48) 3 Mb 2 Errors*** Error 257 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Solve statement not checked because of previous errors--- Schiff.gms(48) 3 Mb 2 Errors*** Status: Compilation error(s)
40 zf F =e= sum(j, c(j)*x(j));**** $36...
48 solve schiffsbeladung maximizing F using lp ;**** $257...Error Messages
36 '=' or '..' or ':=' or '$=' operator expectedrest of statement ignored
257 Solve statement not checked because of previous errors
**** 2 ERROR(S) 0 WARNING(S)
Fehler: Vergessene Punkte bei Definition der Un-/Gleichungen
9. Häufige Fehlermeldungen und mögliche Ursachen
Schiff.lst
Schiff.log
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 126
--- Starting compilation--- Schiff.gms(41) 3 Mb 1 Error*** Error 409 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Unrecognizable item - skip to find a new statementlooking for a ';' or a key word to get started again
--- Schiff.gms(48) 3 Mb 2 Errors*** Error 257 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Solve statement not checked because of previous errors...
40 zf.. F =e= sum ( j, e(j)*x(j) )41 volres.. sum ( j, v(j)*x(j) ) =l= R ;
**** $409...
48 solve schiffsbeladung maximizing F using mip ;**** $257
Error Messages
257 Solve statement not checked because of previous errors409 Unrecognizable item - skip to find a new statement
looking for a ';' or a key word to get started again
**** 2 ERROR(S) 0 WARNING(S)
9. Häufige Fehlermeldungen und mögliche Ursachen
Fehler: Vergessene notwendige Semikolons
Schiff.lst
Schiff.log
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 127
--- Starting compilation--- Schiff.gms(40) 3 Mb 1 Error*** Error 37 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
'=l=' or '=e=' or '=g=' operator expected--- Schiff.gms(48) 3 Mb 2 Errors*** Error 257 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Solve statement not checked because of previous errors--- Schiff.gms(48) 3 Mb 2 Errors*** Status: Compilation error(s)
40 zf.. F = sum ( j, e(j)*x(j) ) ;**** $37...
48 solve schiffsbeladung maximizing F using mip ;**** $257...Error Messages
37 '=l=' or '=e=' or '=g=' operator expected257 Solve statement not checked because of previous errors
**** 2 ERROR(S) 0 WARNING(S)
9. Häufige Fehlermeldungen und mögliche Ursachen
Fehler: Falsche Angabe des Relationszeichens
Schiff.lst
Schiff.log
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 128
13 v(j) Volumen pro Tonne des Produkts j / A 1,5**** $170
14 B 1.9**** $1$334
15 C 1.716 D 1.317 E 2.2 /
...
Error Messages
1 Real number expected141 Symbol neither initialized nor assigned
A wild shot: You may have spurious commas in the explanatorytext of a declaration. Check symbol reference list.
170 Domain violation for element257 Solve statement not checked because of previous errors334 Illegal data following a data element - rest ignored
--- Starting compilation--- Schiff.gms(17) 1 Mb 1 Error*** Error 170 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Domain violation for element--- Schiff.gms(18) 1 Mb 3 Errors*** Error 1 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Real number expected*** Error 334 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Illegal data following a data element - rest ignored...
9. Häufige Fehlermeldungen und mögliche Ursachen
Fehler: Komma statt Punkt bei Zahlen
Schiff.lst
Schiff.log
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 129
8 parameters e(j) Erloes pro Tonne ... A 35...
40 zf.. F =e= sum ( j, c(j)*x(j) ) ;**** $140...
48 solve schiffsbeladung maximizing F using mip ;**** $257...
Error Messages
140 Unknown symbol257 Solve statement not checked because of previous errors
**** 2 ERROR(S) 0 WARNING(S)
--- Starting compilation--- Schiff.gms(40) 3 Mb 1 Error*** Error 140 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Unknown symbol--- Schiff.gms(48) 3 Mb 2 Errors*** Error 257 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Solve statement not checked because of previous errors--- Schiff.gms(48) 3 Mb 2 Errors*** Status: Compilation error(s)
Fehler: Verwendung nicht deklarierter Symbole
9. Häufige Fehlermeldungen und mögliche Ursachen
Schiff.lst
Schiff.log
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 130
8 parameters e(j) Erloes pro Tonne des Produkts j9
10 v(j) Volumen pro Tonne des Produkts j / A 1.5...
37 zf.. F =e= sum ( j, e(j)*x(j) ) ;...
45 solve schiffsbeladung maximizing F using mip ;**** $66,256**** The following MIP errors were detected in model schiffsbeladung:**** 66 equation zf .. symbol "e" has no values assigned...Error Messages
66 The symbol shown has not been defined or assignedA wild shot: You may have spurious commas in the explanatorytext of a declaration. Check symbol reference list.
256 Error(s) in analyzing solve statement. More detail appearsBelow the solve statement above
**** 2 ERROR(S) 0 WARNING(S)
--- Starting compilation--- Schiff.gms(45) 3 Mb 2 Errors*** Error 66 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
The symbol shown has not been defined or assignedA wild shot: You may have spurious commas in the explanatorytext of a declaration. Check symbol reference list.
*** Error 256 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gmsError(s) in analyzing solve statement. More detail appearsBelow the solve statement above
Fehler: Verwendung von Symbolen, denen kein Wert zugewiesen
9. Häufige Fehlermeldungen und mögliche Ursachen
Schiff.log
Schiff.lst
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 131
--- Starting compilation--- Schiff.gms(43) 3 Mb 4 Errors*** Error 148 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Dimension different - The symbol is referenced with more/lessindices as declared
*** Error 149 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gmsUncontrolled set entered as constant
*** Error 149 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gmsUncontrolled set entered as constant
*** Error 149 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gmsUncontrolled set entered as constant
...
34 equations zf Zielfunktion (Erloesmaximierung)35 volres Volumenrestriktion36 gewres Gewichtsrestriktion37 koppgl(j) Kopplungsgleichung
...43 koppgl.. x(j) =l= L(j)*y(j) ;
**** $148 $149 $149 $149...
48 solve schiffsbeladung maximizing F using mip ;**** $257...Error Messages
148 Dimension different - The symbol is referenced with more/lessindices as declared
149 Uncontrolled set entered as constant257 Solve statement not checked because of previous errors
9. Häufige Fehlermeldungen und mögliche Ursachen
Fehler: Falsche Referenzierung (andere Dimension)
Schiff.lst
Schiff.log
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 132
--- Starting compilation--- Schiff.gms(13) 3 Mb 1 Error*** Error 170 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Domain violation for element--- Schiff.gms(49) 3 Mb 2 Errors*** Error 257 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Solve statement not checked because of previous errors--- Schiff.gms(49) 3 Mb 2 Errors...
1 set j Produktmenge2 /A3 B4 C5 D6 E/ ;7 8 parameters e(j) Erloes pro Tonne des Produkts j / A 359 B 4210 C 3611 D 2912 E 6213 F 34/
**** $170...
49 solve schiffsbeladung maximizing F using mip ;**** $257...Error Messages
170 Domain violation for element257 Solve statement not checked because of previous errors
9. Häufige Fehlermeldungen und mögliche Ursachen
Fehler: Elemente sind nicht definiert
Schiff.lst
Schiff.log
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 133
--- Starting compilation--- Schiff.gms(34) 3 Mb 1 Error*** Error 143 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
A suffix is missing--- Schiff.gms(34) 3 Mb 1 Error*** Status: Compilation error(s)
50 display F ;**** $143...Error Messages
143 A suffix is missing
**** 1 ERROR(S) 0 WARNING(S)
9. Häufige Fehlermeldungen und mögliche Ursachen
Fehler: Fehlender Suffix bei Variablen/Gleichungen in der display-Anweisung (.l, .m, .lo, .up)
Schiff.lst
Schiff.log
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 134
--- Starting compilation--- Schiff.gms(30) 1 Mb 2 Errors*** Error 148 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Dimension different - The symbol is referenced with more/lessindices as declared
*** Error 194 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gmsSymbol redefined - a second data statement for the same symbol
or a data statement after an assignment...
11 parameters e(j) Erlös pro Tonne des Produkts j / A 35...1617 v(j) Volumen pro Tonne des Produkts j / A 1.518 B 1.919 C 1.720 D 1.321 E 2.2 /22
...30 scalars V Volumen des Binnenschiffs /200/
**** $148 $194...148 Dimension different - The symbol is referenced with more/less
indices as declared194 Symbol redefined - a second data statement for the same symbol
or a data statement after an assignment...
Fehler: Doppelte Verwendung gleichnamiger Bezeichner für verschiedene Items
9. Häufige Fehlermeldungen und mögliche Ursachen
Schiff.lst
Schiff.log
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 135
--- Starting compilation--- Schiff.gms(24) 3 Mb 1 Error*** Error 97 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Explanatory text can not start with '$', '=', or '..'(-or- check for missing ';' on previous line)
--- Schiff.gms(48) 3 Mb 2 Errors*** Error 257 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Solve statement not checked because of previous errors--- Schiff.gms(48) 3 Mb 2 Errors*** Status: Compilation error(s)
24 scalars R =Volumen des Binnenschiffs /200/**** $97...48 solve schiffsbeladung maximizing F using mip ;
**** $257...Error Messages
97 Explanatory text can not start with '$', '=', or '..'(-or- check for missing ';' on previous line)
...
Fehler: Verbotener Beginn von Kommentaren
Abhilfe: „ Kommentar“ bei Beginn mit $, = oder .. (reservierte Symbole), ebenso bei Komma, Semikolon oder Slash im Text
9. Häufige Fehlermeldungen und mögliche Ursachen
Schiff.lst
Schiff.log
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 136
--- Starting compilation--- Schiff.gms(48) 1 Mb 2 Errors*** Error 65 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gms
Discrete variables can only appear in MIP, RMIP, MINLPor RMINLP problems.
*** Error 256 in V:\OR_und_Logistik\WS0607\Uebung\GAMS\Schiff.gmsError(s) in analyzing solve statement. More detail appearsBelow the solve statement above
...
48 solve schiffsbeladung using lp maximizing F ;**** $65,256**** The following LP errors were detected in model schiff:**** 65 equation koppgl .. discrete variable "y" not allowed**** 65 equation anzauftr .. discrete variable "y" not allowed...65 Discrete variables can only appear in MIP, RMIP, MINLP
or RMINLP problems.256 Error(s) in analyzing solve statement. More detail appears
Below the solve statement above...
9. Häufige Fehlermeldungen und mögliche Ursachen
Fehler: Auswahl des falschen Modelltyps
Schiff.lst
Schiff.log
TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 137
Domschke, W., Drexl, A. (2005): Einführung in Operations Research, 6. Aufl., Berlin u.a.
GAMS Development Corporation (Hrsg.) (2006), GAMS – A User´s Guide, Books on Demand, Norderstedt (bzw. www.gams.com o. GAMS - Menü Help)
Rosenthal, R. E. (2006): A GAMS Tutorial; in: GAMS Development Corporation (Hrsg.) (2006), GAMS – A User´s Guide, Books on Demand, Norderstedt
Entscheidungsprobleme und Modellierung
GAMS
GAMS Homepage: www.gams.com
Literatur
GAMS IDE Documentation (www.gams.com bzw. GAMS - Menü Help –Help Topics)
McCarl, B. A. (2006): McCarl GAMS User Guide Documentation(www.gams.com bzw. GAMS - Menü Help – Help Topics)