• No results found

BESLISKUNDE 2 L.C.M. KALLENBERG UNIVERSITEIT LEIDEN

N/A
N/A
Protected

Academic year: 2021

Share "BESLISKUNDE 2 L.C.M. KALLENBERG UNIVERSITEIT LEIDEN"

Copied!
273
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

L.C.M. KALLENBERG

UNIVERSITEIT LEIDEN

(2)
(3)

Voorwoord

Dit vak is een voortzetting van het tweedejaarscollege Besliskunde 1. Een aantal andere mathe- matische beslissingsproblemen komt aan de orde en voor enkele onderwerpen uit Besliskunde 1 worden aanvullende resultaten en methoden afgeleid. Hieronder volgt een beknopte beschrijving van de onderwerpen die worden behandeld.

Hoofdstuk 1: Lineaire Optimalisering (deel 2)

Deel 1 van Lineaire Optimalisering is reeds in Besliskunde 1 besproken. In dit hoofdstuk komen andere resultaten aan de orde: implementatie aspecten, gevoeligheidsanalyse, de duale simplex methode en de primale-duale simplex methode.

Hoofdstuk 2: Geheeltallige Lineaire Optimalisering

Na een inleiding, waarin het model, formuleringen en voorbeelden worden besproken, worden diverse methoden behandeld om geheeltallige lineaire optimaliseringsproblemen op te lossen: de branch-and-bound techniek en technieken gebaseerd op sneden. Het hoofdstuk wordt afgesloten met een vrij uitgebreide bespreking van het Handelsreizigersprobleem.

Hoofdstuk 3: Niet-lineaire Optimalisering

Begonnen wordt met voorbeelden, algemene optimaliteitsvoorwaarden en eigenschappen zoals convexiteit. Daarna worden de onbeperkte en de beperkte optimalisering behandeld. Bij de on- beperkte optimalisering wordt ingegaan op ´e´endimensionale en meerdimensionale optimalisatie.

De behandeling van de beperkte optimalisering betreft zowel theorie als methoden. De the- oretische zaken zijn Lagrange multipliers, Karush-Kuhn-Tucker voorwaarden en dualiteit. De methoden die worden behandeld zijn de volgende: het algoritme van Wolfe voor kwadratische optimalisering, de methode van toelaatbare richtingen, de gereduceerde gradi¨ent methode, de gegeneraliseerde gereduceerde gradi¨ent methode en de barri`ere methode.

Hoofdstuk 4: Netwerk Optimalisering

Dit hoofdstuk behandelt kortste paden en netwerkstromen. Wat de kortste paden betreft komt aan de orde: de methoden van Dijkstra, van Bellman en Ford, en van Floyd en Warshall, het pro- bleem van de kortste gemiddelde ronde en enkele toepassingen. Bij het onderwerp netwerkstromen wordt behandeld: maximale stromen, minimale kostenstromen en toepassingen.

i

(4)

Hoofdstuk 5: Scheduling

Bij scheduling moeten taken bewerkingen op machines ondergaan. Van iedere taak is bekend op welke machines deze moet worden uitgevoerd, eventueel ook in welke volgorde, en hoe lang iedere bewerking duurt. De probleemstelling luidt: hoe deze taken te schedulen opdat een bepaalde functie ge-optimaliseerd wordt, bijv. minimaliseer het tijdstip waarop alle taken klaar zijn.

We bespreken zogenaamde open shop, job shop en flow shop problemen op ´e´en of meer machines.

Verder worden ook scheduling problemen op parallelle machines besproken. Het hoofdstuk wordt afgesloten met een bespreking van de verbanden met het Handelsreizigersprobleem.

Hoofdstuk 6: Speltheorie

In de speltheorie houdt men zich bezig met modellen die conflictsituaties beschrijven. Niet alle conflictsituaties zijn in ´e´en model te vangen. We onderscheiden bijvoorbeeld:

a. Het aantal deelnemers (twee-personen spelen of spelen met meer personen);

b. Het al dan niet geoorloofd zijn van combines (wel of niet co¨operatieve spelen);

c. Het regelen van de uitbetalingen (wel of geen nulsomspel).

De volgende onderwerpen komen aan de orde: twee-personen nulsomspelen, bi-matrix spelen en co¨operatieve spelen.

Vragen en opgaven

Het dictaat bevat 71 vragen en 90 opgaven. De oplossingen van de vragen staan in Appendix A.

College, tentamen en informatie

Het college is 4 uur per week. Het tentamen bestaat voor 50% uit het wekelijks maken van opgaven en voor 50% uit een schriftelijk tentamen. Verdere informatie over dit vak is te vinden op: www.math.leidenuniv.nl/˜kallenberg.

(5)

Inhoudsopgave

1 LINEAIRE OPTIMALISERING (deel 2) 1

1.1 Inleiding . . . 1

1.2 Implementatie aspecten . . . 2

1.2.1 Begrensde variabelen . . . 2

1.2.2 Herziene simplex methode en de productvorm van de inverse . . . 5

1.2.3 Opgaven . . . 11

1.3 Gevoeligheidsanalyse . . . 11

1.3.1 Veranderingen in ´e´en co¨effici¨ent van de doelfunctie . . . 12

1.3.2 Veranderingen in ´e´en co¨effici¨ent van het rechterlid . . . 13

1.3.3 Veranderingen in meer co¨effici¨enten van het rechterlid (of doelfunctie) . . . 13

1.3.4 Veranderingen in een kolom van een niet-basisvariabele . . . 14

1.3.5 Toevoegen van een nieuwe activiteit/variabele . . . 15

1.3.6 Parametrische programmering . . . 16

1.3.7 Opgaven . . . 20

1.4 De duale en de primale-duale simplex methode . . . 21

1.4.1 De duale simplex methode . . . 21

1.4.2 De primale-duale methode . . . 25

1.4.3 Opgaven . . . 29

2 GEHEELTALLIGE LINEAIRE OPTIMALISERING 31 2.1 Model, formuleringen en voorbeelden . . . 31

2.1.1 Model en formuleringen . . . 31

2.1.2 Voorbeelden . . . 33

2.1.3 Opgaven . . . 35

2.2 Branch-and-Bound . . . 36

2.2.1 Het generieke algoritme . . . 36

2.2.2 Behandeling van en opsplitsing in deelproblemen . . . 37

2.2.3 Opgaven . . . 40

2.3 Sneden . . . 41

2.3.1 Gomory’s fractie-snede algoritme . . . 41

2.3.2 Gomory’s snede voor gemengd geheeltallige optimalisering . . . 46 iii

(6)

2.3.3 Opgaven . . . 48

2.4 Handelsreizigersprobleem . . . 49

2.4.1 Inleiding en formuleringen . . . 49

2.4.2 Branch-and-Bound methode . . . 51

2.4.3 Heuristieken . . . 55

2.4.4 Opgaven . . . 72

3 NIET-LINEAIRE OPTIMALISERING 75 3.1 Inleiding . . . 75

3.1.1 Klassificatie van niet-lineaire optimaliseringsproblemen . . . 75

3.1.2 Voorbeelden . . . 76

3.1.3 Afgeleiden . . . 77

3.1.4 Optimaliteitsvoorwaarden . . . 79

3.1.5 Convexiteit . . . 81

3.1.6 Opgaven . . . 85

3.2 Onbeperkte optimalisering . . . 85

3.2.1 Inleiding . . . 85

3.2.2 E´endimensionale optimalisatie . . . 86

3.2.3 Meerdimensionale optimalisatie . . . 91

3.2.4 Opgaven . . . 96

3.3 Beperkte optimalisering: theorie . . . 97

3.3.1 Inleiding . . . 97

3.3.2 Lagrange multipliers bij gelijkheidsbeperkingen . . . 99

3.3.3 Karush-Kuhn-Tucker voorwaarden bij gelijkheden en ongelijkheden . . . 108

3.3.4 Fritz John voorwaarden . . . 112

3.3.5 Convexe optimalisering en dualiteit . . . 115

3.3.6 Opgaven . . . 118

3.4 Beperkte optimalisering: methoden . . . 119

3.4.1 Kwadratische optimalisering . . . 119

3.4.2 Methode van toelaatbare richtingen . . . 125

3.4.3 Gereduceerde gradi¨ent methode . . . 133

3.4.4 Gegeneraliseerde gereduceerde gradi¨ent methode . . . 136

3.4.5 Barri`ere methode . . . 139

