tentaplugg.nu av studenter för studenter

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

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.

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

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:

TNK049 Optimeringslära

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:

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.

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

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

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

Linjärprogrammering (Kap 3,4 och 5)

Tentamensinstruktioner

Optimeringslära Kaj Holmberg

1 LP-problem på standardform och Simplexmetoden

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

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

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

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 SF1861 Optimeringslära, 28 maj 2012

1 Minkostnadsflödesproblem i nätverk

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

Laboration 1 - Simplexmetoden och Modellformulering

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

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

Optimeringslära Kaj Holmberg

Tentamensinstruktioner

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

Optimeringslära Kaj Holmberg

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

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

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

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

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

TNK049 Optimeringslära

1 Duala problem vid linjär optimering

TAOP14: Optimeringslära SAMMANFATTNING OSKAR QVIST:

Optimeringslära Kaj Holmberg

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Tentamensinstruktioner. När Du löser uppgifterna

Optimeringslära Kaj Holmberg

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

Tentamensinstruktioner

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

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

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

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

Tentamensinstruktioner

Laboration 1 - Simplexmetoden och modellformulering

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

TNK049 Optimeringslära

Tentamensinstruktioner. När Du löser uppgifterna

z = min 3x 1 2x 2 + y Fixera y, vilket ger subproblemet

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

Tentamensinstruktioner. När Du löser uppgifterna

Optimeringslära Kaj Holmberg

Tentamensinstruktioner. När Du löser uppgifterna

Optimalitetsvillkor. Optimum? Matematisk notation. Optimum? Definition. Definition

TNSL05 Optimering, Modellering och Planering. Föreläsning 2: Forts. introduktion till matematisk modellering

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Optimeringslära Kaj Holmberg

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

Lösningsförslag till tentamen i SF1861 Optimeringslära för T. Onsdag 25 augusti 2010 kl

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

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

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Föreläsning 6: Nätverksoptimering

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Optimeringslära för T (SF1861)

Tentamensinstruktioner. Vid skrivningens slut

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

Sats: Varje anslutningsmatris ar fullstandigt unimodular. Bevis: Lat m beteckna antalet rader i anslutningsmatrisen.

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

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS för D och C. Tentamensinstruktioner. När Du löser uppgifterna

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

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

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

Tentamensinstruktioner

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TNK049 Optimeringslära

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Dynamisk programmering. Dynamisk programmering. Dynamisk programmering. Dynamisk programmering

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

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

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

Tentamensinstruktioner. När Du löser uppgifterna

N = {i}: noder (hörn) Graf: G = (N, B) Definitioner. Väg: Sekvens av angränsande bågar. Cykel: Väg som startar och slutar i samma nod.

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Föreläsning 9: NP-fullständighet

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS för D och C. Tentamensinstruktioner. När Du löser uppgifterna

Tentamensinstruktioner

Transkript:

tentaplugg.nu av studenter för studenter Kurskod Kursnamn T7005N Operationsanalys Datum LP2 13/14 Material Kursexaminator Sammanfattning Björn Samuelsson Betygsgränser Tentamenspoäng Övrig kommentar

Sammanfattning i Operationsanalys T7005N Utifrån föreläsningar och kurslitteratur 2013/2014 Carl Enbom /I4 Något som inte stämmer? Maila carenb-0@student.ltu.se. Summan av alla variabler och index i den här sammanfattningen överstiger rätt rejält I:arnas samlade årslöner, så jag reserverar mig för att det kan vara fel någonstans! Sammanfattningen räckte gott och väl till en femma. Fokus (med Björn som examinator) ligger främst på att kunna formulera problem + en del teori, t ex bevisen för satserna.

Innehållsförteckning Föreläsning 1 Allmänt... 1 Tre olika sätt att lösa problem... 1 Optimeringsprocessen... 1 Matematisk formulering... 2 Problemklassificering... 2 Föreläsning 2 Definitioner och egenskaper... 3 Grundläggande definitioner... 3 Steg för att lösa ett problem... 3 Egenskaper hos lösningen... 4 Förutsättningar för LP... 5 Föreläsning 3 Formulering av problem... 6 Indexering och summering... 6 Tumregel för summering... 7 Transportproblem... 8 Genomflödesproblem... 9 Föreläsning 4 och 5 Simplex... 11 LP-problemets allmäna form... 11 Satser och definitioner... 11 Standardform... 12 Simplex...... 13 Föreläsning 6 Gurobi... 16 Föreläsning 7 Artificiella problem... 17 Föreläsning 8 Repetition... 20 Föreläsning 9:1 - Heltalsmodeller... 21 Fabrik och lager... 21 Fasta kostnader... 22 Antingen eller... 23 Kappsäcksproblemet... 23 Tillordningsproblem... 25 Generaliserat tillordningsproblem... 26 Sekvensieringsproblem... 27 Föreläsning 9:2 Nätverksplanering... 29 Grundläggande begrepp... 29

Billigaste uppspännande träd... 30 Billigaste vägen-problemet... 33 Minflödesproblem... 33 Maxflödesproblem... 34 Föreläsning 10 Känslighetsanalys... 35 Relaxation och restriktion... 35 Förändringar av värden... 36 Skuggpriser.... 36 Tolkning av utdata... 38 Föreläsning 11 Dualitet... 40 Tolkning av det duala problemet... 40 Formulering av det duala problemet... 41 Exempel...... 41 Svag och stark dualitet... 42 Föreläsning 12 Mer om heltalsprogrammering... 44 Lösningsmetoder... 44 Exempel: minimering av hyreskostnad... 44 Trädsökning... 45 Generell metodik... 47 Föreläsning 13:1 Handelsresande... 49 Föreläsning 13:2 Ruttplanering... 51 Formulering (optimerande)... 52 Clarke and Wright (heuristisk)... 53

Föreläsning 1 Allmänt Mycket av föreläsningen består av bakgrundsinformation och enklare exempel som inte tas upp här. Operationsanalys är tillämpad matematik för att ge beslutsstöd i komplexa planeringsprocesser. Det finns med största sannolikhet inte en optimal lösning, utan flera lösningar som är olika bra beroende på i vilken kontext de används. Exempelvis kan man använda känslighetsanalys för att undersöka hur en modell beter sig om variabler förändras; vad blir utfallet om transportkostnader ökar? Ett par tillämpningar av Operationsanalysen är: ruttplanering, anläggningslokalisering, produktmixproblem, bemanningsplanering hos flygbolag, planering av fotbollsligor etc. Oavsett tillämpningsområde är kärnan att identifiera ett verkligt problem och förenkla det till en matematisk modell. Tre olika sätt att lösa problem LP/MIP utgår från att formulera en matematisk modell på rätt sätt. Heuristisk är kostnadseffektiv men garanterar inte optimum. Brute force är ohållbart dyr, då den undersöker alla kombinationer. Lösningens kvalitet vägs mot lösningens kostnad. Optimeringsprocessen Förklaring: Ett verkligt problem är komplext och inte särskilt fyrkantigt. Genom att identifiera, avgränsa och förenkla får vi ett förenklat problem som vi kan hantera. Med ett mer kvadratiskt problem kan vi nu arbeta vidare. 1

