137
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

Gams Skript Uebung 140507 - TU Dresden

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Gams Skript Uebung 140507 - TU Dresden

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

Page 2: Gams Skript Uebung 140507 - TU Dresden

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

Page 3: Gams Skript Uebung 140507 - TU Dresden

TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 3

1: Allgemeines

Page 4: Gams Skript Uebung 140507 - TU Dresden

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

Page 5: Gams Skript Uebung 140507 - TU Dresden

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)

Page 6: Gams Skript Uebung 140507 - TU Dresden

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

Page 7: Gams Skript Uebung 140507 - TU Dresden

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

Page 8: Gams Skript Uebung 140507 - TU Dresden

TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 8

2: Modellierung von Entscheidungsproblemen

Page 9: Gams Skript Uebung 140507 - TU Dresden

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

Page 10: Gams Skript Uebung 140507 - TU Dresden

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

Page 11: Gams Skript Uebung 140507 - TU Dresden

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)

Page 12: Gams Skript Uebung 140507 - TU Dresden

TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 12

Gegebene Daten

- Mengen, Parameter -

2. Modellierung von Entscheidungsproblemen

Page 13: Gams Skript Uebung 140507 - TU Dresden

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

Page 14: Gams Skript Uebung 140507 - TU Dresden

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

Page 15: Gams Skript Uebung 140507 - TU Dresden

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

Page 16: Gams Skript Uebung 140507 - TU Dresden

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

Page 17: Gams Skript Uebung 140507 - TU Dresden

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

Page 18: Gams Skript Uebung 140507 - TU Dresden

TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 18

Gesuchte Unbekannte

– (Entscheidungs-) Variablen –

2. Modellierung von Entscheidungsproblemen

Page 19: Gams Skript Uebung 140507 - TU Dresden

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

Page 20: Gams Skript Uebung 140507 - TU Dresden

TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 20

Modellformulierung:

– Zielfunktion,

Nebenbedingungen und

Wertebereiche der Variablen –

2. Modellierung von Entscheidungsproblemen

Page 21: Gams Skript Uebung 140507 - TU Dresden

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

Page 22: Gams Skript Uebung 140507 - TU Dresden

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

Page 23: Gams Skript Uebung 140507 - TU Dresden

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

Page 24: Gams Skript Uebung 140507 - TU Dresden

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

Page 25: Gams Skript Uebung 140507 - TU Dresden

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

Page 26: Gams Skript Uebung 140507 - TU Dresden

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 ≤++++

Page 27: Gams Skript Uebung 140507 - TU Dresden

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

Page 28: Gams Skript Uebung 140507 - TU Dresden

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

Page 29: Gams Skript Uebung 140507 - TU Dresden

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

Page 30: Gams Skript Uebung 140507 - TU Dresden

TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 30

3: Überführung formaler Entscheidungsmodelle in

GAMS-Syntax

Page 31: Gams Skript Uebung 140507 - TU Dresden

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)+

Page 32: Gams Skript Uebung 140507 - TU Dresden

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.

Page 33: Gams Skript Uebung 140507 - TU Dresden

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

Page 34: Gams Skript Uebung 140507 - TU Dresden

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

Page 35: Gams Skript Uebung 140507 - TU Dresden

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)

Page 36: Gams Skript Uebung 140507 - TU Dresden

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

Page 37: Gams Skript Uebung 140507 - TU Dresden

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

Page 38: Gams Skript Uebung 140507 - TU Dresden

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

Page 39: Gams Skript Uebung 140507 - TU Dresden

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

Page 40: Gams Skript Uebung 140507 - TU Dresden

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 ;

Page 41: Gams Skript Uebung 140507 - TU Dresden

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)

Page 42: Gams Skript Uebung 140507 - TU Dresden

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) , …)

Page 43: Gams Skript Uebung 140507 - TU Dresden

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:

Page 44: Gams Skript Uebung 140507 - TU Dresden

TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 44

4: Lösen von Entscheidungsmodellen mit

GAMS

Page 45: Gams Skript Uebung 140507 - TU Dresden

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)

Page 46: Gams Skript Uebung 140507 - TU Dresden

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)

Page 47: Gams Skript Uebung 140507 - TU Dresden

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)

Page 48: Gams Skript Uebung 140507 - TU Dresden

TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 48

5: GAMS – Output:

Listing

Page 49: Gams Skript Uebung 140507 - TU Dresden

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

Page 50: Gams Skript Uebung 140507 - TU Dresden

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

Page 51: Gams Skript Uebung 140507 - TU Dresden

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)

Page 52: Gams Skript Uebung 140507 - TU Dresden

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)

Page 53: Gams Skript Uebung 140507 - TU Dresden

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

Page 54: Gams Skript Uebung 140507 - TU Dresden

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

Page 55: Gams Skript Uebung 140507 - TU Dresden

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

Page 56: Gams Skript Uebung 140507 - TU Dresden

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

Page 57: Gams Skript Uebung 140507 - TU Dresden

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

Page 58: Gams Skript Uebung 140507 - TU Dresden

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

Page 59: Gams Skript Uebung 140507 - TU Dresden

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

Page 60: Gams Skript Uebung 140507 - TU Dresden

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

Page 61: Gams Skript Uebung 140507 - TU Dresden

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

Page 62: Gams Skript Uebung 140507 - TU Dresden

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

Page 63: Gams Skript Uebung 140507 - TU Dresden

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

Page 64: Gams Skript Uebung 140507 - TU Dresden

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

Page 65: Gams Skript Uebung 140507 - TU Dresden

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

Page 66: Gams Skript Uebung 140507 - TU Dresden

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

Page 67: Gams Skript Uebung 140507 - TU Dresden

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