3.4.6 Opgaven . . . 140

4 NETWERK OPTIMALISERING 143 4.1 Kortste paden . . . 143

4.1.1 Inleiding . . . 143

4.1.2 De methode van Dijkstra . . . 145

4.1.3 Methode van Bellman en Ford . . . 148

4.1.4 Methode van Floyd en Warshall . . . 150

(7)

4.1.5 De kortste gemiddelde ronde . . . 152

4.1.6 Enkele toepassingen . . . 155

4.1.7 Opgaven . . . 163

4.2 Netwerkstromen . . . 166

4.2.1 Maximale stromen . . . 166

4.2.2 Minimale kostenstromen . . . 173

4.2.3 Enkele toepassingen . . . 187

4.2.4 Opgaven . . . 190

5 SCHEDULING 195 5.1 Inleiding . . . 195

5.2 E´en machine . . . 197

5.2.1 Model A: 1 | | Lmax . . . 197

5.2.2 Model B: 1 | | Pn j=1wjCj . . . 198

5.2.3 Model C: 1 | |Pn j=1Uj . . . 199

5.3 Twee machines . . . 202

5.3.1 Model D: O2| | Cmax . . . 202

5.3.2 Model E: F2| | Cmax . . . 203

5.3.3 Model F: J2| | Cmax . . . 205

5.4 Parallelle machines . . . 207

5.5 Verbanden met het handelsreizigersprobleem . . . 214

5.5.1 Model K: 1 | sjk| Cmax . . . 214

5.5.2 Model L: Fm| no − wait | Cmax . . . 214

5.6 Opgaven . . . 215

6 SPELTHEORIE 217 6.1 Inleiding . . . 217

6.2 Tweepersonen nulsomspel . . . 218

6.3 Bi-matrix spelen . . . 221

6.4 Co¨operatieve spelen . . . 222

6.5 Opgaven . . . 233

A OPLOSSING VAN DE VRAGEN 235 A.1 Hoofdstuk 1 . . . 235

A.2 Hoofdstuk 2 . . . 239

A.3 Hoofdstuk 3 . . . 244

A.4 Hoofdstuk 4 . . . 249

