• No results found

Något om Linjärprogrammering och Mathematica

N/A
N/A
Protected

Academic year: 2021

Share "Något om Linjärprogrammering och Mathematica "

Copied!
23
0
0

Loading.... (view fulltext now)

Full text

(1)

Något om Linjärprogrammering och Mathematica

Bertil Nilsson 2021-08-15

max 3 får 7kor

får 1 g 1

får 6 g 2

får kor g 3 får kor 12 g 4

kor 7 g 5

får 0 g 6

kor 0 g 7

2 4 6 8 10 får

2 4 6 8 10 kor

1

1 2

2

3

4 3

4

5 5

6

6

7 7

10

20 30

40

50 60

70

80 90

1 234 5

6

2x y 2z 6 x y z 4 2y z 5 0 x 2

y 0 0 z 3

0.5 0.0 1.5 1.0

2.0

x 0

1

2 y

0 1

2 3

z

(2)

ť Förord

På följande sidor presenteras en elementär “streetwise guide” till Linjärprogrammering (LP) med flitig användning av Mathematica.

Framställningen är fåordig, fri från pedanteri men i någon mening fullständig. Det man väsentligen behöver veta om begrepp, terminologi, beteckningar och teori för att modellera och lösa problem i framtida kurser och yrkesliv som ingenjör, naturvetare eller lärare klarläggs och typiska exempel ges.

ť Inledning och terminologi

Dagens samhälle ställer höga krav på effektivitet. Inom näringsliv och industri blir detta speciellt tydligt. Frågor som “hur utnyttjar vi vår maskinpark mest effektivt?”, “hur planerar vi våra transporter så att restider och bränsleförbrukning minimeras?” och “var bör vi lokalisera nya lagerlokaler?” är där vanligt förekommande. Modern matematik ger förutsättningar att besvara dessa frågor.

Effektiva datorprogram har utvecklats med matematik som bas och tillsammans med allt snabbare och billigare datorer ges idag ovärderligt stöd åt strategi och beslutsfattande. Denna typ av planeringsarbete där man tar hjälp från matematiken benämns opera- tionsanalys. Eftersom det nästan alltid ligger ekonomiska intressen bakom den här typen av verksamhet är det av största vikt att frågeställningarna kan utredas snabbt och effektivt.

Det centrala inom operationsanalysen är att någon form av optimeringsberäkning utförs (latin “optimus” - att göra något så bra som möjligt) , det vill säga man hittar den handlingsplan som minimerar eller maximerar en storhet (t.ex. kostnad eller tidsåtgång) givet att de villkor som beskriver processen är uppfyllda. Med handlingsplan menas här t.ex. hur många artiklar av en viss vara som ska produceras eller hur man ska schemalägga flygplan. En annan benämning som används är matematisk programmering (eng. mathe- matical programming). Gränsdragningen mellan begreppen operationsanalys och matematisk programmering är oskarp. En av många använd skiljelinje är att matematisk programmering innefattar optimering rent allmänt, medan operationsanalys innefattar just olika typer av planeringsarbeten.

Innan beräkningsarbetet kan utföras måste den aktuella frågeställningen formuleras i matematiska termer, det vill säga man måste bygga en matematisk modell av den verkliga processen. Ansvaret för detta har ingenjören eller operationsanalytikern. Vilka förenklin- gar av verkligheten som bör göras i modellen måste bedömas genom att väga önskad noggrannhet i det slutliga resultatet mot beräkningstider för den algoritm som ska användas. Många gånger är det omöjligt att göra en exakt modell, verkligheten är helt enkelt för komplex för att den ska gå att beskriva på ett överskådligt sätt. Man får då ofta nöja sig med en linjär modell, det vill säga en modell där alla förhållanden mellan de ingående storheterna både i det man vill optimera och i de villkor man måste beakta beskrivs med linjära samband. Man har därmed formulerat sin frågeställning som ett linjärprogrammeringsproblem. I många fall är detta fullt tillfredsställande, det vill säga man har formulerat ett problem som både ger tillräcklig noggrannhet och ger rimliga beräkningstider.

Men vi börjar med några exempel från vardagslivet.

Exempel:Lille Bo fick sin önskeroman i julklapp. När han lagt sig på kvällen beslutar han sig för att läsa i precis 3 timmar. Romanen läser han ut på 2 timmar och så finns ju den fina tegelstenen Analys i en variabel som räcker länge och faktiskt ger 50 högre läsupplevelse jämfört med romanen. Hur skall han fördela timmarna mellan böckerna för att maximera sin läsupplevelse?

Lösningsförslag: Antag att han läser tr timmar i romanen och ta timmar i analysboken så har vi från problemtexten att 1. Maximal tillgänglig lästid är 3 timmar tr ta 3.

2. Romanen räcker i 2 timmar tr 2.

3, 4. Negativ lästid befattar han sig inte med tr 0, ta 0.