Matematisk formulering Ett optimeringsproblem kan formuleras generellt som (P) min f(x) då x X. Här är f(x) en målfunktion som beror av variablerna x = (x 1,x 2,,x n ) T. Mängden X definierar de tillåtna lösningarna i problemet. Vanligtvis uttrycks X med hjälp av bivillkor och en alternativ formulering av problemet (P) skrivs: min f(x) då g i (x) b i, i=1,, m Här är g 1 (x),, g m (x) är funktioner som beror av x och b 1,,b m är givna konstanter. En lösning x X som minimerar f(x) kallas en optimallösning, och betecknas ofta x*. Optimala målfunktionsvärdet betecknas ofta z*. Problemklassificering Normalt sett kan vi tala om tre klassificeringar: Linjärprogrammeringsproblem (LP) om o Alla funktioner f, g 1,,g m är linjära funktioner. o Alla variabler är kontinuerliga. Ickelinjärt problem om o Minst en av funktionerna f, g 1,,g m är en ickelinjär funktion. o Alla variabler är kontinuerliga. Problemet (P) är ett heltalsproblem om o Minst en av variablerna är en diskret variabel. Antingen att de kan anta heltaliga värden x j {0,1,2 }. Eller binära variabler x j {0,1}. o Om problemet är formulerat med enbart linjära funktioner har vi ett linjärt heltalsproblem, (MIP). Något värt att nämna om heltalsproblem: om vi tillverkar tändstickor spelar det inte särskilt stor roll om vi avrundar tillverkningen av 1043,4 tändstickor till 1044. Om det däremot är stora och kostsamma projekt, t ex vid en byggnation av hus, är det av mycket större betydelse. 2

Föreläsning 2 Definitioner och egenskaper Grundläggande definitioner Främst tre som är viktiga att hålla koll på: Variabler o Beslutsvariabler, t ex x 1 = flervåningshus. o Vad vi söker svaret på. Målfunktion o Vad vi vill maximera/minimera. o Kärnan: hur mycket bidrar beslutsvariablerna till målfunktionens värde. Restriktioner o Vad begränsar vilka värden våra variabler kan anta? o Koefficienterna och högersidan kallas för problemets parametrar. Steg för att lösa ett problem Det här är ett exempel som utgår från Fajo AB. Det finns i sin helhet på fronter, här lyfter jag bara fram det viktigaste inom vardera steg; (1) variabler, (2) målfunktion samt (3) restriktioner och parametrar. 1. Variabler Antag att vi sätter x 1 = antal tillverkade hockeyklubbor och x 2 = antal tillverkade bandyklubbor. Det här är alltså de beslutsvariabler som vi söker svaret på. 2. Målfunktion En fråga att ställa sig är vad bidrar respektive x 1 och x 2 till värdet? Vi vill maximera vinsten. Således: Max z = 20x 1 + 18x 2 3. Restriktioner och parametrar I exemplet Fajo AB har vi två aktiviteter: sågning och limning. Identifiera alltid aktiviteterna. Det är för aktiviterna vi söker vilka restriktioner som vi har. Sågning: tillgängligt är 60 timmar/vecka = 3600 min/vecka Limning: tillgängligt är 90 timmar/vecka = 5400 min/vecka Dessa är högersidan i våra begränsningar. Vi behöver även ta reda på tiden för respektive aktivitet. Sågning: en hockeyklubba tar 7 min att såga, en bandyklubba 10 min. Limning: en hockeyklubba tar 16 min att limma, en bandyklubba 12 min. Våra restriktioner kan således uttryckas enligt: för sågningen, samt ha några negativa variabler, alltså. för limningen. Vi kan dessutom inte 3

Egenskaper hos lösningen Först och främst finns den tillåtna lösningen inom det område som begränsas av restriktionerna. För området kan lösningen se olika ut. Unik optimallösning innebär att det endast finns en optimallösning. Den här lösningen återfinns alltid i en hörnpunkt. Alternativa optimallösningar om det bästa målfunktionsvärdet (alltså z) förekommer i minst två hörnpunkter kan vi tala om alternativa optimallösningar. Alla lösningar mellan dessa punkter kommer att ha samma målfunktionsvärde; vi har således ett oändligt antal optimallösningar. Obegränsad lösning inträffar när det tillåtna området är öppet i den riktningen i vilken målfunktionen förbättras, t ex om vi enbart har restriktionen. Tillåten lösning saknas inträffar när bivillkoren är definierade så att ingen punkt uppfyller samtliga bivillkor, t ex och. 4

Förutsättningar för LP Fyra till antalet: Proportionalitet bidraget från varje aktivitet till värdet på målfunktionen är proportionell mot graden av aktivitet. Vi kan alltså inte ha någon exponentiell funktion, utan den måste vara proportioneligt linjär. Additivitet varje funktion är summan av de enskilda bidragen till respektive aktivitet. Delbarhet beslutsvariabler i en LP-modell kan anta alla värden, inkluderande icke heltal, som uppfyller alla restriktioner och icke-negativitetskrav. Visshet värdet på varje parameter i en LP-modell antas vara en känd konstant. Exempelvis uttrycker vi att efterfrågan är 22 enheter och inte en poissonfördelning med väntevärdet 22. Det är en stor skillnad. 5

Föreläsning 3 Formulering av problem Här kommer en kul lista. Att göra en optimeringsbar modell av verkligheten 1. Definiera problem vi ska lösa och samla relevant information. a. Problemen är sällan väldefinierade; vi måste förstå verkligheten. b. Lösningarna ska vara beslutsstöd för ledningen; ledningen måste förstå vad vi gör. c. Vi måste se till att vi inte suboptimerar. d. Många gånger handlar det om att rationalisera en befintlig verksamhet; vi måste vara noggranna med sanningen. Det är bra att lova mindre snarare än mer. e. Datainsamlingen är typiskt den mest tidskrävande processen. Viktigt att definiera vilken information som ska fås ur systemet. Även viktigt att validera och jämföra. 2. Formulera en matematisk modell som representerar problemet. a. Vilka beslut ska fattas exempelvis produktion och transport. b. Dessa är våra variabler variabler som påverkar problemet. c. Vad tillför de målfunktionen? Målfunktionen ska enbart innehålla komponenter som påverkas av variablerna. d. Våra begräsningar studera och förenkla. 3. Skriv problemet i en datormiljö och erhåll lösningar. a. Vi erhåller en optimal lösning kan finnas mer praktiska lösningar som ligger mycket nära optimum. Vi måste göra känslighetsanalyser kritiska faktorer såsom transportkostnader, marknadsutveckling etc. 4. Testa modellen och förbättra. a. Lås modellen och låt den bete sig som aktuell verklighet. b. Jämför resultaten med verkligt aktuellt resultat, t ex körda km, total transportkostnad etc. c. Modellen är ofta något bättre än verkligheten, eftersom modellen inte gör fel. 5. Förbered för att använda modellen. a. Dokumentera väl för användning; hur den ska användas, hur ny data ska föras in, hur resultataten ska förstås etc. 6. Implementera. a. Hur modellen ska föras ut i verksamheten. b. Utbildning. c. Support. d. Utveckling. Indexering och summering För att kunna skriva problemet (P) effektivt och förståeligt är det viktigt att välja lämpliga notationer. Antag exempelvis att vi har = mängd av råvara i som ingår i produkt j under tidsperiod t, där i = 1,.., 5, j = 1,..., 10 och t = 1,..., 4. Totalt ger detta 200 variabler, och det är relevant att fråga sig hur detta kan skrivas så enkelt som möjligt. Idén är att införa ett index för varje kategori eller komponent som finns representerat i problemet. Om det finns en begränsad råvara skulle vi kunna skriva: 6