A.5 Hoofdstuk 5 . . . 256

A.6 Hoofdstuk 6 . . . 258

(8)
(9)

LINEAIRE OPTIMALISERING (deel 2)

In Besliskunde 1 is het onderwerp lineaire optimalisatie reeds aan bod geweest. Het model is ge¨ıntroduceerd, een aantal resultaten uit de theorie van lineaire (on)gelijkheden is behandeld, en de dualiteit en de simplex methode zijn besproken. We gaan in dit hoofdstuk in op implemen- tatie aspecten, gevoeligheidsanalyse en we bespreken twee alternatieven voor de gewone simplex methode: de duale simplex methode en de primale-duale simplex methode.

1.1 Inleiding

In deze paragraaf herhalen we in het kort een aantal zaken uit Besliskunde 1.

De standaard formulering van het LP-probleem luidt in matrixnotatie:

max{pTx | Ax ≤ b; x ≥ 0}, waarbij p, x ∈ Rn, b ∈ Rm en A een m × n-matrix is (1.1) Met verschilvariabelen y = b − Ax krijgen we de equivalente formulering

max{pTx | Ax + y = b; x, y ≥ 0} (1.2) Bij ieder LP-probleem hoort een duaal probleem. Het duale probleem van (1.1) is

min{bTu | ATu ≥ p; u ≥ 0} (1.3)

en met verschilvariabelen v = ATu − p geeft dit de equivalente formulering

min{bTu | ATu − v = p; u, v ≥ 0} (1.4) De simplex methode is een methode om deze problemen op te lossen. De methode maakt ge- bruik van simplex tableaus, waarin de relevante informatie staat. Ieder tableau behoort bij een basismatrix B: dit is een niet-singuliere m × m-deelmatrix van het oorspronkelijke stelsel (1.2), waarvoor bovendien geldt dat B−1b ≥ 0. De overige kolommen vormen een m × n-deelmatrix N . De bijbehorende variabelen xB resp. xN heten de basisvariabelen resp. de niet-basisvariabelen.

1

(10)

Het tableau heeft de vorm

xN xB B−1b B−1N

x0 pTBB−1b dTN

waarbij dTN = pTBB−1N − pTN, en de bijbehorende oplossing luidt: xB = B−1b, xN = 0.

Het tableau bevat tevens een bijbehorende duale oplossing: uB = 0, uN = dN. Om de notatie simpel te houden, voeren we in:

b = B−1b, A= B−1N, p= pTBB−1b en d= pTBB−1N − pTN. Het stelsel is dan, tezamen met de doelfunctie, te schrijven als:



(xB)i = bi Pn

j=1aij(xN)j, i = 1, 2, . . . , m pTx = pPn

j=1dj(xN)j

(1.5)

Als dj ≥ 0 voor alle j, dan is xB = b, xN = 0 een optimale oplossing.

In het andere geval is dk< 0 voor zekere k, en kan als volgt een nieuw tableau worden gevonden.

a. Bepaal de pivotkolom, d.w.z. bepaal een k met dk< 0 (meestal k zdd. dk= minjdj).

b. Bepaal een pivotrij, d.w.z. bepaal een r met abr

rk = min{abi

ik | aik > 0}.

c. Verwissel de variabelen (xB)r en (xN)k die de pivot ark bepalen.

d. De nieuwe pivotrij, met uitzondering van het pivotelement zelf, is de oude rij gedeeld door het pivotelement.

e. De nieuwe pivotkolom, met uitzondering van het pivotelement zelf, is de oude kolom gedeeld door het tegengestelde van het pivotelement.

f. Van de elementen aij met i 6= r en/of j 6= k trekken we arja·aik rk af.

g. Vervang het pivotelement ark door zijn inverse a1 rk.

In het simplex tableau staat ook informatie over het duale probleem te lezen. Naar analogie van (1.5) moet daarvoor de j-de kolom van het simplex tableau moet gelezen worden als (de voorste kolom met b slaat op de doelfunctie):



(uN)j = dj +Pm

i=1aij(uB)i, j = 1, 2, . . . , n bTu = p+Pm

i=1bi(uB)i

(1.6)

1.2 Implementatie aspecten

1.2.1 Begrensde variabelen

Vaak zijn variabelen begrensd, zowel naar beneden als naar boven, zeg lj ≤ xj ≤ uj. Door over te gaan op de variabele x0j = xj− lj, kunnen we lj ≤ xj ≤ uj vervangen door 0 ≤ x0j ≤ uj− lj. We

(11)

kunnen dus veronderstellen dat alle ondergrenzen 0 zijn en aannemen dat begrensde variabelen van het type 0 ≤ xj ≤ uj zijn. Deze beperkingen kunnen natuurlijk op de gewone manier behandeld kunnen worden met een verschilvariabele: xj + yj = uj; xj, yj ≥ 0.