Nu vill Bo maximera sin läsupplevelse. Eftersom denna är proportionell mot lästiderna och Analysboken ger 50% högre läsup- plevelse har han att maximera den sammanlagda läsupplevelsen tr 1.5ta. Vi har alltså ett optimeringsproblem. Funktionen

f tr, ta tr 1.5ta som skall maximeras kallas mål- eller objektfunktion (eng. objective function). Tiderna tr och ta kallas design- variabler (eng. design variables). Nu kan inte tiderna väljas hur som helst utan begränsas av villkoren 1-4 ovan. Dessa kallas då för bivillkor (eng. constraints). De naturliga bivillkoren 3 och 4 är så kallade positivitetskrav (eller egentligen icke-negativitetskrav) som av historiska skäl inte alltid brukar räknas in bland bivillkoren utan anses självklara. Vi ansluter oss inte till detta.

Det typiska för vårt optimeringsproblem är att både objektfunktion och alla bivillkor är linjära. Man talar då om Linjärprogrammer- ing (LP) (eng. linear programming) eller att man har ett LP-problem. Egentligen borde det heta Linjäroptimering men traditioner är inte lätta att bryta.

(3)

Vi sammanfattar problemet på standardform

max tr 1.5ta

tr ta 3 tr 2 tr 0 ta 0

Eftersom bivillkoren är linjära kommer de var och en att dela upp vår värld i två halvor, så kallade halvrymder, en otillåten och en tillåten att vistas i. Snitttet eller skärningen mellan de tillåtna halvorna, det vill säga den mängd som tillhör alla bivillkor, blir ett konvext polygonområde och kallas tillåtet område eller simplex (eng. feasible region). (I en konvex mängd ska alla punkter på sammanbindningslinjen mellan två godtyckliga punkter i mängden också tillhöra mängden. Polygon är en månghörning med räta kanter. Alltså är triangel och rektangel exempel på konvexa polygonområden.) Det är i detta område vi kan och ska söka lösningen!

Nu är det bara två (design)variabler i detta exempel så vi kan enkelt återge varje bivillkor grafiskt. Vi ser att världen delas in i en icke tillåten del och en grön tillåten. Den röda gränslinjen får man genom att rita den räta linje som erhålles då olikheten byts mot likhet.

1 1 2 3 4 tr

1 1 2 3 4 ta

ta trĎ3

1 1 2 3 4 tr

1 1 2 3 4 ta

trĎ2

1 1 2 3 4 tr

1 1 2 3 4 ta

trď0

1 1 2 3 4 tr

1 1 2 3 4 ta

taď0

Genom att så till slut ta snittet av dem alla får vi det tillåtna området där vi ska söka lösningen!

1 1 2 3 4 tr

1 1 2 3 4 ta

Vi ser att det tillåtna området är begränsat (eng. bounded), det vill säga det omsluts av bivillkorslinjerna. Skärningspunkterna mellan bivillkorslinjerna kallas hörnpunkter (eng. corner points) till det tillåtna området.

I samma figur kan vi också rita in objektfunktionen för konstanta värden, så kallade nivåkurvor (eng. level curves). Jämför isobarer på en väderkarta, längs dessa är trycket konstant. Även nivåkurvorna blir på grund av lineariteten räta linjer och parallella med varann. Vi fullbordar så den grafiska betraktelsen av ett LP-problem genom att rita in nivåkurvorna tr 1.5ta 1, tr 1.5ta 2, tr 1.5ta 3, , tr 1.5ta 7. Beteckningen gi är lite av tradition i branschen liksom hi för likhetsbivillkor.

max tr 1.5ta

tr ta 3 g1

tr 2 g2

tr 0 g3

ta 0 g4

0.5 1.0 1.5 2.0 2.5 3.0tr

0.5 1.0 1.5 2.0 2.5 3.0 ta

1 1

2 2

3 3

4

4 1

2

3 4

5 6

7 1

2

3 4

Vi återkommer till hur man löser optimeringsproblemet i nästa avsnitt.

(4)

Exempel:En cykeltillverkare kan tillverka två olika cykelmodeller, Standard och deLuxe. Han lever dessutom i den lyckliga världen att alla cyklar han tillverkar säljs. Standard ger en nettovinst på 300 kr medan den lyxiga deLuxe ger hela 700 kr. För att överleva måste han åtminstone tillverka en Standard om dagen. Men fler än 5 st orkar han dock inte med. Av samma skäl kan han inte heller tillverka mer än 4 st av den lite mer pyntade modellen deLuxe. Hur som helst så orkar han inte göra fler än 8 cyklar om dagen. Av marknadspolitiska skäl vill han inte heller tillverka fler lyxiga deLuxe än Standard. Hjälp nu honom att planera sin tillverkning så att vinsten maximeras.

Standard DeLuxe

Lösningsförslag: Antag att han tillverkar x1 st cyklar av modell Standard och x2 st av modell deLuxe om dagen. Vi har då direkt handlarens vinst som objektfunktion f x1, x2 300x1 700x2. Bivillkoren hittar vi genom att översätta mening för mening i problemtexten.

