Optimering Linjär programmering Ett optimeringprolem etår av: En målfunktion, f(), var maimum, eller minimum ka öka. En eller flera -varialer (elutvarialer om man tr över). Eventuellt ockå ett antal ivillkor om ka uppflla (likheter och/eller olikheter). Det vill äga egränningar eller amand mellan -varialerna. Eempelvi: ma f ( ) då Ω där pecificera med hjälp av ett nitt av olikheter: g ( ) g ( ) Def: Linjär funktion En funktion, f (,,..., n ), kalla en linjär funktion av,,..., n om den kan kriva f (,,,,, n ) c c... cnn där c, c,..., cn är kontanter. Def: Linjär olikhet Om vi har en linjär funktion f,,..., ) och en kontant. Kalla en olikhet på formen ( n f (,,..., n ) för en linjär olikhet. En uppättning av linjära olikheter kapar ett område avgränat av raka linjer, eller plana tor, en å kallad konve poltop. Def: Linjärt programmeringprolem (LP) Ett linjärt programmeringprolem är ett optimeringprolem där målfunktionen är en linjär funktion. Bivillkoren ka vara linjära olikheter (eller likheter). Vanligtvi har vi även egränningar på att elutvarialerna ka vara icke-negativa. Om vi antar att ivillkoren egränar torleken på alla elutvarialer i ett linjärt programmeringprolem, å finn målfunktionen maimum och minimum i något (eller iland några) av hörnen av det tillåtna området. Ett linjärt programmeringprolem (LP) kan ha (en av): En unik löning (optimum i ett hörn) Många löningar (optimum på en egränningta) Ingen löning (ivillkoren tillåter ingenting) En oegränad löning (ivillkoren egränar ej löningen) H:\Optimering\ Simulering och Optimering av energitem\linjär Optimering LP\Linjär optimering o.doc
Eempel tränickeri: oldat älj för $7 den kotar $4 i material och föräljningkotnader vi tjänar alltå $ på varje oldat. tåg älj för $ den kotar $9 i material och föräljningkotnader vi tjänar alltå $ på varje tåg. Två aretmoment finn att laorera med: nickeri och efterehandling. En oldat kräver timme av nickeriet och timmar efterehandling. Ett tåg kräver timme av vardera. De aktuella återföräljarna kan inte älja mer än 4 oldater/vecka. Vi har tillgång till maimalt timmar efterehandling och 8 timmer nickeri per vecka. Betäm produktionen för att maimera vinten! Aretgång:. Definiera relevanta elutvarialer. antal oldater om producera per vecka antal tåg om producera per vecka. Definiera en målfunktion, eempelvi vint per vecka uttrckt i elutvarialerna: ma z f ( ) f (, ). Uttrck ivillkoren i elutvarialerna (tim/vecka) efterehandling 8 (tim/vecka) nickeri 4 (oldater/vecka) maimal föräljning H:\Optimering\ Simulering och Optimering av energitem\linjär Optimering LP\Linjär optimering o.doc
Maimera z då () 8 () 4 (4) Prolemet värde är z8, uppnå i punkt G,, 6 I korningen mellan linjerna och 8 H:\Optimering\ Simulering och Optimering av energitem\linjär Optimering LP\Linjär optimering o.doc
H:\Optimering\ Simulering och Optimering av energitem\linjär Optimering LP\Linjär optimering o.doc 4 Varje linjärt programmeringprolem har åde en primalform och en dualform. Om primalformen är: ma A c z T å är dualformen på amma prolem: min c A w T T Vid optimum är zw Ovan hade vi: c c c 4 8 A ekriver vad om är optimalt att tillverka. är kuggpriet för reurerna, dv värdet av den ita timmen i nickeriet, efterehandlingen repektive marknaden egränning map oldater. De är amma om känlighetkoefficienterna från lagrange multiplikatormetod. Primalformen: [ ] 4 8 4 8 ma dv dv dv A c z T Dualformen: [ ] 4 8 4 8 min dv dv dv c A w T T
Lagrange på ovantående eempel Målfunktion U Bivillkor G G 8 G 4 G G 4 5. Löning inom domän U? U U dv det finn ingen löning. Löning med en lagrangemultiplikator, U λ i Gi med villkor G i U G λ λ. finn inget λ om uppfller det U G λ λ. U U G λ G λ λ finn inget λ om uppfller det, amma gäller övriga G till G 5 λ Oervera att de partiella derivatorna aldrig innehåller någon av elutvarialerna, dv de ger ingen information om vilken punkt om är optimal.. Löning med två lagrangemultiplikatorer: U λ i, Gi λ j, G j med villkoren G i och G j Här finn tio olika par varav nio har löningar. Det om egentligen är intreant är likhetvillkoren, efterom de ger värdet på elutvarialerna. Vilken kärningpunkt i grafen ovan vi efinner o i eror på vilka två olikheter om vi väljer att ha om likheter. H:\Optimering\ Simulering och Optimering av energitem\linjär Optimering LP\Linjär optimering o.doc 5
Simplealgoritmen Man gör om olikheterna till likheter genom att införa lackvarialer där amtliga varialer är ickenegativa. Samtliga olikheter kriv om till teckenretriktionen på de ingående varialerna. Giapetto prolem: Maimera z då 8 4 ickenegativa. Blir ålede i tandardform: Maimera z då 8 4 ickenegativa. Vi har i detta fall ett linjärt ekvationtem med tre ekvationer och fem oekanta. Om man ätter två av de oekanta till noll, och löer för de övriga å efinner man ig i kärningen mellan två linjer. Simplealgoritmen gger på att man utgår från ett tillåtet hörn. I Giapetto fall etår hörnen av kärningpunkten mellan två linjer, har man fler varialer etår hörnen av kärningpunkten mellan flera hperplan. Sedan avgör man om hörnet är optimalt. Om vi inte nått målfunktionen optimum, flttar vi till ett ättre grannhörn och tetar igen. Metoden liknar Gau-elimination vid löning av linjära ekvationtem. Med killnaden att man använder ig av en rektangulär matri amt att man har ett antal villkor om tr vilka radoperationer om ka göra på matrien. Det finn ra gratiprogram om klarar av etdligt törre tem än de man kan handräkna. H:\Optimering\ Simulering och Optimering av energitem\linjär Optimering LP\Linjär optimering o.doc 6
. Gör om prolemet till tandardform enligt: Om vi har ett minimeringprolem, gör man om det till ett maimeringprolem genom att teckenvända målfunktionen: Minimera z 5 7 gör om till Maimera w 5 7 Olikheter gör om till tandardform enligt: 4 addera lackvariael 4 eller 4 4 e 4 utrahera överflödvariael 4 eller 4 När lack- eller överflödvariael är noll, efinner vi o på den linje eller (hper)plan om motvarar olikheten egränning. Alla olikheter överför på det ättet till teckenvillkor på ingående varialer: Där repreenterar alla urprungliga elutvarialer amt lackvarialer och överflödvarialer. Alla m ivillkoren kan då (tillamman med teckenvillkoret) uttrcka om A Där kolumnvektorn är högerledet för de m ivillkoren och matrien A innehåller koefficienterna för dem. Eempel: Maimera z då () 8 () 4 (4) På tandardform lir detta då: Maimera z då () 8 () 4 (4) H:\Optimering\ Simulering och Optimering av energitem\linjär Optimering LP\Linjär optimering o.doc 7
Eller med hjälp av matrirepreentation: Maimera z A Där 8 4 A. Hitta en tillåten löning Simple-algoritmen gger på att man utgår från en tillåten löning, dv där alla teckenvillkoren är uppfllda. Ingen variael får vara negativ! Efterom matrien i detta eempel har två kolumner mer än rader, kan man genom att ätta två valfria varialer till noll, lätt löa ut de andra. (nollorna etder vilka olikheter om vi gränar mot) Målfunktionen kriv om enligt: z och ildar förta raden i talån. Kolumnen HL kommer från -vektorn och reten från matrien A. Simpletalån kan kriva: z HL - - 8 4 De varialer om vi ätter till noll kalla NBV (Non Baic Variale), de övriga ildar en a och enämn BV. Om vi tartar med att ätta elutvarialerna och löer ut de övriga. Dv om vi lundar för de kolumner var varialer vi ätter till noll, ka det finna en etta i varje kolumn och rad inget annat! Om det inte gäller måte vi fia det med elementära radoperationer. I detta fall mcket lätt efterom det redan är färdigt. Om någon av BV-varialerna lir negativ är löningen inte tillåten, dv den rter mot någon av olikheterna, då får man prova en annan uppättning av NBV eller använda metodikt öka ett tillåten löning med eempelvi BigM. Talån när NBV är och BV är, lir med tolkning: z HL BV - - z 8 8 4 4 (Motvarar origo, dv punkt H i figur på idan ) H:\Optimering\ Simulering och Optimering av energitem\linjär Optimering LP\Linjär optimering o.doc 8
. Avgöra om löningen är optimal Om det finn negativa koefficienter i talån förta rad kan målfunktionen värde förättra. 4. Vilken variael ka vi öka värdet på? har den met negativa koefficienten denna vill vi ka tillhöra avarialerna, men vi måte då plocka ort en annan, dv nolltälla någon annan variael itället. 5. Vilken variael ka vi nolltälla itället? Vilken vi ka ta ort etäm av hur tor kan li utan att någon annan avariael lir negativ (vi rter mot en olikhet) z HL BV Kvot - - z /5 8 8 8/8 4 4 4/4 Vi er att det är teckenvillkoret för om egränar hur tort kan li. (det minta poitiva värdet enligt kvottetet) Vi ätter alltå vilket motvarar punkt E i grafen. I alla kolumner utom och vill vi ha en enda etta deutom på olika rader. 6. Räkna om talån Då ka vi med hjälp av elementära radoperationer göra om kolumnen å att den nolltäll på alla poitioner utom den nederta där vi vill ha en etta. (kolumn z, och är redan OK) z HL ero -* - * *4 (*rad4) -* -*- -*4 (-*rad4) - -- 8-44 (-rad4) 4 OK H:\Optimering\ Simulering och Optimering av energitem\linjär Optimering LP\Linjär optimering o.doc 9
Den na talån när NBV är () och BV är, lir med tolkning: HL BV z - z - - 4 4 4 4 I algoritmen går vi tillaka till punkt och fortätter med det å länge vi kan förättra löningen. Vi er att vi fortfarande har ett negativt värde i förta raden i kolumnen, å den ka in i BV. Vi gör om kvottetet: HL BV Kvot z - z - / - 4 4 4/4 4 4 4/ ej Vi er att det är om ka ätta till noll när vi läpper fri. Vi ka täda undan i kolumn å att vi endat har en etta kvar i rad. Vi ätter alltå vilket motvarar punkt F i grafen. (linjen () motvarar och linjen (4) ) z HL ero -* * *(-)- *6 (*rad) - OK - -- --(-) 4- (-rad) 4 OK Den na talån när NBV är () och BV är, lir med tolkning: z HL BV - 6 z 6 - - 4 4 H:\Optimering\ Simulering och Optimering av energitem\linjär Optimering LP\Linjär optimering o.doc
Kvottet: z HL BV Kvot - 6 z 6 - /- ej - / 4 4 4/4 Vi ka täda kolumn å att vi endat får en etta på rad. z HL ero - 6 rad - *rad - OK 4 -rad Den finala talån när NBV är () och BV är, lir med tolkning: z HL BV 8 z 8-6 6 - - Nu har vi ingen negativ koefficient på förta raden vi är i mål. Vi er att målfunktionen värde z 8 få när 6 och På förta raden kan vi e kuggprierna för ivillkoren om koefficienterna för lackvarialerna. Skuggpriet för elutvarialerna teckenvillkor e under repektive elutvariael. Sammanfattningvi. Gör om till tandardform. Hitta en tillåten löning. Avgör om vi är i mål 4. Avgör vilken vi ka läppa fri från (till BV) (met negativ i rad ) 5. Avgör vilken vi ka nolltälla (från BV) (minta poitiva värde enligt kvottet) 6. Räkna om och gå till punkt H:\Optimering\ Simulering och Optimering av energitem\linjär Optimering LP\Linjär optimering o.doc
Simplealgoritmen med Big-M Man gör om olikheterna till likheter genom att införa lackvarialer där amtliga varialer är ickenegativa. Samtliga olikheter kriv om till teckenretriktionen på de ingående varialerna. Giapetto prolem med modifiering av tredje ivillkoret: Maimera z då 8 ickenegativa. Blir ålede i tandardform: Maimera z då 8 ickenegativa.. Hitta en tillåten löning mha Big-M Målfunktionen kriv om enligt: z och ildar förta raden i talån. Kolumnen HL kommer från -vektorn och reten från matrien A. Simpletalån kan kriva: z HL - - 8 - Om vi tartar med att ätta elutvarialerna och löer ut de övriga. Dv om vi lundar för de kolumner var varialer vi ätter till noll, ka det finna en etta i varje kolumn och rad inget annat! Kolumnen ehöver fia till, men det är en enkel radoperation, ara ett teckente på raden, vilket reulterar i nedantående talå: H:\Optimering\ Simulering och Optimering av energitem\linjär Optimering LP\Linjär optimering o.doc
Talån när NBV är och BV är, lir med tolkning: z HL BV - - z 8 8 - - Oervera att detta inte är en tillåten punkt, efterom en av varialerna är negativ, å rter det mot teckenvillkoret för. Vi kan fia det genom att tillföra tterligare en variael per rutet teckenvillkor. Vi lägger till en artificiell variael genom att på alla tällen vi har erätta det med ( -a ). Parenteen kan då anta åde poitiva och negativa värden utan att rta mot teckenvillkoret för någon av varialerna. Deutom lägger vi till ett rejält traff i målfunktionen om den artificiella variaeln använd. Den artificiella variaeln använd för att hitta en tillåten löning. Med den artificiella variaeln lir då tandardformen enligt: Maimera z M a då 8 a, a ickenegativa. Där M tår för ett tort tal, därav namnet Big-M. Simpletalån kan nu kriva: z a - - M 8 - Vi fortätter på amma punkt, med tillägget att och då får a ta hand om det tidigare negativa värdet på förra. Taellen lir då med de tolkningar om kan göra: z HL a HL Tolkning - - M 8 8 - a Kolumn a måte fia till då förta raden inte är noll (M). H:\Optimering\ Simulering och Optimering av energitem\linjär Optimering LP\Linjär optimering o.doc
Genom att utrahera M kopior av ita raden från överta raden kan vi läcka M:et i förta raden i kolumn a : z a HL Tolkning --M - M -M z M 8 8 - a Med hjälp av den artificiella variael är nu punkten tillåten, men långt ifrån optimal. Så vi kan då fortätta med implemetoden på normalt ätt till vi livit av med de artificiella varialerna (och kan då eventuellt trka dea ur temet). Den met negativa koefficienten i förta raden är den om innehåller M, å det är den om ka läppa fri. Kvottet ger då: z a HL Tolkning Kvot --M - M -M z M /5 8 8 8/8 - a / Kvottetet ger lägta poitiva värdet på nederta raden dv det är teckenvillkoret a om är den om fört egränar o. Vi erätter då med a Vi ka täda kolumn å att vi ara har en etta i den kolumnen, förlagvi nederta raden. a HL Ero z --M - M -M (M)*rad4 -*rad4 8 -rad4 - Ok Vilket reulterar i: z a HL Tolkning - - M z - 8 8-7 7 - Nu kan vi om vi vill trka kolumnen för den artificiella variaeln, då a och vi lir då ockå av med alla M. Vi kan då fortätta ungefär på amma ätt om tidigare (värdena på lir dock annorlunda då vi ändrade det ivillkoret) H:\Optimering\ Simulering och Optimering av energitem\linjär Optimering LP\Linjär optimering o.doc 4