General Algebraic Modeling System Översätter direkt från modell till algoritm.



Relevanta dokument
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Introduktion till modelleringsspråket Ampl

Visual Basic, en snabbgenomgång

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Laborationsinformation

Enkla datatyper minne

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Klassdeklaration. Metoddeklaration. Parameteröverföring

F4. programmeringsteknik och Matlab

Programmeringsteknik med C och Matlab

De optimeringsproblem som kommer att behandlas i denna kurs kan alla (i princip) skrivas. 1 2 xt Hx + c T x. minimera

Föreläsning 1 & 2 INTRODUKTION

Variabler och konstanter

MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc.

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Introduktion till Jasmine 1.2 ODQL

Föreläsning 4. Val, boolska värden, läsbarhet, osv

Beräkningsvetenskap föreläsning 2

TDIU01 - Programmering i C++, grundkurs

Föreläsning 6: Transportproblem (TP)

Twincat: PLC Control

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Linjärprogramming. EG2205 Föreläsning 7, vårterminen 2015 Mikael Amelin

SMD 134 Objektorienterad programmering

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Introduktion till MATLAB, med utgångspunkt från Ada

Lösningar till SF1861/SF1851 Optimeringslära, 24/5 2013

Lösningar till SF1852 Optimeringslära för E, 16/1 08

Introduktion till PHP

Föreläsning 6: Introduktion av listor

Tentamen OOP

MICROECONOMICS Mid Sweden University, Sundsvall (Lecture 2) Peter Lohmander &

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Programmering A. Johan Eliasson

Introduktion till Matlab Föreläsning 1. Ingenjörsvetenskap

1 Duala problem vid linjär optimering

Instuderingsfrågor, del D

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

Exempel på ett litet Ada-program

Flöde i nätverk. Flöde i nätverk. Specialfall av minkostnadsflödesproblemet

LP-dualitet: Exempel. Vårt första exempel. LP-dualitet: Relationer. LP-dualitet: Generellt

Användarhandledning Version 1.2

Tentamensinstruktioner. När Du löser uppgifterna

Optimering. Optimering av transportproblem. Linköpings universitet SL. Campusveckan VT2013

Switch, Array (fält) switch break, continue, goto (scary) Sammansatta tilldelningar Kommentarer Array Sortering

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Laboration 1 - Simplexmetoden och Modellformulering

Introduktion C-programmering

1(8) x ijt = antal mobiltelefoner av typ i=1,,m, Som produceras på produktionslina 1,, n, Under vecka t=1,,t.

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Vårt första exempel. LP-dualitet: Exempel. LP-dualitet: Generellt. LP-dualitet: Relationer

Tentamen , Introduktion till Java, dtaa98, dtea53

TDIU01 - Programmering i C++, grundkurs

Linjärprogrammering (Kap 3,4 och 5)

Laboration 2 - Heltalsoptimering

Inledande programmering med C# (1DV402) Summera med while"-satsen

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram?

Flöde i nätverk. Flöde i nätverk. Specialfall av minkostnadsflödesproblemet. Specialfall av minkostnadsflödesproblemet. Slutsats.

Pseudokod Analys av algoritmer Rekursiva algoritmer

Introduktion till MATLAB

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Objektorienterad programmering i Java

Introduktion till MATLAB Föreläsning 1

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

Grundläggande programmering med C# 7,5 högskolepoäng

Laboration 6 Formulär och stränghantering övningar/uppgifter

Laboration 1 - Simplexmetoden och modellformulering

En kort text om programmering i C.

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Matematisk Modellering

Lösningar till 5B1762 Optimeringslära för T, 24/5-07

Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

Föreläsning 2: A/ modellera och lösa LP-problem. TAOP52: Föreläsning 2. Att modellera och lösa LP-problem

Föreläsning 2: A/ modellera och lösa LP-problem. TAOP14: Föreläsning 2

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Föreläsning 3: Booleans, if, switch

TENTAMEN. Tentamensinstruktioner. Datum: 30 augusti 2018 Tid: 8-12