1. Minst en Standard om dagen x1 1.

2. Maximalt 5 Standard om dagen x1 5.

3. Maximalt 4 deLuxe om dagen x2 4.

4. Maximalt 8 cyklar om dagen x1 x2 8.

5. Inte fler deLuxe än Standard x2 x1.

6, 7. Negativt antal cyklar befattar vi oss inte med, det vill säga positivitetskrav x1 0, x2 0.

Därmed kan vi formulera LP-problemet på standardform, en objektfunktion och 7 bivillkor. Bara linjära samband som sig bör.

Läsaren uppmanas på det bestämdaste att verifiera bivillkorslinjer, det tillåtna området och nivåkurvor i figuren till höger!

max 300x1 700x2

x1 1 g1

x1 5 g2

x2 4 g3

x1 x2 8 g4

x2 x1 g5

x1 0 g6

x2 0 g7

1 2 3 4 5 x1

1 2 3 4 5 x2

1

1

3 3

4 4

5

5

6 6

7 7

1000 200

000

4000

123 4

5 6

7

Vi återkommer till hur man löser optimeringsproblemet i nästa avsnitt.

Exempel:Stina älskar fåglar. Hon har sju exemplar av Rupicola rupicola guldtupp i sitt vardagsrum. Hon föder upp dem på två sorters fröblandningar BasFrö och BusFrö vilka kostar 8 respektive 12 kr hg. Stina vet att speciellt tre typer av vitaminer V1, V2och V3är viktiga för fåglarna och

BasFrö BusFrö

V1 4 1

V2 3 2

V3 1 3

att varje fågel behöver dagligen 4, 6 respektive 3 enheter av dessa. Fröblandningarnas innehåll av de tre vitaminerna i enheter per hg framgår av tabellen. Formulera det LP–problem som bestämmer hur många hg av varje fröblandning Stina ska köpa in dagligen så alla fåglarna får sitt vitaminbehov tillgodosett och inköpskostnaden minimeras. Gör en grafisk representation med bivillkor och det tillåtna området.

Lösningsförslag: Antag att hon behöver köpa in BasFrö hg av BasFrö-blandningen och BusFrö hg av BusFrö-blandningen. Vi har då direkt Stinas kostnad som objektfunktion f BasFrö, BusFrö 8BasFrö 12Busfrö. Totalt har Stina sju hungriga näbbar att mätta, så bivillkoren möblerar vi genom att kombinera vitamintabellen med fåglarnas dagsbehov angivna i problemtexten. Läsaren uppmanas på det bestämdaste att verifiera formuleringen samt bivillkorslinjer, det tillåtna området och nivåkurvor i figuren till höger!

(5)

min 8 BasFrö 12 BusFrö

4 BasFrö BusFrö 7 4 g1

3 BasFrö 2 BusFrö 7 6 g2

BasFrö 3 BusFrö 7 3 g3

BasFrö 0 g4

BusFrö 0 g5

5 10 15 20 BasFrö

5 10 15 20 BusFrö

1

1 2

2 3

44 35

5

50 100

132 175

225

275

325 375

50 100

132 175

225

275

325 375

1

1 2

2 3

44 35

5 2

4

Observera att vi här har ett minimeringsproblem och att det tillåtna området är obegränsat (eng. unbounded). Vi återkommer till hur man löser optimeringsproblemet i nästa avsnitt.

ť Lite teori och lösningsmetoder

Vi ser att exemplen i föregående avsnitt är specialfall av en standardiserad LP-formulering (eng. standard LP-form) med n designvariabler och m bivillkor.

min f x1, x2, , xn c1x1 c2x2 cnxn

a11x1 a12x2 a1nxn b1

a21x1 a22x2 a2nxn b2

am1x1 am2x2 amnxn bm

min f

där f är objektfunktionen och bivillkoren. Man brukar kalla för objektfunktionskoefficienterna (eng. vector of objective coefficients), för bivillkorsmatrisen (eng. constraint matrix) och för högerledet (eng. right-hand side of constraints).

Formuleringen rymmer även maximering, ty max f min f . På samma sätt kan -olikhet införas genom att motsvarande rad multipliceras med 1 på båda sidor om med resultat att olikheten då byter riktning. Slutligen kan likhetsbivillkor behandlas genom att denna rad införes två gånger, en gång med och en med . I seriösa datorprogram för LP-lösare ska man naturligtvis inte behöva hålla på med sådant manipulerande.

En punkt som uppfyller bivillkoren kallas tillåten lösning (eng. feasible solution), eftersom den ligger i det tillåtna området, och söker nu den optimala lösningen (eng. optimal solution). Vi har tidigare sett att det tillåtna området kan vara begränsat, obegrän- sat eller rent av tomt (eng. empty) om bivillkoren är helt motstridiga så att snittet är tomt. Då saknar naturligtvis LP-problemet lösning. Om det har en lösning så är den alltid optimal i en hörnpunkt som då kallas optimal punkt (eng. optimal point or extreme point) och objektfunktionen antar där optimalt värde (eng. optimal value). De bivillkor som utgör randen till det tillåtna området delas in i aktiva (eng. active constraints) om de möts i optimala punkten, och inaktiva (eng. in-active constraints). Ett bivillkor som inte medverkar till att bygga upp det tillåtna området kallas överflödigt eller redundant (eng. redundant constraint).