Page 68: Gams Skript Uebung 140507 - TU Dresden

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

Page 69: Gams Skript Uebung 140507 - TU Dresden

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)

Page 70: Gams Skript Uebung 140507 - TU Dresden

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)

Page 71: Gams Skript Uebung 140507 - TU Dresden

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

Page 72: Gams Skript Uebung 140507 - TU Dresden

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)

Page 73: Gams Skript Uebung 140507 - TU Dresden

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)

Page 74: Gams Skript Uebung 140507 - TU Dresden

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)

Page 75: Gams Skript Uebung 140507 - TU Dresden

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)

Page 76: Gams Skript Uebung 140507 - TU Dresden

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)

Page 77: Gams Skript Uebung 140507 - TU Dresden

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)

Page 78: Gams Skript Uebung 140507 - TU Dresden

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

Page 79: Gams Skript Uebung 140507 - TU Dresden

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

Page 80: Gams Skript Uebung 140507 - TU Dresden

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

Page 81: Gams Skript Uebung 140507 - TU Dresden

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

Page 82: Gams Skript Uebung 140507 - TU Dresden

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=

Page 83: Gams Skript Uebung 140507 - TU Dresden

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

Page 84: Gams Skript Uebung 140507 - TU Dresden

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

Page 85: Gams Skript Uebung 140507 - TU Dresden

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)

Page 86: Gams Skript Uebung 140507 - TU Dresden

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

Page 87: Gams Skript Uebung 140507 - TU Dresden

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

Page 88: Gams Skript Uebung 140507 - TU Dresden

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

Page 89: Gams Skript Uebung 140507 - TU Dresden

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

Page 90: Gams Skript Uebung 140507 - TU Dresden

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

Page 91: Gams Skript Uebung 140507 - TU Dresden

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

Page 92: Gams Skript Uebung 140507 - TU Dresden

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?

hier: ZFW steigt=verbessert sich (da max), Entschärfung der NB

Veränderung von F um ∆· iπ

Ausschnitt GS.lst

Lösen von linearen Optimierungsproblemen (lp)

6. Weitere Aspekte6.5 Lösen von Modellen

Page 93: Gams Skript Uebung 140507 - TU Dresden

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

Page 94: Gams Skript Uebung 140507 - TU Dresden

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

Page 95: Gams Skript Uebung 140507 - TU Dresden

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

Page 96: Gams Skript Uebung 140507 - TU Dresden

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

Page 97: Gams Skript Uebung 140507 - TU Dresden

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

Page 98: Gams Skript Uebung 140507 - TU Dresden

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

Page 99: Gams Skript Uebung 140507 - TU Dresden

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

Page 100: Gams Skript Uebung 140507 - TU Dresden

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

Page 101: Gams Skript Uebung 140507 - TU Dresden

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

Page 102: Gams Skript Uebung 140507 - TU Dresden

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

Page 103: Gams Skript Uebung 140507 - TU Dresden

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

Page 104: Gams Skript Uebung 140507 - TU Dresden

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

Page 105: Gams Skript Uebung 140507 - TU Dresden

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

Page 106: Gams Skript Uebung 140507 - TU Dresden

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

Page 107: Gams Skript Uebung 140507 - TU Dresden

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

Page 108: Gams Skript Uebung 140507 - TU Dresden

TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 108

7:

Ablaufgestaltung in GAMS

(Schleifen, Bedingungen)

Page 109: Gams Skript Uebung 140507 - TU Dresden

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

Page 110: Gams Skript Uebung 140507 - TU Dresden

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

Page 111: Gams Skript Uebung 140507 - TU Dresden

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

Page 112: Gams Skript Uebung 140507 - TU Dresden

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

Page 113: Gams Skript Uebung 140507 - TU Dresden

TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 113

8:

Gestaltung eigener Ausgabedateien

Page 114: Gams Skript Uebung 140507 - TU Dresden

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

Page 115: Gams Skript Uebung 140507 - TU Dresden

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

Page 116: Gams Skript Uebung 140507 - TU Dresden

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

Page 117: Gams Skript Uebung 140507 - TU Dresden

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

Page 118: Gams Skript Uebung 140507 - TU Dresden

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

Page 119: Gams Skript Uebung 140507 - TU Dresden

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

Page 120: Gams Skript Uebung 140507 - TU Dresden

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

Page 121: Gams Skript Uebung 140507 - TU Dresden

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

Page 122: Gams Skript Uebung 140507 - TU Dresden

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

Page 123: Gams Skript Uebung 140507 - TU Dresden

TU Dresden, 14.05.2007 © Andrea Förster, TU Dresden Folie 123

9:

Häufige Fehlermeldungen und mögliche Ursachen

Page 124: Gams Skript Uebung 140507 - TU Dresden

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)

Page 125: Gams Skript Uebung 140507 - TU Dresden

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

Page 126: Gams Skript Uebung 140507 - TU Dresden

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

Page 127: Gams Skript Uebung 140507 - TU Dresden

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

Page 128: Gams Skript Uebung 140507 - TU Dresden

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

Page 129: Gams Skript Uebung 140507 - TU Dresden

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

Page 130: Gams Skript Uebung 140507 - TU Dresden

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

Page 131: Gams Skript Uebung 140507 - TU Dresden

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

Page 132: Gams Skript Uebung 140507 - TU Dresden

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

Page 133: Gams Skript Uebung 140507 - TU Dresden

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

Page 134: Gams Skript Uebung 140507 - TU Dresden

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

Page 135: Gams Skript Uebung 140507 - TU Dresden

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

Page 136: Gams Skript Uebung 140507 - TU Dresden

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

Page 137: Gams Skript Uebung 140507 - TU Dresden

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)