Inleiding tot Lineair Programmeren (powerpoint-ppt)

Report
Inleiding tot Lineair
Programmeren
Tom De Decker
27/11/2009
Inhoud
•
•
•
•
•
•
•
Situering
Voorbeeld van een LP-probleem
Grafische benadering
Mathematische benadering
Conclusie
Meer informatie
Begrippen
Situering
Lineaire programmering (LP) is een methode die
gebruikt wordt voor het optimaliseren van functies,
onder bepaalde voorwaarden.
LP-problemen komen vaak voor bij het opmaken
van productieplannen (zie voorbeeld) maar er zijn
tal van andere problemen die via LP aangepakt
kunnen worden.
Lineaire programmering is een deel van het
vakgebied dat “Operationeel Onderzoek” genoemd
wordt. Dit studiegebied houdt zich bezig met het
onderzoeken van complexe vraagstukken die zich
situeren binnen de sfeer van productie en logistiek.
Situering
Operationeel onderzoek is een heel specifiek vakgebied.
Het komt niet aan bod in het vak economie uit het
secundair onderwijs, en zelfs op de universiteit krijgen
slechts een kleine groep mensen (de richting
handelsingenieur) deze cursus. Het is dus perfect mogelijk
dat je een “economie-student” aanspreekt en dat hij niet
weet waarover je het hebt. Hou hier rekening mee bij het
opzoeken van informatie, en weet ook dat slechts een
kleine groep mensen hier later effectief mee in contact gaat
komen.
Dat gezegd zijnde is de basis niet erg moeilijk om te
begrijpen. LP-problemen zijn gelinkt aan
“functieonderzoek” in de wiskunde en vaak worden
matrices gebruikt bij het oplossen van de problemen.
Voorbeeld v/e LP-probleem
Stel je een fabriek voor die 2 soorten
goederen produceert: kasten en bureaus.
Beide producten kunnen gemaakt worden
van ongeveer dezelfde grondstoffen (hout,
schroeven, metaal,…), maar voor elk
product moeten verschillende handelingen
gebeuren om het te maken. Deze
handelingen gebeuren via 2 machines, die
we machine A en machine B zullen noemen.
Voorbeeld v/e LP-probleem
• Om één kast te maken moet men 3u bezig
zijn met machine A en 4u met machine
B.
Eindproduct
Grondstoffen
Machine A
Machine B
(3 uur)
(4 uur)
Machine A
Machine B
(5 uur)
(2 uur)
• Om één bureau te maken moet men 5u
bezig zijn met machine A en 2u met
Eindproduct
machine B.
Grondstoffen
Voorbeeld v/e LP-probleem
Het bedrijf verkoopt deze producten tegen
een vaste winstmarge. Op elke kast die
verkocht wordt maakt het bedrijf 2 euro
winst, op elke bureau die men verkoopt
wordt 3 euro winst gemaakt. Het hoofddoel
van het bedrijf is, natuurlijk, het realiseren
van een maximale winst.
= 2 euro
= 3 euro
Voorbeeld v/e LP-probleem
Er is slechts één probleem: het aantal uren dat
een machine wekelijks gebruikt kan worden is
beperkt. Machine A is slechts 30 uur per week
beschikbaar, machine B slechts 20 uur.
Nu is de vraag: hoeveel kasten en hoeveel
bureaus moet de onderneming per week
produceren om een maximale winst te behalen,
zonder het het maximaal aantal machineuren
voor elke machine te overschrijden?
Voorbeeld v/e LP-probleem
Even samenvatten:
-2 producten (kasten, bureaus)
-2 machines (A, B)
-Winstmarge kasten = 2 euro
-Winstmarge bureaus = 3 euro
-Maximaal gebruik machine A = 30u/week
-Maximaal gebruik machine B = 20u/week
Gevraagd: bepaal optimale productie voor kasten
en bureaus zonder de machines te overbelasten.
Voorbeeld v/e LP-probleem
Eerst kiezen we onze variabelen. Vermits
gevraagd wordt hoeveel kasten en hoeveel
bureaus geproduceerd moeten worden
zullen we deze (nu nog onbekende)
aantallen als variabelen kiezen.
x = aantal geproduceerde kasten
y = aantal geproduceerde bureaus
x
y
Voorbeeld v/e LP-probleem
Nu kunnen we onze winstfunctie opstellen.
Elke kast brengt 2 euro op. De totale winst die we
kunnen halen uit de verkoop van kasten zal dus
(prijs * hoeveelheid) 2 * x bedragen.
Elk bureau brengt 3 euro op. De totale winst die
we kunnen halen uit de verkoop van bureaus zal
dus (prijs * hoeveelheid) 3 * y bedragen.
De totale winst (W) op het einde van de week zal
dan de som zijn van deze 2 bedragen:
W = 2*x + 3*y
Voorbeeld v/e LP-probleem
Vervolgens kijken we naar onze beperkingen.
Machine A is slechts 30 uur per week beschikbaar.
Om 1 kast te maken hebben we 3 uur machinetijd
nodig van machine A (zie gegevens).
Om 1 bureau te maken hebben we 5 uur
machinetijd van nodig van machine A (zie
gegevens).
Voorbeeld v/e LP-probleem
Het aantal uren per week dat we machine A
gebruiken om kasten te maken =
3 uur per kast * aantal kasten = 3*x
Het aantal uren per week dat we machine A
gebruiken om bureaus te maken =
5 uur per bureau * aantal bureaus = 5*y
De som van deze 2 tijden moet lager zijn
dan 30 om de machine niet te overbelasten:
3*x + 5*y <= 30
Voorbeeld v/e LP-probleem
We maken dezelfde redenering voor machine B.
Machine B is slechts 20 uur per week beschikbaar.
Om 1 kast te maken hebben we 4 uur machinetijd
nodig van machine B (zie gegevens).
Om 1 bureau te maken hebben we 2 uur
machinetijd van nodig van machine B (zie
gegevens).
Voorbeeld v/e LP-probleem
Het aantal uren per week dat we machine B
gebruiken om kasten te maken =
4 uur per kast * aantal kasten = 4*x
Het aantal uren per week dat we machine B
gebruiken om bureaus te maken =
2 uur per bureau * aantal bureaus = 2*y
De som van deze 2 tijden moet lager zijn
dan 20 om de machine niet te overbelasten:
4*x + 2*y <= 20
Voorbeeld v/e LP-probleem
Verdere beperkingen:
Het aantal geproduceerde kasten kan niet negatief
zijn: x >= 0
Het aantal geproduceerde bureaus kan niet
negatief zijn: y >= 0
Deze laatste 2 beperkingen lijken banaal, maar ze
zijn belangrijk om een juiste wiskundige vertaling
te geven van je probleem.
Voorbeeld v/e LP-probleem
We kunnen onze probleemstelling nu
wiskundig herformuleren. Herinner je de
vraagstelling:
“Hoeveel kasten en hoeveel bureaus
moet de onderneming per week
produceren om een maximale winst te
behalen, zonder het het maximaal aantal
machineuren voor elke machine te
overschrijden?”
Voorbeeld v/e LP-probleem
“hoeveel kasten en hoeveel bureaus?”
Bepaal x en y (x >= 0, y >= 0)
“een maximale winst realiseren”
 zodat W = 2*x + 3*y maximaal is