Vi kan även använda dubbla (eller ännu fler) summationer. Antag att den totala efterfrågan per produkt och tidsperiod är och att vi måste producera för j = 1,..., 10 och t = 1,..., 4. Antag även att det finns en maximal kapacitet hur många enheter (oavsett) produkttyp som kan produceras per fabrik under hela tidsperioden. Vi får då: Tumregel för summering Ibland kan det vara förvirrande om det ska vara en enkel, dubbel eller trippel summering. Det här är mina högst ovetenskapliga reflektioner som jag inte hittat någonstans, utan skrivit ner utifrån egna observationer. Följande kan vara bra att hålla i åtanke: En enkel summering sker över en rad i. En dubbel summering sker över rad i och kolumn j (matris, tvådimensionell). En trippel summering sker även över ett djup (tredimensionell). Nedan följer ett antal exempel. Av de tal jag stött på har jag hittat följande mönster: o o o Vi har tre index i vänsterledet, och ett index i högerledet. Differensen mellan indexen är 2, vilket också är antalet summationer. Vi har två index i vänsterledet, men ingenting i högerledet. Differensen mellan indexen är två, vilket också är antalet summationer. Vi har två index i vänsterledet, och ett index i högerledet. Differensen mellan indexen är 1, vilket också är summationen. o VI har som max två index i vänsterledet, och ett index i högerledet. Vi tar differensen mellan vårt max och högerledet, vilket blir 1 som också är summationen. o o o Vi har max tre index i vänsterledet, men inget index i högerledet. Differensen mellan indexen är tre, vilket också är antalet summationer. Vi har tre index i vänsterledet, och två index i högerledet. Differensen mellan indexen är 1, vilket också är summationen. Vi har max två index i vänsterledet, och en konstant i högerledet. Även här kan man tänka att konstanten har ett noll-index som gör att differensen är 1 och därmed enkelsummering. 7

Detta gäller INTE för varenda summation och det FINNS undantag, men det kan åtminstone fungera som en första utgångspunkt i att formulera problemet. Transportproblem Företaget NordMejeri producerar mjölk vid fyra olika anläggningar och distribuerar sedan mjölken till fem stora kunder. Minimera transportkostnaden samtidigt som efterfrågan uppfylls. Kapaciteten och efterfrågan ges av tabellen: Anläggning F1 F2 F3 F4 Kapacitet (1000-tal liter) 30 40 30 40 Kund K1 K2 K3 K4 K5 Efterfrågan (1000-tal liter) 20 30 15 25 20 Transportkostnaderna per liter mellan anläggningarna och kunderna K1 K2 K3 K4 K5 F1 2,80 2,55 3,25 4,30 4,35 F2 4,30 3,15 2,55 3,30 3,50 F3 3,00 3,30 2,90 4,30 3,40 F4 5,20 4,45 3,50 3,75 2,45 Lösning Mängder: Fabriker (i) 1,2,3,4 Kunder (j) 1,2,3,4,5 Vi vill bestämma hur mycket som ska gå från varje fabrik till varje kund. Variabler = antal liter mjölk från fabrik i till kund j i=1,2,3,4 j=1,2,3,4,5 Parametrar kapacitet vid fabrik i i =1,2,3, 4 = efterfrågan kund j j=1,2,3,4,5 transportkostnad från fabrik i till kund j i=1,2,3,4 j=1,2,3,4,5 Målfunktion 8

Då Genomflödesproblem Antag nu att vi inför en möjlighet till transport och distribution via två distributionscentraler, D1 och D2. D1 D2 F1 2.725 2.275 F2 2.625 2.575 F3 2.200 2.275 F4 2.700 3.075 K1 K2 K3 K4 K5 D1 0.95 0.75 0.325 0.95 0.45 D2 0.7 0.3 0.3 0.9 0.875 Vi lägger till två distributionscentraler En ny mängd: Distributionscentraler (k) 1,2 Två nya variabler: antal liter mjölk från fabrik i till DC k antal liter mjölk från DC k till kund j i=1,2,3,4 k=1,2 k=1,2 j=1,2,3,4,5 Två nya parametrar Transportkostnad från fabrik i till DC k Transportkostnad från DC k till kund j i=1,2,3,4 k=1,2 k=1,2 j=1,2,3,4,5 Målfunktion 9

Då Principskiss 10

Föreläsning 4 och 5 Simplex Här beskrivs LP-problemet på allmän form, ett par satser/definitioner samt Simplex. Bevisen är inte med. LP-problemets allmäna form Simplexmetoden utnyttjar den matematiska strukturen hos LP-problem. Först behöver vi skriva det på allmän form: Där är målfunktionskoefficienten för variabel, är bivillkorskoefficienten för variabel i bivillkor i och är högerledskoefficienten för bivillkor i. Man kan även formulera LP-problemet med matrisbeteckningar: Här är [ ] [ ] ( ) [ ] är en matris av storlek (m x n) och [ ] är en vektor av storlek (m x 1). Satser och definitioner Här följer ett antal satser och definitioner som är grundläggande för Simplex. Sats 1: konvex mängd Det tillåtna området i ett LP-problem utgör en konvex mängd. Till vänster en konvex mängd, till höger en icke-konvex mängd. 11

Definition 1 En konvexkombination av punkterna x (1), x (2),..., x (P) är en punkt x sådan att ( ) För oss som är intresserade av att veta vad det innebär på svenska så är en konvexkombination två eller flera baspunkter, exempelvis x (1) och x (2), som befinner sig mellan baspunkterna. I den vänstra figuren ovan innebär det att alla punkter som ligger mellan x och y är en konvexkombination. Definition 2 Punkten x (k) är en extrempunkt i x om x (k) ej kan skrivas som en strikt konvexkombination av två punkter i x. Dvs, en punkt i ett hörn (exempelvis en extrempunkt) kan inte ingå i en konvexkombination (= punkten kan inte ligga mellan två punkter). Linjärprogrammeringens fundamentalsats Antag att det tillåtna området X till ett LP-problem är begränsat och icke-tomt, dvs det existerar en begränsad optimallösning till LP-problemet. Då gäller att minimum av målfunktionen c T x antas i minst en extrempunkt x (k) i X. Kommentar: satsen visar att det aldrig kan finnas en icke-extrempunkt som är bättre än samtliga extrempunkter, varav följer att det alltid finns minst en extrempunkt som är optimal. Det faktum att optimallösningen till ett LP-problem alltid återfinns i en extrempunkt utnyttjas av simplexmetoden genom att den endast söker bland extremlösningar. Standardform När man ska beskriva simplexmetoden matematiskt är det en fördel om det tillåtna området är uttryckt enbart med ekvationer. Dessutom är det praktiskt att låta alla variabler vara definierade som icke-negativa. Det finns alltså två förutsättningar, och vi måste: Uttrycka alla bivillkor som likhetsvillkor. Göra om alla variabler till icke-negativa variabler. 12

