Laboration 1 - Simplexmetoden och Modellformulering

Relevanta dokument
Laboration 1 - Simplexmetoden och modellformulering

LP-problem. Vårt första exempel. Baslösningar representerar extrempunkter. Baslösningar representerar extrempunkter

TNK049 Optimeringslära

Tentamensinstruktioner

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

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

Optimeringslära Kaj Holmberg

Tentamensinstruktioner

Vinsten (exklusive kostnaden för inköp av kemikalier) vid försäljning av 1 liter fönsterputs är 2 kr för F1 och 3 kr för F3.

Tentamensinstruktioner. När Du löser uppgifterna

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

Optimeringslära Kaj Holmberg

1 LP-problem på standardform och Simplexmetoden

Vinsten (exklusive kostnaden för inköp av kemikalier) vid försäljning av 1 liter fönsterputs är 2 kr för F1 och 3 kr för F3.

Optimeringslära Kaj Holmberg

Tentamensinstruktioner

Tentamensinstruktioner

Tentamensinstruktioner

Linjärprogrammering (Kap 3,4 och 5)

Lösningar till SF1861 Optimeringslära, 28 maj 2012

Ett linjärprogrammeringsproblem på allmän form ser ut som

Laboration 2 - Heltalsoptimering

Tentamensinstruktioner

Tentamensinstruktioner. Vid skrivningens slut

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

Tentamensinstruktioner

Optimeringslära Kaj Holmberg

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Optimeringslära Kaj Holmberg

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

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

Speciell användning av heltalsvariabler. Heltalsprogrammering. Antingen-eller-villkor: Exempel. Speciell användning av heltalsvariabler

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS för D och C

TAOP14: Optimeringslära SAMMANFATTNING OSKAR QVIST:

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS för D och C

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

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Tentamensinstruktioner. När Du löser uppgifterna

Lösningsförslag till tentamen i SF1861 Optimeringslära för T. Torsdag 28 maj 2010 kl

TAOP07/TEN1 OPTIMERINGSLÄRA GRUNDKURS för Y. Antal uppgifter: 7 Uppgifterna är inte ordnade efter svårighetsgrad.

Optimeringslära Kaj Holmberg

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

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Optimeringslära Kaj Holmberg

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

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

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

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Optimering med hjälp av Lego. Mathias Henningsson

1 Duala problem vid linjär optimering

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

Laborationsinformation

Laborationsuppgift 1 Tillämpad optimeringslära för MMT (5B1722)

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

MIO310 OPTIMERING OCH SIMULERING, 4 p

Examinator: Torbjörn Larsson Jourhavande lärare: Torbjörn Larsson, tel Tentamensinstruktioner. När Du löser uppgifterna

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

Föreläsning 2: Simplexmetoden. 1. Repetition av geometriska simplexmetoden. 2. Linjärprogrammeringsproblem på standardform.

TNSL05 Optimering, Modellering och Planering. Föreläsning 10

MIO310 OPTIMERING OCH SIMULERING, 4 p

5B1817 Tillämpad ickelinjär optimering. Kvadratisk programmering med olikhetsbivillkor Active-set metoder

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Tentamensinstruktioner. När Du löser uppgifterna

Optimeringslara = matematik som syftar till att analysera och. Optimeringslara ar en gren av den tillampade matematiken.

MIO310 OPTIMERING OCH SIMULERING, 4 p

Föreläsning 10/11! Gruppuppgifter: Gruppuppgift 1: Alla har redovisat. Gruppuppgift 2: Alla har redovisat Gruppuppgift 3: På gång.

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

MIO310 OPTIMERING OCH SIMULERING, 4 p

TSBB14 Laboration: Intro till Matlab 1D

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Instruktion för laboration 1

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM. Tentamensinstruktioner. När Du löser uppgifterna

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

Dynamisk programmering. Dynamisk programmering. Dynamisk programmering. Dynamisk programmering

Instruktion för laboration 1

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

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

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

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

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

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:

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

tentaplugg.nu av studenter för studenter

Olinjär optimering med bivillkor: KKT min f (x) då g i (x) 0 för alla i