Lösningar till tentan i SF1861 Optimeringslära, 1 juni 2017

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Repetition C-programmering

min c 1 x 1 + c 2 x 2 då x 1 + x 2 = 1, x 1 {0, 1}, x 2 {0, 1} plus andra bivillkor. Vi måste göra k st av n alternativ:

min c 1 x 1 + c 2 x 2 då x 1 + x 2 = 1, x 1 {0, 1}, x 2 {0, 1} plus andra bivillkor. Vi måste göra k st av n alternativ:

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 2 november 2015 Sida 1 / 23

Introduktion till att använda sig av GLPK

Beräkningsverktyg HT07

Föreläsning 2: A/ modellera och lösa LP-problem

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

Optimering med bivillkor

16 Programmering TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Transkript:

Vad är GAMS? General Algebraic Modeling System Översätter direkt från modell till algoritm. Fördelar: Effektivt Skapa mängd ekvationer med en enda sats Lägg in data en och endast en gång Snabbt skapa prototyper State-of-the-art optimeringsprogramvara U. Brännlund 1 GAMS

GAMS fördelar Utnyttjar strukturer Självdokumenterande Algebraisk representation Stort bibliotek med modeller Ganska lätt att lära U. Brännlund 2 GAMS

Andra alternativ Exempel på andra optimeringshjälpmedel: Egen C eller Fortran kod Optimeringsbibliotek, ex CPLEX, MPSX, OSL m fl Interaktiva optimeringsprogram, ex LINDO, LP88 Matlab + Optimization Toolbox Excel Exempel på andra modelleringsspråk: ILOG Studio AMPL MPL LINGO U. Brännlund 3 GAMS

Exempel Antag att din modell innehåller följande bivillkor: I GAMS skriver du så här: DEMAND(J).. Notera: x ij b j för varje j. i SUM(I,X(I,J)) =G= B(J) Generella formatet, som algebraisk notation. Inte specifikt till instansen till modellen. Oberoende av lösare. GAMS erbjuder manipulering av data efter att lösningen levererats. U. Brännlund 4 GAMS

Enkelt transportproblem Index: i j fabriker marknader Givna data: a i b j c ij tillgång på fabrik i efterfrågan på marknad j kostnad per enhet för transport mellan fabrik i och ma Beslutsvariabler: x ij transporterad mängd från fabrik i till marknad j U. Brännlund 5 GAMS

Enkelt transportproblem, forts Objektsfunktion: Minimera i,j c ijx ij Bivillkor: Tillgångsbegränsning: Efterfrågebegränsning: j x ij a i i x ij b j x ij 0 för alla i för alla j för alla i, j U. Brännlund 6 GAMS

Exempel på output fran GAMS Generering av instansen av efterfrågebivillkoren DEMAND (J).. SUM (I, X (I, J) ) =G= B(J); DEMAND(NEW-YORK).. X(SEATTLE,NEW-YORK) + X(SAN-DIEGO, NEW-YORK) =G= 325 DEMAND (CHICAGO).. X (SEATTLE, CHICAGO) + X(SAN-DIEGO,CHICAGO) =G= 300; DEMAND (TOPEKA).. X (SEATTLE, TOPEKA) + X(SAN-DIEGO,TOPEKA) =G= 275; GAMS output liknar input till tex LINDO U. Brännlund 7 GAMS

Exempel på output fran GAMS, forts DISPLAY X.L. X.M; OPTIMAL SOLUTION (IN CASES) NEW-YORK CHICAGO TOPEKA SEATTLE 50.000 300.000 SAN-DIEGO 275.000 275.000 MARGINAL COSTS (IN $K/CASE) CHICAGO TOPEKA SEATTLE 0.036 SAN-DIEGO 0.009 U. Brännlund 8 GAMS

Kommentarer till transportproblemet SETS Tilldelning inom / / Bindestrecken (inga blanktecken) Specialare : SET M Machines /MACH01 * MACH24 /; Definierar maskin MACH01, MACH02,..., MACH24. ALIAS(T,TP); TP är ett annant namn på indexmängden T. U. Brännlund 9 GAMS