Vi säger att ett LP-problem skrivet på detta sätt är uttryckt på standardform. Dessutom brukar man ofta formulera bivillkoren så att alla högerledskoefficienter är icke-negativa. För att göra om ett - villkor till ett likhetsvillkor måste vi addera en ny, icke-negativ, variabel som vi kallar för slackvariabel. Denna variabel uttrycker skillnaden mellan högerled och vänsterled och kan tolkas som ej utnyttjad högerledsresurs. Exempel: Om vi istället har så gör vi på motsvarande sätt, fast använder istället. Naturligtvis så måste även här. Om en variabel är definierad som icke-positiv i villkoren, exempelvis likhetstecknet, dvs. så vänder man på Simplex Två viktiga teoretiska begrepp att hålla koll på är baslösningar och basbyten. De förklaras nedan. Simplex söker systematiskt bland hörnpunkterna till det tillåtna LP-problemet. Vi måste därför kunna beskriva hörnpunkter på ett korrekt sätt. Vi gör detta med baslösningar till LP-problemets standardform. Definition av baslösning En baslösning till ekvationssystemet Ax = b erhålls om n-m variabler sätts till 0 och resterande variabler får de unika värden som erhålls då det kvarvarande (m x m) ekvationssystemet löses. De variabler som sätts till 0 kallas för icke-basvariabler och de resterande m variablerna kallas basvariabler. Definitionen av en baslösning uttrycker vad som krävs för att en lösning ska vara unik och hur många variabler som (minst) måste vara lika med 0 i en punkt för att denna ska kunna utgöra en hörnpunkt. Om baslösningen uppfyller alla icke-negativitetsvillkor har vi en tillåten baslösning, i annat fall har vi en otillåten baslösning. Varje tillåten baslösning motsvaras av en entydig hörnpunkt i det tillåtna området. Exempel 1 baslösning Antag att vi har ett två-dimensionellt problem (P) med 2 variabler, x 1 och x 2, och ett antal bivillkor som gör att vi lägger till slackvariablerna x 3, x 4 och x 5. Totalt har vi alltså 5 variabler. Vi kan välja en godtycklig punkt för vårt problem, t ex ( ) vilket innebär att alla variabler antar ett positivt värde; 30 30 är ju punkten för x 1 och x 2 medan övriga variabler är slack. Punkten ligger inte på någon koordinataxel, eftersom x 1, x 2 > 0. Vi har inte heller någon punkt på randen av något bivillkor eftersom x 3, x 4, x 5 > 0. Inget villkor är aktivt och punkten är alltså en inre punkt. Punkten ( ) har en variabel med värde noll, vilket innebär att ett bivillkor är aktivt. Punkten är således en randpunkt, men ingen hörnpunkt. För att en punkt ska utgöra en hörnpunkt krävs att två variabler har värde noll, dvs varje hörnpunkt ligger i skärningen mellan två villkor. Alltså är ( ) en hörnpunkt. 13

För att veta hur många variabler som måste vara noll för en hörnpunkt kan vi utgå från n-m, dvs den frihetsgrad som finns i lösningsrummet; här är n = antalet variabler och m = antalet restriktioner (exklusive de icke-negativa) i systemet. För exemplet har vi således 2 variabler som måste vara noll, ty 5-3=2. Exempel 2 baslösning Antag ett problem (P) som på standardform (med likhetstecken) ser ut som följer. Som i exempel 1 har vi alltså två variabler, x 1 och x 2, och tre slackvariabler. Vi ska nu bestämma samtliga baslösningar till problemet. Eftersom vi har 5 variabler och 3 ekvationer i systemet behöver vi 5-3=2 variabler som ska sättas till noll för att få en baslösning. Totalt får vi 5 olika baslösningar. Icke-basvariabler Basvariabler Status x 1, x 2 (x 3, x 4, x 5 ) = (100, 80, 40) Tillåten hörnpunkt x 1, x 3 (x 2, x 4, x 5 ) = (100, -20, 40) Otillåten x 1, x 4 (x 2, x 3, x 5 ) = (80, 20, 40) Tillåten hörnpunkt x 1, x 5 Lösning saknas Existerar ej x 2, x 3 (x 1,x 4, x 5 ) = (50, 30, -10) Otillåten x 2, x 4 (x 1, x 3, x 5 ) = 80, -60, -40) Otillåten x 2, x 5 (x 1, x 3, x 4 ) = (40, 20, 40) Tillåten hörnpunkt x 3, x 4 (x 1, x 2, x 5 ) = (20, 60, 20) Tillåten hörnpunkt x 3, x 5 (x 1, x 2, x 4 ) = (40, 20, 20) Tillåten hörnpunkt x 4, x 5 (x 1, x 2, x 3 ) = (40, 40, -20) Otillåten Principer inom Simplex Basbyten En optimal lösning finns alltid i ett hörn (enligt linjärprogrammeringens fundamentalsats). Simplexmetoden söker den bästa lösningen genom att systematiskt flytta sig från en baslösning till en annan, på ett sådant sätt att målfunktionsvärdet förbättras. Vi kan inte söka alla hörn. Givet ett hörn, vill vi söka en närliggande hörnpunkt som har ett bättre målfunktionsvärde. Finns inte detta vet vi tack vare konvexitet att vi har en optimal punkt. Definition 1: Två hörnpunkter är närliggande om mängden aktiva bivillkor i de två punkterna endast skiljer sig i ett element. Definition 2: Två baslösningar är närliggande om de har m-1 stycken basvariabler gemensamt. 14

Vid basbyten gäller vidare att: Vid förflyttning mellan närliggande hörnpunkter (baslösningar) byter vi ut exakt en basvariabel. Nya basvariabeln kallas inkommande basvariabel, som ersätter den utgående basvariabeln. Vi kommer alltid att ha m basvariabler och n-m icke-basvariabler i varje baslösning. Vi arbetar normalt med två generella metoder vid Simplex: 1. En som utgår från en sökriktning d och steglängd t. 2. En som utgår från tablåräkning (youtube sök på simplex patrickjmt ) Tar inte upp dessa i närmare detalj här. 15

Föreläsning 6 Gurobi Tar endast upp programmering i Gurobi. Lösningar till vissa uppgifter ligger uppe på tentaplugg.nu. 16

Föreläsning 7 Artificiella problem Det finns vissa fall då vi måste konstruera ett artificiellt problem. Detta problem har samma optimala lösning som vårt verkliga problem, och vi gör följande modifikationer: 1. Introducera en icke-negativ variabel när vi har skrivit om till standardform. 2. Tilldela ett mycket stort negativt värde M i målfunktionen, dvs. lägg till. Att vi inför M, ett mycket stort tal, är för att vi vill förhindra att den artificiella variabeln blir en del av vår optimala lösning till det ursprungliga problemet. Genom att införa ett straff där M är mycket stort tvingas den artificiella variabeln att bli noll i en optimal lösning. Varför får vi ett articificellt problem? Simplex förutsätter att vi har en extrempunkt att börja med, exempelvis (0,0) som i figuren till vänster. Men antag att vi har annorlunda restriktioner som inte gör (0,0) till en möjlig lösning; se höger i figuren. När det är svårt att identifiera en första baslösning använder vi artificiella variabler. Hur vi lägger till När problemet (P) har skrivits om på allmän form är det första steget att introducera en ny, ickenegativ variabel. Hur ska man veta var variabeln ska läggas till? En tumregel är att: Variabeln ska läggas till där slackvariabeln har ett annat tecken (positivt eller negativt) än högerledet. Variabeln ska läggas till där det saknas en slackvariabel. 17