Vi ska argumentera i 2D för att optimal lösning alltid är i en hörnpunkt. För ändamålet riggar vi upp ett begränsat område och några nivåkurvor. Mot bakgrund av all linearitet förstår vi att när vi minskar eller ökar objektfunktionens värde så kommer den “sista”

nivåkurvan i det tillåtna området att lämna detta i en hörnpunkt. Dessa två fall är indikerade i figuren nedan till vänster med en blå och en röd boll och motsvarar alltså optimal punkt vid minimering respektive maximering av objektfunktionen. Enda gången detta inte gäller är då ett aktivt bivillkor, vid “fronten”, är parallellt med nivåkurvorna, se figur nedan till höger. Då har vi två hörn som kandidater till optimal punkt! Dessa är indikerade med röda bollar. Eftersom innebörden av en nivåkurva är att objektfunktionens värde är konstant längs en sådan kan vi som optimal punkt då välja vilken som helst av de två hörnpunkterna eller någon godtycklig punkt på det mellanliggande aktiva bivillkoret, markerad fet mörkgrön. Så grundregeln håller, optimal punkt är alltid en hörnpunkt!

x1

x2

x1

x2

(6)

En mera rigorös övertygelse kan formuleras så här: Antag att det finns en punkt som är inre punkt eller randpunkt till det tillåtna området och som minimerar , det vill säga i, i 1, , q för alla q hörnpunkter. Eftersom det tillåtna området är konvext kan skrivas som en linjärkombination av hörnpunkterna i 1q Αi i, där i 1q Αi 1. Då får vi

i 1

q Αi i i 1

q Αi i i 1

q Αi i 1

q Αi

vilket är en motsägelse. Det finns alltså inget bättre än hörnpunkter!

I figurerna ovan har vi även ritat in gradienten till objekfunktionen. Detta är en vektor som är vinkelrät mot nivåkurvorna och pekar ut i vilken riktning nivåkurvorna ökar. Lägg märke till att det inte är självklart att objektfunktionen ökar med ökande värde på designvariablerna, den kan lika gärna öka när man närmar sig origo, t.ex. f x1, x2 x1 x2. Gradienten brukar skrivas på två sätt och definieras av den andra likheten med hjälp av partiella derivator

grad f f def fxf

1, xf

2, , xf

nc1, c2, , cn

På grund av lineariteten kan den alltså enkelt avläsas som koefficienterna i objektfunktionen.

Exempel: Bestäm några gradienter

f x1, x2 2x1 3x2 f fxf

1, xf

2 2, 3

f x1, x2 x1 4x2 f fxf

1, xf

2 1, 4

f tr, ta tr 1.5ta f ftf

r, tf

a 1, 1.5 Exemplet ovan med lille Bo f x1, x2 300x1 700x2 f fxf

1, xf

2 300, 700 Exemplet ovan med cykeltillverkaren Mot bakgrund av lineariteten hos såväl objektfunktion som bivillkor kan vi sammanfatta.

Om det tillåtna området till ett LP-problem är icke-tomt och begränsat så antar objektfunktionen både ett maximum och ett minimum och detta antas i hörn i det tillåtna området. Ett sådant hörn kallas optimal punkt och objektfunktionen antar optimalt värde där. Om däremot det tillåtna området är obegränsat finns fortfarande möjlighet att objektfunktionen antar ett maximum eller ett minimum, om så görs detta också i ett hörn, optimal punkt. Avslutningsvis saknar LP-problemet lösning om det tillåtna området är tomt.

Detta ger oss en enkel strategi för att lösa ett LP-problem! Inspektera alla hörnpunkter till det tillåtna området och beräkna objekt- funktionens värde där, sedan är det bara att bland dessa välja den optimala lösningen. Vi provar på två av de LP-problem vi redan stiftat bekantskap med.

Exempel: Lille Bo igen. Lös LP-problemet!

Lösningsförslag: Vi tar vid där vi slutade.

max tr 1.5ta

tr ta 3 g1

tr 2 g2

tr 0 g3

ta 0 g4

0.5 1.0 1.5 2.0 2.5 3.0tr

0.5 1.0 1.5 2.0 2.5 3.0 ta

1 1

2 2

3 3

4

4 1

2

3 4

5 6

7 1

2

3 4

Vi går moturs runt det tillåtna området och besöker hörnpunkterna. Bestäm designvariablernas värde där genom att lösa ett ekvation- ssystem som erhålles genom att ersätta olikhet med likhet i de bivillkor som möts i hörnpunkten. Slutligen beräknas objektfunktio- nens värde i hörnet. Uppdatera och bokför under resans gång den hörnpunkt som maximerar objektfunktionen.

