• No results found

Linjärprogrammering (LP) Repetition (L1 kap. 1 & L2 kap. 6)

N/A
N/A
Protected

Academic year: 2022

Share "Linjärprogrammering (LP) Repetition (L1 kap. 1 & L2 kap. 6)"

Copied!
33
0
0

Loading.... (view fulltext now)

Full text

(1)

 Linjär programmering är en modelltyp för att lösa optimeringsproblem med flera trånga

sektorer

 Repetition inför momenten

Nätverksmodeller

Transportmodeller

Heltalsprogrammering

Målprogrammering

Linjärprogrammering (LP)

Repetition (L1 kap. 1 & L2 kap. 6)

(2)

Linjärprogrammering

Modelltyp för att lösa optimeringsproblem

 Teoretisk definition:

En iterativ matematisk teknik för att lösa maximerings- eller minimeringsproblem under begränsningar (bivillkor).

 Praktisk företagsekonomisk definition:

Ett sätt att åstadkomma ett modellmässigt optimalt utnyttjande av begränsade resurser (trånga sektorer)

 Går ut på att:

Välja värden på ett antal beslutsvariabler (”aktiviteter”) så att ett optimalt (maximalt eller minimalt) värde erhålls på en målfunktion.

Beslutsvariablernas värden måste väljas givet ett antal restriktioner.

Målfunktion och restriktioner måste beskrivas med linjära funktioner (styckvis linjära funktioner).

(3)

Linjär programmering

Problemställning:

Exempelvis, sök den produktionsplan som maximerar TTB eller

minimerar kostnader givet begränsningar såsom maskintid, arbetstid, materialtillgång, efterfrågan mm.

Kvantifiera problemet:

1. Definiera beslutsvariablerna

o Vad är den centrala problemställningen?

o Exempelvis, hur mycket skall produceras av vad, när och var?

2. Definiera målfunktion

o Maximera eller minimera?

3. Fastställ restriktionerna, t ex:

o Resursbegränsningar

o Balansekvationer – framförallt när då tiden explicit beaktas i modellen

o Policyrestriktioner – exempelvis limiter i en investeringsportföljen

4. Genomför känslighetsanalys på basis av datorkörning

(4)

Linjär programmering

Grundläggande antaganden:

 Alla samband uttrycks linjärt eller styckvis linjärt.

 Alla variabler är kontinuerliga (heltalsprogrammering, eget moment).

 Alla koefficienter är kända med säkerhet.

 Endast ett kvantifierbart mål (målprogrammering, eget moment).

(5)

Linjär programmering

Ett exempel

 Ett företag tillverkar två produkter – X1 och X2

 Målsättningen är att välja den produktionsmix av X1 och X2 som

maximerar TTB

 Ett optimeringsproblem med flera trånga sektorer

Produktions- resurs etc.

X1 (för- brukning per enhet)

X2 (för- brukning per enhet)

Total resurstill- gång (dag) Arbets-

timmar

2 4 1 600

Process- timmar

6 2 1 800

Efterfrågan X1

Obe- gränsad Efterfrågan

X2

350

TB per enhet 3,00 8,00

(6)

Om flera resurser är begränsande för flera produkter får vi ett optimeringsproblem som normalt endast går att lösa med iterativa metoder

Modellformulering

:

1. Max 3X1 + 8X2

2. 2X1 + 4X2 < 1 600 (arbetstimmar) 3. 6X1 + 2X2 < 1 800 (processtimmar) 4. X2 < 350 (efterfrågan)

Linjär programmering

Ett exempel

(7)

Linjär programmering

Grafisk lösning av exemplet

0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900

0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 Produkt X1

Produkt X2

Optimal lösning = (X1, X2) = (100, 350) ger maximalt TTB = 3 100

Processtid

Arbetstid Efterfrågan

”Optimalt hörn”

Målfunktionen (Z) är satt till 1200, 2400 och 3100 i figuren (Max Z=3X1+ 8X2)

(8)

Linjär programmering

Slack- och Surplus-variabler

 Gör om restriktionerna till likheter genom att införa slackvariabler X3, X4 och X5 i restriktionerna:

2X1 + 4X2 + X3 = 1 600 (arbetstimmar) 6X1 + 2X2 + X4 = 1 800 (processtimmar) X2 + X5 = 350 (efterfrågan)

 Sätt in optimala värden på X1 (100) och X2 (350) och lös ut X3, X4 och X5:

X3 = 0

X4 = 500 = oanvända processtimmar (slack) X5 = 0

(9)

Linjär programmering

Slack- och Surplus-variabler

 Generellt gäller att:

om slackvariabler Xi = 0 så är restriktion i bindande

om slackvariabler Xi > 0 så är restriktion i icke-bindande

 I exemplet är således restriktion 1 och 3 bindande och restriktion 2 icke-bindande

 Antag även följande restriktion i modellen:

X1 > 50

 Gör om den restriktion till likhet genom att införa surplusvariabeln X6 i restriktionen, dvs:

X1 – X6 = 50

X6 = 50, dvs. icke-bindande restriktion

(10)

Linjär programmering

Grafisk lösning av exemplet med X

1

>50

0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900

0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 Produkt X1

Produkt X2

Oförändrad optimal lösning = (X1, X2) = (100, 350) ger maximalt TTB = 3 100

Processtid

Arbetstid Efterfrågan

”Optimalt hörn”

X1> 50

Målfunktionen (Z) är satt till 1200, 2400 och 3100 i figuren (Max Z=3X1+ 8X2)

(11)

Linjär programmering

Lösning

Tillverka X

1

= 100 Produkt 1

X

2

= 350 Produkt 2

Oanvänd resurs X

3

= 0 Arbetstimmar X

4

= 500 Processtimmar X

5

= 0 Efterfrågan

Optimalt mål- funktionsvärde

3 100 Maximalt TTB

(12)

Linjär programmering

Känslighetsanalys

 Hur förändras lösningen om vi förändrar

Begränsningarna (högerleden) i restriktionerna

Koefficienterna i målfunktionen

 Viktig information ur lösningen

Skuggpriser

Intervall för både koefficienterna i målfunktionen och begränsningarna i restriktionerna.

 Betrakta följande möjligheter – en i taget

Ytterligare 100 arbetstimmar blir tillgängliga

Ytterligare 120 processtimmar blir tillgängliga

(13)

Linjär programmering

Ytterligare 100 arbetstimmar blir tillgängliga

Optimal lösning = (X1, X2) = (150, 350)

vid 1 700 arbetstimmar (1 600)  målfunktionsvärde = 3 250

0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000

0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 Produkt X1

Produkt X2

Processtid

Efterfrågan

Arbetstid

(14)

 En ökning av 100 arbetstimmar leder till således en ökning av målfunktionens värde på 150.

Skuggpriset = 150/100 = 1,5

 Alla ytterligare arbetstimmar används för att tillverka X1

X2 kan inte tillverkas i större kvantitet p.g.a. restriktion 3

 Eftersom vi har 500 oanvända processtimmar kan vi göra 83,33 (500/6) ytterligare X1 innan restriktionen för process- timmar blir bindande. Ytterligare 83,33 av X1 kräver 166,67 arbetstimmar.

Arbetstimmar utöver 166,67 ger ingen ökning av TB.

Skuggpriset = 1,5 gäller således i intervallet [1400, 1766,67]

Linjär programmering

Ytterligare 100 arbetstimmar blir tillgängliga

2X1 + 4X2 < 1 600 (arbetstimmar) 6X1 + 2X2 < 1 800 (processtimmar)

(15)

Linjär programmering

Ytterligare 120 processtimmar blir tillgängliga

Optimal lösning = (X1, X2) = (100, 350) vid 1 920 arbetstimmar (1 800)

0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000

0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900

Produkt X1

Produkt X2

Processtid

Efterfrågan

Arbetstid

(16)

 En ökning av 120 processtimmar leder inte till någon ökning av målfunktionens värde.

Skuggpriset = 0

 Tillgängligheten av processtimmer kan minska med 500 innan den restriktionen blir bindande.

Skuggpriset = 0 gäller således i intervallet [1300, ∞]

Linjär programmering

