Theoretische onderbouwing van de simplexmethode

advertisement
Theoretische onderbouwing van
de simplexmethode
Een verzameling heet convex als het rechte
verbindingslijntje tussen elke twee punten
uit de verzameling helemaal in de
verzameling ligt.
Formeel:
)yU
(x,yU) ([0,1]): x+(1-
Convex:
|x|  r},
Rn, Halfvlak {x | aTx  0}, Bal {x |
Punt {x}, .
Niet convex: Bol {x | |x| = r}, {(x,y) | y < x2}
Stelling: De doorsnede van convexe
verzamelingen is weer convex.
Gevolg: Het toelaatbare gebied van een LP
probleem is convex.
Een punt x heet een inwendig punt van een
verzameling U, als er een klein bolletje {y |
|x-y|  r} is dat helemaal in U ligt.
Stelling: Een niet-constante lineaire functie
neemt zijn maximum nooit aan in een
inwendig punt.
Gevolg: Het maximum van een LP
probleem wordt op de rand aangenomen
Gevolg: Er is een hoekpunt van het
toelaatbare gebied waar het maximum van
een LP probleem wordt aangenomen
Stelling: Omdat het toelaatbare gebied
convex is, heeft een LP probleem geen
locale maxima, alleen globale.
Bewijs: De rechte verbindingslijn tussen
twee locale optima ligt in het toelaatbare
gebied en de doelfunctie is er lineair.
Geef een voorbeeld van een convex gebied
K en een lineaire functie die op K niet zijn
maximum aanneemt.
K = R n,
f(x) = x1
begrensd)
(f is niet
K = (0,1), f(x) = x
limiet niet)
(gebied bevat
Geef een voorbeeld van een niet-convex
gebied K, een lineaire functie op K en een
punt in K waarop de functie een locaal
maximum heeft, maar geen globaal
maximum.
Stelling: elke convexe K  Rn is de
doorsnede van (oneindig veel) halfruimtes.
SIMPLEX METHODE
Meetkundig idee: Onderzoek alleen
hoekpunten.
- Start in een willekeurig hoekpunt
- Zoek de ribbe met de grootste stijging
doelwaarde
- Vind aan het eind van de ribbe een beter
hoekpunt
- Stop als geen verbetering mogelijk
Praktische implementatie kan niet
meetkundig maar moet algebraïsch.
Ongelijkheden zijn onhandig voor algebra.
Ga uit van de standaardvorm:
Max
Z = c1x1 + c2x2 + … + cnxn
z.d.d. a11x1 + a12x2 + … + a1nxn  b1
a21x1 + a22x2 + … + a2nxn  b2
…
…
…
…
…
…
…
…
am1x1 + am2x2 + … + amnxn  bm
en
x1, x2 …, xn  0
Hierin zijn alle bi  0
Herschrijf alle ongelijkheden als gelijkheid:
x1 + 4x2  17 
0  17 - x1 - 4x2
Nieuwe extra variabele: x3 := 17 - x1 - 4x2
x1 + 4x2  17
x3  0

x1 + 4x2 + x3 = 17

x3 heet slackvariabele (verschilvariabele).
x3 geeft aan hoe “erg” de ongelijkheid x1 +
4x2  17 geldt (x3 > 0) of juist níet geldt (x3 <
0), bv. hoeveel de productie onder of boven
de bovengrens ligt.
n variabelen met m nevenvoorwaarden ()

n + m variabelen met m nevenvoorwaarden
(=)
Een toegelaten oplossing die met een
hoekpunt correspondeert heet
basisoplossing.
In een hoekpunt zijn n (slack)variabelen =0,
dus maximaal m positieve variabelen. Dit
heten de basisvariabelen van dat hoekpunt.
Simplex algebraïsch:
1 Startoplossing: toegelaten
basisoplossing
(= nuloplossing van het oorspronkelijke
probleem)
2 Maak nieuwe basisoplossing die één
basisvariabele verschilt: Eén nietbasisvariabele wordt > 0. Eén
basisvariabele wordt = 0.
Doelwaarde moet verbeteren
Nieuwe oplossing is toegelaten
basisoplossing
3 Ga door tot er geen verbetering meer is.
Klaar.
Voorbeeld
Max
Z = 3x1 + 2x2 – 0.5x3
z.d.d. 4x1 + 3x2 + x3  10
3x1 + x2 - 2x3  8
en
x1, x2, x3  0
Voer slackvariabelen (x4, x5) in:
Max
Z = 3x1 + 2x2 – 0.5x3
z.d.d. 4x1 + 3x2 + x3 + x4
= 10
3x1 + x2 - 2x3
+ x5 = 8
en
x1, x2, x3, x4, x5  0
Basisoplossing: x1 = x2 = x3 = 0
10, x5 = 8
Basisoplossing:
Doelwaarde:
Basisvariabelen:
Niet-basisvariabelen:
 x4 =
(0, 0, 0, 10, 8)
0
x4, x5.
x1, x2, x3.
Welke van x1, x2, x3 positief maken?
Sterkste stijging voor x1.
Hoe groot kan x1 worden? x2 = x3 = 0
dus
4x1 + x4 = 10  4x1 = 10 - x4  10  x1
 2,5
3x1 + x5 = 8
 2,666
 3x1 = 8 - x5  8
 x1
x1 kan maximaal 2,5 worden als x4 = 0.
x4 verlaat de basis. x1 komt in de basis.
Max
Z = 3x1 + 2x2 – 0,5x3
z.d.d. 4x1 + 3x2 + x3 + x4
= 10
3x1 + x2 - 2x3
+ x5 = 8
en
x1, x2, x3, x4, x5  0
Nieuwe basisvorm: x1 en x5 mogen niet in
de Z vergelijking en in de andere
vergelijkingen met één 1, rest 0. Krijg je
door vegen:
Max
Z = - 0,25x2 – 1,25x3 – 0,75x4 + 7,5
z.d.d. x1 + 0,75x2 + 0,25x3 + 0,25x4
= 2,5
- 1,25x2 – 2,75x3 – 0,75x4 + x5 =
0,5
en
x1, x2, x3, x4, x5  0
Basisoplossing: (2,5, 0, 0, 0, 0,5)
Doelwaarde: 7,5
Oplossing is al optimaal (want alle
coëfficiënten in de Z vergelijking zijn
negatief).
Optimale oplossing: x1 = 2,5, x2 = 0, x3 = 0,
Z = 7,5
Standaardvorm voor een LP probleem:
Max
Z = c1x1 + c2x2 + … + cnxn
z.d.d. a11x1 + a12x2 + … + a1nxn  b1
a21x1 + a22x2 + … + a2nxn  b2
…
…
…
…
…
…
…
…
am1x1 + am2x2 + … + amnxn  bm
en
x1, x2 …, xn  0
Hierin zijn alle bj  0.
Reden voor de standaardvorm: x1 = x2 = …
= xn = 0 is een feasible oplossing
Afwijkingen van de standaardvorm:
1. Minimalisering: Min Z = – (Max – Z)
2. Geen niet-negativiteitseis voor xj (xj 
0)
2a. xj  10. Ga over op xj’ = xj – 10, dan is
xj’  0.
2b. xj  -7. Ga over op xj’ = –7 – xj, dan is
xj’  0.
2c. Geen ongelijkheid voor xj. Schrijf xj =
xj+ - xj-,
dan is xj+, xj-  0.
3. Negatief rechterlid:
3x2 – 7x4  –4 
– 3x2 + 7x4  4
4.  i.p.v.  in constraint:
surplusvariabele, i.p.v.
slackvariabele + behandelen als
gelijkheid!
– 3x2 + 7x4  4  – 3x2 + 7x4 – x5 =
4 
–3x2 + 7x4 – x5 + x6 = 4
(en x5, x6  0, extra term –Mx6 in
doelfunctie)
5. = i.p.v.  in constraint: Voer
kunstmatige
variabele + x in én extra term –Mx in
doelfunctie
Voorbeeld omzetten naar standaardvorm
Max
Z = x1 + x2 + x4
z.d.d. x1 + 2x2
5
2x1 – x2 + x3
 –4
x2 – 2x3 + x4 = 5
en
x1  0, x2  5, x3  0
x2  5 klopt niet. Nieuwe variabele x2’ = 5 –
x1  0. Vervang x2 door x2’:
Max
Z = x1 – x2’ + x4 + 5
z.d.d. x1 – 2x2’
 –5
2x1 + x2’ + x3
1
–x2’ – 2x3 + x4 = –2
en
x1  0, x2’  0, x3  0
Vervang –x2’ – 2x3 + x4 = –2 door x2’ + x3 –
x4 = 2
Geen constraint voor x4.
Vervang x4 = x4+ - x4-, x4+, x4-  0:
Max
Z = x1 – x2’ + x4+ – x4- + 5
z.d.d. x1 - 2x2’
 –5
2x1 + x2’ + x3
1
x2’ + 2x3 – x4+ + x4=2
en
x1  0, x2’  0, x3  0, x4+, x4-  0
Vervang Z door Z’ = Z – 5.
Max
Z’ = x1 – x2’ + x4+ – x4z.d.d. x1 – 2x2’
 –5
2x1 + x2’ + x3
1
x2’ + 2x3 – x4+ + x4=2
en
x1  0, x2’  0, x3  0, x4+, x4-  0
Vervang x1 – 2x2’  –5 door
5
–x1 + 2x2’ 
Max
Z’’ = x1 – x2’ + x4+ – x4- – Mx6
z.d.d. –x1 + 2x2’
5
2x1 + x2’ + x3
+ x5
=
1
x2’ + 2x3 – x4+ + x4+x6 = 2
en
x1  0, x2’  0, x3  0, x4+, x4-, x5, x6 
0
Max
Z’’’ = x1 – x2’ + x4+ – x4- – Mx6 – Mx8
z.d.d. –x1 + 2x2’
–x7 +
x8 = 5
2x1 + x2’ + x3
+ x5
=1
x2’ + 2x3 – x4+ + x4+x6
=2
en
x1  0, x2’  0, x3  0, x4+, x4-, x5, x6,
x7, x8  0
Optimale oplossing:
Optimale waarde:
(x1, 5-x2’, x3, x4+ – x4-)
Z = Z’’’ + 5
Alternatieve aanpak voor de gelijkheid:
x2’ + 2x3 – x4+ + x4-
=2
vervang door
x2’ + 2x3 – x4+ + x4-  2
x2’ + 2x3 – x4+ + x4-  2
Dit wordt
x2’ + 2x3 – x4+ + x4- + x6  2
x2’ + 2x3 – x4+ + x4- - x9 + x10  2
Dit geeft 3 extra variabelen in plaats van 1:
x2’ + 2x3 – x4+ + x4=2
+x6
Download