Zo’n verschilvariabele is echter niet nodig. We kunnen deze namelijk impliciet behandelen, zoals we ook de ondergrens 0 impliciet behandelden door er bij de keuze van de pivotrij op te letten dat geen enkele variabele negatief wordt. In het geval bovengrenzen aanwezig zijn hebben alle niet-basisvariabelen de waarde 0 (hun ondergrens) of de waarde uj (hun bovengrens). Zoals een niet-basisvariabele die op de ondergrens (0) staat een potenti¨ele pivotkolom is als er in de onderste rij een negatief getal staat, zo is een niet-basisvariabele xj die op zijn bovengrens (uj) staat een potenti¨ele pivotkolom als er in de onderste rij een positief getal staat, want door de waarde van deze variabele te verlagen stijgt de waarde van de doelfunctie. Door echter dan de variabele te beschouwen als xj := uj − xj hebben we weer de ’gewone’ situatie. Ook bij de keuze van de pivotrij moet rekening worden gehouden met het feit dat xj niet groter dan uj mag worden, d.w.z. voor begrensde basisvariabelen (xB)i met in de pivotkolom een negatief getal moet gelden dat

bi − aik(xN)k≤ (uB)i d.w.z. (xN)k (uB)i− bi

−aik met aik < 0.

Nadat we een pivotkolom hebben gekozen zijn er vier mogelijke gevallen:

Geval 1:

De niet-basisvariabele (xN)kvan de pivotkolom staat op zijn ondergrens en loopt tegen zijn boven- grens aan.

Deze variabele (xN)k blijft een niet-basisvariabele en komt nu op zijn bovengrens te staan. We drukken dan de vergelijkingen van het stelsel in een tableau uit in (xN)k := (uN)k− (xN)k, d.w.z.

(xB)i = bi X

j6=k

aij(xN)j− aik(xN)k= {bi − aik(uN)k} −X

j6=k

aij(xN)j+ aik {(uN)k− (xN)k}.

Voor de transformaties geldt dus:

(xN)k komt op zijn bovengrens, de pivotkolom verandert van teken en van het getransformeerde rechterlid wordt (uN)k keer de pivotkolom afgetrokken.

Geval 2:

De niet-basisvariabele (xN)k staat op zijn bovengrens en loopt tegen zijn ondergrens aan.

We drukken dan de vergelijkingen die bij het stelsel van een tableau horen uit in (xN)k, d.w.z.

(xB)i = bi X

j6=k

aij(xN)j− aik{(uN)k− (xN)k} = {bi − aik(uN)k} −X

j6=k

aij(xN)j+ aik(xN)k. Voor de transformaties geldt dus:

(xN)k komt op zijn ondergrens, de pivotkolom verandert van teken en van het getransformeerde rechterlid wordt (uN)k keer de pivotkolom afgetrokken.

Geval 3:

Een basisvariabele (xB)r loopt tegen zijn ondergrens aan.

Dit is het geval van de ’gewone’ simplex methode en we behandelen dit op de bekende manier.

(12)

Geval 4:

Een basisvariabele (xB)r loopt tegen zijn bovengrens aan.

Merk op dat in dit geval de pivot ark negatief is. De gewone simplex transformaties volgen uit de vergelijking (xB)r = brP

j arj(xN)j, die equivalent is met (uB)r− (xB)r = (uB)r− br+X

j

arj(xN)j Voor de transformaties geldt dus:

Voer de gewone transformaties uit na de volgende veranderingen: neem (uB)r− br in plaats van br en verander de pivotrij van teken.

De winst van deze speciale techniek is het feit dat in de gevallen 1 en 2 er met vrijwel geen werk een nieuw tableau gevonden wordt.

Voorbeeld 1.1

Beschouw het volgende LP-probleem:

max x1+ 2x2+ 3x3+ 2x4+ x5

−x1 + x3 x5 + x6 = 1

− x2 + x4 + 2x5 + x7 = 2

x1 + x2 − 2x3 − x4 + x8 = 1

onder de voorwaarden

0 ≤ x1≤ 1; 0 ≤ x2 ≤ 2; 0 ≤ x3≤ 1; 0 ≤ x4 ≤ 3; 0 ≤ x5 ≤ 2; 0 ≤ x6 ≤ 1; 0 ≤ x7 ≤ 3; 0 ≤ x8≤ 2.

We starten met als basisvariabelen x6, x7 en x8. Als de variabele xj op zijn bovengrens staat, dan noteren we dat met xj. Verder schrijven we achter iedere variabele tussen haakjes de bovengrens.

Dit geeft de volgende tableaus (als pivotkolom de gebruikelijke keuze bij het meest negatieve element in de onderste rij):

x1(1) x2(2) x3(1) x4(3) x5(2)

x6(1) 1 -1 0 1 0 -1

x7(3) 2 0 -1 0 1 2

x8(2) 1 1 1 -2 -1 0

x0 0 -1 -2 -3 -2 -1

Geval 4: x8 loopt tegen zijn bovengrens aan.

Aanpassing van b3 en de derde rij geeft:

x1(1) x2(2) x3(1) x4(3) x5(2)

x6(1) 1 -1 0 1 0 -1

x7(3) 2 0 -1 0 1 2

x8(2) 1 -1 -1 2 1 0

x0 0 -1 -2 -3 -2 -1

Nu voeren we de gewone pivottransformaties uit met verwisseling van x8 en x3.

x1(1) x2(2) x8(2) x4(3) x5(2) x6(1) 12 -12 ∗ 12 -12 -12 -1

x7(3) 2 0 -1 0 1 2

x3(1) 12 -12 -12 12 12 0 x0 32 -52 -72 32 -12 -1 Geval 3: dit geeft de gewone transformatie.

x1(1) x6(1) x8(2) x4(3) x5(2)