Ytterligare 120 processtimmar blir tillgängliga

(17)

Linjär programmering

Mjukvarustöd

 Lingo

Demoversion gratis på www.lindo.com

Mycket användarvänligt (när ”Lindo-syntax” används)

Finns för Windows, Mac och Linux

 www.phpsimplex.com/simplex/simplex.htm?l=en

Enkelt online-verktyg

 De flesta större programpaket för kvantitativ analys har stöd för lösning av LP-modeller.

http://www.orms-today.org/surveys/LP/LP-survey.html

(18)

Linjär programmering

Lösning i Lingo

(19)

Linjär programmering

Lösning i Lingo

(20)

Linjär programmering

 Summering – känslighetsanalys

Reducerad kostnad (Reduced Cost) visar hur mycket sämre målfunktionens värde blir om man i den optimala lösningen ”tvingar in” en enhet av en variabel som har värdet 0 i den optimala lösningen.

Slack eller överskott (Slack or Surplus) visar hur mycket av en resurs som inte används i den optimala lösningen (0 eller > 0) eller hur mycket en

”större eller lika med”- restriktion” överskrids i den optimala lösningen.

Skuggpriset (Dual Prices) för en resurs visar dess alternativvärde, dvs. hur mycket målfunktionens optimala värde skulle förbättras om ytterligare en enhet av resursen fanns tillgänglig (Ceteris paribus)

Intervall för målfunktionskoefficienterna (Objective Coefficient Ranges) visar hur koefficienterna i målfunktionen kan ändras utan att de optimala värdena på beslutsvariablerna förändras (Ceteris paribus)

Intervall för begränsningarna i restriktionerna (Righthand Side Ranges) visar hur tillgången på en begränsad resurs kan ändras utan att resursens skuggpris förändras.

(21)

Linjär programmering

Policyrestriktioner

 Begränsningar i en LP-modell kan även uttrycka ”policy”- restriktioner. Exempel:

Minst 30 % av den totala produktionen måste bestå av produkt X1:

X1 > 0,3(X1 + X2)

Högst 50 % av TTB får komma från produktion av produkt X2:

8X2 < 0,5(3X1 + 8X2)

(22)

Linjär programmering

Flerperiodiska modeller

Tidsdimensionering

 Varje aktivitet (t ex produktion, lagring och försäljning) sker en gång per tidsintervall.

 Varje aktivitet skall därför representeras av en

beslutsvariabel (eller i de fall då förutsättningarna

inte är variabla av en parameter).

(23)

Period t-1 Period t Period t+1

It-2 It-1 It It+1

Pt-1 Pt Pt+1

Dt-1 Dt Dt+1

Restriktioner i LP-modellen (period t): It-1 + Pt = Dt + It.

• En sådan restriktion för varje period.

• Dessutom kan det tillkomma index för olika produkter.

Pt = produktion i period t (antal enheter) Dt = efterfrågan i period t (antal enheter) It = utgående lager i period t (antal enheter)

Linjär programmering

Flerperiodiska modeller

(24)

 Några komplikationer:

1. Restorder (brist) hanterar genom att lagervariabeln (I) delas upp i två variabler:

I = IL– IB; där IL= lagerstorlek och IB = bristenheter; IL > 0, IB > 0

2. Planeringshorisonten

Prognos av behov lager efter denna tidpunkt måste finnas

3. Fast kostnad

Ger icke-linjära modeller! Löses vanligtvis med heltalsprogrammering.

Linjär programmering

Flerperiodiska modeller

(25)

Linjär programmering

Flerperiodiska modeller

(26)

Definitioner:

Dt = Efterfrågan i kvartal t (parametervärde).

Rt = Produktion på ordinarie arbetstid i kvartal t.

Ot = Produktion på övertid i kvartal t.

St = Produktion hos kontaktstillverkaren (lego) i kvartal t.

It = lagernivå i slutet av period t (enh.).

I0 = 300

Linjär programmering

Flerperiodiska modeller

(27)

Målfunktion (Min tillverkningskostnaden):

Min 20R1+20R2+20R3+20R4+25O1+25O2+25O3+25O4+ 28S1+28S2+28S3+28S4+3I1+3I2+3I3+3I4