Exempel Betrakta följande problem (P): Skrivet på standardform med slackvariabler fås: Vi ser ingen uppenbar startpunkt, och lägger till artificiella variabler (steg 1). Vi lägger till detta utifrån tumregeln som beskrevs ovan. Notera att vi inför ekvationsnummer. (1) (2) (3) (4) (5) (6) (7) Steg 2 är att lägga till ett mycket stort tal M. Vi måste göra detta för målfunktionen i ekvation (1). Eftersom målfunktionen är skriven på standardform lägger vi till positiva M. (1) (2) (3) (4) 18

Vi måste bli av med från målfunktionen. För att göra detta multiplicerar vi ekvation (3) med M och gör motsvarande för ekvation (4); sedan lägger vi till dessa till målfunktionen. Då kommer att försvinna, vilket är precis vad vi vill. Alltså: Ekvation -M(3)+ (1) Ekvation -M(4) + (1) Vi får då målfunktionen till: Skrivet på tablåform: ( ) ( ) ( ) ( ) z x 1 x 2 x 3 x 4 s 1 s 2 r 1 r 2 b z 1-10-M -9-5M 4-3M -5-3M 0 M 0 0-25M s 1 0 3 1 2 3 1 0 0 0 20 r 1 0-1 2 1-1 0 0 1 0 10 r 2 0 2 3 2 4 0-1 0 1 15 (5) (6) (7) Detta löses nu genom vanlig Simplex. Himla trevligt! 19

Föreläsning 8 Repetition Ingenting nytt, bara en genomgång av hur olika grupper har tänkt. 20

Föreläsning 9:1 - Heltalsmodeller Många problemställningar kan endast beskrivas med hjälp av modeller där heltalsvariabler ingår. Det kan t ex handla om hus, projektarbeten, anställda och andra variabler som inte kan anta fraktionella värden. Om samtliga variabler är heltalsvariabler har vi ett rent heltalsproblem. Om endast vissa variabler är heltalsvariabler kallas det ett blandat heltalsproblem: MIP mixed integer programming. Om alla variabler är 0/1-variabler har vi ett 0/1-problem: BIP binary integer problem. Om vi tar bort heltalskravet, exempelvis, får vi ett LP-problem som kallas LPrelaxationen av problemet. Det är viktigt att notera de väsentliga skillnaderna mellan heltalsproblemet och LP-relaxationen: Det tillåtna området i heltalsproblemet består av ett antal diskreta punkter och är således ett icke-konvext område. En optimallösning till ett LP-problem återfinns alltid i en hörnpunkt i det tillåtna området. I ett heltalsproblem är det däremot ovanligt att optimallösningen ligger i en hörnpunkt eller längs randen. Det finns i huvudsak två anledningar till att man behöver införa heltalsvariabler i en modell. 1. När är naturligt heltalig och det är orimligt att avrunda LP-relaxationens lösning. 2. När användning av logiska 0/1-variabler ger utökade modelleringsmöjligheter (exempelvis Ja/Nej-beslut, fasta kostnader, logiska villkor, då enbart vissa värden är tillåtna). Fabrik och lager The CALIFORNIA MANUFACTURING COMPANY is considering expansion by building a new factory in either Los Angeles or San Francisco, or perhaps even in both cities. It also is considering building at most one new warehouse, but the choice of location is restricted to a city where a new factory is being built. The net present value (total profitability considering the time value of money) of each of these alternatives is shown in the fourth column of the table below. The rightmost column gives the capital required (already included in the net present value) for the respective investments, where the total capital available is $10 million. The objective is to find the feasible combination of alternatives that maximizes the total net present value. Decision Yes-or-no Quest. Decision Net present value Capital required number variable 1 Build factory in LA? x 1 $9 million $6 million 2 Build factory in SF? x 2 $5 million $3 million 3 Build warehouse in LA? x 3 $6 million $5 million 4 Build warehouse in SF? x 4 $4 million $2 million 21