x2(2) 1 -1 2 -1 -1 -2

x7(3) 3 -1 2 -1 0 0

x3(1) 1 -1 1 0 0 -1

x0 5 -6 7 -2 -4 -8

Geval 4: x3 loopt tegen zijn bovengrens aan.

Aanpassing van b3 en de derde rij geeft:

(13)

x1(1) x6(1) x8(2) x4(3) x5(2)

x2(2) 1 -1 2 -1 -1 -2

x7(3) 3 -1 2 -1 0 0

x3(1) 0 1 -1 0 0 1

x0 5 -6 7 -2 -4 -8

Nu voeren we de gewone pivottransformaties uit met verwisseling van x3 en x5.

x1(1) x6(1) x8(2) x4(3) x3(1)

x2(2) 1 1 0 -1 -1 2

x7(3) 3 -1 2 -1 0 0

x5(2) 0 1 -1 0 0 1

x0 5 2 -1 -2 -4 8

Geval 4: x2 loopt tegen zijn bovengrens aan.

Aanpassing van b1 en de eerste rij geeft:

x1(1) x6(1) x8(2) x4(3) x3(1)

x2(2) 1 -1 0 1 1 2

x7(3) 3 -1 2 -1 0 0

x5(2) 0 1 -1 0 0 1

x0 5 2 -1 -2 -4 8

Nu voeren we de gewone pivottransformaties uit met verwisseling van x2 en x4.

x1(1) x6(1) x8(2) x2(2) x3(1)

x4(3) 1 -1 0 1 1 -2

x7(3) 3 -1 2 -1 0 0

x5(2) 0 1 -1 0 0 1

x0 9 -2 -1 2 4 0

Geval 3: dit geeft de gewone transformatie.

x5(2) x6(1) x8(2) x2(2) x3(1)

x4(3) 1 1 -1 1 1 -1

x7(3) 3 1 1 -1 0 1

x1(1) 0 1 -1 0 0 1

x0 9 2 -3 2 4 2

Geval 1: x6 komt op zijn bovengrens.

x5(1) x6(1) x8(2) x2(2) x3(1)

x4(3) 2 1 1 1 1 -1

x7(3) 2 1 -1 -1 0 1

x1(1) 1 1 1 0 0 1

x0 12 2 3 2 4 2

Dit tableau is optimaal.

De optimale oplossing luidt: x1 = 1; x2 = 2; x3 = 1; x4 = 2; x5 = 0; x6 = 1; x7 = 2; x8 = 2.

De optimale waarde is 12.

Vraag 1.1

Beschouw het volgende LP-probleem:

max (

3x1+ 2x2

¯¯

¯¯

¯

2x1 + x2 ≤ 10; 0 ≤ x1 ≤ 4 5x1 + 3x2 ≤ 27; 0 ≤ x2 ≤ 5

) .

Los dit probleem op met de simplex methode voor begrensde variabelen.

1.2.2 Herziene simplex methode en de productvorm van de inverse

De tot nu toe behandelde simplex methode in tableauvorm is alleen geschikt voor handberekening en kleine problemen. De technieken van de herziene simplex methode en de productvorm van de inverse zijn ontwikkeld om grote problemen op te kunnen lossen. In essentie is dit de reeds behandelde simplex methode, maar deze speciale technieken zijn effici¨enter t.a.v. de benodigde geheugenruimte en rekentijd. De tableaus zijn vaak gevuld met vele 0’en en het is eigenlijk overbodig om hiervoor ruimte te reserveren.

(14)

In een iteratie kiezen we eerst de variabele die in de basis gaat komen, daarna de variabele die de basis gaat verlaten en tenslotte bepalen we de nieuwe basisoplossing. De variabele xk die in de basis gaat komen moet een negatief element in de onderste rij hebben, d.w.z. de gereduceerde kosten zijn negatief:

vk := pTBB−1a•k− pk< 0.

Meestal kiezen we voor de pivotkolom de kolom waarvan het getal vk het meest negatief is. Als we geen tableau hebben, dan moeten we de waarde pTBB−1a•k− pk berekenen. Daarvoor hebben we B−1 nodig. Als we B−1 hebben, dan is het eenvoudig om pTBB−1a•k− pk uit te rekenen en na te gaan of dit al of niet negatief is (als al deze getallen niet-negatief zijn, dan is de huidige oplossing optimaal).

Om de variabele te bepalen die de basis gaat verlaten, moeten we nagaan welke basisvariabele het eerst negatief wordt als we xk vanaf 0 steeds groter maken. Hiervoor moeten we de quoti¨enten nemen van {B−1b}i en {B−1a•k}i, voor zover dit laatste getal positief is, en van deze quoti¨enten de kleinste nemen (als alle getallen {B−1a•k}i niet-positief zijn, dan is er een oneindige oplossing).

Als i = r behoort bij het kleinste quoti¨ent, dan geldt voor de nieuwe oplossing:

xk= {B{B−1−1ab}•kr}r en xi= {B−1b}i− {B−1a•k}i· xk voor de overige basisvariabelen.

We zullen aangeven hoe we de verschillende getallen die we nodig hebben gaan berekenen. Daarbij gaan we eerst na hoe B−1 berekend wordt. Laat Bnieuw de nieuwe basismatrix zijn en Boud de oude. Dan geldt dat Bnieuw uit Boud wordt verkregen door de r-de kolom van Boud te vervangen door de kolom a•k, d.w.z. (zie Vraag 1.2)