Kommentarer till transportproblemet PARAMETER, TABLE Listorna avskiljs med / /, elementen med komma eller retur Noll är default Domänkontroll: GAMS kompilatorn tolererar inte "SEATLE" SCALAR F U. Brännlund 10 GAMS

Kommentarer till transportproblemet Tilldelning PARAMETER C(I,J) transportation cost C(I,J) = F * D(I,J) / 1000; = är tilldelningsoperator F och D(I,J) måste ha tilldelats först C(J,I) tolereras ej av kompilatorn Många matematiska funktioner finns Höger sida om = måste vara beräkningsbart av GAMS Använd i möjligaste mån tilldelning i stället för bivillkor U. Brännlund 11 GAMS

Kommentarer till transportproblemet Variabler Namn, domän och kommentartext i första satsen Variabeltyp tilldelad i separat sats (eller direkt) domän i typtilldelning fri variabel är default Typer är FREE, POSITIVE, NEGATIVE, BINARY, INTEGER, SOS1, SOS2 Obs: Målfunktion finns ej. Använd en ekvation och en variabel för att definiera det du vill optimera. U. Brännlund 12 GAMS

Kommentarer till transportproblemet Bivillkor EQUATION betyder antingen olikhet eller likhet =E= är annorlunda än = och EQ =L= i stället för och LE Det måste finnas minst en variabel i varje bivillkor Definitionformat: NAME(DOMÄN).. Vänsterled =E= Högerled U. Brännlund 13 GAMS

Kommentarer till transportproblemet Modellen MODEL betyder en uppsättning bivillkor /ALL/ betyder alla deklarerade bivillkor Alternativt kan man räkna upp dem Exempel: MODEL TRANSPRT /COST, SUPPLY, DEMAND/; U. Brännlund 14 GAMS

Kommentarer till transportproblemet LP SOLVE MODELLNAMN USING NLP MIP MINIMIZING MAXIMIZING OBJEKTVÄRDE RMIP Effekt: Genererar en instans av modellen Skapar input till lösaren och ger kontrollen till denna Stoppar lösarens result in i GAMS interna databas Ger kontrollen tillbaka till GAMS U. Brännlund 15 GAMS

Några grundregler Skapa GAMS fil med en text editor, alternativt GAMS IDE, Ren ASCII-fil. Inga tabbar. Använd inte svenska tecken å, ä, ö. Ordningen mellan satser är godtycklig men använd inget före det är deklarerat. Layoutenen anpassas godtyckligt, fler-raders satser, fler satser per rad. Avsluta varje sats med semikolon. U. Brännlund 16 GAMS

Några grundregler, forts Ingen skillnad på versaler och gemener. Dokumenterande text på 3 olika sätt 1. Inom en deklaration. < 80 tecken, ej, ; / 2. * Asterisk i kolumn 1 3. $ONTEXT ($ i kolumn 1) This is an explation of the model... $OFFTEXT U. Brännlund 17 GAMS

Några grundregler, forts Regler för namngivning av storheter, sets, parametrar, variabler, etc Felmeddelande och manual kallar dessa identifiers 10 tecken max Första tecknet måste vara bokstav Använd inte reserverade ord Regler för namngivning av medlemmar till SETS Felmeddelande och manual kallar dessa labels 10 tecken max Första tecknet måste vara bokstav eller siffra Använd inte reserverade ord Deklaration och tilldelning av värden kan ske separat eller tillsammans. U. Brännlund 18 GAMS

GAMS interna databas GAMS har följande fyra fält för varje variabel och ekvation.lo = Undre gräns.up = Övre gräns.l = Level (Primal lösning).m = Marginal (Dual lösning) Man kan läsa och skriva dessa när som helst. Lösaren läser alla, men skriver endast i.l och.m. Formatet är: IDENTIFIERARE.FÄLT(DOMÄN) U. Brännlund 19 GAMS

