of 44 /44
23. Oktober 2013 Einführung in GAMS 1 / 88 Einführung in die mathematische Modellierung mit der Software GAMS Matthes Koch, Sven Müller Institut für Verkehrswirtschaft 23. Oktober 2013 23. Oktober 2013 Einführung in GAMS 2 / 88 Übersicht 1. Einführung 2. Überführung formaler Modelle in GAMS-Syntax 3. Lösen von Optimierungsproblemen in GAMS 4. Auswertung von Rechenergebnissen 5. Mehr zur GAMS-Syntax

Einführung in die mathematische Modellierung mit der ... EinführunginGAMS 3/88 Einführung I GAMS: General Algebraic Modeling System I algebraischeModellierungssprache I FormulierenundLösenmathematischerModelle

Embed Size (px)

Text of Einführung in die mathematische Modellierung mit der ... EinführunginGAMS 3/88 Einführung I GAMS:...

  • 23. Oktober 2013 Einfhrung in GAMS 1 / 88

    Einfhrung in die mathematische Modellierung mitder Software GAMS

    Matthes Koch, Sven Mller

    Institut fr Verkehrswirtschaft

    23. Oktober 2013

    23. Oktober 2013 Einfhrung in GAMS 2 / 88

    bersicht

    1. Einfhrung

    2. berfhrung formaler Modelle in GAMS-Syntax

    3. Lsen von Optimierungsproblemen in GAMS

    4. Auswertung von Rechenergebnissen

    5. Mehr zur GAMS-Syntax

  • 23. Oktober 2013 Einfhrung in GAMS 3 / 88

    Einfhrung

    I GAMS: General Algebraic Modeling SystemI algebraische ModellierungsspracheI Formulieren und Lsen mathematischer ModelleI ursprgl. entwickelt an der World Bank in den 1970er JahrenI aktuell: Version 24.1 (Oktober 2013)I Demoversion: http://www.gams.com/download

    Modellgren beschrnkt (vgl. Downloadseite)I weitere bekannte Modellierungssprachen:

    I AMPL (A Modeling Language for Mathematical Programming)I OML (Optimization Modeling Language)I LINGOI uvm..

    Einfhrung - GAMSIDE

    Starte GAMS-Lauf (F9)Modell Libraries & Help

    Eingabefenster (.gms Skripte)

    Aktuell geffnetes Projekt

    Projekte anlegen,Neue Skripte erstellen

    http://www.gams.com/download

  • 23. Oktober 2013 Einfhrung in GAMS 5 / 88

    Einfhrung - Dateitypen

    Zu einem GAMS-Projekt gehren folgende Dateien:I .gpr ProjektdateiI .gms Gams-Skript - hierin schreiben wir mathematische

    ModelleI .lst Gams-Listing - Ergebnisdatei eines GAMS-AufrufsI .lxi Inhaltsverzeichnis des Listing-Files (GAMSIDE)I .log Gams-Log - LogdateiI .gdx gams data exchange - externe DatenstzeI .gch DiagrammdateienI .inc Includedateien - bei Modularisierung des SkriptesI .opt Optionsdateien fr SolverI .txt Textdateien, z.B. als externe Daten, geschriebene

    Ausgabedateien u.a.

    Diese Dateien werden in einem gemeinsamen Projektordner mit der.gpr-Datei abgelegt.

    23. Oktober 2013 Einfhrung in GAMS 6 / 88

    Einfhrung - Projekte und Dateitypen

    Projekte - .gprI Projekt: Sammlung zusammengehriger Dateien (Inputdaten,

    Modelle, Outputdateien)I Pfad bzw. Verzeichnis der Projektdatei ist default fr alle von GAMS

    im Rahmen der Projektdatei erzeugten DateienI Endung von Projektdateien: .gprI Men File ! Project ! New oder OpenI aktuell geffnetes Projekt wird in der Titelleiste der GAMSIDE

    (blauer Bereich ganz oben) angezeigt

  • 23. Oktober 2013 Einfhrung in GAMS 7 / 88

    Einfhrung - Projekte und Dateitypen

    Skripte - .gmsI Enhlt das Modell und alle zugehrigen DeklarationenI Endung von Projektdateien: .gmsI File ! NewI File ! Save as (dort, wo aktuelle .gpr liegt)I Daten knnen in der .gms Datei enthalten sein oder aus anderen

    Quellen integriert werden.

    23. Oktober 2013 Einfhrung in GAMS 8 / 88

    Einfhrung - GAMSIDE

    Ntzliche Hilfsmittel:I unter Help befinden sich viele hilfreiche Anleitungen, insb.

    I GAMS Users GuideI Expanded GAMS Guide (McCarl)I Anleitungen zu den in GAMS verwendeten Solvern: docs/solvers

    I Model Libraries: groe Auswahl bereits programmierter Modelle

  • 23. Oktober 2013 Einfhrung in GAMS 9 / 88

    Orientierung

    1. Einfhrung

    2. berfhrung formaler Modelle in GAMS-Syntax

    3. Lsen von Optimierungsproblemen in GAMS

    4. Auswertung von Rechenergebnissen

    5. Mehr zur GAMS-Syntax

    23. Oktober 2013 Einfhrung in GAMS 10 / 88

    Beispiel

    max F = 90x1 + 50x2 + 70x3 + 40x4 (1)

    s.t.

    2x1 1x2 + 1x3 + 2x4 30 (2)

    1x1 + 2x2 + 3x3 1x4 24 (3)

    3x1 + 2x2 1x3 + 2x4 36 (4)

    x1; x2; x3; x4 0 (5)

    Modell abstrahieren:I Ziel: Trennung von konkreten Daten und ModellstrukturI Daten durch Symbole reprsentieren

  • 23. Oktober 2013 Einfhrung in GAMS 11 / 88

    Beispiel

    max F = c1x1 + c2x2 + c3x3 + c4x4 (6)

    s.t.

    a11x1 + a12x2 + a13x3 + a14x4 b1 (7)

    a21x1 + a22x2 + a23x3 + a24x4 b2 (8)

    a31x1 + a32x2 + a33x3 + a34x4 b3 (9)

    x1; x2; x3; x4 0 (10)

    (7) - (9) besitzen dieselbe Struktur ! Zusammenfassung zu einemRestriktionsblock (12)

    max F =X

    j

    cjxj (11)

    s.t.X

    j

    aijxj bi 8i 2 I (12)

    xj 0 8j 2 J (13)

    Das so verallgemeinerte Modell besitzt:MengenI J Spalten (Auswahlalternativen) j = 1; 2; 3; 4I I Zeilen i = 1; 2; 3

    ParameterI cj Zielfunktionskoeffizient der Alternative jI ai ;j Kapazittsparameter bzgl. Alternative j in Restriktion iI bi Kapazittsgrenze von Restriktion (Ressource) i

    VariablenI F ZielfunktionsvariableI xj gewhlte Menge der Alternative j

    Gleichungsblcke

  • 23. Oktober 2013 Einfhrung in GAMS 13 / 88

    bertragung formaler Modelle in GAMS Syntax:

    Mathematisches Modell GAMS ModellMengen sets (Daten)Parameter parameters (Daten)

    tables (Daten)scalars (Daten)

    Variablen variables (Modellstruktur)Zielfunktion equations (Modellstruktur)Restriktionen equations (Modellstruktur)

    ! Einfache nderung der Inputdaten ohne nderung der Modellstruktur

    23. Oktober 2013 Einfhrung in GAMS 14 / 88

    Syntax

    Erzeugen von entities (z.B. Parameter):TypDesEntities NameDesEntities Kommentar /Wertzuweisung/;

    I Deklaration (TypDesEntities NameDesEntities ) und Definition(/Wertzuweisung/) knnen wie hier zusammen oder aber seperaterfolgen (Ausnahme: equations/variables immer seperat)

    I Mehrere entities gleichen Typs knnen seperat mit je einerAnweisung oder zusammen in einer Anweisung deklariert werden(Trennung durch Komma oder Zeilenumbruch)

    I Bezeichner (NameDesEntities) mssen mit einem Buchstabenbeginnen, dem bis zu 30 weitere Zeichen folgen knnen

    I keine Unterscheidung zwischen Gro- und KleinschreibungI WICHTIG: Bezeichner (engl. Identifyer) mssen eindeutig sein.

  • 23. Oktober 2013 Einfhrung in GAMS 15 / 88

    Weitere Hinweise

    I Leerzeichen und Leerzeilen zur besseren Lesbarkeit beliebigeinsetzbar

    I mehrzeilige Anweisungen bzw. mehrere Anweisungen auf einer Zeilesind erlaubt

    I alle Anweisungen vorerst immer durch Semikolon abschlieen, umFehler zu vermeiden

    I Kommas in Dezimalzahlen werden durch Punkte dargestelltI Kommentare zur Dokumentation:

    I direkt bei der Deklaration der sets, parameter, equations usw.I gesamte Zeile: * am Zeilenanfang

    I Bestimmte Schlsselworte und Symbole sind reserviert und drfennicht anderweitig verwendet werden.

    23. Oktober 2013 Einfhrung in GAMS 16 / 88

    Mengen

    I J Spalten (Auswahlalternativen) j = 1; 2; 3; 4I I Zeilen i = 1; 2; 3

    * Mit dem *-Symbol am Zeilenbeginn knnen Kommentare eingefgt werden (grau)

    sets

    I Menge der Restriktionen /1,2,3/ J Menge der Spalten /1*4/;

    Hinweis:Deklarationen und Definitionen sind nicht case-sensitive. AlsSchlsselwort wird set und sets erkannt.

    SeT

    i Menge der Restriktionen /1,2,3/ J Menge der Spalten /1*4/;

    Mengenelemente knnen auch Strings (Zeichenketten) sein - bspw.Stdtenamen.

  • 23. Oktober 2013 Einfhrung in GAMS 17 / 88

    Parameter (1)

    I cj Zielfunktionskoeffizient der Alternative jI bi Kapazittsgrenze von Restriktion (Ressource) i

    parameter

    c(j) Z i e l f u n k t i o n s k o e f f i z i e n t / 1 90, 2 50, 3 70, 4 40 / b(i) K a p a z i t t s g r e n z e / 1 30 2 24 3 36 /;

    Trennung der einzelnen Eintrge durch Kommasetzung oder Leerzeilenmglich.

    23. Oktober 2013 Einfhrung in GAMS 18 / 88

    Parameter (2)

    I ai ;j Kapazittsparameter bzgl. Alternative j in Restriktion i

    parameter

    c(j) Z i e l f u n k t i o n s k o e f f i z i e n t / 1 90, 2 50, 3 70, 4 40 / b(i) K a p a z i t t s g r e n z e / 1 30 2 24 3 36 /;table a(i,j) Kapazittskoeffizienten 1 2 3 41 2 -1 1 22 1 2 3 -13 3 2 -1 2;

    Ebenfalls mglich:

    parameter

    c(j) Z i e l f u n k t i o n s k o e f f i z i e n t / 1 90, 2 50, 3 70, 4 40 / b(i) K a p a z i t t s g r e n z e / 1 30 2 24 3 36 /;table a(i,j) Kapazittskoeffizienten 1 2 3 41 2 -1 1 22 1 2 3 -13 3 2 -1 2;

    parameter a(i,j) Koeffizientenmatrix /1.1 2, 1.2 -1, 1.3 1, 1.4 2 2.1 1, 2.2 2, 2.3 3, 2.4 -1 3.1 3, 3.2 2, 3.3 -1, 3.4 2 / ;

  • 23. Oktober 2013 Einfhrung in GAMS 19 / 88

    Variablen

    I F Zielfunktionsvariable, 1 F 1I xj gewhlte Menge der Alternative j , xj 0 8i 2 I

    * Mit dem *-Symbol am Zeilenbeginn knnen Kommentare eingefgt werden (grau)

    sets

    I Menge der Restriktionen /1,2,3/ J Menge der Spalten /1*4/;

    parameter

    c(j) Z i e l f u n k t i o n s k o e f f i z i e n t / 1 90, 2 50, 3 70, 4 40 / b(i) K a p a z i t t s g r e n z e / 1 30 2 24 3 36 /;

    table a(i,j) Kapazittskoeffizienten 1 2 3 41 2 -1 1 22 1 2 3 -13 3 2 -1 2;

    free variables F Zielfunktionswert;

    positive variables x(j) gewhlte Menge von Alternative j;

    equations

    Z i e l f k t Zielfunktion K a p a z i t Kapazittsrestriktion;

    Zielfkt.. F =E= sum(j, c(j) * x(j) );Kapazit(i).. sum(j, a(i,j) * x(j) ) =L= b(i);

    model Beispiel1 /Zielfkt,Kapazit/;

    solve Beispiel1 maximizing F using lp;

    Variablentyp Lower Bound (.lo) Upper Bound (.up) Anmerkung

    free 1 +1 Beide Schranken vernderbarpositive 0 +1 obere Schranke vernderbarnegative 1 0 untere Schranke vernderbarbinary 0 1 diskret, Schranken sind fixinteger 0 100 diskret, beide Schranken vernderbar

    23. Oktober 2013 Einfhrung in GAMS 20 / 88

    Gleichungen

    Deklaration einer Gleichung mit einem Bezeichner und optional einemKommentar erfolgt separat vor der Definition; Die Deklaration muss mit einemSemikolon abgeschlossen werden.

    max F =X

    j

    cjxj (14)

    s.t.X

    j

    aijxj bi 8i 2 I (15)

    * Mit dem *-Symbol am Zeilenbeginn knnen Kommentare eingefgt werden (grau)

    sets

    I Menge der Restriktionen /1,2,3/ J Menge der Spalten /1*4/;

    parameter

    c(j) Z i e l f u n k t i o n s k o e f f i z i e n t / 1 90, 2 50, 3 70, 4 40 / b(i) K a p a z i t t s g r e n z e / 1 30 2 24 3 36 /;

    table a(i,j) Kapazittskoeffizienten 1 2 3 41 2 -1 1 22 1 2 3 -13 3 2 -1 2;

    free variables F Zielfunktionswert;

    positive variables x(j) gewhlte Menge von Alternative j;

    equations

    Z i e l f k t Zielfunktion K a p a z i t Kapazittsrestriktion;

    Zielfkt.. F =E= sum(j, c(j) * x(j) );Kapazit(i).. sum(j, a(i,j) * x(j) ) =L= b(i);

    model Beispiel1 /Zielfkt,Kapazit/;

    solve Beispiel1 maximizing F using lp;

  • 23. Oktober 2013 Einfhrung in GAMS 21 / 88

    Equations

    Hinweise zu EquationsI Deklaration separat vor DefinitionI Definition einer Gleichung durch ..I Die Domain eines Gleichungsblocks wird wie bei anderen entities

    durch eine Klammer () nach dem Bezeichner angegeben. Im Beispielwird Gleichung Kapazit fr alle Elemente in i aufgestellt (8i 2 I ).Der Block Kapazit(i) enthlt also Gleichungen:I Kapazit(1)I Kapazit(2)I Kapazit(3)

    23. Oktober 2013 Einfhrung in GAMS 22 / 88

    Summen, Produkte und Operatoren

    Summen werden durch das Schlsselwort sum() definiert. Innerhalb derKlammer steht zuerst der Index, ber den summiert wird. Darauf folgtder Summenterm. Produkte werden analog gebildet.

    *Beispiel zur Summenbildung: sum()

    sum(j, x(j) - y(j) );* Eine Summe ber 2 Mengen -

    * Indices mssen eingeklammert werden:

    sum((k,l), z(k,l) * p(k) );*Beispiel zur Produktbildung:

    prod(j, p(j) * r(j) );

    Operatoren

    GAMS-Syntax Operator Bedeutung

    =L= kleiner-gleich=G= grer-gleich=E= = ist-gleich

  • 23. Oktober 2013 Einfhrung in GAMS 23 / 88

    Modell

    I Equations knnen zu einem Model zusammengefasst werden.I Wie bei anderen entities kann ein Kommentar vor der Definition

    eingefgt werden.I Die Wertzuweisung erfolgt durch auflisten der equations, oder durch

    /all/.

    * Mit dem *-Symbol am Zeilenbeginn knnen Kommentare eingefgt werden (grau)

    sets

    I Menge der Restriktionen /1,2,3/ J Menge der Spalten /1*4/;

    parameter

    c(j) Z i e l f u n k t i o n s k o e f f i z i e n t / 1 90, 2 50, 3 70, 4 40 / b(i) K a p a z i t t s g r e n z e / 1 30 2 24 3 36 /;

    table a(i,j) Kapazittskoeffizienten 1 2 3 41 2 -1 1 22 1 2 3 -13 3 2 -1 2;

    free variables F Zielfunktionswert;

    positive variables x(j) gewhlte Menge von Alternative j;

    equations

    Z i e l f k t Zielfunktion K a p a z i t Kapazittsrestriktion;

    Zielfkt.. F =E= sum(j, c(j) * x(j) );Kapazit(i).. sum(j, a(i,j) * x(j) ) =L= b(i);

    model Beispiel1 /Zielfkt,Kapazit/;*ebenso mglich:

    *model Beispiel1 /all/;

    solve Beispiel1 maximizing F using lp;Es knnen mehrere Modelle in einem .gms - Skript definiert werden.

    Umsetzung in GAMS - Beispiel1.gms* Mit dem *-Symbol am Zeilenbeginn knnen Kommentare eingefgt werden (grau)

    sets

    I Menge der Restriktionen /1,2,3/ J Menge der Spalten /1*4/;

    parameter

    c(j) Z i e l f u n k t i o n s k o e f f i z i e n t / 1 90, 2 50, 3 70, 4 40 / b(i) K a p a z i t t s g r e n z e / 1 30 2 24 3 36 /;

    table a(i,j) Kapazittskoeffizienten 1 2 3 41 2 -1 1 22 1 2 3 -13 3 2 -1 2;

    free variables F Zielfunktionswert;

    positive variables x(j) gewhlte Menge von Alternative j;

    equations

    Z i e l f k t Zielfunktion K a p a z i t Kapazittsrestriktion;

    Zielfkt.. F =E= sum(j, c(j) * x(j) );Kapazit(i).. sum(j, a(i,j) * x(j) ) =L= b(i);

    model Beispiel1 /Zielfkt,Kapazit/;

    solve Beispiel1 maximizing F using lp;

  • 23. Oktober 2013 Einfhrung in GAMS 25 / 88

    Orientierung

    1. Einfhrung

    2. berfhrung formaler Modelle in GAMS-Syntax

    3. Lsen von Optimierungsproblemen in GAMS

    4. Auswertung von Rechenergebnissen

    5. Mehr zur GAMS-Syntax

    23. Oktober 2013 Einfhrung in GAMS 26 / 88

    Lsen des Optimierungsproblems

    I bergabe des so definierten Optimierungsmodells an einen SolverI Im Solver sind Lsungsverfahren implementiert (z.B. Simplex,

    Schnittebenenverfahren u.a.)

    * Mit dem *-Symbol am Zeilenbeginn knnen Kommentare eingefgt werden (grau)

    sets

    I Menge der Restriktionen /1,2,3/ J Menge der Spalten /1*4/;

    parameter

    c(j) Z i e l f u n k t i o n s k o e f f i z i e n t / 1 90, 2 50, 3 70, 4 40 / b(i) K a p a z i t t s g r e n z e / 1 30 2 24 3 36 /;

    table a(i,j) Kapazittskoeffizienten 1 2 3 41 2 -1 1 22 1 2 3 -13 3 2 -1 2;

    free variables F Zielfunktionswert;

    positive variables x(j) gewhlte Menge von Alternative j;

    equations

    Z i e l f k t Zielfunktion K a p a z i t Kapazittsrestriktion;

    Zielfkt.. F =E= sum(j, c(j) * x(j) );Kapazit(i).. sum(j, a(i,j) * x(j) ) =L= b(i);

    model Beispiel1 /Zielfkt,Kapazit/;*ebenso mglich:

    *model Beispiel1 /all/;

    solve Beispiel1 maximizing F using lp;

    Schlsselwort zum Aufruf des Solvers: solve

    dahinter Bestimmung:I des zu berechnenden ModellsI der Optimierungsrichtung, mglich:

    I maximizingI minimizing

    I der zu optimierenden ZielfunktionsvariableI des Modelltyps

  • 23. Oktober 2013 Einfhrung in GAMS 27 / 88

    Modelltypen und Solver

    Krzel Modelltyp

    lp linear programmingnlp nonlinear programmingmip mixed integer programmingrmip relaxed mixed integer programmingminlp mixed integer nonlinear programmingrminlp relaxed mixed integer nonlinear programmingmcp mixed complementarity problemscns constrained nonlinear systems

    I Zunchst Betrachtung von Modellen der linearen Programmierung (lp) und derganzzahligen Programmierung (mip)

    I Der bei uns dafr verwendete Standardsolver ist IBM Cplex

    I Beim Lsen von mip-Modellen sind weitere Einstellungen mglich (vgl. Folie 51)

    I Mehr Informationen ber Solver finden sich unter Help ! Solver Manual.

    23. Oktober 2013 Einfhrung in GAMS 28 / 88

    Compile, Run

    I Kompilieren: Shift + F9Men: File ! CompileI Das Skript wird

    kompiliert und auf Fehlerberprft.

    I Gams starten: F9Men: File ! RunI Das Skript wird

    kompiliert und auf Fehlerberprft. Das Modellwird fr den Solvervorbereitet. Danach wirdder Solver aufgerufen.

  • 23. Oktober 2013 Einfhrung in GAMS 29 / 88

    Orientierung

    1. Einfhrung

    2. berfhrung formaler Modelle in GAMS-Syntax

    3. Lsen von Optimierungsproblemen in GAMS

    4. Auswertung von Rechenergebnissen

    5. Mehr zur GAMS-Syntax

    23. Oktober 2013 Einfhrung in GAMS 30 / 88

    bersicht

    I Whrend des Gamslaufes wird im Process-Window ein Protokoll desGamslaufes angezeigt (.log Datei)

    I Nach Beendigung des Laufes wird standardmig das Listingangezeigt (.lst - Datei im Verzeichnis der Projektdatei)

    I Smtliche unmittelbar relevanten Gren lassen sich daraus ablesen.Das Listing besteht ausI einem echo-print, der die Model-Syntax nochmal wiedergibtI dem Equation ListingI dem Column ListingI der Model StatisticsI dem Solution ReportI optional dem Display

  • 23. Oktober 2013 Einfhrung in GAMS 31 / 88

    Equation Listing

    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 mEquation Listing SOLVE Beispiel1 Using LP From line 41

    ---- Zielfkt =E= Zielfunktion

    Zielfkt.. F - 90*x(1) - 50*x(2) - 70*x(3) - 40*x(4) =E= 0 ; (LHS = 0)

    ---- Kapazit =L= Kapazittsrestriktion

    Kapazit(1).. 2*x(1) - x(2) + x(3) + 2*x(4) =L= 30 ; (LHS = 0)

    Kapazit(2).. x(1) + 2*x(2) + 3*x(3) - x(4) =L= 24 ; (LHS = 0)

    Kapazit(3).. 3*x(1) + 2*x(2) - x(3) + 2*x(4) =L= 36 ; (LHS = 0)

    I Darstellung der ersten drei ausformulierten Gleichungen (default = 3) jedesBlocks

    I linke Seite der Gleichungen (LHS): Variablen mit Parametern; rechte Seite:Konstanten

    I Initialisierung: alle Variablen xj auf kleinst mglichem Wert (0)

    I Falls eine Gleichung durch die Initialisierung unzulssig wird, wird zustzlich(INFES = infeasible) angezeigt

    Column Listing

    Darstellung der ersten drei konkretenVariablen (default = 3) je deklarierterVariable

    (a) Angabe der Wertebereiche und

    der Startwerte der VariablenI .LO = Lower Bound

    I .L = Level

    I .UP = Upper Bound

    I .M = Marginal

    (b) Angabe der Koeffizienten derVariablen in allen Equations(Spalte in derKoeffizientenmatrix)

    (b)

    (a)

  • 23. Oktober 2013 Einfhrung in GAMS 33 / 88

    Model Statistics

    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 mModel Statistics SOLVE Beispiel1 Using LP From line 41

    MODEL STATISTICS

    BLOCKS OF EQUATIONS 2 SINGLE EQUATIONS 4BLOCKS OF VARIABLES 2 SINGLE VARIABLES 5NON ZERO ELEMENTS 17

    GENERATION TIME = 0.156 SECONDS 4 Mb WEX235-235 Aug 17, 2010

    EXECUTION TIME = 0.156 SECONDS 4 Mb WEX235-235 Aug 17, 2010

    I Blocks of Equations: Anzahl Gleichungsblcke (hier: 1 Zielfunktion (11) + 1Kapazittsbeschrnkung (12) )

    I Single Equations: Anzahl an Gleichungen (hier: 1 Zielfunktion (11) + 3 ausformulierteRestriktionsgleichungen (2) - (4) )

    I Blocks of Variables : Anzahl der deklarierten Variablen (hier: F und xj )I Single Variables: Anzahl ausformulierter Variablen (hier: F und x1; :::; x4)I Non Zeor Elements: Anzahl von 0 verschiedener Elemente der Koeffizientenmatrix (hier:

    3 x 4 aus den Nebenbedingungen + 1 x 5 aus der ZF)I Generation time: Zeit, die GAMS bentigt hat, um das Modell fr den Solver

    aufzubereiten

    23. Oktober 2013 Einfhrung in GAMS 34 / 88

    Solution Report

    Nachdem im Listing zuerst das Modell vor dem Solveraufruf dargestelltwurde, folgt im Solution Report des Listings die Auswertung derSolver Ergebnisse.

    Es werden also Variablen und Gleichungen mit den vom Solverermittelten Variablenwerten ausgewertet.

    Zum Solution Report gehren:

    a) Solve Summary

    b) SolEqu: Solution Report Equations

    c) SolVar: Solution Report Variables

  • 23. Oktober 2013 Einfhrung in GAMS 35 / 88

    a) Solution Report - Solve Summary

    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 mSolution Report SOLVE Beispiel1 Using LP From line 41

    S O L V E S U M M A R Y

    MODEL Beispiel1 OBJECTIVE FTYPE LP DIRECTION MAXIMIZESOLVER CPLEX FROM LINE 41

    **** SOLVER STATUS 1 Normal Completion**** MODEL STATUS 1 Optimal**** OBJECTIVE VALUE 1513.3333

    RESOURCE USAGE, LIMIT 0.129 1000.000ITERATION COUNT, LIMIT 4 2000000000

    IBM ILOG CPLEX Aug 18, 2010 23.5.2 WEX 19143.19383 WEI x86_64/MS WindowsCplex 12.2.0.0, GAMS Link 34

    I Model, Direction, Objective, Type entsprechen dem Solve-Statement des .gms Skriptesvgl. Folie 27

    I Solver Status, Model Status: Rckmeldung des Solvers - verschiedeneStatusmeldungen mglich - vgl. GAMS Guide - Help ! expanded gams guide. Hierwurde das Modell optimal gelst.

    I Objective Value: ZielfunktionswertI resource usage: Zeitverbrauch des Solvers beim Lsen des Modells (CPU s)I iteration count: Bentigte Iterationen des Solvers zum Lsen des Modells

    23. Oktober 2013 Einfhrung in GAMS 36 / 88

    b) Solution Report Equations

    LOWER LEVEL UPPER MARGINAL

    ---- EQU Zielfkt . . . 1.000

    Zielfkt Zielfunktion

    ---- EQU Kapazit Kapazittsrestriktion

    LOWER LEVEL UPPER MARGINAL

    1 -INF 30.000 30.000 18.1482 -INF 24.000 24.000 21.4813 -INF 36.000 36.000 12.593

    I Angabe der unteren und oberen Schranken der Gleichungen - im Bsp. entsprechen UpperBound den Konstanten bi

    I Angabe des Levels: Wert der linken Seite der GleichungI Angabe der Marginals: Simplexmultiplikatoren der Restriktion

    I Wie verndert sich der Zielfunktionswert bei einer marginalen Vernderung derKonstanten ! Vernderung um i

    I Hier wrde der ZF steigen, da Kapazittsgrenze der Restriktion erhht wrde !ein besserer Zielfunktionswert wre mglich

  • 23. Oktober 2013 Einfhrung in GAMS 37 / 88

    c) Solution Report Variables

    LOWER LEVEL UPPER MARGINAL

    ---- VAR F -INF 1513.333 +INF .

    F Zielfunktionswert

    ---- VAR x gewhlte Menge von Alternative j

    LOWER LEVEL UPPER MARGINAL

    1 . . +INF -5.5562 . 7.333 +INF .3 . 8.000 +INF .4 . 14.667 +INF .

    I Untere (LOWER) und obere (UPPER) Beschrnkung der VariableI LEVEL: Wert der Variablen in der Lsung (optimaler Wert)I MARGINAL: Reduzierte Kosten

    I wie verndert sich der ZFW, wenn die Variable um eine marginale Einheit erhht wird

    I Vernderung um cj

    23. Oktober 2013 Einfhrung in GAMS 38 / 88

    Display AnweisungAusgabe gewnschter Werte am Ende des Listings

    * Mit dem *-Symbol am Zeilenbeginn knnen Kommentare eingefgt werden (grau)

    sets

    I Menge der Restriktionen /1,2,3/ J Menge der Spalten /1*4/;

    parameter

    c(j) Z i e l f u n k t i o n s k o e f f i z i e n t / 1 90, 2 50, 3 70, 4 40 / b(i) K a p a z i t t s g r e n z e / 1 30 2 24 3 36 /;

    table a(i,j) Kapazittskoeffizienten 1 2 3 41 2 -1 1 22 1 2 3 -13 3 2 -1 2;

    free variables F Zielfunktionswert;

    positive variables x(j) gewhlte Menge von Alternative j;

    equations

    Z i e l f k t Zielfunktion K a p a z i t Kapazittsrestriktion;

    Zielfkt.. F =E= sum(j, c(j) * x(j) );Kapazit(i).. sum(j, a(i,j) * x(j) ) =L= b(i);

    model B e i s p i e l 1 mein Kommentar zum Modell /Zielfkt,Kapazit/;*ebenso mglich:

    *model Beispiel1 /all/;

    solve Beispiel1 maximizing F using lp;

    display

    F.l, x.l, x.m, a;

    ---- 44 VARIABLE F.L = 1513.333 Zielfunktionswert

    ---- 44 VARIABLE x.L gewhlte Menge von Alternative j

    2 7.333, 3 8.000, 4 14.667

    ---- 44 VARIABLE x.M gewhlte Menge von Alternative j

    1 -5.556

    ---- 44 PARAMETER a Kapazittskoeffizienten

    1 2 3 4

    1 2.000 -1.000 1.000 2.0002 1.000 2.000 3.000 -1.0003 3.000 2.000 -1.000 2.000

  • 23. Oktober 2013 Einfhrung in GAMS 39 / 88

    Fehlerhinweise - Logfile

    Logfile (.log-Datei):I Fehlermeldungen werden mit Zeilenangabe in der Reihenfolge ihres

    Auftretens im logfile-Fenster angezeigt.I Doppelklick auf die rot markierte Fehlermeldung fhrt zur

    fehlerhaften Zeile in der .gms-Datei.I Ein Fehler fhrt oft zu mehreren Fehlermeldungen !die erste

    Fehlermeldung ist die wichtigste

    Echo Print (im Listing):I Fehlernummer erscheint im Echo Print direkt in der Zeile unterhalb

    der (scheinbar) fehlerhaften Zeile an entsprechender Stelle und dieZeile wird durch **** markiert.

    I Am Ende des Echo Prints werden alle aufgetretenen Fehlernummernmit Beschreibung des Fehlers aufgefhrt.

    23. Oktober 2013 Einfhrung in GAMS 40 / 88

    Orientierung

    1. Einfhrung

    2. berfhrung formaler Modelle in GAMS-Syntax

    3. Lsen von Optimierungsproblemen in GAMS

    4. Auswertung von Rechenergebnissen

    5. Mehr zur GAMS-Syntax

  • 23. Oktober 2013 Einfhrung in GAMS 41 / 88

    Sets - Elemente definieren

    I Mengenelemente knnen durch Strings definiert werden

    I Werden Elementbezeichnungen mit Zahlen verwendet, muss lediglich das ersteund das letzte Element verbunden durch * angegeben werden

    sets

    B e z i r k e Menge der Bezirke /Pankow, Mitte, Charlottenburg/;sets

    S t a e d t e Menge der Staedte /Stadt5*Stadt12/;

    display Staedte, Bezirke;

    ---- 9 SET Staedte Menge der Staedte

    Stadt5 , Stadt6 , Stadt7 , Stadt8 , Stadt9 , Stadt10, Stadt11Stadt12

    ---- 9 SET Bezirke Menge der Bezirke

    Pankow , Mitte , Charlottenburg

    23. Oktober 2013 Einfhrung in GAMS 42 / 88

    Sets - Mehrere Namen fr ein Set

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 50

    Sets Mehrere Namen fr ein set

    set i Knotenmenge / 1, 2, 3, 4, 5, 6 / ;

    alias( i, k, l) ; }6,5,4,3 ,2 ,1{

    Einem set drfen 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.

    === lki

    Trennung der Namen durch Komma

    5. Weitere Aspekte5.1 Mengen

    I Einem set drfen beliebig viele weitere Namen gegeben werden.I Die Reihenfolge der Bezeichner in der alias-Anweisung ist egal.I Beachte: Nur ein Bezeichner darf vorher schon deklariert worden

    sein.

  • 23. Oktober 2013 Einfhrung in GAMS 43 / 88

    Sets - Subsets definieren

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 51

    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 durchgefhrt, d. h. es wird berprft, ob die Elemente der Teilmenge wirklich Elemente der bergeordneten Menge sind.

    Bezeichner der bergeordneten Menge

    5. Weitere Aspekte5.1 Mengen

    12

    34

    6

    5

    q ist eine Teilmenge (subset) von i - es enthlt hier ein Element der bergeordnetenMenge. Es empfiehlt sich die bergeordnete Menge in Klammern anzugeben, umFehler zu vermeiden, die durch eine fehlerhafte Angabe der Elemente der Teilmengeentstehen.

    Bei der Compilierung wird berprft, ob Elemente der Teilmenge wirklich Elemente

    der bergeordneten Menge sind. Wrde q hier bspw. das Element 7 zugewiesen,

    kme es zu einer Fehlermeldung.

    23. Oktober 2013 Einfhrung in GAMS 44 / 88

    Sets - Zuweisung von Elementen nach der Deklaration

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 52

    Sets - Zuweisung (assignment) von Elementen nach Deklaration

    sets i Knotenmenge /1*6/

    q(i) Quelle(Startknoten)

    s(i) Senke

    r(i) Restknoten (weder Quelle noch Senke) ;

    q("1")= yes ;

    Zugehrigkeit eines Elements zu einer Menge: ja (yes) (=Hinzufgen) 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

    5. Weitere Aspekte 5.1 Mengen

    Entfernen der Quelle

    r(i)= yes ;

    r("1")= no ;

    r("6")= no ;

    s("6")= yes ;

    }6,5,4,3 ,2 ,1{r

    }6,5,4,3 ,2 {r

    }5,4,3 ,2 {rEntfernen der Senke

    Durch diese Art der Elementzuweisung werden Mengen dynamisch.

    1

    2

    3

    4

    6

    5

  • 23. Oktober 2013 Einfhrung in GAMS 45 / 88

    Sets - Mehrdimensionale Mengen

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 53

    Sets Mehrdimensionale sets

    sets i Knotenmenge / 1, 2, 3, 4, 5, 6 /

    p(i,i) Pfeilmenge / 1.2 1.3 2.4 2.6 3.4

    5.6 / ;

    4.5

    set p(i,i) Pfeilmenge / 1.(2,3)

    2.(4,6) 3.4

    Zusammenfassende Schreibweise z.B.

    5. Weitere Aspekte 5.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 mglich.

    1

    2

    3

    4

    6

    5 4.6

    5.6 / ;

    Zusammenfassende Schreibweise, z.B.

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 53

    Sets Mehrdimensionale sets

    sets i Knotenmenge / 1, 2, 3, 4, 5, 6 /

    p(i,i) Pfeilmenge / 1.2 1.3 2.4 2.6 3.4

    5.6 / ;

    4.5

    set p(i,i) Pfeilmenge / 1.(2,3)

    2.(4,6) 3.4

    Zusammenfassende Schreibweise z.B.

    5. Weitere Aspekte 5.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 mglich.

    1

    2

    3

    4

    6

    5 4.6

    5.6 / ;

    Bis zu 10 Dimensionen mglich

    23. Oktober 2013 Einfhrung in GAMS 46 / 88

    Parameter - mehrdimensionale Daten in Tabellenform

    sets

    bz /Pankow,Marzahn,Kreuzberg/ ;parameter

    a n z Anzahl der Elemente in der Menge ;

    anz = card(bz) ;*Anzeige:

    display anz ;

    set

    i /1*3/ j /a,b/ k /p1*p4/;table tab(i,j,k) Eine Tabelle mit 3 Dimensionen p1 p2 p3 p41.a 10 0 15 51.b 5 10 5 02.a 0 0 0 52.b 10 10 15 153.a 10 0 5 103.b 15 15 15 0;

    I Wertetabellen werden ohne Backslashes (/.../) definiertI Tabellenformat muss eingehalten werden - Dateneintrge drfen Spaltenstruktur nicht

    berlappenI mehrere Dimensionen knnen durch . verknpft werden. Im Beispiel ist tab1;a;p1 = 10.

  • 23. Oktober 2013 Einfhrung in GAMS 47 / 88

    Parameter - mehrdimensionale Daten in Tabellenform

    sets

    bz /Pankow,Marzahn,Kreuzberg/ ;parameter

    a n z Anzahl der Elemente in der Menge ;

    anz = card(bz) ;*Anzeige:

    display anz ;

    set

    i /1*3/ j /a,b/ k /p1*p4/;table tab(i,j,k) Eine Tabelle mit 3 Dimensionen$include table.txt;

    I Es kann nur eine table pro table-Anweisungdeklariert werden

    I Tables knnen bis zu 10 Dimensionen haben

    I Groe Datenmengen knnen in .txt Dateienausgelagert werden

    I Tabellenspalten durch Tabstop(Tabulatortaste) trennen Weitere Mglichkeiten zur Einbindung

    externer Daten !Help-Men

    23. Oktober 2013 Einfhrung in GAMS 48 / 88

    Parameter - Wertzuweisung (dynamische Parameter)

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 60

    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 630

    HH 500 490 150 420 670

    M 460 390 630 570 220 ;

    scalar f Frachtkosten pro Stck und 100 km /0.5/ ;

    parameter c(s,k) Transportkosten pro Stck zw. s und k ;

    c(s,k) = d(s,k) / 100 * f ;

    Berechnung von c fr jede Kombination aus s und k

    auf konkrete Elemente wird ber 'Element' Bezug genommen

    5. Weitere Aspekte 5.2 Daten (Wertzuweisung)

  • 23. Oktober 2013 Einfhrung in GAMS 49 / 88

    Variablen - Verndern des Wertebereiches

    Suffix Bedeutung.lo untere Schranke (lower bound).up obere Schranke (upper bound).fx Fixierung: untere und obere Schranke sind identisch

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 66

    Variablen - Vernderung des Wertebereichs

    Suffix Bedeutung

    .lo untere Schranke (lower bound)

    .up obere Schranke (upper bound)

    .fx fester Wert (fixed value) untere und obere Schranke sind identisch

    x.up('B','DD') = 0;

    x.lo('M','K') = 100;

    x.fx('HH','H') = 50;

    Kunde in DD darf nicht von Standort B beliefert werden

    Kunde in K muss mindestens 100 ME aus M erhalten

    Kunde in H erhlt genau 50 ME aus HH

    Variable .Suffix Index bzw. Indizes, hier: gilt nur fr bestimmte Variablen

    5. Weitere Aspekte 5.3 Variablen

    23. Oktober 2013 Einfhrung in GAMS 50 / 88

    Lsen gemischt ganzzahliger Modelle

    I Modelle, die ganzzahlige Variablen beinhalten werden als MIP- mixed integer program - bezeichnet

    I derartige Modelle erfordern i.d.R. einen wesentlich hherenRechenaufwand als lineare Porgramme - u.U. mssen sehr viele LPsgelst werden

    Solve-Aufruf eines MIP:

    solve modelname maximizing F using mip ;

    Die LP-Relaxation (relaxed mixed integer program) eines ganzzahligenPrograms wird als rmip bezeichnet. Dabei wird dieGanzzahligkeitseigenschaft der Variablen verworfen.

    solve modelname maximizing F using rmip ;

  • 23. Oktober 2013 Einfhrung in GAMS 51 / 88

    Summen, Produkte und Operatoren

    Summen werden durch das Schlsselwort sum() definiert. Innerhalb derKlammer steht zuerst der Index, ber den summiert wird. Darauf folgtder Summenterm. Produkte werden analog gebildet.

    *Beispiel zur Summenbildung: sum()

    sum(j, x(j) - y(j) );* Eine Summe ber 2 Mengen -

    * Indices mssen eingeklammert werden:

    sum((k,l), z(k,l) * p(k) );*Beispiel zur Produktbildung:

    prod(j, p(j) * r(j) );

    Operatoren

    GAMS-Syntax Operator Bedeutung

    =L= kleiner-gleich=G= grer-gleich=E= = ist-gleich

    23. Oktober 2013 Einfhrung in GAMS 52 / 88

    Funktionen - card() und ord()

    Die ord()-Funktion ermittelt die Position eines Elements in der Menge.

    sets

    bz /Pankow,Marzahn,Kreuzberg/ ;parameter

    pos(bz) Position der Elemente in der Menge ;

    *Wird fr jedes Element in bz ausgefhrt:

    pos(bz) = ord(bz) ;*Anzeige:

    display pos ;

    ---- 9 PARAMETER pos Position der Elemente in der Menge

    Pankow 1.000, Marzahn 2.000, Kreuzberg 3.000

    I Zugriff auf einzelne Elemente einer Menge z.B. in Summen oder Schleifen

    I ord() kann nicht auf dynamische sets angewendet werdenI dynamische Elementzuweisung durch yes/no (vgl. Folie 45)

  • 23. Oktober 2013 Einfhrung in GAMS 53 / 88

    Funktionen - card() und ord()

    Die card()-Funktion ermittelt die Anzahl der Elemente einer Menge.

    sets

    bz /Pankow,Marzahn,Kreuzberg/ ;parameter

    a n z Anzahl der Elemente in der Menge ;

    anz = card(bz) ;*Anzeige:

    display anz ;

    ---- 8 PARAMETER anz = 3.000 Anzahl der Elemente in der Menge

    I Formal wird die Anzahl der Elemente auch als Kardinalitt bezeichnet

    I Kardinalitt der Menge J: jJj

    23. Oktober 2013 Einfhrung in GAMS 54 / 88

    Funktionen - Max, Min

    Berechnung des Maximums und Minimums:scalar

    M A Maximum M I M i n i m u m ;

    MA = max(1592,(3540/2),7);MI = min(-15,12,-6);display MA,MI;

    set i B e i s p i e l m e n g e /1*5/ ;parameter

    c(i) B e i s p i e l d a t e n /1 10, 2 5, 3 100, 4 -3, 5 13/ ;scalar

    S M A Daten-Maximum S M I Daten-Minimum;

    SMA = smax(i, c(i) ) ;SMI = smin(i, c(i) ) ;

    *display

    *sma,smi ;

    ---- 7 PARAMETER MA = 1770.000 MaximumPARAMETER MI = -15.000 Minimum

  • 23. Oktober 2013 Einfhrung in GAMS 55 / 88

    Funktionen - SMax, SMin

    Oftmals ist das Maximum bzw. Minimum eines Parameters oder einerVariable gesucht.I Maximum-Funktion ber einen/mehrere Indices:

    scalar

    M A Maximum M I M i n i m u m ;

    MA = max(1592,(3540/2),7);MI = min(-15,12,-6);display MA,MI;

    set i B e i s p i e l m e n g e /1*5/ ;parameter

    c(i) B e i s p i e l d a t e n /1 10, 2 5, 3 100, 4 -3, 5 13/ ;scalar

    S M A Daten-Maximum S M I Daten-Minimum;

    SMA = smax(i, c(i) ) ;SMI = smin(i, c(i) ) ;

    display

    sma,smi ;

    ---- 21 PARAMETER SMA = 100.000 Daten-MaximumPARAMETER SMI = -3.000 Daten-Minimum

    23. Oktober 2013 Einfhrung in GAMS 56 / 88

    Funktionen - Runden und Zufallszahlen

    I Uniform(x,y) erzeugt eine gleichverteilte (Pseudo)-Zufallszahl zwischen x und y

    I eine ganzzahlige Zufallszahl liefert die Funktion Uniformint(x,y)

    set i B e i s p i e l m e n g e /A,B,C,D/ ;parameter r(i) B e i s p i e l p a r a m e t e r ;

    r(i) = Uniform(0,10) ;display r ;r(i)= Uniformint(0,10)display r ;r(i) = round(uniform(0,10),1) ;display r ;

    ---- 6 PARAMETER r BeispielparameterA 1.717, B 8.433, C 5.504, D 3.011---- 8 PARAMETER r BeispielparameterA 3.000, B 2.000, C 3.000, D 9.000---- 10 PARAMETER r BeispielparameterA 0.700, B 5.000, C 10.000, D 5.800

    Die Funktion round(x,y) rundet die Zahl x auf y Stellen. Mit floor(x,y) und ceil(x,y)

    kann auch gezielt ab bzw. aufgerundet werden.

  • 23. Oktober 2013 Einfhrung in GAMS 57 / 88

    Funktionen - Runden und Zufallszahlen

    Hinweis zu Zufallszahlen:

    Es werden sog. Pseudozufallszahlen erstellt. Ruft man das Skriptmehrmals nacheinander auf so werden immer wieder diesselbenZufallszahlen erzeugt. Der Zufallszahlengenerator kann durch

    Option Seed=number;

    eingestellt werden. Der voreingestellte Standardwert fr number ist 3141.Wird der seed verndert, so werden neue (Pseudo)-Zufallszahlenerstellt.

    23. Oktober 2013 Einfhrung in GAMS 58 / 88

    $-Bedingungen

    Mit $(...) knnen Bedingungen umgesetzt werden. Beispielsweise kann dieWertzuweisung eines Parameters mit einer Bedingung verbunden werden.

    set

    i /1*5/ ;parameter

    c(i) P a r a m e t e r ;

    c(i)$(ord(i) > 2) = 5 ;display c ;

    ---- 7 PARAMETER c Parameter

    3 5.000, 4 5.000, 5 5.000

    Die Wertzuweisung auf der linken Seite wird nur dann vorgenommen, wenn die

    $( )-Bedingungen erfllt ist. Der Wert von ci wird also nur fr diejenigen Elemente der

    Menge i zugewiesen, deren Position in der Menge i grer als 2 ist. Fr c1 und c2 wird

    die Wertzuweisung demnach nicht aufgestellt (vgl.ord()-Funktion: Folie 53 ).

  • 23. Oktober 2013 Einfhrung in GAMS 59 / 88

    $-Bedingungen

    Auch Gleichungen knnen an Bedingungen geknpft werden.

    Im Beispiel soll eine Restriktion nur fr das letzte Element einer Menge aufgestelltwerden:

    equations

    G l e i c h u n g 1 Dies ist eine Gleichung ;

    Gleichung1(i)$(ord(i) = card(i)).. sum( (i,j), x(i,j) ) =E= 1 ;

    23. Oktober 2013 Einfhrung in GAMS 60 / 88

    $-Bedingungen - Operatoren

    Logische Operatoren

    Operator Bedeutungnot nichtand undor oderxor exklusiv oder

    Numerische Operatoren

    Operator Bedeutunglt < kleiner alsle = grer oder gleichgt > grer

    Beispiel

    c(j)$( (ord(j) > 6) AND (ord(j) 10) ) = 10 ;

  • 23. Oktober 2013 Einfhrung in GAMS 61 / 88

    Optimalittskriterium

    Um die Lsungszeit eines MIPs zu verringern, kann angegeben werden, wie gro dieLcke der zu ermittelnden Lsung zu der theoretisch noch bestmglichen ganzzahligenLsung sein darf. Sobald im Branch-&-Bound Prozess eine zulssige ganzzahligeLsung gefunden wird, deren Zielfunktionswert eine geringere Differenz zum nochtheoretisch bestmglichen Ergebnis aufweist, wird der Lsungsprozess mit derMeldung solution satisfies tolerances abgebrochen.

    Angabe der Lcke, dem sog. solution gap, vor dem solve Statement:

    *Angabe eines absoluten gaps: optca (criterium absolute)

    option optca = 5000;*maximale Abweichung der ermittelten Lsung von der Optimallsung:

    *5000

    *Angabe eines relativen gaps: optcr (criterium relative)

    option optcr = 0.1;*maximale Abweichung der ermittelten Lsung von der Optimallsung:

    *10 Prozent

    Bei Angabe einer maximalen relativen Lcke:

    *Angabe eines absoluten gaps: optca (criterium absolute)

    option optca = 5000;*maximale Abweichung der ermittelten Lsung von der Optimallsung:

    *5000

    *Angabe eines relativen gaps: optcr (criterium relative)

    option optcr = 0.1;*maximale Abweichung der ermittelten Lsung von der Optimallsung:

    *10 Prozent

    23. Oktober 2013 Einfhrung in GAMS 62 / 88

    Optimalittskriterium

    Die Standardeinstellung ist optcr = 0.1. Soll bis zum Nachweis derOptimalitt gerechnet werden muss optcr = 0 gesetzt werden.

    option optcr = 0;Option optca=4000;

    option optcr = 0;

    MIP status(101): integer optimal solutionFixed MIP status(1): optimalProven optimal solution.

    MIP Solution: 96394.100000Final Solve: 96394.100000

    Best possible: 96394.100000Absolute gap: 0.000000Relative gap: 0.000000

    Die maximale relative Abweichung desZielfunktionswertes von der bestmglichen Lsung ist auf0% gesetzt. Somit wird die optimale Lsung berechnet.Der Rechenaufwand dafr kann sehr gro sein.

    option optcr = 0;Option optca=4000;

    option optcr = 0;MIP status(102): integer optimal, toleranceFixed MIP status(1): optimalSolution satisfies tolerances.

    MIP Solution: 96394.100000Final Solve: 96394.100000

    Best possible: 92485.800000Absolute gap: 3908.300000Relative gap: 0.040545

    Die maximale absolute Abweichung desZielfunktionswertes von der bestmglichen Lsungbetrgt 4000. Sobald eine ganzzahlige Lsung gefundenwird, die eine Optimalittslcke von hchstens 4000aufweist, wird die Berechnung beendet. Um optca zusetzen muss zunchst die Standardeinstellung fr optcr(Standard: optcr=0.1) aufgehoben werden.

  • 23. Oktober 2013 Einfhrung in GAMS 63 / 88

    Optionen - Rechenzeit und Iterationen

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 77

    Verndern der Zeit- bzw. Iterationsbeschrnkung

    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 zulssiger Zeitbedarf zum Lsen (default: 1000 Sekunden)

    Maximal zulssige Anzahl von Iterationen zum Lsen (default: 10000 Iterationen)

    vom Solver zur Lsung bentigte Zeit (CPU-Zeit)

    vom Solver zur Lsung bentigte Iterationen

    5. Weitere Aspekte 5.5 Lsen von Modellen

    Ausschnitt A_4_5_big.lst

    23. Oktober 2013 Einfhrung in GAMS 64 / 88

    Optionen - Rechenzeit und Iterationen

    Bei greren Problemen kann eine Erhhung notwendig sein, da bspw.innerhalb der vorgegebenen Zeit keine Lsung gefunden wird.

    Bsp. fr Zeitberschreitung:

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 78

    Verndern der Zeit- bzw. Iterationsbeschrnkung

    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

    5. Weitere Aspekte

    Bei greren Problemen kann eine Erhhung notwendig sein, da bspw. innerhalb der vorgegebenen Zeit keine Lsung gefunden wird.

    Bsp. fr Zeitberschreitung:

    Ausschnitt A_4_5_big.lst

    5.5 Lsen von Modellen

  • 23. Oktober 2013 Einfhrung in GAMS 65 / 88

    Optionen - Rechenzeit und Iterationen

    Verndern der Zeit- bzw. Iterationsbeschrnkung durch model.reslim undmodel.iterlim vor dem solve Statement:

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 79

    Verndern der Zeit- bzw. Iterationsbeschrnkung

    ber model.reslim bzw. model.iterlim (irgendwo) vor dem solve-Statement:

    aufgabe.reslim=20000;

    solve schiffsbeladung maximizing F using mip ;

    Erhhung der Rechenzeit auf 20.000 Sekunden

    ITERATION COUNT, LIMIT 7 50000

    5. Weitere Aspekte

    RESOURCE USAGE, LIMIT 0.109 20000.000

    Ausschnitt A_4_5_big.lst

    aufgabe.iterlim=50000;

    solve schiffsbeladung maximizing F using mip ;

    Erhhung der Iterations-anzahl auf 50.000

    Ausschnitt A_4_5_big.lst

    5.5 Lsen von Modellen

    23. Oktober 2013 Einfhrung in GAMS 66 / 88

    Hinweis zum Setzen von Optionen

    Optionen knnen in den meisten Fllen sowohl fr alle Modelle desaktuellen GAMS-Laufes als auch fr spezifische Modelle gesetzt werden.Bspw. kann die Zahl der Iterationen entweder ber:

    option iterlim = 10000 ;

    fr alle Modelle, oder ber:

    modelname.iterlim = 10000 ;

    fr ein spezifisches Modell (modelname) gesetzt werden.

  • 23. Oktober 2013 Einfhrung in GAMS 67 / 88

    Optionen - Sonstiges

    Vernderung der Anzahl der im Listing angezeigten Spalten (Variablen)bzw. Zeilen (Equations) durch

    option limcol = number ;

    option limrow = number ;

    23. Oktober 2013 Einfhrung in GAMS 68 / 88

    Sonstiges

    I $ sowie * mssen immer an den Zeilenanfang (nicht einrcken)I Mehrzeilge Kommentare knnen zwischen $Ontext und $Offtext

    geschrieben werdenI Titel knnen durch $title Beispieltitel gesetzt werdenI $Exit beendet das Skript in der entsprechenden Zeile

  • 23. Oktober 2013 Einfhrung in GAMS 69 / 88

    If-Else Verzweigung

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 90

    Bedingungen if-elseif-else

    if( y5,

    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 Lsen von Modellen

    6. Ablaufgestaltung in GAMS

    I elseif ist optional und kann beliebig oft verwendet werdenI mehrere Bedingungen am besten gut einklammernI keine Deklaration und keine Definition von equations innerhalb if,

    aber z.B. solve zum mehrfachen Lsen von Modellen

    Schleifen: loop

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 87

    6. Ablaufgestaltung in GAMS

    Schleifen loop (wiederhole etwas fr 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 fr die Elemente von j ausgefhrt werden, fr die die Variable y(j) den Wert 1 hat (bedingte loop)

    Menge, fr deren Elemente die Anweisungen ausgefhrt werden sollen

    mehrere Indizes durch Komma trennen und in Klammern setzen

    I wiederholte Anweisungen ber einen IndexI keine Deklaration und keine Definition von equations innerhalb loop

  • Schleifen: for

    Mehrmalige Ausfhrung mit einem Zhler

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 88

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

    Zhler (scalar, kein set)

    default: Erhhung des Zhlers pro Durchlauf um 1

    Anweisung wird 10mal

    ausgefhrt

    Erhhung des Zhlers pro Durchlauf um 2

    Anweisung wird 5mal

    ausgefhrt

    I keine Deklaration und keine Definition von equations innerhalb for

    Schleifen: while

    Mehrmalige bedingte Ausfhrung

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 89

    Schleifen while (wiederhole etwas solange wie)

    parameter p /0/ ;

    while( p

  • 23. Oktober 2013 Einfhrung in GAMS 73 / 88

    Ausgabedateien - Beispiel Transportplanung

    I Mit GAMS knnen .txt - Ausgabedateien erstellt werden.I Deklaration + Definition einer Ausgabedatei:

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 92

    7. Gestaltung eigener Ausgabedateien

    Deklaration + Definition einer Ausgabedatei

    file out / Ausgabe_Transport.txt / ;

    put out ;

    Festlegung, in welche Datei geschrieben werden soll

    Schlsselwort zur Deklaration von Dateien

    Eindeutiger Bezeichner (Name)

    Dateiname mit Endung und ggf. Pfadangabe; ohne Pfad: Speicherung am Speicherort der aktuellen .gpr-Datei

    Schlsselwort zum Schreiben in Dateien

    Bezeichner der Datei, in die ab sofort geschrieben werden soll

    Erklrungen am Beispiel Transportplanung

    I Festlegung, in welche Datei geschrieben werden soll

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 92

    7. Gestaltung eigener Ausgabedateien

    Deklaration + Definition einer Ausgabedatei

    file out / Ausgabe_Transport.txt / ;

    put out ;

    Festlegung, in welche Datei geschrieben werden soll

    Schlsselwort zur Deklaration von Dateien

    Eindeutiger Bezeichner (Name)

    Dateiname mit Endung und ggf. Pfadangabe; ohne Pfad: Speicherung am Speicherort der aktuellen .gpr-Datei

    Schlsselwort zum Schreiben in Dateien

    Bezeichner der Datei, in die ab sofort geschrieben werden soll

    Erklrungen am Beispiel Transportplanung

    23. Oktober 2013 Einfhrung in GAMS 74 / 88

    Ausgabedateien - Beispiel

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 93

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

    fr 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 betrachteten Elements

    Leerzeile Trennung der Eintrge hinter put durch Komma (zu empfehlen) oder Leerzeichen

    Schreibe Kommentar zum parameter a

    Beispiel

    7. Gestaltung eigener Ausgabedateien

  • 23. Oktober 2013 Einfhrung in GAMS 75 / 88

    Ausgabedateien - Beispiel Fortsetzung

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 94

    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 fr diesen Eintrag reserviert werden (Feldbreite)

    Ausrichtung des Eintrags innerhalb der reservierten Feldbreite, hier: rechtsbndig

    Anzahl an Dezimalstellen von der Feldbreite, hier: 2 von 8 Stellen (nur bei numerischen Eintrgen)

    Beispiel - Fortsetzung

    7. Gestaltung eigener Ausgabedateien

    Ausgabedateien - Beispiel Ergebnis

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 95

    Transportproblem

    Kapazitt am Standort s

    B 350.00

    HH 500.00

    M 550.00

    Nachfrage des Kunden k

    DD 300.00

    F 300.00

    K 250.00

    S 150.00

    H 350.00

    Transportkosten: 1910.00

    Transportmengen

    von nach Menge

    B DD 300.00

    B F 0.00

    B K 0.00

    B S 0.00

    B H 50.00

    HH DD 0.00

    HH F 0.00

    HH K 200.00

    HH S 0.00

    HH H 300.00

    M DD 0.00

    M F 300.00

    M K 50.00

    M S 150.00

    M H 0.00

    Entstehende Ausgabedatei

    Ausgabe_Transport.txt

    7. Gestaltung eigener Ausgabedateien

  • 23. Oktober 2013 Einfhrung in GAMS 77 / 88

    Ausgabedateien - Beispiel Fortsetzung

    Transportmengen als Tabelle - Quellcode

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 96

    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-Anweisung zur Ausgabe einer Tabelle

    uerer loop: Zeilen

    Innerer loop: Spalten

    7. Gestaltung eigener Ausgabedateien

    23. Oktober 2013 Einfhrung in GAMS 78 / 88

    Ausgabedateien - Beispiel Fortsetzung

    Transportmengen als Tabelle - Ausgabedatei

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 97

    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

    7. Gestaltung eigener Ausgabedateien

  • 23. Oktober 2013 Einfhrung in GAMS 79 / 88

    Ausgabedateien - Hinweise

    I Normalen Text zwischen zwei Anfhrungszeichen (Text) schreibenI Elementnamen: Menge.tlI Elementkommentare: Menge.tsI Wert/Schranken von variables/equations:

    Bezeichner.l/.m/.lo/.up(Index)I Mglichkeit zur einfachen Ausgabe formatierter Dateien zum

    Einlesen in Excel oder Datenbanken (leerzeichen-, tabstopp- bzw.kommagetrennt)

    23. Oktober 2013 Einfhrung in GAMS 80 / 88

    Ausgabedateien - Standardformatierung

    Standardformat Feldbreite AusrichtungText 0 Stellen linksbndigNamen 12 Stellen linksbndignumerische Objekte 12 Stellen rechtsbndigSet-Elemente 12 Stellen rechtsbndig

    Anpassung fr einzelne Output-Elemente: (vgl. Folie 77)

    TU Dresden, Okt. 2009 Andrea Frster, TU Dresden Folie 99

    Text: linksbndig 0 Stellen

    Namen: linksbndig 12 Stellen

    numerische Objekte: rechtsbndig 12 Stellen

    Elemente von Mengen: rechtsbndig 12 Stellen

    Formatierung von Ausgabeobjekten (lokal)

    Standardmig: Ausrichtung Feldbreite

    Anpassung fr einzelne Outputobjekte:

    Objekt: Ausrichtung Feldbreite:Dezimalstellen

    Ausgabe-objekt

    Optional: > Rechtsbndig < Linksbndig zentriert

    Anzahl der Stellen des reservierten Platzes

    Anzahl der Dezimalstellen an der Gesamtzahl der Stellen

    7. Gestaltung eigener Ausgabedateien

  • 23. Oktober 2013 Einfhrung in GAMS 81 / 88

    Gams Data Exchange

    I Mit GAMS knnen Daten aus MS Excel eingelesen und in eineExcel-Datei geschrieben werden.

    I Dazu wird die Funktion GDXXRW verwendetI Der Datenaustausch erfolgt ber .gdx (gams data exchange) Dateien

    GAMS-SkriptMS Excel-Datei GDX-file

    Gams Data Exchange

    23. Oktober 2013 Einfhrung in GAMS 82 / 88

    GDX Daten

    GDX-Dateien speichern Daten in fr GAMS lesbarer Form. Beispiel fr eine GDX Datei:

    .gdx Dateien knnen durch File/Open geffnet werden

    Auflistung der Dateneintrge mit Typ (set,par,var),Anzahl an Dimensionen und Anzahl Elementen

    Details des ausgewhlten Dateneintrags

  • 23. Oktober 2013 Einfhrung in GAMS 83 / 88

    Einlesen und Schreiben von GDX Daten

    Vor der Verwendung mssen die GDX-Daten dem Gamsskript bekannt gemachtwerden. Dafr wird die gdx-Datei geffnet, die entsprechenden Daten werden gelesenund mit $gdxin wird die GDX-Datei wieder geschlossen. Die Deklaration der Datenerfolgt vorher separat!

    set Staedte ;Parameter Einwohner(Staedte) ;*Laden aus gdx:

    $gdxin Datensatz.gdx$load Staedte Einwohner$gdxin

    display Staedte, Einwohner;

    ---- 8 SET Staedte

    Hamburg, Berlin , Dresden, London , Dallas

    ---- 8 PARAMETER Einwohner

    Hamburg 1.800, Berlin 3.400, Dresden 0.520, London 8.300Dallas 1.200

    23. Oktober 2013 Einfhrung in GAMS 84 / 88

    Einlesen und Schreiben von GDX Daten

    Sollen Daten nach dem GAMS-Lauf in einer GDX-Datei gespeichert werden, so kannfolgende Funktion verwendet werden:

    set Staedte ;Parameter Einwohner(Staedte) ;*Laden aus gdx:

    $gdxin Datensatz.gdx$load Staedte Einwohner$gdxin

    Einwohner(Staedte) = Einwohner(Staedte)/2;

    execute_unload "Datensatz_neu.gdx" Staedte Einwohner

    Werden dabei keine Daten angegeben, so werden alle derzeit geladenen Daten nach.gdx entladen.

    Aktualisierte Parameter nach dem GAMS-Lauf

  • 23. Oktober 2013 Einfhrung in GAMS 85 / 88

    Datenaustausch

    Der Datenaustausch von GDX zu MS Excel erfolgt ber das Gams-ProgrammGDXXRW.execute gdxxrw.exe Datensatz.gdx o=meinWB.xlsx set=Staedte rng=Tabelle1!A1:A5 rdim=1 cdim=0 ;

    execute gdxxrw.exe Datensatz.gdx o=meinWB.xlsx par=Einwohner rng=Tabelle1!C2:G2 rdim=0 cdim=1;

    Ergebnis in Tabelle1 von meinWB.xlsx:

    rdim=1: Eine Dimension pro Zeile (row)

    cdim=1: Eine Dimension pro Spalte (column)

    Mit o=Workbookname wird das zu beschreibende Workbook angegeben. Wird die

    Angabe weggelassen, so wird ein Workbook mit dem Namen der GDX Datei

    verwendet. Sollte die Datei noch nicht existieren, wird sie angelegt. Die zu

    beschreibende Datei darf nicht in Excel geffnet sein (Schreibschutz).

    23. Oktober 2013 Einfhrung in GAMS 86 / 88

    Datenaustausch

    Der Datenaustausch von MS Excel zu GDX wird ebenfalls ber GDXXRW realisiert.$call gdxxrw meinWB.xlsx o=Input.gdx set=Staedte rng=Tabelle1!A1:A5 rdim=1 cdim=0 ;

    Es wird die .gdx Datei erstellt (berschrieben) und mit Werten gefllt.I Liest man Mengen ein, kann in der Tabellenzelle neben/unter dem

    Mengenelement ein Kommentar angegeben werden

    I es gibt verschiedene Optionen zum Einlesen:I SE=0 Skip Empty: erspart die Angabe eines genauen rng (wie oben A1:A5) - es ist

    mglich nur die erste Zelle des Bereiches anzugeben (z.B. rng=Tabelle1!A1).Sobald die durch SE angegebene Anzahl an leeren Zellen erreicht ist, wird dasEinlesen des aktuellen Datenelements beendet

    I values=yn fr Mengenelemente: es werden nur Elemente akzeptiert, derenKommentarzelle YES,Y oder 1 enthlt. Mit 0,N,NO knnen damiteinzelne Set-Elemente ausgeschaltet werden.

    I enthlt die Tabelle Duplikate, kann dset=... anstelle von set=... verwendetwerden, um Mengenelemente einzulesen.

  • 23. Oktober 2013 Einfhrung in GAMS 87 / 88

    Datenaustausch - Fortgeschrittene Methoden

    I kompakte Schreibweise des GDXXRW-Aufrufes durch Verwendungeines Index-Blattes innerhalb der zu lesenden Excelmappe

    I Zusammenfhrung mehrerer GDX-Dateien zu einer GDX-Datei (gdxmerge)

    I Mehrdimensionale Parameter und MengenAusfhrliche Darstellung fortgeschrittener Methoden des Datenaustausches finden sichmit Beispielen im Expanded Gams Guide von Bruce McCarl

    I Tipp: Fr statische Daten ist das Einbinden einer .txt Datei mit $Include der einfachsteWeg externe Daten einzubinden. Excel-Tabellen lassen sich als .txt Dateien exportieren

    23. Oktober 2013 Einfhrung in GAMS 88 / 88

    Quellen

    I Frster, A. (2009): Foliensatz zur Gams-bung, TechnischeUniversitt Dresden

    I McCarl, B. A. (2006): Expanded GAMS Guide(http://www.gams.com)

    I GAMS Development Corporation (Hrsg.) (2006), GAMS - A UsersGuide, Books on Demand, Norderstedt (bzw.http://www.gams.com o. GAMS - Men Help)

    I GAMS IDE Documentation (http://www.gams.com bzw.GAMS-Men Help-Help Topics)

    I GAMS Homepage: http://www.gams.com

    http://www.gams.comhttp://www.gams.comhttp://www.gams.comhttp://www.gams.com

    Einfhrungberfhrung formaler Modelle in GAMS-SyntaxLsen von Optimierungsproblemen in GAMSAuswertung von RechenergebnissenMehr zur GAMS-SyntaxModellsyntaxGrundlegende Funktionen$-ConditionalsSkript-OptionenSchleifen und VerzweigungenEigene AusgabedateienGDX und Datenaustausch mit MS ExcelQuellen