“ zonder het maximaal aantal machine-uren
te overschrijden”
En zodat 3*x + 5*y <= 30
en 4*x + 2*y <= 20
Voorbeeld v/e LP-probleem
Het LP-probleem:
Dit noemen we de objectieve functie, soms ook wel
“doelfunctie” genoemd. In dit geval wordt gevraagd
om deze te maximaliseren, maar je kan ook
minimaliserings-vraagstukken hebben, bvb. wanneer
je kosten krijgt ipv winstmarges (je optimum is dan het
punt met de laagste totale kosten).
Max(W = 2*x + 3*y)
s.t. 3*x + 5*y <= 30
4*x + 2*y <= 20
x >= 0
y >= 0
Dit zijn de restricties. “s.t.” staat voor “subject
to”, wat Engels is voor “onder behoud van”.
Bij een lineair programmeringsprobleem zijn
zowel de restricties als de objectieve functie
lineaire functies (d.w.z., functies van de eerste
graad). Als dit niet het geval is, bvb. wanneer
de objectieve functie een kwadratische
vergelijking is, dan spreekt men van een nietlineair programmeringsprobleem (NLP).
Grafische benadering
We kunnen ons LP-probleem grafisch voorstellen.
Op de horizontale as zetten we het aantal
geproduceerde kasten (variabele x), op de
verticale as het aantal geproduceerde bureaus
(variabele y). Omdat x en y groter dan 0 moeten
zijn (zie beperkingen) volstaat het om enkel het
eerste kwadrant te tekenen.
Elk punt in de grafiek stelt een combinatie voor
van kasten en bureaus die geproduceerd kunnen
worden.
Grafische benadering
y
12
11
10
9
8
7
In dit punt worden 3
kasten en 4 bureaus
geproduceerd
6
5
4
3
2
1
0
1
2
3
4
5
6
7
8
9
10
11
12
x
Grafische benadering
We beginnen met onze beperkingen aan te
brengen op de grafiek. De ongelijkheden van de
restricties stellen in de grafiek halfvlakken voor.
Voor de duidelijkheid tekenen we enkel de grenzen
van deze halfvlakken (vervang de ongelijkheden
door een gelijkheid).
Restricties:
Berperking machine A: 3*x + 5*y <= 30
Berperking machine B: 4*x + 2*y <= 20
Negatieve productie onmogelijk: x >= 0; y >= 0
Grafische benadering
y
12
Restrictie machine A:
3*x + 5*y = 30
11
Restrictie machine B:
4*x + 2*y = 20
10
9
Deze combinaties kunnen
niet worden geproduceerd,
men zou immers machine A
B
overbelasten.
8
7
6
5
4
3
2
1
0
Enkel de
combinaties in
dit vlak kunnen
geproduceerd
worden
1
2
3
4
5
6
7
8
9
10
11
12
x
Grafische benadering
Wat met de objectieve functie (=de winst)?
W  2* x  3* y
 3* y  W - 2* x