(7)

Skärning mellan g1och g2

tr ta 3 g1

tr 2 g2 tr, ta 2, 1 f 2, 1 2 1.5 1 3.5 Skärning mellan g1och g3

tr ta 3 g1

tr 0 g3 tr, ta 0, 3 f 0, 3 0 1.5 3 4.5 Max Skärning mellan g3och g4

tr 0 g3

ta 0 g4 tr, ta 0, 0 f 0, 0 0 1.5 0 0 Skärning mellan g2och g4

tr 2 g2

ta 0 g4 tr, ta 2, 0 f 2, 0 2 1.5 0 2

Färdig! Vi har hittat optimal punkt tr, ta 0, 3 ! Lille Bo ska med andra ord ägna all tillgänglig lästid åt Analysboken

Detta kunde vi enkelt insett genom att inspektera den grafiska representationen ovan. Om man har många bivillkor kan man hålla nere handarbetet väsentligt genom att först göra ett visuellt studium av nivåkurvor och bivillkor i den grafiska representationen. Då brukar det bli få hörnpunkter att besöka. Men hur som helst

Vid två designvariabler och handräkning måste man alltid börja med att göra en grafisk representation!

Detta ger nödvändig överblick för att kunna genomföra lösningen!

Exempel: Stinas guldtuppar igen. Lös LP-problemet!

Lösningsförslag: Vi tar vid där vi slutade.

min 8 BasFrö 12 BusFrö

4 BasFrö BusFrö 7 4 g1 3 BasFrö 2 BusFrö 7 6 g2

BasFrö 3 BusFrö 7 3 g3

BasFrö 0 g4

BusFrö 0 g5

5 10 15 20 BasFrö

5 10 15 20 BusFrö

1

1 2

2 3

44 35

5

50 100

132 175

225

275

325 375

50 100

132 175

225

275

325 375

1

1 2

2 3

44 35

5 2

4

Vis av erfarenheterna från föregående exempel börjar vi med att studera den grafiska representationen. Eftersom vi söker minimum av objektfunktionen räcker det att besöka hörnet som är skärningspunkt mellan bivillkoren g2 och g3.

3 BasFrö 2 BusFrö 7 6 g2

BasFrö 3 BusFrö 7 3 g3 BasFrö, BusFrö 12, 3 f 12, 3 8 12 12 3 132 Min

Färdig! Vi har hittat optimal punkt BasFrö, BusFrö 12, 3 ! Nu vet Stina hur många hg av varje fröblandning som ska inhand- las för att minimera kostnaden. Vi kan i figuren också notera att g1 inte finns med som aktivt bivillkor vid optimal punkt med följd att vitamin V1 serveras i överflöd. Lägg märke till att vi har ett obegränsat tillåtet område, objektfunktionen har inget maximum utan inköpen kan bli hur dyra som helst! Till slut kommer då både Stina och hennes guldtuppar att drunkna i frö!

Då antalet designvariabler och bivillkor ökar är handräkning utesluten. Vi får koncentrera oss på LP-formuleringen, vilket kan vara nog så besvärligt, och överlämna själva lösandet till ett datorprogram. Det finns flera sådana och de används mycket flitigt i diverse tillämpningar i industrin.

Att lösa LP-problem sköt fart under andra världskriget tillsammans med att den första datorn såg dagens ljus, och den metod som är vanligast idag och härstammar från den tiden är Simplexmetoden. Men det finns också andra moderna metoder som är snabbare på framför allt riktigt stora problem, se vidare under Lite historik i ett senare avsnitt. Vi ska inte alls fördjupa oss i hur Simplexmetoden arbetar, det faller utanför ramen för denna kurs. Det enda man behöver känna till är att den är robust och utnyttjar den egenskap vi nämnt, nämligen att optimal punkt infaller i ett hörn. Simplexmetoden väljer på ett fiffigt sätt ut vilket nytt hörn den ska hoppa till så att objektfunktionen hela tiden minskar/ökar, den besöker alltså långt ifrån alla hörn i det tillåtna området.

I Mathematica finns de generella optimeringsfunktionerna Maximize[objektfkn,bivillkor,designvars], NMaxi- mize[], Minimize[]och NMinimize[], där de utan N på sig ger analytiska lösningar. Dessa funktioner klarar av att hitta globalt optimum för godtycklig objektfunktion under godtyckliga bivillkor. De har inga förutfattade meningar om värdet på design- variablerna, så till exempel tradionella positivitetskrav måste anges explicit i bivillkoren där olika typer av olikheter , och = kan blandas friskt. Speciellt känner de igen och löser LP-problem effektivt. I numeriska sammanhang skiljer man vanligtvis inte på om

(8)