Bnieuw = BoudE,

waarbij E de eenheidsmatrix is met in de r-de kolom de vector Boud−1a•k. Noteren we B−1ouda•k met a•k, dan kunnen we schrijven:

E =











1 0 · · · a1k 0 · · · 0 0 1 · · · a2k 0 · · · 0

· · · · · · · · · · · · ·

· · · · · · · · · · · · ·

· · · · · · · · · · · · · 0 0 · · · amk 0 · · · 1









 .

De relatie Bnieuw = BoudE maakt het mogelijk om op een effici¨ente manier de inverse van Bnieuw uit de inverse van Boud te bepalen, immers Bnieuw−1 = E−1Boud−1. Er geldt (zie Vraag 1.3) dat

E−1 =











1 0 · · · aa1k

rk 0 · · · 0 0 1 · · · aa2k

rk 0 · · · 0

· · · · · · · · · · · · ·

· · · · · a1

rk · · · · ·

· · · · · · · · · · · · · 0 0 · · · aamk

rk 0 · · · 1











.

(15)

waarbij het element a1

rk in de r-de rij (en r-de kolom) staat. Omdat ook E−1 slechts in ´e´en kolom van de eenheidsmatrix verschilt, kan deze worden opgeborgen als vector: we onthouden de r-de vector van E−1 en het getal r. E−1 heet de elementaire matrix.

Laat Bt de basismatrix zijn na t iteraties en laat Bt van Bt−1 verschillen in de r-de kolom, die vervangen wordt door de kolom a•k. Dan geldt Bt = Bt−1Et, waarbij Et de eenheidsmatrix is met in de r-de kolom de vector Bt−1−1a•k. Omdat we starten met als basis de eenheidsmatrix, d.w.z. B0= I, geldt Bt= E1E2· · · Et, zodat

Bt−1= Et−1Et−1−1 · · · E2−1E1−1.

Dus in iedere iteratie kan de inverse van de basis worden geschreven als het product van elemen- taire matrices. Vandaar de naam productvorm van de inverse.

Voor de verdere berekeningen is het handig eerst na te gaan hoe de vermenigvuldiging van een vector c met de elementaire matrix E−1 verloopt. Dit kan zijn cTE−1, de navermenigvuldiging, of E−1c, de voorvermenigvuldiging. De r-de vector van E−1, d.w.z. de vector die in het algemeen geen eenheidskolom is, noteren we met g.

Navermenigvuldiging

cTE−1 = (c1, c2, . . . , cm)











1 0 · · · g1 0 · · · 0 0 1 · · · g2 0 · · · 0

· · · · · · · · · · · · ·

· · · · · gr · · · · ·

· · · · · · · · · · · · · 0 0 · · · gm 0 · · · 1











= (c1, c2, . . . , cr−1,Pm

i=1 cigi, cr+1, · · · , cm).

Dus cTE−1 wordt uit c verkregen door cr te vervangen door Pm

i=1 cigi. Voorvermenigvuldiging

E−1c =











1 0 · · · g1 0 · · · 0 0 1 · · · g2 0 · · · 0

· · · · · · · · · · · · ·

· · · · · gr · · · · ·

· · · · · · · · · · · · · 0 0 · · · gm 0 · · · 1



















 c1 c2 . . .

cr . . . cm











=











c1+ g1cr c2+ g2cr

. . . grcr

. . . cm+ gmcr











=









 c1 c2 . . .

0 . . . cm









 + cr









 g1 g2 . . .

gr . . . gm









 .

Dus E−1c wordt uit c verkregen door eerst de r-de component van c gelijk aan 0 te maken en dan bij deze vector cr keer de vector g op te tellen.

Bepaling duale variabelen vj

In de t-de iteratie berekenen we eerst pTBBt−1, en wel op de volgende manier.

Bepaal eerst, met navermenigvuldiging, uT = pTBEt−1. Bepaal vervolgens, eveneens met navermenigvuldiging, uTEt−1−1, etc. Op deze wijze berekenen we in t stappen

pTBBt−1= pTBEt−1E−1t−1· · · E2−1E1−1.

(16)

Vervolgens kunnen eenvoudig voor iedere niet-basisvariabele xj de getallen vj = pTBB−1t a•j − pj

worden berekend. Van de niet-basisvariabele xj = (xB)r, die net een niet-basisvariabele is gewor- den, weten we dat vj > 0: voor deze variabele kunnen we de berekening dus overslaan.

Bepaling kolom g die de elementaire matrix geeft

Laat in de t-de iteratie de pivotkolom de kolom bij xk zijn. Dan moet eerst a•k = B−1t a•k = Et−1Et−1−1 · · · E2−1E1−1a•k

worden bepaald. Deze vector krijgen we door de vector a•k t keer voor te vermenigvuldigen, met E1−1, E2−1 tot en met Et−1.

Als a•k ≤ 0, dan stoppen we met als conclusie dat het probleem een onbegrensde oplossing heeft.

Als dat niet het geval is, dan bepalen we op de gewone manier de pivotrij. Daarvoor moeten we in iedere iteratie het rechterlid b mee transformeren. Dit geeft in iteratie t ´e´en voorvermenigvuldiging met Et−1 om de waarde bte updaten. Hiermee kan dan de pivotrij r worden bepaald en daarmee gt, de g in de t-de iteratie:

gt=

³

−a1k ark, −a2k

ark, · · · , 1

ark, · · · , −amk ark

´T .

Update van de inverse van de basis

In iedere iteratie komt er een elementaire matrix bij die we moeten onthouden, d.w.z. de bijbe- horende vector g en de component r moeten we onthouden. Als het aantal iteraties groot wordt geeft dit problemen. Het is dan verstandig om af en toe een herinversie uit te voeren, d.w.z.

expliciet B−1 uit te rekenen als product van de elementaire matrices:

Bt−1= Et−1Et−1−1 · · · E2−1E1−1.

Vervolgens kan hier in volgende iteraties weer op worden ’teruggerekend’: deze Bt−1 vervult dan dezelfde rol als B0−1 = I in de eerste iteraties.

Algoritme 1.1 De (t + 1)-ste iteratie van de productvorm algoritme

Invoer: De elementaire matrices E1, E2, . . . , Et, gegeven door de vectoren g1, g2, . . . , gt en de getallen r1, r2, . . . , rt.

Uitvoer: De elementaire matrix Et+1, gegeven door de vector gt+1 en het getal rt+1; of de conclusie dat de huidige oplossing optimaal is; of de conclusie dat er een oneindige optimale oplossing is.

1. Update b door voorvermenigvuldiging met de elementaire matrix Et−1.

2. Bepaal uT = pTBB−1 door herhaalde navermenigvuldiging met Et−1, Et−1−1 tot en met E1−1.

(17)

3. Bepaal voor de niet-basisvariabelen xj (behalve die er het laatst bij is gekomen) de duale variabelen vj = uTa•j− pj.

4. Als alle vj’s niet-negatief zijn: de oplossing is optimaal en stop.

Anders: Kies k zdd. vk≤ vj voor alle niet-basisvariabelen xj.

5. Bepaal a•k = B−1a•kdoor herhaalde voorvermenigvuldiging met E1−1, E2−1 tot en met Et−1. 6. Als a•k≤ 0: er is een oneindige oplossing en stop.

Anders: bepaal pivotrij r zdd. abr

rk = min

½

bi aik

¯¯

¯¯ aik> 0

¾ . 7. Bepaal de vector gt+1 en de component rt+1 die Et+1−1 vastleggen.

Oplossing duale probleem

Uit de algemene theorie van de lineaire optimalisering volgt dat vB = 0, vTN = pTBB−1N − pTN de oplossing van het duale probleem is.

Voorbeeld 1.2

Beschouw het volgende LP-probleem:

max







21x1+ 14x2

¯¯

¯¯

¯¯

¯¯

4x1 + 2x2 + x3 = 12; x1, x2≥ 0

x1 + x4 = 2; x3, x4≥ 0

2x1 + 3x2 + x5 = 12; x5 ≥ 0







.

Iteratie 1: De basisvariabelen zijn x3, x4 en x5, en E0−1= I.

b = (12, 2, 12)T; u = (0, 0, 0)T.

v1 = (0, 0, 0)



 4 1 2



 − 21 = −21; v2 = (0, 0, 0)



 2 0 3



 − 14 = −14.

k = 1 (bij x1); a•1= a•1= (4, 1, 2)T; min{124 ,21,122} = 2 en r1 = 2 (bij x4); g1 = (−4, 1, −2)T. Iteratie 2: De basisvariabelen zijn x3, x1 en x5.

b =



 12

0 12



 + 2 ·



−4 1

−2



 =



 4 2 8



 ; uT = (0, 21, 0)E1−1= (0, 21, 0).

v2 = (0, 21, 0)



 2 0 3



 − 14 = −14; k = 2 (bij x2); a•2= E1−1a•2=



 2 0 3



 + 0 ·



−4 1

−2



 =



 2 0 3



 . min{42, ∞,83} = 2 en r2 = 1 (bij x3); g2 = (12, 0, −32)T.

(18)

Iteratie 3: De basisvariabelen zijn x2, x1 en x5.

b =



 0 2 8



 + 4 ·



12

0

32



 =



 2 2 2



 ; uT = (14, 21, 0)E2−1E1−1 = (7, 21, 0)E1−1 = (7, −7, 0).

v4 = (7, −7, 0)



 0 1 0



 − 0 = −7; k = 4 (bij x4). a•4= E2−1E1−1a•4=

E2−1









 0 0 0



 + 1 ·



−4 1

−2









= E2−1



−4 1

−2



 =



 0 1

−2



 − 4 ·



12

0

32



 =



−2 1 4



 .

min{∞,21,24} = 12 en r3= 3 (bij x5). g3= (12, −14,14)T. Iteratie 4: De basisvariabelen zijn x2, x1 en x4.

b =



 2 2 0



 + 2 ·



12

14

14



 =



 3

3 2 12



 .

uT = (14, 21, 0)E3−1E2−1E1−1= (14, 21,74)E2−1E1−1 = (358, 21,74)E1−1 = (358 , 0,74).

v3 = (358 , 0,74)



 1 0 0



 − 0 = 358 .

Het huidige tableau is optimaal. De optimale oplossing luidt xB= b en xN = 0, d.w.z.