GAMS interna databas, forts Exempel Skrivning i fält: X.UP(I,J) = CAPACITY(I,J); X.LO(I,J) = 10; X.FX("SEATTLE", "NEW-YORK") = 180;.FX betyder.lo =.UP = Sätta initialvärden i icke-linjär programmering. QUANTITY.L(K) = 0.5 * EOQ(K); Läsning av fält: DISPLAY X.L, X.L; REPORT(I,"CASES") = SUM(J, X.L(I,J)); U. Brännlund 20 GAMS

GAMS output Allt kommer på en fil (filnamn.lst). Om det blir fel: Programlista Felmeddelanden X-referenser Symbollista Inget fel: Programlista X-referenser Symbollista Ekvationslista Variabellista Modellstatistik Statusrapport Lösningsrapport U. Brännlund 21 GAMS

Dollardirektiv Kontrollerar GAMS output Dollartecknet måste vara i kolumn 1 Exempel: $TITLE A transportation model Titel överst på varje sida $OFFUPPER Ger output med gemener och versaler $OFFSYMLIST OFFSYMXREF Tar bort symbol och x-referenslista $ONTEXT och OFFTEXT GAMS ignorerar allt mellan dessa U. Brännlund 22 GAMS

Felmeddelanden Använd editorn och sök efter **** Gilla felmeddelanden Koncentrera dig på första felmeddelandet och ignorerar resten U. Brännlund 23 GAMS

Finesser Oönskad domänkontroll för tabeller SETS I car types /VOLVO, BMW, SAAB / J years /Y96*Y99/ TABLE DATA(I,J,*) Y96."HAVE" Y96."NEED" Y97."HAVE Y97."NEED" VOLVO 1 4 4 6 BMW 2 1 6 0 SAAB 3 5 3 4 U. Brännlund 24 GAMS

Finesser Oönskad domänkontroll för rapporter SOLVE TRANSPRT USING LP MINIMIZING Z PARAMETER REPORT(I,*) optimal produktion per fabrik REPORT(I,"CASES") = SUM(J, X.L(I,J)); REPORT(I,"SHIP-COST") = SUM(J, C(I,J)*X.L(I,J)); REPORT(I,"SHIPMENTS") = SUM(J$X.L(I,J), 1); DISPLAY REPORT; U. Brännlund 25 GAMS

Lags och leads Funktionerna ORD(T) och CARD(T). Exempel: SET T time periods /SPRING, SUMMER, FALL, WINTER /; PARAMETERS TEST1(T), TEST2(T), TEST3(T), TEST4(T), R TEST1(T) = ORD(T); TEST2(T) = TEST1(T+1); TEST3(T) = TEST1(T) + 1; TEST4(T) = TEST1(T++1); REPORT(T, "TEST1") = TEST1(T); REPORT(T, "TEST2") = TEST2(T) REPORT(T, "TEST3") = TEST3(T); REPORT(T, "TEST4") = TEST4(T); Obs: ORD("FALL") = 3, och CARD(T) = 4. U. Brännlund 26 GAMS

Lags och leads, forts Här är resultatet: TEST1 TEST2(T) TEST3(T) TEST4(T) SPRING 1 2 2 2 SUMMER 2 3 3 3 FALL 3 4 4 4 WINTER 4 5 1 T-1 och T--1 fungerar på liknande sätt. U. Brännlund 27 GAMS

Dynamisk modellering SET T veckor /V1 * V4/; PARAMETER D(T) /V1 10, V2 12, V3 14, V4 16/; POSITIVE VARIABLES X(T) producerad kvantitet I(T) lager; EQUATIONS LAGERBAL(T) lagerbalansekvationer; LAGERBAL(T).. I(T-1) + X(T) =E= D(T) + I(T); Obs: GAMS ignorerar de index som är utanför sina domän. U. Brännlund 28 GAMS

Dynamisk modellering, forts GAMS genererar följande ekvationer: --- LAGERBAL =E= lagerbalansekvationer LAGERBAL(V1).. + X(V1) - I(V1) =E= 10; LAGERBAL(V2).. I(V1) + X(V2) - I(V2) =E= 12; LAGERBAL(V3).. I(V2) + X(V3) - I(V3) =E= 14; LAGERBAL(V4).. I(V3) + X(V4) - I(V4) =E= 16; Eventuella specialfall vid ändarna får man ta hand om på annat sätt. U. Brännlund 29 GAMS