man använder stränga olikheter eller ej, så istället för de lite mer “omständiga” och från palette ( <= och >= direkt på tangentbordet) kan man tryggt använda de lite mer direktåtkomliga < och > på tangentbordet. Naturligtvis klarar funktionerna även av att hantera det ofta mycket viktiga kravet på enbart heltalslösningar för några eller alla designvariabler. Detta läggs enkelt till bland bivillkoren som {designvariabler} Integers. Att ha krav på heltalslösningar är naturligt eftersom LP-formuleringar ofta handlar om frågeställningar kring kostnad och resurstilldelning, då är exempelvis antal personer, maskiner eller bilar vanliga designvariabler. Att vid stora LP-problem helt enkelt avrunda designvariabler till heltal är en mycket riskabel operation, vanligtvis brukar man då hamna i konflikt med ett eller flera bivillkor.

Om vi har standard LP-formulering, det vill säga objektfunktionen är given som en vektor och bivillkoren på matrisform , finns även den lite mer ortodoxa LinearProgramming[c,A,b]. Men, huvudalternativet blir nästan alltid de fyra tidigare nämnda, eftersom olika typer av olikheter , och = kan blandas friskt och att man direkt kan mata in sin LP-formulering från modelleringen utan riskabla omlastningar av termer för att möblera och så att det passar LinearProgramming.

Att använda de i Mathematica inbyggda LP-lösarna är mycket enkelt. Strängt taget gäller det bara att skriva av sin formulering rätt.

Som vanligt tillåts även en sekvens av olikheter, t.ex. x1 0 x1 1 kan skrivas 0 x1 1. Vi börjar med lille Bo och ser att svaret kommer ut på självdokumenterande form, {objektfkn,designvariabler} i optimal punkt, precis som vi är vana vid från FindMaximum och FindMinimum. Se tidigare bilder över situationerna.

Maximize tr 1.5 ta, tr ta 3, tr 2, tr 0, ta 0 , tr, ta 4.5, tr 0., ta 3.

Sedan Stina och hennes sju guldtuppar.

AntalGuldtuppar 7;

Minimize 8 BasFrö 12 BusFrö,

4 BasFrö 1 BusFrö AntalGuldtuppar 4, 3 BasFrö 2 BusFrö AntalGuldtuppar 6, 1 BasFrö 3 BusFrö AntalGuldtuppar 3, BasFrö 0, BasFrö 0

, BasFrö, BusFrö 132, BasFrö 12, BusFrö 3

Så nu äntligen över till cykeltillverkaren som väntar otåligt Maximize 300 x1 700 x2,

x1 1, x1 5, x2 4, x2 x1, x1 x2 8, x1 0, x2 0 , x1, x2

4000, x1 4, x2 4

Han ska alltså tillverka 4 cyklar av varje modell. Vinsten blir då 4000 kr om dagen! Här fick vi heltalslösning som vi önskade, men om vi ändrar lite på villkoret x1 x2 8 till x1 x2 7 får vi inte detta längre.

1 2 3 4 5 x1

1 2 3 4 5 x2

1 1

3 3

4

4

5

5

6 6

7 7

1000 2000

000 4000

1

2

3 4

5

Maximize 300 x1 700 x2, x1 1, x1 5, x2 4, x2 x1, x1 x2 7, x1 0, x2 0 , x1, x2

3500,x1 7 2, x2 7

2

(9)

I allmänhet är det inte så enkelt som att “avrunda”. Problemet med halva cyklar avhjälps istället genom att införa heltalskrav bland bivillkoren. Vi tvingas nu röra oss i det begränsade rummet av heltal istället för reella tal. I figuren nedan är de möjliga heltalslös- ningarna markerade med mörkgröna prickar. Vi ser att optimal punkt inte sammanfaller med ett hörn. Naturligtvis hittar Mathemat- ica den optimala heltalslösningen.

1 2 3 4 5 x1

1 2 3 4 5 x2

1 1

3 3

4

4

5

5

6 6

7 7

1000 200

000 4000

1

2

3 4

5

Maximize 300 x1 700 x2,

x1 1, x1 5, x2 4, x2 x1, x1 x2 7, x1 0, x2 0, x1, x2 Integers , x1, x2

3300, x1 4, x2 3

Avslutningsvis kan nämnas att i en fortsatt analys är det bland annat av intresse att utreda frågeställningar av typen Vad händer med lösningen då objektfunktionens koefficienter varieras?

Vad händer med lösningen då bivillkorsmatrisens koefficienter varieras?

Vad händer med lösningen då högerledets koefficienter varieras?

Vad händer med lösningen då man lägger till eller tar bort bivillkor?

Vad händer med lösningen då designvariabler läggs till eller tas bort?

Detta brukar kallas störningsanalys eller känslighetsanalys och är mycket viktigt. För att till exempel öka vinsten utan att höja priserna måste de aktiva bivillkoren modifieras vilket oftast är behäftat med kostnader. En studie av gradienter i optimala punkten ger en indikation på om det är möjligt och hur man då ska agera för att göra den mest ekonomiskt gynsamma förändringen av produktionsapparaten. Det finns en omfattande teori kring detta och i en mer omfattande framställning introduceras begrepp som duala problemet och skuggpriser.