x2= 3, x1 = 32, x4= 12, x3 = x5= 0.

Het duale probleem luidt:

min







12u1+ 2u2+ 12u3

¯¯

¯¯

¯¯

¯¯

4u1 + u2+ 2u3 ≥ 21 2u1 + 3u3 ≥ 14 u1, u2, u3 0







.

met als optimale oplossing u1 = 358 , u2= 0, u3 = 74. Vergelijking gewone en herziene simplex methode.

Laten we uitgaan van een LP-probleem met n variabelen en m ongelijkheden. Een gewoon simplex tableau heeft m + 1 rijen en n + 1 kolommen. Per iteratie moeten de pivotkolom en pivotrij worden bepaald (complexiteit O(n) resp. O(m)) en moeten alle elementen van het tableau worden aangepast (complexiteit O(nm)). De complexiteit van een iteratie van de herziene simplex methode is minstens O(nm) (alleen stap 3 heeft al deze complexiteit).

De winst van de herziene simplex methode zit in feite in de geheugenopslag. Deze is in de gewone simplex methode O(nm) en in de herziene simplex methode (als we na hoogstens m iteraties een herinverzie doen) O(m2). In de meeste practische problemen is n vele malen groter dan m, zodat dit een aanzienlijk verschil geeft.

(19)

Verder zijn er nog geavanceerde technieken, die we hier niet zullen behandelen, die verdere voorde- len aan de herziene simplex methode geven. Deze betreffen het gebruik van de spaarzaamheid, d.w.z. dat de meeste elementen in de vectoren 0 zijn, en LU-decompositie.1

Vraag 1.2

Laat zien dat als xk in de basis komt op plaats r, dan geldt: Bnieuw = BoudE, waarbij E de eenheidsmatrix is met in de r-de kolom de vector Boud−1a•k.

Vraag 1.3

Toon aan dat als xk in de basis komt op plaats r, de bijbehorende elementaire matrix E−1 de eenheidsmatrix is, waarin de r-de kolom vervangen is door een kolom met op plaats r het element

1

ark en op de plaatsen i 6= r de elementen −aaik rk.

1.2.3 Opgaven Opgave 1.1

Bepaal met de simplex methode voor begrensde variabelen een optimale oplossing van max

(

2x1+ x2+ x3

¯¯

¯¯

¯

x1 + x2 + x3 ≤ 6; 0 ≤ x1≤ 3 x1 − x2 + x3 ≤ 1; 0 ≤ x3≤ 2

) .

Opgave 1.2

Bepaal met de herziene simplex methode een optimale oplossing van

max







x1+ 2x2− x3

¯¯

¯¯

¯¯

¯¯

x1 + x2 + x3 ≤ 4;

−x1 + 2x2 − 2x3 ≤ 6;

2x1 + x2 ≤ 5;

x1, x2, x3 ≥ 0







.

Geef ook het duale probleem en de optimale oplossing ervan.

1.3 Gevoeligheidsanalyse

In deze paragraaf zullen we onderzoeken hoe veranderingen in de gegevens van het het probleem doorwerken in de optimale oplossing. We zullen de volgende veranderingen bespreken:

1. veranderingen in ´e´en co¨effici¨ent van de doelfunctie.

2. veranderingen in ´e´en co¨effici¨ent van het rechterlid.

3. veranderingen in meer co¨effici¨enten van het rechterlid of doelfunctie.

4. veranderingen in een kolom van een niet-basisvariabele.

5. toevoegen van een nieuwe activiteit (variabele).

6. parametrische programmering.

1Voor deze technieken zie bijvoorbeeld: M.S. Bazaraa, J.J. Jarvis and H.D. Sherali, Linear programming and network flows, Wiley, 1990.

Referenties

GERELATEERDE DOCUMENTEN

NETWERK OPTIMALISATIE (7 pagina’s) 3.1 Dijkstra’s algoritme voor het kortste pad probleem2. 3.2 Ford-Fulkerson algoritme voor het maximale-stroom-probleem

Er kan worden aangetoond dat de resultaten van het verdisconteerde model ook voor dit model gelden, met verdisconteringsfactor α = 1, indien S 0 minstens ´e´en element bevat en er

1 Als de parameters gespecificeerd zijn, bijvoorbeeld in het kortste pad probleem als het netwerk N is gegeven (een netwerk is een gerichte graaf met ´e´en of meer functies op

⇒ Laat A totaal unimodulair zijn en in iedere kolom precies twee niet-nul elementen hebben (in verband met wat moet worden aangetoond is dit geen beperking).. Construeer de

Stelling 1.12 kan ook worden gebruikt om het aantal opspannende bomen van een niet-gerichte graaf te bepalen: maak er een gerichte graaf van door iedere tak een willekeurige richting

Probleem: Is G samenhangend (d.w.z. is er een kring zdd. is er een kring zdd. is er een ronde zdd. is er een keten zdd. is er een pad zdd. dat beide grafen evenveel knooppunten

Er kan worden aangetoond dat de resultaten van het verdisconteerde model ook voor dit model gelden, met verdisconteringsfactor α = 1, indien S 0 minstens ´e´en element bevat en er

Als tijdens de duale simplex methode de verschilvariabele van de extra rij in de basis komt, dan kan deze rij uit het tableau worden verwijderd: het tableau is immers duaal