OBS! Snabbinsatt Matlab-intro vissa fönsterhanteringsdetaljer kan vara fel men gör gärna Matlab-uppgifterna. DN1240, Numeriska metoder för OPEN1.

Lösningar till tentan i SF1861 Optimeringslära, 3 Juni, 2016

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Transkript:

Linköpings universitet Optimeringslära grundkurs för Y Matematiska institutionen Laboration 1 Optimeringslära 30 januari 2013 Laboration 1 - Simplexmetoden och Modellformulering Den första delen av laborationen syftar till att ge träning på simplexmetoden och öka förståelsen för linjärprogrammering. För att lösa LP-problem används här ett program skrivet i Matlab. Programmet används för att skapa simplextablåer och utföra pivoteringar, men man får själv ange startbas och välja inkommande och utgående variabeler. För att använda Matlab programmet behövs både texteditorn emacs och Matlab; se introduktion till Matlab/Simplex i avsnitt 3 för vidare instruktioner. I laborationens andra del ska två problem formuleras och lösas med hjälp av modelleringsspråket Ampl. Syftet med detta är att ge förståelse för hur ett kommersiellt programpaket för optimeringsmodellering fungerar. Se Introduktion till modelleringsspråket Ampl för instruktioner och exempel. (Ampl ska även användas i laboration 2.) 1. Simplexmetoden mha Matlab 1. (Ska förberedas.) Läs noga igenom introduktionen till Matlab/Simplex. 2. (Ska förberedas.) Inför slackvariabler i de två nedanstående LP-problemen. 3. Ge kommandot TAOP07setup i ett terminalfönster och kopiera filer till er hemkatalog med cp $KURSBIB/LAB1/*.m. (Observera punkten på slutet.) 4. Lös problemet nedan utgående från startbasen (x 1,x 2,x 3,x 5,x 6 ), där x 3,x 5 och x 6 är slackvariabler. (Problemet laddas in från filen uppgift4.) maxz = 10x 1 + 2x 2 då x 1 + x 2 3 (1) 5x 1 + 2x 2 10 (2) 2x 1 x 2 10 (3) x 1 + x 2 7 (4) x 1 + 3x 2 9 (5) x 1,x 2 0 Rita in varje iterationspunkt i figur 1. Optimallösning:... Optimala basvariabler:... 1

9 8 7 6 5 (1) (4) (5) 4 X2 3 2 (3) 1 0 (2) 1 2 2 1 0 1 2 3 4 5 6 7 8 9 X1 Figur 1: Tillåtet område till uppgift 4 Vad är skuggpriset för villkor (4)? [Använd cb*inv(b) i Matlab.]... Öka högerledet i villkor (4) till 8 (streckad linje i figuren). Hur stor förändring av det optimala målfunktionsvärdet kan förväntas?... Hur mycket förändras det optimala målfunktionsvärdet?... Optimala basvariabler:... Minska högerledet till 4. Vilket optimalvärde förutsäger skuggpriset?... Vad blir optimalvärdet? [Lös det modifierade problemet genom att starta om från basen (x 1,x 2,x 3,x 5,x 6 ).]... Optimala basvariabler:... För vilka högerled i villkor (4) är skuggpriset (för högerledet 7) giltigt? [Utnyttja figuren och enkla beräkningar!]... 2

5. Lös följande problemet (vilket kan laddas in från filen uppgift5). maxz = 6x 1 + 4x 2 + 7x 3 då x 1 + 2x 2 + 3x 3 10 (1) 2x 1 + x 2 + 2x 3 6 (2) 3x 1 + 3x 2 + 4x 3 13 (3) x 1,x 2,x 3 0 Vilka variabler ingår i optimalbasen?... Optimallösning:... Dual optimallösning:... 6. (Ska förberedas.) Antag att ett LP-problem som lösts med simplexmetoden ska utökas med en ny variabel. Hur beräknas dess reducerade kostnad (i aktuell bas)? 7. Antag att problemet i uppgift 5 utökas med en ny variabel, x 7, med målfunktionskoefficient c 7 = 2 och bivillkorskolumn A 7 = (3,0,1) T. Visa med en manuell uträkning att detta leder till att optimum förändras. Inför den nya variabeln i optimaltablån i uppgift 5. (Obs! Skriv in koefficienternas ursprungliga värden.) Utgå från den bas som tidigare var optimal och reoptimera (dvs lös det modifierade problemet). Ny optimallösning: 3

2. Modellering med Ampl 8. (Ska förberedas.) Läs igenom introduktionen till modelleringsspråket Ampl. 9. Kopiera filer till er hemkatalog med cp $KURSBIB/LAB1/*.dat. 10. Betrakta åter problemet i uppgift 4. maxz = 10x 1 + 2x 2 då x 1 + x 2 3 (1) 5x 1 + 2x 2 10 (2) 2x 1 x 2 10 (3) x 1 + x 2 7 (4) x 1 + 3x 2 9 (5) x 1,x 2 0 Lös problemet genom att modellera det i Ampl. Datafilen lpuppgift.dat finns redan på ert konto. Använd parameternamn som överensstämmer med de i datafilen. (Obs! I datafilen ges alla villkor på mindre än-form.) Konstruera själva även den kommandofil som behövs. Optimallösning:... Hur stora är slacken i villkoren?... Dual optimallösning:... Reducerade kostnader:... 11. Ett oljebolag har i Europa en uppsättning raffinaderier, R (se karta, figur 2), med kända kapaciteter K r ton, r R. Dessa raffinaderier skeppar på vatten eller transporterar på land ut en mängd produkter, p P, till en uppsättning terminaler, T. En terminal t T vill ta emot mellan l pt och u pt ton av en produkt p P. Oljebolaget vill maximera intäkter minus kostnader. Försäljningsintäkten f pt per ton av produkt p vid terminal t och tillverkningskostnaden q pr per ton av produkt p vid raffinaderi r är givna. Avståndet från raffinaderi r till terminal t är d rt mil, och kostnaden för att transportera ett ton av en produkt en mil är k. (Man antar för enkelhetens skull att kostnaden för transport på land och till sjöss är lika.) Transportkostnaden blir alltså c rt = kd rt per ton. Oljebolagets problem kan formuleras på följande sätt. Variabeldefinitioner: x pr z prt = producerad mängd av produkt p vid raffinaderi r (ton) = transporterad mängd av produkt p från raffinaderi r till terminal t (ton) 4

Modell: maxz = (f pt c rt )z prt q pr x pr p r t p r då l pt z prt u pt p,t (1) r x pr = z prt p,r (2) t x pr K r r (3) p x pr, z prt 0 (4) Villkorsgrupp (1) ser till att varje terminal får efterfrågad kvantitet. Villkorsgrupp (2) är kopplingen mellan variablerna x pr och z prt, och ser till att det som tillverkas av en viss produkt vid ett visst raffinaderi sedan transporteras ut till terminalerna. Villkorsgrupp (3) ser till att raffinaderiernas kapaciteter inte överskrids. Villkorsgrupp (4), slutligen, följer av variablernas definitioner. Figur 2: Karta till uppgift 11 5

(Ska förberedas) Formulera oljebolagets problem i Ampl. Nedan ges början till en sådan modellfil [som kan kopieras med cp $KURSBIB/LAB1/olja.mod. ]. I Ampl används ofta längre och på så sätt mer förståeliga namn på parametrar, mängder och variabler. De namn som används nedan sammanfaller med de som finns i datafilen olja.dat (som redan kopierats till er hemkatalog). set PRODUKTER; set RAFFINADERIER; set TERMINALER; param ovre{p in PRODUKTER, t in TERMINALER}; param undre{p in PRODUKTER, t in TERMINALER}; param pris{p in PRODUKTER, t in TERMINALER}; param milkostn; param avstand{r in RAFFINADERIER, t in TERMINALER}; param raffkostn{p in PRODUKTER, r in RAFFINADERIER}; param raffkap{r in RAFFINADERIER}; Antal variabler och bivillkor i problemet:... Lös problemet. Optimalt målfunktionsvärde:... Har något raffinaderi kapacitet över?... Vad är skuggpriset för kapaciteten i Nynäshamn?... Vilket optimalt målfunktionsvärde kan förväntas om kapaciteten i Nynäshamn ökar med 10 ton?... Lös det modifierade problemet. Blev resultatet det förväntade? Varför (inte)? Hur förändrades kapacitetsutnyttjandet? Förklara!... Öka kapaciteten i Nynäshamn med ytterligare 40 ton till 550 ton. Överensstämmer skillnaden i målfunktionsvärdet med skuggpriset? Varför (inte)? 6

3. Introduktion till Matlab/Simplex Probleminmatning Detproblemsomskalösasmåsteförstskrivasinpåenfil.Dennafilmåstevaraenmatlabfil och måste därför ha suffixet.m, tex uppg1.m. Filen genereras med hjälp av texteditorn emacs, som startas från bakgrunden med hjälp av mitt-musknappen och XEmacs Efter man har öppnat emacs ska alltid ett nytt dokument öppnas. Börja med att skapa en ny fil med Open och ge filnamn. Följande data måste definieras i matlabfilen: Vektorn c (radvektor) innehållande målfunktionskoefficienterna Matrisen A innehållande bivillkorskoefficienterna Vektorn b (kolumnvektor) innehållande högerledet Problemet ska skrivas på standardform för LP problem, dvs alla villkor ska vara likhetsvillkor (slackvariabler och eventuella artificiella variabler och målfunktion måste alltså läggas till). Exempel: maxz = 3x 1 + 7x 2 då 4x 1 + 5x 2 + s 1 = 7 2x 1 3x 2 + s 2 = 1 x 1,x 2,s 1,s 2 0 motsvaras av filen c = [ 3 7 0 0 ]; A = [ 4 5 1 0 2 3 0 1 ]; b = [ 7 1 ]; Storleken på vektorerna och matrisen måste vara konsistenta. Att transponera en vektor eller matris görs i Matlab genom att man skriver ett efter sista hakparentesen (ex b = [7 1] ger en kolumnvektor). Starta Matlab/Simplex För att kunna använda simplexprogrammet i Matlab krävs att man först öppnar ett terminalfönster genom att klicka på bakgrunden med mittknappen och välja dterm. Därefter skriver man kommandot TAOP07setup i terminalfönstret. Matlab öppnas sedan genom att i samma terminalfönster skriva kommandot matlab. Starta simplexrutinen genom att skriva simplexmeny vid Matlab prompten. 7

Öppna och spara fil samt pivotering Läs in problemet med Öppna (ange ej suffixet.m på filnamnet). Välj därefter en startbas med Ange Bas. Basvariablernas index anges med mellanrum eller komma emellan. Problemet löses genom att använda Pivotera, så länge som optimum inte är uppnått. En tablå sparas undan med kommandot Spara. Fas I och Fas II Först används den artificiella målfunktionen (i c-vektorn) samt de artificiella variablerna i A. När man sedan funnit optimum till fas I-problemet, tar man bort de de artificiella variablerna med Ta Bort Kolumn samt skriver in den ursprungliga målfunktionen i c- vektorn med Ändra Data. Tillägg av variabel Vid tillägg av en ny variabel (kolumn) används Ny Kolumn, där får man ange koefficienterna för denna variabel i målfunktionen och alla bivillkor. Tillägg av bivillkor Ett nytt bivillkor kräver en ny rad och oftast också en ny variabel (kolumn). Om en ny variabel krävs, rekommenderas att man lägger till kolumnen först, se ovan. Lägg till den nya raden, med Ny Rad. Där får man ange koefficienterna för alla variabler, samt högerledet i detta villkor. Efter tillägg av bivillkor måste baslösningen utökas, så att antalet basvariabler blir korrekt. Detta görs med Ange Bas. Det normala är då att de tidigare basvariablerna anges tillsammans med den nya (slack)variabel som introducerats. Ändring av koefficienter i A, b eller c Ändring av en koefficient i någon av de inmatade vektorerna eller matriserna kan göras med Ändra Data. Observera att om ändringen görs med Ändra Data så uppdateras inte den sparade filen förrän man använder Spara. Ändring av data kan också göras i emacsfönstret och sedan läsas in med Öppna fil. Kom i så fall ihåg att skriva ner den aktuella basen, så att man direkt kan nå denna bas genom Ange Bas. Figur 3: Matlab/Simplex 8