Eftersom LP-lösarna i Mathematica är så lättanvända kan en enkel och kanske praktiskt tillräcklig känslighetsanalys helt enkelt bestå av att man “leker” lite med koefficienterna och kör igen. Som exempel på detta låter vi i följande sekvens studera vad som händer i ursprungssituationen om priset på deLuxe sänks. Först dagens förutsättningar och prissättning i repris.

1 2 3 4 5 x1

1 2 3 4 5 x2

1 1

3 3

4 4

5

5

6 6

7 7

1000 2000

3000 4000

123 4

5 6

7

Maximize 300 x1 700 x2,

x1 1, x1 5, x2 4, x2 x1, x1 x2 8, x1 0, x2 0, x1, x2 Integers , x1, x2 4000, x1 4, x2 4

Om priset på deLuxe sänks till 300 kr kommer naturligtvis vinsten att minska och objektfunktionens nivåkurvor att ändra lutning för att bli parallella med bivillkoret x1 x2 8. Vi kan då som optimal punkt välja vilken som helst av de två aktuella hörnpunkterna

4, 4 och 5, 3 .

(10)

1 2 3 4 5 x1

1 2 3 4 5 x2

1 1

3 3

4 4

5

5

6 6

7 500 7

1000 1500

2000 2500

123 4

5 6

7

Maximize 300 x1 300 x2,

x1 1, x1 5, x2 4, x2 x1, x1 x2 8, x1 0, x2 0, x1, x2 Integers , x1, x2

2400, x1 4, x2 4

Om så priset på deLuxe sänks ytterligare ner till 200 kr kommer optimal produktion att ändras från 4, 4 till 5, 3 och vinsten till 2100 kr.

1 2 3 4 5 x1

1 2 3 4 5 x2

1 1

3 3

4 4

5

5

6 6

7 7

500 1000

150 2000

1 234

5 6

7

Maximize 300 x1 200 x2,

x1 1, x1 5, x2 4, x2 x1, x1 x2 8, x1 0, x2 0, x1, x2 Integers , x1, x2

2100, x1 5, x2 3

ť En liten enkel grafisk LP-lösare i 2D

Vi ska här meka ihop en enkel funktion som klarar av att göra en minimalistisk grafisk representation och lösning. Som testexempel vid framtagningen tar vi följande enkla LP-problem

max 2x1 x2

x1 2x2 20 g1

3x1 x2 30 g2

x1 0 g3

x2 0 g4

2 4 6 8 10 x1

2 4 6 8 10 x2

1

1

2 3 2

342 4

4

6 8 10

12 14

16 18

20 22

24 26

28 30

1

2 3

4

obj 2 x1 x2;

bv x1 2 x2 20, 3 x1 x2 30, x1 0, x2 0 ; lc 2 Range 20 ;

xr x1, 0.1, 10.1 ; yr x2, 0.1, 10.1 ;

Nu över till den grafiska representationen som även får bli vår lilla LP-lösare. Vi börjar med det tillåtna området.

(11)

RegionPlot And bv, Evaluate xr , Evaluate yr , PlotStyle Opacity 1 , Green , Frame False, Axes True

2 4 6 8 10

2 4 6 8 10

Sedan bivillkorslinjerna

ContourPlot Evaluate . Head Equal & bv , Evaluate xr , Evaluate yr , ContourStyle Thickness 0.01 , Red , Frame False, Axes True

2 4 6 8 10

2 4 6 8 10

Slutligen nivåkurvorna.

ContourPlot Evaluate objfkn & lc , Evaluate xr , Evaluate yr , ContourStyle Blue

0 2 4 6 8 10

0 2 4 6 8 10

Nu är det bara att paketera det hela som en grafisk presentation jämte en tabell med hörnpunkter sorterade efter fallande värde på objektfunktionen. Varje rad innehåller de inblandade aktiva bivillkoren, hörnpunktens koordinater (designparametrarna) samt objektfunktionens värde. Att sätta etiketter på de röda och blå linjerna samt gröna nummer på hörnpunkterna kräver lite extra

“Mathematicapornografi” utöver det vanliga och överlämnas till den intresserade läsaren att fördjupa sig i. Allt finns samlat i en funktion LPSolve som kan laddas ned från hemsidan. Vi provar på vårt modellproblem.

LPSolve obj, bv, lc, xr, yr

2 4 6 8 10 x1

2 4 6 8 10 x2

1

1

2 33 2

4 4

2 4

6 8

10

12 14

16 18

20 22

24 26

28 30

2 4

6 8

10

12 14

16 18

20 22

24 26

28 30 1

1

2 33 2

4 4

1

2 3

4

nr biv punkt objfkn

1 1, 2 8, 6 22

2 2, 4 10, 0 20 3 1, 3 0, 10 10

4 3, 4 0, 0 0