-2* x  W
2
W
y
 *x 
3
3
3
Die is dus een dalende rechte met als
richtingscoëfficiënt de verhouding tussen de prijzen.
De exacte ligging van de rechte kunnen we echter
pas bepalen wanneer we winst, en dus de optimale
combinatie van x en y, bepaald hebben.
Grafische benadering
y
12
Restrictie machine A:
3*x + 5*y = 30
11
Restrictie machine B:
4*x + 2*y = 20
10
9
8
7
6
5
4
3
2
1
0
1
2
3
4
5
6
7
8
9
10
11
12
x
Grafische benadering
Enkel de punten uit het groene vlak komen
dus in aanmerking als oplossing voor ons
LP-probleem…maar dat zijn er nog steeds
oneindig veel natuurlijk!
We kunnen echter nog een groot aantal
oplossingen uitsluiten.
Grafische benadering
y
12
Restrictie machine A:
3*x + 5*y = 30
11
Restrictie machine B:
4*x + 2*y = 20
10
9
We kunnen echter meer winst maken
door één kast of één bureau extra te
Stel dat we ervoor kiezen om 2 kasten
produceren, zonder daarbij de
en 3 bureaus te produceren.
restricties te schenden!
De winst (W) is dan
2*2 + 3*4
18 euro
2 W(2,4)
euro * 2= kasten
+ 3=euro
* 3 bureaus
= W(3,3)
13 euro= 2*3 + 3*3 = 14 euro
8
7
6
5
4
3
2
1
0
1
2
3
4
5
6
7
8
9
10
11
12
x
Grafische benadering
Door de voorgaande redenering steeds te
herhalen bekom je dat de punten binnen de
lijnen van de beperkingen steeds verbeterd
kunnen worden, tot enkel de lijnen van de
restricties zelf overblijven.
Grafische benadering
y
12
Restrictie machine A:
3*x + 5*y = 30
11
Restrictie machine B:
4*x + 2*y = 20
10
9
De optimale oplossing ligt ergens op
deze rode lijn…maar dat zijn nog
steeds oneindig veel punten .
8
7
6
5
4
3
2
1
0
1
2
3
4
5
6
7
8
9
10
11
12
x
Grafische benadering
Even terzijde…
Als je in “volledige” kasten en bureaus gaat rekenen dan zou je kunnen
zeggen dat enkel de gehele getallen op de rode lijn in aanmerking
komen als oplossing. Hoe kan je immers (bvb.) 3,5 kasten en 3
bureaus produceren?
Bij lineair programmeren gaan we er echter vanuit dat de variabelen
(=producten) oneindig vaak deelbaar, dus reële getallen, zijn. Dit omdat
we anders met discontinue functies moeten werken wanneer we het
probleem wiskundig proberen oplossen. Wanneer oplossingen enkel
als gehele getallen mogen voorkomen, spreken we van “Integer
Programming” (IP). IP-problemen zijn, door de discontinue natuur van
de functies, bijzonder lastig om op te lossen.
Om toch met deelbare getallen te kunnen werken kan je stellen dat we
in het voorbeeld spreken over “duizenden” kasten en bureaus. Een
oplossing van 3,5 kasten in het voorbeeld is staat dan eigenlijk gelijk
aan 3500 te produceren kasten.
Grafische benadering
y
12
Restrictie machine A:
3*x + 5*y = 30
Laten
we
de objectieve
Dit
is een
rechte
met
Hoenu
verder
de
objectievefunctie
functie erbij
van de oorsprong
ligt, hoe hoger
halen…
richtingscoëfficiënt
(-2/3).
11
Restrictie machine B:
4*x + 2*y = 20
de winst.
10
9
Winstfunctie:
W = 2*x + 3*y
8
7
6
5
4
3
2
1
0
1
2
3
4
5
6
7
8
9
10
11
12
x
Grafische benadering
Het optimale punt kan gevonden worden
door de objectieve functie evenwijdig te
verschuiven naar de oorsprong. Het “verste”
snijpunt met de rode lijn (en dus ook met de
oplossingenruimte) zal dan de beste
toegelaten combinatie zijn die de
onderneming kan produceren.
Grafische benadering
y
12
Restrictie machine A:
3*x + 5*y = 30
11
Restrictie machine B:
4*x + 2*y = 20
10
9
8
Winstfunctie:
W = 2*x + 3*y
De oplossing!
7
6
5
4
3
2
1
0
1
2
3
4
5
6
7
8
9
10
11
12
x
Grafische benadering
De oplossing ligt dus op het snijpunt van de
beide restricties. Dit geen geen toeval.
Bij LP-problemen zal de oplossingenruimte
steeds bestaan uit een convexe veelhoek
(het groene vlak). De optimale oplossing zal
zich steeds op één van de hoekpunten
bevinden. Hou echter altijd rekening met al
je beperkingen!
Grafische benadering
Stel dat kasten slechts 1 euro winst zouden
opleveren en dat bureaus 4 euro winst
zouden opbrengen. De andere gegevens
blijven dezelfde.
De winstfunctie wordt dat:
W = 1*x + 4*y
Grafische benadering
y
12
De
oplossing ligt
Deoptimale
oplossingenruimte
is nu op een ander
hoekpunt
vandezelfde.
de oplossingenruimte.
nog steeds
Herinner je echter dat we bij de beperkingen
tevens x >= 0 vermeld hadden opdat we
geen “negatieve productie” konden
bekomen? x = 0 is de vergelijking van de yas!
11
10
9
8
Restrictie machine A:
3*x + 5*y = 30
Restrictie machine B:
4*x + 2*y = 20
Winstfunctie:
W = 1*x + 4*y
Het nieuwe optimum ligt dus opnieuw op het
snijpunt van twee restricties – die van
machine A en die die zegt dat er minstens 0
kasten geproduceerd moeten worden.
7
6
5
4
3
2
1
0
1
2
3
4
5
6
7
8
9
10
11
12
x
Mathematische benadering
Uit voorgaande bespreking hebben we besloten dat de
optimale oplossing van een LP-probleem zich steeds op
een hoekpunt van de oplossingenruimte zal bevinden.
Deze oplossingenruimte (het groene vlak op de figuren)
wordt ook wel de “simplex” genoemd.
Om de exacte combinatie te vinden die een maximale winst
oplevert zullen we dus alle hoekpunten van de simplex
moeten vinden en vervolgens voor elk van deze
combinaties de waarde van de objectieve functie (de winst
uit het voorbeeld) berekenen. De combinatie met de
hoogste objectieve functie-waarde zal dan de optimale
oplossing van ons probleem vormen.
Mathematische benadering
Er bestaat een algoritme dat het zoeken van deze optimale
oplossing mogelijk maakt: de simplex-methode. Deze is
gebasseerd op Gauss-transformaties van matrices en het
zogenaamd “pivoteren”.
Het voordeel van de simplex-methode is dat ze altijd
toepasbaar is (ook wanneer we met meer dan 3 variabelen
werken, waardoor we het probleem niet meer grafisch
kunnen voorstellen!) en dat men gegarandeerd de optimale
oplossing zal vinden – daar waar andere methoden soms
enkele een “goede” oplossing zullen vinden en niet de
beste.
Het nadeel is dat ook eenvoudige problemen soms erg veel
werk vergen om op te lossen.
Mathematische benadering
Herinner je ons voorbeeld. De probleemstelling hadden we
wiskundig als volgt geformuleerd:
Max(W = 2*x + 3*y)
s.t.
3*x + 5*y <= 30
4*x + 2*y <= 20
x >= 0; y >= 0
We gaan deze set van vergelijkingen omzetten naar een
zogenaamde “standaardvorm”. Hierbij zullen we proberen
om de beperkingen om te zetten naar gelijkheden, in plaats
van ongelijkheden.
Mathematische benadering
De objectieve functie zetten we om naar een
vergelijking waarbij het rechterlid gelijk is
aan nul.
W = 2*x + 3*y
<=> W – 2*x – 3*y = 0
Mathematische benadering
Om de restricties om te zetten naar gelijkheden
zullen we wat meer kunst- en vliegwerk nodig
hebben. We zullen hiervoor enkele nieuwe
variabelen moeten invoeren, die we “slackvariabelen” zullen noemen.
“Slack-variabelen” duiden in feite aan hoever een
bepaalde oplossing van de beperking verwijderd
is. Ons voorbeeld zal dit verduidelijken.
Mathematische benadering
Bekijk de beperking van machine A:
3*x + 5*y <= 30
Het linkerlid van de ongelijkheid zal dus steeds kleiner
moeten zijn dan 30. Hoeveel kleiner? Laat ons deze
waarde (de zogenoemde “slack”, wat Engels is voor
“speling”) voorstellen door een variabele sa.
sa is dus de hoeveelheid die je extra nodig hebt opdat het
linkerlid (dat steeds kleiner of gelijk aan 30 moet zijn) gelijk
te kunnen stellen aan 30. We kunnen dan de beperking
van machine A omzetten naar:
sa + 3*x + 5*y = 30
Merk op dat ya steeds >= 0 zal moeten zijn.
Mathematische benadering
We doen hetzelfde voor de beperking van machine B:
4*x + 2*y <= 20
<=> sb + 4*x + 2*y = 20
met sb >=0.
De andere beperkingen (niet-negatief zijn van x, y, sa en sb
hoeven niet omgezet te worden naar gelijkheden. De
simplex-methode veronderstelt steeds dat alle variabelen
(ook slack-variabelen) groter of gelijk aan nul moeten zijn.
Wanneer je probleemstelling zegt dat een variabele kleiner
dan nul zal moeten zijn, dan kan je dit oplossen door overal
het tegengestelde te nemen van deze variabele. Als A <= 0
moet zijn, dat moet immers altijd gelden dat –A >= 0 !
Mathematische benadering
We hebben nu de standaardvorm van ons
probleem:
Max W – 2*x – 3*y + 0*sa + 0*sb = 0
s.t.
3*x + 5*y + 1*sa + 0*sb = 30
4*x + 2*y + 0*sa + 1*sb = 20
x, y, sa, sb >= 0.
We kunnen dit omzetten naar een matrixvorm. Dit
noemen we de “simplex-tableau”.
Mathematische benadering
1e simplex-tableau
Basis
W
x
In de kolommen komen de coëfficiënten
van de verschillende variabelen. De
rechterleden van de vergelijkingen komen
In de
eerste
komen
coëfficiënten
uiterst
rechts
te rij
staan.
Watdedie
“basis” wil
van
de
objectieve
functie:
zeggen, daar komen we straks toe.
1*W – 2*x – 3*y + 0*sa + 0*sb = 0
In de tweede rij komen de coëfficiënten
y van de eerste
sa restrictie:sb
RL
0*W + 3*x + 5*y + 1*sa + 0*sb = 30
W
1
-2
-3
sa
0
3
sb
0
4
In de derde rij komen de coëfficiënten
van de tweede restrictie:
0*W + 4*x + 2*y + 0*sa + 1*sb = 20
0
0
0
5
1
0
30
2
0
1
20
Mathematische benadering
De simplex-methode bestaat uit 5 stappen:
1)
2)
3)
4)
5)
Kies een basisoplossing
Kies een variabele om in de basis op te nemen
Bepaal het pivot-element en de pivot-rij
Veeg de kolom van de gekozen variabele leeg
Herhaal stappen 2 t.e.m. 4 tot de optimale oplossing
gevonden is.
In wat volgt zullen we deze stappen één voor één
doorlopen en verduidelijken.
Mathematische benadering
1) Kies een basisoplossing
Dit is een willekeurige startoplossing die de restricties niet schendt.
In ons voorbeeld kunnen we onmiddelijk een eenvoudige oplossing
vinden: x = 0 en y = 0. Er is dan geen productie en de waarde van de
objectieve functie (de winst) is dan gelijk aan 0. Ook zullen de
machines zeker niet overbelast worden. Door de manier waarop we
onze simplex-tableau opgesteld hebben staat deze startoplossing
meteen klaar.
De eerste kolom (basis) toont de variabelen die “in de basis
opgenomen zijn”. In dit geval zijn dit enkel de slackvariabelen.
Variabelen die geen deel uitmaken van de basis worden dan
verondersteld 0 te zijn. Aangezien x en y gelijk zijn aan nul zal er veel
ruimte zijn tussen de huidige oplossing en de beperkingen (de
machineuren die we mogen gebruiken). Hoeveel ruimte? Dat kunnen
we aflezen in de rechterkolom (RL) van de tableau.
Mathematische benadering
1e simplex-tableau
Basis
W
x
y
sa
sb
RL
W
1
-2
-3
0
0
0
sa
0
3
5
1
0
30
sb
0
4
2
0
1
20
In onze startoplossing zijn x en
Deywaarde
gelijk
De coëfficiënten
van de basisvariabelen
van de
kan je steeds in de
aan 0, wat betekent dat ze geen
“RL”deel
kolom
variabelen
aflezen.die
Zoals
deelde
uitmaken
tableau er nu staat zitten we
uitmaken van de basis. Enkeldus
de bij de
vanoplossing
de basis xvormen
= 0, y =samen
0 (want beide niet in basis),
slackvariabelen maken dus deel
sa =uit
30van
en
steeds
sb = een
20. Dit
eenheidsmatrix
is logisch, want
in als de productie 0
de basis.
is hebben
de we
tableau.
al onze machine-uren over!
Mathematische benadering
2) Kies een variabele om in de basis op te nemen
Vervolgens kiezen we een variabele waarvan we de waarde willen
wijzigen.
Logischerwijs zal je eerst meer gaan produceren van het product dat
het meeste opbrengt (in dit geval bureaus, variabele y). In algemene
termen kies je dus de variabele die de grootste (positieve) invloed heeft
op je objectieve functie. In de tableau herken je deze variabele door in
de rij van de doelfunctie te kijken welke variabele de meest negatieve
coëfficiënt heeft.
Klinkt dit onlogisch? Bedenk je dan dat we bij het omzetten van onze
vergelijkingen naar de standaardvorm de termen van x en y van lid
hebben moeten verwisselen in de objectieve functie.
Wanneer alle coëfficiënten in de rij van de doelfunctie positief zijn, dan
hebben we onze optimale oplossing gevonden. We kunnen deze dan
aflezen uit de kolommen “basis” en “RL”.
Mathematische benadering
1e simplex-tableau
In de rij van de doelfunctie heeft variabele
y de meest negatieve coëfficiënt. We
kiezen dus om variabele y op te nemen in
de basis.
Basis
W
x
y
sa
sb
RL
W
1
-2
-3
0
0
0
sa
0
3
5
1
0
30
sb
0
4
2
0
1
20
Mathematische benadering
3) Bepaal het pivot-element en de pivot-rij
Nu we weten welke variabele we willen opnemen in de basis, zullen we
moeten proberen om met de cöefficiënten van de nieuwe
basisvariabelen een eenheidsmatrix te vormen in de simplex-tableau.
Daartoe zullen we door elementaire rij-bewerkingen toe te passen op
de kolom van de gekozen variabele proberen schoonvegen. Maar, met
welke rij zullen we deze bewerkingen dan uitvoeren?
Om deze rij te bepalen delen we het RL van elke rij door de coëfficiënt
van de in stap 2 gekozen variabele. De rij waar de uitkomst het laagste
is, zal dan gebruikt worden om de kolom in kwestie schoon te vegen.
We noemen deze rij de “pivot-rij”, en de coëfficiënt van de in de basis
op te nemen variabele uit die rij wordt het “pivot-element” genoemd.
Mathematische benadering
1e simplex-tableau
In stap 2 kozen we ervoor
om variabele y in de basis
op te nemen.
Basis
W
x
y
sa
sb
RL
W
1
-2
-3
0
0
0
sa
0
3
5
1
0
30
0
4
2
0
1
20
sb
Omdat 6 kleiner is dan 10 kiezen we rij 2 als pivot-rij. De coëfficiënt
van y in die rij (=5) wordt dan het pivot-element.
We delen de waarde van het RL uit de 2e rij door de coëfficënt van
variabele y uit dezelfde rij: 30 / 5 = 6
We doen hetzelfde voor de 3e rij: 20 / 2 = 10
Mathematische benadering
4) Veeg de kolom van de gekozen variabele leeg
Dit wil zeggen dat we in de kolom van de gekozen variabele:
- De coëfficiënten van de niet-pivot-rijen op nul moeten krijgen door bij
deze rijen een veelvoud van de pivotrij op te tellen.
- De pivot-rij moeten delen door het pivot-element.
Door deze transformaties door te voeren zal de kolom van de gekozen
variabele enkel nog uit nullen bestaan, behalve op de plaats van het
pivot-element, waar een één zal komen te staan.
De variabele die in de pivot-rij in de basis zat, zal door deze
transformaties de basis verlaten. De variabele die we in stap 2 gekozen
hebben zal zijn plaats innemen in de basis. We kunnen dan een
nieuwe oplossing aflezen uit de simplex-tableau.
Mathematische benadering
1e simplex-tableau
Basis
W
x
W
1
-2
sa
0
sb
0
y
Om de coëfficiënt van y in rij 1 op nul te
krijgen, zullen we rij 2, vermenigvuldigd
met (3/5), bij rij 1 moeten optellen. (want:
-3 + 5*(3/5) = 0)
sa
sb
RL
-3
0
0
0
3
5
1
0
30
4
2
0
1
20
In stap 3 kozen we de 2e rij als pivot-rij,
met 5 als pivot-element.
Mathematische benadering
Rij 1:
1
-2
-3
0
0
0
+ (3/5) * Rij 2
(3/5)*
0
3
5
1
0
30
=
1
-1/5
0
3/5
0
18
Mathematische benadering
1e simplex-tableau
Basis
W
x
y
sa
sb
RL
W
1
-1/5
0
3/5
0
18
sa
0
3
5
1
0
30
sb
0
4
2
0
1
20
Om de coëfficiënt van y in rij 3 op nul te
krijgen, zullen we rij 2, vermenigvuldigd
met (-2/5), bij rij 3 moeten optellen.
(want: 2 + 5*(-2/5) = 0)
Mathematische benadering
Rij 3:
0
4
2
0
1
20
+ (-2/5) * Rij 2
(-2/5)*
0
3
5
1
0
30
=
0
14/5
0
-2/5
1
8
Mathematische benadering
1e simplex-tableau
Basis
W
x
y
sa
sb
RL
W
1
-1/5
0
3/5
0
18
sa
0
3
5
sb
0
14/5
0
Om de coëfficiënt van y in rij 2 op één
te krijgen, zullen we rij 2 moeten delen
door het pivot-element (want: 5/5 = 1).
1
0
30
-2/5
1
8
Mathematische benadering
Rij 2 / 5:
(1/5)*
0
3
5
1
0
30
=
0
3/5
1
1/5
0
6
Mathematische benadering
2e simplex-tableau
Basis
W
x
y
sa
sb
RL
W
1
-1/5
0
3/5
0
18
y
0
3/5
1
1/5
0
6
sb
0
14/5
0
-2/5
1
8
Variabele y
vervangt variabele
sa inmet
de de
basis.
De kolom
coëfficiënten van
Door
sahet
kanuitvoeren
geen deel
van deze transformaties vormen de
We bekomen
een
nieuwe
oplossing
van
ons
LP-probleem:
meer uitmaken van een eenheidsmatrix.
kolommen met de coëfficiënten van y en sb nu samen
x = 0 (niet in de basis), y = 6, sa = 0 (niet
ineenheidsmatrix.
de basis), sb = 8.
een
De waarde van de objectieve functie bedraagt 18 (aflezen in RL).
Mathematische benadering
Even terug naar de grafiek…
12
y
Restrictie machine A:
3*x + 5*y = 30
11
De slack-variabele sa
Na één iteratie
van
verdween
dan uit
de
de
simplex-methode
basis: ze werd nul
bekwamen
omdat
we inwe
dit een
punt
oplossing
van
reeds maximaal
x = 0, y maken
= 6. van
gebruik
machine A.
Restrictie machine B:
4*x + 2*y = 20
10
9
Winstfunctie:
W = 2*x + 3*y
8
7
6
5
De slack was dan
De basisoplossing
maximaal
(sa = 30, sb
van we
onze
simplex= 20),
hadden
tableau
was
immers
al onze
x = 0, y = 0. nog
machine-uren
over.
4
3
2
1
0
x
1
2
3
4
5
6
7
8
9
10
11
12
Mathematische benadering
Via de simplex-methode zijn we dus “versprongen”
van de oplossing (0,0), op het snijpunt van
restricties x >= 0 en y >= 0, naar de oplossing
(0,6), op het snijpunt van restricties x >= 0 en 3*x +
5*x <= 30 (machine A).
Door, vertrekkende van onze nieuwe
simplextableau, stappen 2 t.e.m. 4 van de
methode te herhalen, kunnen we verder “springen”
naar een nieuwe (betere?) oplossing.
Mathematische benadering
2e simplex-tableau
Basis
W
x
y
sa
sb
RL
W
1
-1/5
0
3/5
0
18
0
3/5
1
1/5
0
6
0
14/5
0
-2/5
1
8
y
sb
We kiezen variabele x, want die heeft
de meest negatieve coëfficiënt in de
rij van de objectieve functie.
2) Kies een variabele om in de basis op te nemen.
Welke zou jij kiezen?
Mathematische benadering
2e simplex-tableau
Basis
W
x
y
sa
W
1
-1/5
0
3/5
We kiezen de derde rij omdat de waarde van
het RL, gedeeld door de coëfficiënt van x in
deze rij, hier het laagst is.
sb
RL
0
18
6/(3/5) = 10
y
0
3/5
1
1/5
0
6
sb
0
14/5
0
-2/5
1
8
3) Bepaal het pivot-element en de pivot-rij.
Welke rij zou jij nemen?
8/(14/5) = 40/14
= 2,86
Mathematische benadering
2e simplex-tableau
Basis
W
W
1
x
-1/5
y
0
3/5
sb
0
14/5
Rij 1 + (1/14)*Rij 3
(want: -1/5 + (1/14)*(14/5) = 0)
y
sb
RL
Rij 2 + (-3/14)*Rij 3
(want: 3/5 + (-3/14)*(14/5) = 0)
0
18
Rij 3*(5/14)
(want: (14/5)*(5/14) = 1)
0
sa
3/5
1
1/5
0
6
0
-2/5
1
8
4) Veeg de kolom van de gekozen variabele leeg
Welke transformaties moet je hiervoor doorvoeren?
Mathematische benadering
Rij 1:
1
-1/5
0
3/5
0
18
1
8
+ (1/14) * Rij 3
(1/14)*
0
14/5
0
-2/5
=
1
0
0
0,57
0,07 18,57
Mathematische benadering
Rij 2:
0
3/5
1
1/5
0
6
1
8
+ (-3/14) * Rij 3
(-3/14)*
0
14/5
0
-2/5
=
0
0
1
0,29 -0,21 4,29
Mathematische benadering
Rij 3 * 5/14:
(5/14)*
0
14/5
0
-2/5
=
0
1
0
-0,14 0,36
1
8
2,86
Mathematische benadering
3e simplex-tableau
Basis
W
x
y
sa
W
1
0
0
0,57
y
0
0
1
0,29 -0,21 4,29
x
0
1
0
-0,14 0,36
Variable sb heeft plaats moeten maken in
de basis voor variabele x. Variabele x en
y vormen samen een eenheidsmatrix. Ze
maken nu beide deel uit van de basis.
sb
RL
0,07 18,57
2,86
We kunnen de oplossing waarin we ons nu
bevinden aflezen in de tableau:
x = 2,86
y = 4,29
De doelfunctie heeft een waarde van 18,57.
Mathematische benadering
Kunnen we deze oplossing nog verbeteren?
Basis
W
x
y
sa
sb
W
1
0
0
0,57
y
0
0
1
0,29 -0,21 4,29
x
0
1
0
-0,14 0,36
0,07 18,57
Geen enkele van de coëfficiënten in de rij van de
objectieve functie heeft nog een negatieve
waarde. We kunnen dus geen verbetering van de
waarde van de doelfunctie meer bekomen. We
hebben (eindelijk) de optimale oplossing van ons
LP-probleem gevonden!
2) Kies een variabele om in de basis op te nemen.
Welke zou jij kiezen?
RL
2,86
Mathematische benadering
De gevonden oplossing is: x = 2,86 ; y = 4,29.
De waarde van de doelfunctie die met deze oplossing
overeen stemt is 18,57.
We moeten dus 2,86 (kan je ook bekijken als 2860) kasten
en 4,29 (of 4290) bureaus produceren om een maximale
winst van 18,57 (18570) euro te bereiken.
Je kan de winst ook berekenen door de gevonden waarden
voor x en y in te vullen in de doelfunctie:
2 euro * 2,86 kasten + 3 euro *4,29 bureaus = 18,59 euro
(de afwijking met de gevonden W is het gevolg van een
afrondingsfout voor de waarden van x en y).
Mathematische benadering
Vergelijk met de grafische benadering:
12
y
Restrictie machine A:
3*x + 5*y = 30
11
Restrictie machine B:
4*x + 2*y = 20
10
9
Winstfunctie:
W = 2*x + 3*y
8
x = 2,86 en y = 4,29…dat zou wel
eens kunnen kloppen!
7
6
5
4
3
2
1
0
x
1
2
3
4
5
6
7
8
9
10
11
12
Conclusie
Lineare programmering (LP) is een techniek die toelaat om
reële optimaliseringsvraagstukken wiskundig te vertalen en
aan te pakken. De techniek wordt vaak gebruikt bij het
bepalen van productiequota, maar ook bij het oplossen van
transportvraagstukken en voorraadbeheer.
LP-problemen zijn van nature uit niet eenvoudig om op te
lossen. Via het simplex-algoritme, dat gebruikt maakt van
Gauss-transformaties op de matrixvorm van het probleem,
kan men toch op (relatief) eenvoudige wijze de optimale
oplossing construeren. Waneer er slechts 2 of 3 variabelen
zijn, kan men deze oplossing ook grafisch verifiëren.
Meer informatie
•
http://www.isa.ewi.tudelft.nl/~melissen/Onderwijs/IN4142%20Operat
ions%20Research/sheets/sheets2.doc
Word-bestand over de theoretische onderbouw van de simplexmethode.
•
http://www.wisfaq.nl/top.htm?url=http://ingenieur.kahosl.be/personee
l/greet.vandenberghe/Datastructuren/LineairProgrammeren.pdf
Presentatie over lineair programmeren met enkele uitgewerkte
voorbeelden.
•
http://www.wiskundeonline.nl/LP_lees_mij_eerst.htm
Nederlandse website waarin de basis van lineair programmeren en
het gebruik van simplex-tableaus haarfijn wordt uitgelegd.
Begrippen
Bij het opzoeken van informatie zal je veel
begrippen tegen komen die niet aan bod
kwamen in deze presentatie. Wat volgt zijn
enkele beknopte definities van termen die
veel gebruikt worden in de literatuur omtrent
LP.
Begrippen
• Feasible region: de verzameling van de oplossingen die de
beperkingen niet schenden. In feite een andere naam voor “de
simplex” dus. Grafisch: het groene vlak uit het voorbeeld.
• Infeasible region: gebied met combinaties die de restricties
schenden. Grafisch: de gele vlakken uit het voorbeeld.
• Infeasible problem: wanneer een probleem niet oplosbaar is,
bijvoorbeeld omdat de restricties geen overlappend gebied hebben
met toegelaten oplossing (bvb. Als x > 5 moet zijn maar tegelijkertijd
ook < 3).
• Unbound (onbegrensd): wanneer er onvoldoende beperkingen zijn,
of wanneer de simplex niet langs alle zijden begrensd is door
restricties. De doelfunctie kan dan onbeperkt toenemen, er is geen
optimale oplossing.
Begrippen
•
Redundancy: wanneer een restrictie onnodig is omdat de simplex reeds
in een vlak ligt dat (omwille van een andere beperking) volledig omhuld
ligt door de restrictie (bvb. x < 5 én x < 3: de eerste restrictie is
redundant).
•
Dualiteit, duaal probleem: elk LP-probleem kan voorgesteld worden door
een ander (duaal) probleem met dezelfde oplossing. Bvb., een
maximaliseringsvraagstuk van de winst zou je ook kunnen opvatten als
een minimaliserings-vraagstuk van de kosten.
•
Big M: Voor sommige vraagstukken moet men in de beperkingen een
kunstmatige variabele invoeren. Opdat een gevonden oplossing
aanvaardbaar zou zijn, moet deze kunstmatige variabele gelijk zijn aan 0.
Om dit te garanderen wordt in dat geval in de doelfunctie de kunstmatige
variabele vermenigvuldigd met het getal ‘M’, wat “monstrously large
number” wil zeggen. Heb je bvb. een doelfunctie max.(x+y) en een
variabele q waarvan je wil dat deze 0 wordt, dan kan je de doelfunctie
veranderen in max.(x+y-M*q). Doordat je M zo groot veronderstelt, zal je
algoritme automatisch neigen naar een oplossing waar q = 0 is. (Voor een
voorbeeld, zie http://www.wiskundeonline.nl/LP_Big_M.htm).
Begrippen
• Schaduwprijs, shadow price: de waarde die de objectieve functie
zou stijgen wanneer het rechterlid van één van de beperkingen met
één eenheid verhoogd zou worden. In ons voorbeeld: wanneer
machine A of B één uur langer gebruikt zou mogen worden, dan zou
de verhoging van de winst die hieruit resulteert de schaduwprijs zijn
van dat ene machine-uur.

similar documents