Linjär programmering

Flerperiodiska modeller

(28)

Restriktioner:

I0 = 300

I0 + R1 + O1 + S1 - I1 = 900 I1 + R2 + O2 + S2 – I2 = 1500 I2 + R3 + O3 + S3 – I3 = 1600 I3 + R4 + O4 + S4 – I4 = 3000

R1 < 1000 R2 < 1200 R3 < 1300 R4 < 1300

Restriktioner:

O1 < 100 O2 < 150 O3 < 200 04 < 200

S1 < 500 S2 < 500 S3 < 500 S4 < 500

Linjär programmering

Flerperiodiska modeller

(29)

Heltalsprogrammering

Binära heltal

 Binära heltal

En variabel Xi är en binär heltalsvariabel om den endast kan anta värdet 0 eller 1.

Särskilt användbar när val mellan olika alternativ och när fasta kostnader modelleras.

Blandad heltalprogrammering är LP-modell där både kontinuerliga variabler och heltalsvariabler finns med.

Definieras särskilt i mjukvaran (LINGO) som används.

I Lingo: Int <variabelnamn>

(30)

Heltalsprogrammering

Bemanningsproblem

Läkare 1 Läkare 2 Läkare 3 Läkare 4 Läkare 5 Läkare 6

Specialitet 1

Specialitet 2

Specialitet 3

Specialitet 4

Specialitet 5

Specialitet 6

Ett mindre sjukhus ska bemanna läkarjouren för den kommande veckan. På sjukhuset finns sex klinker med olika specialiteter. De sex läkare som finns tillgänglig för jour-verksamheten under vecka har kompetens inom följande specialiteter.

Målet är att med hjälp av så få läkare som möjligt bemanna jouren så att alla specialiteter är representerade.

Formulera en LP-modell som löser sjukhusets planeringsproblem.

(31)

Heltalsprogrammering

Bemanningsproblem

Min L1+L2+L3+L4+L5+L6 ST

L1+L4>=1 !Specialitet 1 L1+L5>=1 !Specialitet 2 L2+L3>=1 !Specialitet 3 L1+L6>=1 !Specialitet 4 L2+L3+L6>=1 !Specialitet 5 L4>=1 !Specialitet 6 END

INT L1 INT L2 INT L3 INT L4 INT L5 INT L6

Objective value: 3.000000

Variable Value Reduced Cost L1 1.000000 1.000000 L2 0.000000 1.000000 L3 1.000000 1.000000 L4 1.000000 1.000000 L5 0.000000 1.000000 L6 0.000000 1.000000

(32)

Linjär programmering

Styckvis linjär funktion

(Kapitel 19 i L1)

(33)

Styckvis konvex linjär funktion:

Exempel kostnaden för nyanställning:

 I målfunktionen:

 Restriktioner:

t (cH1WH1t + cH2WH2t) WHt = WH1t + WH2t 0 < WH1t < WH*

0 < WH2t

Linjär programmering

Styckvis linjär funktion

References

Related documents

Om det är någon uppgift som du inte vet hur du ska lösa, kan du slå upp den sidan i boken och titta på hur en lösning kan se ut.. Vid ett blixtnedslag hör du åskan 5

Alla uppgifter i det här repetitionsavsnittet finns som lösta exempel i Beta. Intill varje uppgift står det på vilken sida du hittar exemplet. Om det är någon uppgift som du inte

5 Diagrammet visar antalet elever på Persboskolan från 2015 till 2020.. Hur stor andel valde choklad

Intill varje uppgift står det på vilken sida du hittar exemplet?. Lova hoppade 15

Av de tio siffrorna kan vi bilda hur många tal som

We recommend to the Annual General Meeting of shareholders that the income statements and balance sheets of the Parent Company and the Group be adopted, that the profit for the

Styrelsen för AarhusKarlshamn fastställde vid sitt sam- manträde den 28 februari 2006 hur koncernens verk- samhet ska delas in i primära och sekundära segment. Koncernens verksamhet

Through its strong technology platform and in just a short space of time, BioInvent has developed a portfolio of innova- tive projects in clinical and late preclinical