Dollaroperatorn Med hjälp av dollaroperatorn kan man hantera undantag i exempelvis summor eller definitioner av ekvationer etc. Exempel vid tilldelning: REPORT(I,"SHIPMENTS") = SUM(J$X.L(I,J), 1); Exempel vid ekvationsdefinition: DEMAND(J).. SUM(I, X(I,J)$(D(I,J) LT DMAX)) =G= B(J DEMAND(J).. SUM(I$(D(I,J) LT DMAX), X(I,J)) =G= B(J U. Brännlund 30 GAMS

Dollaroperatorn, forts Regler: $( Villkor ) betyder sådant att villkoret är uppfyllt Villkoret måste vara beräkningsbart av GAMS! Format: $(uttryck1 GT utttryck2) (GT, GE, LT, LE, EQ, NE) $(uttryck1) är kort för $(uttryck1 NE 0.0) $(uttryck1 AND villkor 2) ( OR, XOR, NOT) U. Brännlund 31 GAMS

Dollaroperatorn, forts Höger och vänster: Man skiljer mellan dollar höger och vänster om = eller.. Till vänster: A$(villkor) = B; betyder: Om villkoret är sant gör tilldelningen A = B, annars strunta i satsen. Till Höger: A = B$(villkor); betyder: Om villkoret är sant gör tilldelningen A = B, annars gör tilldelningen A = 0. U. Brännlund 32 GAMS

Dollaroperatorn, forts Ändvillkor SCALARS INITLAB initial experienced labor force /75/ ENDLAB desired ending experience labor force /90 EW.FX(T)$(ORD(T) EQ 1) = INITLAB; EW.FX(T)$(ORD(T) EQ CARD(T)) = ENDLAB; Abort SCALARS TOTCAP, TOTDEM; TOTCAP = SUM(I, A(I)); TOTDEM = SUM(J, B(J)); ABORT$(TOTDEM GT TOTCAP) TOTCAP, TOTDEM, "Total dema Betingad DISPLAY DISPLAY $ SHOWX X.L; U. Brännlund 33 GAMS

Loop Ibland kan man ha nytta av att loopa över ett index. Till detta kan man använda LOOP-satsen. Man har speciellt nytta av detta före och efter lösning. Exempel: SET T years /1985 * 1995/; SCALARS INITBUD first year budget / 100000 / GROWTH budget growth rate /0.05/ ; PARAMETER BUDGET(T); BUDGET(T)$(ORD(T) EQ 1) = INITBUD; LOOP(T, BUDGET(T+1) = (1+GROWTH)*BUDGET(T); ); Du kan ha godtyckligt antal satser innanför loopen. Även SOLVE-satsen. U. Brännlund 34 GAMS

Andra flödeskontroller Även i GAMS finns de vanliga flödeskontrollerna, for, while och if/else. De behöver dock sällan användas. if/else IF(( X.L GT 0 ), S = 1; ELSEIF( X.L LT 0 ), S = -1; ELSE S = 0; ); U. Brännlund 35 GAMS

Andra flödeskontroller, forts while MODEL DSGN /ALL/; OPTION SOLPRINT = OFF; SCALAR T /1/; WHILE( (T LE 20), X.L(J) = UNIFORM( X.LO(J), X.UP(J) ); SOLVE DSGN USING NLP MINIMIZING COST; DISPLAY X.L, COST.L; T = T + 1; ); U. Brännlund 36 GAMS

Andra flödeskontroller, forts for MODEL DSGN /ALL/; OPTION SOLPRINT = OFF; SCALAR T; FOR( T = 1 TO 20, X.L(J) = UNIFORM( X.LO(J), X.UP(J) ); SOLVE DSGN USING NLP MINIMIZING COST; DISPLAY X.L, COST.L; ); U. Brännlund 37 GAMS