Variabeln som används är: { Modellen blir: För Vidare är beslut 3 och 4 betingade beslut, eftersom de är betingade av beslut 1 och 2 (företaget bygger ju enbart lager i en stad om det finns en fabrik där). Därför kräver vi att om, vilket också gäller för att om att måste. Vi kan skriva detta enligt: Sammantaget kan allt skrivas: Fasta kostnader Tillverkningen av en viss produkt A sker i en maskin där den direkta kostnaden är proportionell mot mängden som tillverkas. Vid start av tillverkningen krävs att maskinen ställs in och detta tar viss tid och kostnad i anspråk. Totalkostnaden för tillverkningen bestäms således av en fast kostnad f för att starta tillverkningen och rörlig kostnad för varje tillverkad enhet. Kostnaden är 0 om ingen tillverkning sker alls. Antag att x A betecknar antalet tillverkade enheter av produkt A. Den totala kostnaden z kan definieras som: { f Genom att införa en 0/1-variabel y kan vi beteckna det hela matematiskt. f 22

Här är M ett stort tal, är variabeln för antal produkter av A, och bestämmer om produktion ska ske, {0,1}. Villkoret styr så att y sätts till 1 så fort någon tillverkning av A sker. Dvs så fort kommer y att bli 1. Antingen eller Ibland kan vi ha problem där de tillåtna punkterna är definierade som att de antingen ska ligga i område 1 eller i område 2 (eventuellt båda). Exempel Vi har att välja mellan två olika begränsningar (ex.vis kan vi välja mellan två olika resurser). Lägg till en variabel M. Vilket kan formuleras som: ( ) Dvs för kommer antingen område (1) eller (2) att vara aktivt. Kappsäcksproblemet I många problem ska vi på bästa sätt välja ut ett antal objekt eller investeringar givet en eller flera resursbegränsningar. De enklaste av dessa kallas kappsäcksproblem, där vi endast har ett resursvillkor. Som ett litet exempel skulle man kunna tänka sig en inbrottstjuv (en avundsjuk maskinare?) som har med sig en säck som endast kan bära ett visst antal kilon b. Utifrån denna begränsning måste den avundsjuke maskinaren välja vilka objekt med värdet c j och resursåtgången a j som ska plockas med i säcken för att värdet av stölden z ska maximeras. För ett resursvillkor Definiera variablerna { 23

För parametrarna Generellt för ett 0/1-kappsäcksproblem fås då Ett alternativ är att istället för låter vi, heltal. För fler än ett resursvillkor Ibland finns det fler än ett resursvillkor. Vi kan använda samma variabler, men behöver omdefiniera koefficienterna för att hantera fler resurstyper (i = 1,..., m) enligt Vi behöver bara justera dessa koefficienter i modellen ovan, samt lägga till i = 1,..., m. Exempel med tre resursvillkor Företaget OptimalInvesteringar ska planera vilka byggnadsprojekt som ska genomföras under nästkommande år. Varje projekt kräver ett antal personer i projektledning och en given summa pengar. Information om de olika projekten ges i tabellen. Vissa projekt kan inte utföras tillsammans med andra och vissa projekt kräver att även andra projekt genomförs. Det finns en begränsad budget på 225 Mkr och det finns 28 personer tillgängliga. På grund av konkurrensrestriktioner får man genomföra högst 9 projekt. Nr. Objekt Värde (kkr) Budget (Mkr) Personal Ej med Kräver även 1 Ishall 600 35 5 10 2 Sporthall 400 34 3 3 Hotell 100 26 4 15 4 Restaurang 150 12 2 15 5 Kontor A 80 10 2 6 6 Kontor B 120 18 2 5 7 Skola 200 32 4 8 Dagis 220 11 1 7 9 Lager 90 10 1 10 Simhall 380 22 5 1 11 Hyreshus 290 27 3 15 12 Bilverkstad 130 18 2 24

13 Tennishall 80 16 2 2 14 Friidrottshall 270 29 4 2 15 Båthamn 280 22 3 11 Vi har tre resursvillkor; budget, personal samt antal projekt. Det finns två viktiga logiska villkor: förbjuder att de två projekten i och j utförs tillsammans. kräver att ett visst projekt i måste utföras för att ett projekt j ska kunna genomföras. Modellen kan formuleras som { Den optimala lösningen ges av övriga. Optimal vinst är och Tillordningsproblem Tillordningsproblem uppkommer i situationer där man vill koppla ihop (tillordna) objekt i en mängd med objekt i en annan mängd. Det kan t ex handla om att personer ska tilldelas uppdrag och där varje person kan utföra de olika uppdragen på olika tid eller till olika stor kostnad. Målet är att utföra alla uppdragen på kortaste tid eller till lägsta kostnad. Vi inför variablerna { 25

Och parametern Modellen kan då formuleras som Generaliserat tillordningsproblem I tillordningsproblemet ska ett antal uppdrag tillordnas lika många utförare. I många tillämpningar är dock antalet uppdrag större än antalet utförare och uppdrag måste därför fördelas bland utförarna. Ofta är antalet uppdrag som varje utförare kan ta begränsat. Problemet där vi inkluderar kapacitetsbegränsningar hos utförarna kallas generaliserat tillordningsproblem. Skillnaden mot ett vanligt tillordningsproblem är att varje källa (t ex maskiner) har en given tillgång eller kapacitet, och att varje sänka (t ex jobb) ska tillordnas en källa men varje källa kan kopplas till flera sänkor. Exempel Vi har n jobb som ska utföras på m maskiner. Varje jobb kräver en viss tid på respektive maskin och varje maskin har en given kapacitet. Det finns sedan en kostnad för att koppla ihop ett jobb med en maskin och den totala kostnaden ska minimeras. Matematiskt Vi inför variablerna { Och parametrarna 26

Modellen kan då formuleras som Notera skillnaden (tidigare =1) och koefficienten. Sekvensieringsproblem Ett typiskt planeringsjobb i en verkstad är att bestämma sekvensen av ett antal jobb i en maskin. I dessa sekvensieringsproblem har varje jobb en given processtid och det kan också ha en önskad färdigtid. Ofta är det inte möjligt att processa jobben innan den önskade färdigtiden och för att kunna prioritera jobben ges en viktningsfaktor för varje jobb. För att bestämma en bra sekvens brukar man sedan försöka hitta en sekvens av jobb som minimerar den viktade försening med avseende på färdigtider och viktningsfaktorer. Exempel Antag att vi har ett problem med följande data Jobb Processtid Önskad färdigtid Viktning 1 6 8 1 2 4 4 1 3 5 12 2 4 8 16 2 Eftersom alla jobb ska utföras vet vi att sista jobbet blir klart vid tidpunkten 6+4+5+8 = 23. Om vi utför jobben i ordningen 1-2-3-4 blir jobb 1 klar i tid, jobb 2 klar vid tidpunkt 10 (försenad med 6), jobb 3 klar vid tidpunkt 15 (försenad med 3) och jobb 4 klar vid tidpunkt 23 (försenad 7). Eftersom jobb 3 och 4 har högre prioritet kommer den viktade förseningen att bli 1x0 + 1x6 + 2x3 + 2x7 = 26. Om vi placerar jobben i ordningen 4-3-2-1 får vi en viktad försening på 30. Variabler { 27

Parametrar p i = processtid för jobb i, i = 1,...,n d i = önskad färdigtid för jobb i, i = 1,...n w i = viktning för jobb i, i = 1,...,n Modellformuleringen blir ( ) ( ) 28

Föreläsning 9:2 Nätverksplanering Många optimeringsproblem har en struktur som gör att de naturligt kan beskrivas med hjälp av nätverk uppbyggt av noder och bågar. Problem som har en underliggande nätverksstruktur kallas för nätverksproblem, och i de flesta problemställningar finns ett krav på att ett visst flöde ska skickas i nätverket och vi talar då om ett flödesproblem. Exempel på noder, bågar och flöden Grundläggande begrepp En graf G = (N, B) består av en mängd noder N = {n 1, n 2,...} och en mängd bågar B = {b 1, b 2,...}, samt en avbildning (relation) mellan noderna och bågarna. Om man tilldelar noderna och bågarna numeriska värden som representerar flödsstyrkor, kostnader, kapaciteter etc. så brukar man säga att man har ett nätverk. En riktad båge tillåter endast flöde i sin angivna riktning. En oriktad båge tillåter flöde i båda riktningar som kan tolkas som två (motriktade) riktade bågar. Om alla bågar i grafen är oriktade talar vi om en oriktad graf, annars har vi en riktad graf. En oriktad båge kallas även för länk. Relationerna mellan noder och bågar kan beskrivas med en s k båglista enligt t ex b 1 = {n 1, n 2 } som i den oriktade grafen anger vilka noder varje båge ansluter till. Billigaste uppspännande träd I en graf med n noder utgör ett träd med n-1 bågar ett uppspännande träd. Flödesproblem Definieras genom att för varje nod n i specificera hur stort nettoflödet är till/från noden. Variablerna i ett flödesproblem definieras som Och nettoflödet (även kallat nodstyrkan) definieras som ( ) ( ) 29

Om d i är negativ säger vi att n i är en källa och om d i är positiv säger vi att n i är en sänka. Noder där d i = 0 kallas för mellannoder. Billigaste uppspännande träd Antag att vi har en oriktad graf G = (N, B) med n noder och m bågar där c ij är bågkostnaden för båge (i, j). Vi kan då beskriva ett billigast uppspännande träd enligt: Definition Välj ut en delmängd av bågarna i grafen så att de tillsammans utgör ett träd som spänner upp alla noder, och där summan av bågkostnaderna är minimal. Det kan sammanfattas i tre steg enligt: 1. Du får noderna till nätverket men inte länkarna (oriktad båge). Istället får du potentiella länkar och längden (alternativt kostnad eller tid) för vardera länk om de skulle användas i nätverket. 2. Du vill nu designa nätverket genom att sätta in tillräckligt många länkar för att satisfiera kravet att det är en väg för varje par av noder. 3. Målet är att satisfiera kravet på ett sätt som minimerar längden av länkarna. Optimalitetsvillkor Vid design av algoritmer för billigaste uppspännande träd utnyttjar man egenskaperna hos träd: Det finns en unik väg (kedja) mellan varje par av noder. Trädet sönderfaller i två delar om exakt en båge tas bort. Låt T beteckna bågarna ingående i ett uppspännande träd och låt beteckna de övriga bågarna i nätverket. Optimalitetsvillkoret kan då formuleras som att ett träd T är ett billigaste uppspännande träd om det: För varje båge ( ) gäller att för alla bågar (k,l) som ingår i den unika vägen mellan i och j. För varje båge ( ) gäller att för alla bågar (k,l) som går i det snitt [ ] som uppstår om båge (i,j) tas bort. Prims algoritm Billigaste uppspännande träd är tacksamt nog en av få problem där man kan vara girig (på engelska talar man om greedy algorithm ) och bara behöver bry sig om vad som är bäst väg att gå för att minimera trädet. Steg 0: Utgå från en godtycklig nod och låt den noden utgöra mängden S, övriga noder ingår i mängden. Låt. Steg 1: Bestäm den båge (j,k) som till lägsta kostnad (eller vad det nu är) sammanbinder en nod och en nod. Steg 2: Uppdatera mängden T enligt ( ) och. 30

Steg 3: Avbryt om T =n-1. Annars, gå till steg 1. Utveckling av steg 3 Antag att vi har ett träd som spänner mellan O-A-B-C-E-D-T. Det ger oss 7 noder och 6 kopplingar, dvs. vi har n-1, eller mer specifikt T =n-1 som enligt prims algoritm betyder att vi ska stanna. Allt eftersom vi löser För varje nod vi lägger till kan vi uppdatera genom följande skrivsätt. Och så vidare. Exempel Målet är att finna ett träd som omfattar hörnen A G där trädets kanter har så låg sammanlagd kostnad som möjligt. Algoritmen börjar vid hörn D. Från hörn D finns 4 kanter (till hörnen A, B, E och F). Kanten DA till hörn A har lägst pris och läggs därför till i trädet. Nästa hörn att anslutas är det som har billigast kant till antingen hörn D eller A. Möjliga kanter är AB, DB, DE, DF. Kostnaden för kanten DF är billigast, så den läggs till. 31

Hörn B ansluts via A. Kanten BD kommer inte att ingå i trädet, eftersom B och D redan är förbundna indirekt. E ansluts via B. C ansluts via E. 32

G ansluts via E. Det finns inga fler hörn att ansluta. Trädet är fullständigt. Billigaste vägen-problemet Här vill vi bestämma en billigaste väg från nod n s till nod n t i ett nätverk. Vi har följande egenskaper: Endast riktade bågar förekommer. Nod n t är uppnåelig från nod n s. Algoritm Inga cykler med negativ kostnad förekommer. Minflödesproblem I ett minkostnadsflödesproblem ska vi bestämma ett flöde med minimal kostnad i ett givet nätverk, där angivna styrkor på noderna i nätverket måste tillgodoses samtidigt som vi också måste uppfylla givna kapacitetsvillkor på bågarna. Variabel Parametrar 33

Värdet på b i beror på vilken typ av nod i är: Modellen blir då Maxflödesproblem Vi har m noder och n bågar. Sök max flöde från start till mål. Vi söker ett maximalt flöde f från nod n s till nod n t. Kan uttryckas som: f { f f Går även att formulera enligt: f f ( ) 34

Föreläsning 10 Känslighetsanalys Den lösning vi kallar optimal i ett LP-problem är förstås endast optimal i förhållande till de indata (parametrar) som definierar det givna problemet. I många praktiska problemställningar råder det osäkerhet om det rätta värdet på vissa parametrar; exempelvis kan det gälla kostnader, priser, kapaciteter, resursåtgång, efterfrågan etc. Av den anledningen är det viktigt att analysera optimallösningen till ett LP-problem i syfte att avgöra hur känslig lösningen är för förändringar i indata och andra förutsättningar, dvs. att kunna analysera hur robust lösningen är. Relevanta förändringar Förändring av en målfunktionskoeffeicient c j. Förändring av en högerledskoeffiecient b i. Förändring av en bivillkorskoefficient a ij. Lägga till eller ta bort ett bivillkor. Lägga till eller ta bort en variabel. Relevanta frågeställningar utifrån vissa förändringar Hur påverkas det optimala målfunktionsvärdet av förändringen? Ökning, minskning? Hur stor är förändringen? Är nuvarande lösning fortfarande optimal efter förändringen? Fortfarande tillåten? Vid hur stor förändringen kommer en annan baslösning att vara optimal? Vid hur stor förändring är nuvarande baslösning ej längre tillåten? Relaxation och restriktion Två viktiga begrepp: Relaxation: en förändring av ett problem som innebär att det tillåtna området blir större (får fler tillåtna lösningar) alternativt blir oförändrat. Om ett problem relaxeras kommer det optimala målfunktionsvärdet att bli bättre (eller oförändrat). I ett maxproblem kommer alltså målfunktionsvärdet att öka och i ett minproblem kommer målfunktionsvärdet att minska. Alla tillåtna punkter i det ursprungliga problemet är ju tillåtna även i det relaxerade problemet, så målfunktionsvärdet kan aldrig bli sämre. Restriktion: en förändring av ett problem som innebär att det tillåtna området blir mindre (får färre tillåtna lösningar) alternativt blir oförändrat. Vid en restriktion kommer det optimala målfunktionsvärdet att bli sämre (eller vara oförändrat). I ett maxproblem kommer alltså målfunktionsvärdet att minska och i ett minproblem kommer målfunktionsvärdet att öka. 35

Förändringar av värden Högerledskoeffieicent Bivillkorstyp Ökning av b i Minskning av b i Relaxation Restriktion Restriktion Relaxation Bivillkorskoefficient Bivillkorstyp Ökning av a ij Minskning av a ij Restriktion Relaxation Relaxation Restriktion Målfunktionskoefficient En förändring i målfunktionskoefficienten påverkar uppenbart det optimala målfunktionsvärdet. Om värdet på koefficienten ökar kommer också målfunktionsvärdet att öka (eller vara oförändrat). Om värdet på koefficienten minskar kommer också målfunktionsvärdet att minska (eller vara oförändrat). Problemtyp Ökning av c ij Minskning av c ij Maxproblem z* oförändrad eller högre z* oförändrad eller lägre Minproblem z* oförändrad eller högre z* oförändrad eller lägre Addera eller ta bort ett bivillkor Att addera ett bivillkor kan innebära att vi ytterligare begränsar det tillåtna området. Vi får en restriktion. Tar vi bort ett bivillkor får vi motsvarande en relaxation. Addera eller ta bort en variabel Att addera en variabel leder till fler frihetsgrader och fler lösningar, dvs. en relaxation och z blir bättre. Att ta bort en variabel kan tolkas som att vi inför ett nytt bivillkor som begränsar denna variabel till noll. Alltså får vi en restriktion och målfunktionsvärdet kommer att försämras alternativt vara oförändrat (om variabeln redan hade värdet noll). Skuggpriser Det är även av intresse att veta hur stor effekten av en viss förändring blir. Skuggpriset för ett bivillkor ges av förändringen av det optimala målfunktionsvärdet vid en marginell ökning av högerledet. Dualpris, dualvärde eller marginalpris är andra benämningar på skuggpriset. 36

Följande gäller: Till varje LP-problem kan vi definiera ett dualt problem med exakt samma indata som vårt ursprungliga (primala) problem. I det duala problemet finns en dualvariabel v i för varje bivillkor i, i det ursprungliga problemet. Skuggpriset för bivillkoret är det optimala värdet på denna dualvariabel. Teckenkrav på dualvariabeln Varje dualvariabel har en teckenbegränsning och den ges direkt från insikten om huruvida en ökning av högerledet ger en relaxation eller restriktion av det tillåtna området. Primalt problem Minproblem Maxproblem Med fri menas att om vi har ett likhetsvillkor går det inte med säkerhet att förutsäga hur målfunktionen påverkas och därmed vilket tecken motsvarande dualvariabel kommer att ha. Tolkning av värdet Samt Det optimala värdet på dualvariabeln kan tolkas som den marginella förändringen av målfunktionsvärdet vid en förändring av högerledet. Skuggpriset är en derivata: Skuggpriset uttrycker värdet av att få tillgång till ytterligare en enhet av denna resurs (dvs. marginalpriset). o Antag att vi har ett problem där vi vill maximera en vinst vid tillverkning av ett antal olika produkter, och vi har ett som uttrycker den begränsade tillgången på en viss resurs. Då kommer motsvarande skuggpris att uttrycka värdet av att få tillgång till ytterligare en enhet av resursen. Vi kan jämföra priset/kostnaden för att köpa denna resursenhet med värdet av att kunna använda den i produktion och därmed avgöra om det är lönsamt att köpa mer av resursen. o Vi kanske också har ett som uttrycker ett krav att tillverka minst ett visst antal av en produkt. Motsvarande skuggpris kommer då att indikera den minskade intäkt som en marginell ökning av tillverkningen av den produkten ger upphov till, när hänsyn tagits till en eventuella förändrad tillverkning av övriga produkter. Observera att skuggpriset bara är giltigt inom ett visst intervall. En förändring av ett bivillkors koefficient (höger- eller vänsterled) som leder till att målfunktionens värde förbättras, påverkar allt mindre ju större förändring som görs. En förändring av ett bivillkors koefficient (höger- eller vänsterled) som leder till att målfunktionens värde försämras, påverkar allt mer ju större förändring som görs. 37

Tolkning av utdata Här kommer en fantastiskt trevlig sammanställning. Vi har följande problem Efterfrågan på två produkter: Balk: 1000 st Reglar: 1100 st Två sorters stock: A och B Kan sågas med två olika postningsmönster: 1 och 2 Själva uppställningen av problemet är mindre intressant i detta fall. Utdatafilen ger Målfunktionens värde: 90 000 Variabel/kolumn Värde/aktivitet Reducerad kostnad XA1 175.0 0.0 XA2 25.0 0.0 XB1 83.3 0.0 XB2 0.0 5.0 Bivillkor/rad Värde/aktivitet Reducerad kostnad Tillgång på A-stockar 0.0-50.0 Tillgång på B-stockar 16.7 0.0 Efterfrågan på balkar 0.0 45.0 Efterfrågan på reglar 0.0 50.0 Intervall för målfunktionskoefficienter Variabel/kolumn Koefficient Undre och övre gräns XA1 0.0 320.0 ; 380.0 XA2 16.7 140.0 ; 350.0 XB1 0.0 247.5 ; 290.0 XB2 0.0 290.0 ; 1E+20 Intervall för högerledskoefficienter Bivillkor/rad Högerled Undre och övre gräns Tillgång på A-stockar 200 187.5 ; 262.5 Tillgång på B-stockar 100 83.3 ; 1E+20 Efterfrågan på balkar 1000 500.0 ; 1100.0 Efterfrågan på reglar 1100 1000.0 ; 1200.0 38

Exempel på analyser av känslighet i lösningen 1. Hur stor blir kostnaden om det blir 30 kr billigare att såga en A-stock med mönster 2? Om det blir 30 kr dyrare? a. Om koefficienten minskar från 340 till 310 kommer de optimala värdena på variablerna att förbli samma (samma baslösning), då förändringen är i intervallet [140,350]. Målfunktionsvärdet förbättras med 30*25. b. Om den ökar till 370 ligger detta utanför intervallet där nuvarande baslösning gäller. 2. I nuvarande optimallösning sågar vi inga B-stockar med mönster 2. Vid vilken sågningskostnad blir detta alternativ lönsamt? a. Reducerande kostnaden för variabeln. Innebär att om sågningskostnden minskar med minst detta belopp kommer denna variabel att ingå i baslösningen. 3. Hur påverkas totalkostnaden om tillgången på A-stockar minskar med 10 respektive ökar med 100 stycken? a. Skuggpriset för villkoret tillgång på A-stockar är -50, gäller inom intervallet [187.5, 262.5]. b. Minskning med 10 st => ökning av kostnaden med 10*50. c. Ökning med 100 ligger utanför intervallet. Upp till 262.5 är skuggpriset konstant och minskningen blir då 62.5*50, bortanför vet vi ej. 4. Vad händer om tillgången på B-stockar minskar med 15 st? a. Inget, ty skuggpriset = 0. 5. Hur påverkas den totala kostnaden om efterfrågan ökar eller minskar med 200 st? a. Skuggpriset för bivillkoret är 45 inom intervallet [500,1100]. b. En minskning med 200 leder till minskade kostnader med 200*45. c. En ökning med 200 leder till minst en kostnadsökning om 200*45. 39

Föreläsning 11 Dualitet Till varje LP-problem kan man formulera ett dualt problem som är definierat med samma indata som det ursprungliga primala problemet. Tolkning av det duala problemet Antag följande Uppskattning av z* Antag att vi vill finna en övre uppskattning av det optimala målfunktionsvärdet z*, dvs att vi med säkerhet vill kunna säga att z* aldrig kan bli större än detta värde. Exempelvis kan vi multiplicera bivillkor (1) med 3 så får vi olikheten. Eftersom dessa koefficienter är större än de framför målfunktionen så vet vi att målfunktionen aldrig kan bli större än. Vi kan även kombinera bivillkoren, exempelvis 0.7x(bivillkor 1) + 1x(bivillkor 2) ger. Istället för att gissa hur vi kan kombinera våra bivillkor för att få en bra uppskattning kan vi formulera ett LP-problem som bestämmer hur vi ska kombinera bivillkoren för att få fram bästa möjliga övre uppskattning. Vi definiererar följande variabler: Uppskattningens värde ges av funktionen f ( ) f ( ) Vi vill minimera funktionen för att få bästa (lägsta möjliga) uppskattning. Samtidigt måste vi se till att koefficienterna för respektive variabel i den konstruerade olikheten sammanfaller med eller är större än målfunktionens koefficienter, annars kan vi inte använda olikheten för att dra några slutsatser om z*. Vi kräver att vikterna och är sådana att Vi får då LP-problemet 40

Vilket är det duala problemet. Formulering av det duala problemet Det finns starka samband mellan det primala och det duala problemet. Till varje primalt villkor i hör alltid en dual variabel v i. Till varje primal variabel x j hör ett dualt villkor j. Målfunktionskoefficienterna i det ena problemet utgör högerledskoefficienterna i det andra problemet och vice versa. Om det ena problemet är ett minproblem så är det andra ett maxproblem. Vid formulering av det duala problemet till ett givet LP-problem kan man utnyttja begreppet normalform. Primalt problem då Dualt problem då Egenskaper n variabler m bivillkor maxproblem bivillkorsmatris A målfunktionsvektor c högerledsvektor b Egenskaper m variabler n bivillkor minproblem bivillkorsmatris A T målfunktionsvektor b högerledsvektor c En variabel anses ha normalform om den är definierad som icke-negativ ( 0). Ett villkor anses ha normalform om det är ett i ett maxproblem respektive i ett minproblem. Primalt problem Minproblem Maxproblem Exempel Formulera dualen till problemet f 41