Vi ser i tabellen att hörn nr 1 är optimal hörnpunkt. Aktiva bivillkor är 1, 2 , koordinaterna (designparametrarna) är 8, 6 och objektfunktionens värde är 22. Lille Bo vill också vara med.

(12)

LPSolve tr 1.5 ta, tr ta 3, tr 2, tr 0, ta 0 , 0.5 Range 0, 10 , tr, 0.1, 3.3 , ta, 0.1, 3

0.5 1.0 1.5 2.0 2.5 3.0 tr

0.5 1.0 1.5 2.0 2.5 3.0 ta

1

1 22

33

40.5 4

1.5 2.5

3.5 4.5

5.5

6.5 7.5

0.5

1.5 2.5

3.5 4.5

5.5

6.5 7.5

1

1 22

33

4 4

1

2

3 4

nr biv punkt objfkn 1 1, 3 0, 3 4.5 2 1, 2 2, 1 3.5

3 2, 4 2, 0 2.

4 3, 4 0, 0 0.

ť Blandade exempel för resten

Exempel:En skräddare kan tillverka kostymer och klänningar. Varje kostym fordrar 1 m2 bomullstyg och 3 m2ylletyg och till varje klänning åtgår 2 m2av varje tygslag. Skräddaren har tillgång till 80 m2bomullstyg och 120 m2ylletyg. Hur många kostymer och klänningar skall han sy om varje kostym och klänning kan säljas för 300 kr och han vill maximera inkomsten?

Lösningsförslag: Om vi låter skräddaren sy xm kostymer och xg klänningar så får vi efter översättning av problemtexten följande LP-problem och tillhörande lösning. Formuleringen görs enkelt läsbar samtidigt som vi anropar vår egen LP-snutt. Det är lämpligt att räkna vinsten i 1000-tals kronor.

LPSolve 300 1000

xm xg , xm 2xg 80, 3xm 2xg 120, xm 0, xg 0 , 2 Range 20 , xm, 0.1, 50 , xg, 0.1, 50 

10 20 30 40 50 xm

10 20 30 40 50 xg

1 1

2 2

334 4

2 4 6

8 10 12

14 16 18 20

22 24 26

28

2 4 6

8 10 12

14 16 18 20

22 24 26

28

1 1

2 2

334 4

1

2 3

4

nr biv punkt objfkn 1 1, 2 20, 30 15

2 2, 4 40, 0 12

3 1, 3 0, 40 12

4 3, 4 0, 0 0

Efter att tittat i figuren och tabellen förstår vi att optimal punkt är nr 1 och g1och g2 är aktiva bivillkor vid optimalt hörn 20, 30 . Vinsten är 15 1000 kr. Mathematica håller med

Maximize 300 1000

xm xg , xm 2xg 80, 3xm 2xg 120, xm 0, xg 0 , xm, xg

15,xm 20, xg 30

Exempel:Fredrik har 10 kkr över att investera i aktier. Han inbillar sig att bankens analytiker har koll på aktieutveckling över tid och gör därför ett besök. Rådet blir att investera i två aktier, en riskfylld A med 10 avkastning årligen och en lugnare B med 7 avkastning årligen. Men analytikern nöjer sig inte med detta utan tycker att fördelningen ska vara högst 6 kkr i A, minst 2 kkr i B och absolut minst lika mycket i aktie A som B. Hur ska han handla för att maximera avkastningen?

Lösningsförslag: Om vi låter Fredrik köpa aktier A för a kkr och aktier B för b kkr får vi efter översättning av problemtexten följande LP-problem och lösning.

References

Related documents

 Han  förklarar  att  det  finns  ett  stort  lokalt  intresse  för  fotbollslaget  och  att   det  är  viktigt  att  kunna  följa  med  i  de  diskussionerna

Kvinnor som har blivit utsatta för våld skuldbelägger sig själva och för att de ska kunna gå vidare i processen behöver de komma till insikt om vem som faktiskt bär ansvar för

I tjejgruppen på ungdomsgården fanns det en tjej som kallades svensk av både sig själv och sina vänner, hon vistades dock inte på gården tillräckligt mycket för

Exempel: Att modellering ger upphov till ekvationer är ganska naturligt eftersom en modell av verkligheten ofta representeras av något slags samband, exempelvis volymen av

Genom att granska denna rapport skall dessa organisationer få en uppfattning om hur de skall kunna gå tillväga vid framtagandet av en kravspecifikation som endast innehåller krav

Utifrån intervjupersonerna framkom det att kvaliteten på utomhusvistelsen kunde variera på grund av kollegorna och samarbetet. Det kunde handla om att man inte alltid hade samsyn

I den begränsade forskning som gjorts gällande föräldrars erfarenheter när deras barn vistas i skolmiljö framkommer att föräldrar då kan känna oro och att

Det hon upplever är, snarare än upphetsning, ett kroppsligt lugn, en trygghet av att ha ”hittat hem till en trygg grotta.” (s. 147) Den alternativa temporaliteten tänks alltså