You are on page 1of 26

Operációkutatás I.

4. előadás

E.-Nagy Marianna
Operációkutatás és Aktuáriustudományok Tanszék

2023/24 őszi félév


Szimplex algoritmus
Szimplex algoritmus

George Dantzig (1914-2005) megalkotta a Szimplex algoritmust 1947-ben


Lineáris programozás: példa folytatása
Példa – tiltott pivot pozíciók
Példa – majdnem megfelelő pivot pozíciók
Példa – lehetséges (megengedett) pivot pozíciók

Melyek az induló bázis szomszédos bázisai? Számoljuk ki az általuk


meghatározott bázismegoldásokat!
Példa – Szimplex algoritmus iteráció
Példa – optimális megoldás
Szimplex algoritmus – Induló tábla

Legyen B egy megengedett bázis indexhalmaza, azaz xB = A−1


B b ≥ 0.

Gauss eliminációval elérhető, hogy a bázisnak megfelelő részmátrix I


egységmátrix legyen. (Az új tábla elemeit felülvonással jelöljük.)
T T
xℓ xB xℓ xB

aℓk AB b ; āℓk I b̄

cℓ cT
B cℓ cT
B

Jelölés: aℓk az ℓ. oszlop k. eleme.


Kezdeti megoldás: xB = b̄ = A−1
B b és xN = 0.
Bázison kívüli változó növelése
Legyen ℓ ∈ N és növeljük meg a változó értékét: xℓ = ϑ > 0.
Ennek megfelelően változtatjuk a bázison belüli változók értékét, úgy hogy
Ax = b továbbra is teljesüljön, azaz
X m X m
ϑāℓ + xBi (ϑ)āBi = b̄ és āℓ = āℓi ei ⇒
i=1 i=1
m
X m
X
ϑ āℓi ei + xBi (ϑ)ei = b̄
i=1 i=1
m
X
ϑāℓi + xBi (ϑ) ei = b̄,

i=1
| {z }
xBi

ugyanis az {e1 , . . . , em } bázisban egyértelműen áll elő b̄. Tehát

xBi (ϑ) = xBi − ϑāℓi , i = 1, . . . , m.

Bi jelöli az i. bázisváltozó indexét.


Célfüggvény változása

m
X m
X m
X
cT x(ϑ) = cℓ xℓ (ϑ) + cBi xBi (ϑ) = cBi xBi + cℓ ϑ − ϑ cBi āℓi .
| {z }
i=1 i=1 i=1
xBi − ϑāℓi | {z } | {z }
kezdeti mo. ϑ(cℓ − cT
B āℓ )

célfv. értéke

Tehát a célfüggvény változása: ϑ(cℓ − cT


B āℓ ).

Ez javítást jelent maximalizálás esetén, ha cℓ − cT


B āℓ > 0
minimalizálás esetén, ha cℓ − cT
B āℓ < 0.

Az ℓ. változó redukált költsége c̄ℓ := cℓ − cT


B āℓ .
Jelentése: mennyivel változik meg a célfüggvény értéke, ha az ℓ. változó értékét
egy egységgel növeljük, feltéve, hogy az adott bázisunk marad.
Hányados szabály (szűk keresztmetszet)

Tfh. az ℓ. változó redukált költsége pozitív, azaz javító: cℓ − cT


B āℓ > 0.
Ekkor az új megoldás: 
 xBi (ϑ), ha j a B bázis i. indexe
xj (ϑ) = ϑ, ha j = ℓ
0, különben.

Ax(ϑ) = b ∀ ϑ ∈ R, ugyanis így határoztuk meg x(ϑ) értékét.


Kérdés: x(ϑ) ≥ 0?
Egyedül a bázisbeli indexeknél lehet gond. Kell:
xBi (ϑ) = xBi − ϑāℓi ≥ 0 → ha āℓi ≤ 0 ; nincs korlát ϑ-ra;
xB
ha āℓi > 0 ; ϑ ≤ ii .
āℓ
Mivel xB = b̄,
 
b̄i
ϑ̄ = min : āℓi > 0 hányados szabály
āℓi
Példa: lineáris programozás minimalizálás!

min x1 + 16 x2 − 4 x3 + 10 x4 − 9 x5 + x6 + x7 + 7 x8 − 20 x9 − 3

− 4 x2 + x3 − 2 x4 + 4 x5 + x7 − 2 x8 + 6 x9 = 4
− 3 x2 + 3 x3 + x4 + 4 x5 + x6 − 4 x8 + 11 x9 = 12
x1 + x2 − 2 x3 + 2 x4 + x5 − 2 x9 = 1

ahol x1 , x2 , . . . , x9 ≥ 0, kanonikus lineáris programozási feladat. A feladatnak


létezik induló megengedett bázismegoldása, x = (1, 0, 0, 0, 0, 12, 4, 0, 0).

x1 x2 x3 x4 x5 x6 x7 x8 x9 b
0 -4 1 -2 4 0 1 -2 6 4
0 -3 3 1 4 1 0 -4 11 12
1 1 -2 2 1 0 0 0 -2 1
1 16 -4 10 -9 1 1 7 -20 3

Ez nem bázis tábla, hiszen a célfüggvénynek megfelelõ sorban a bázis változók


együtthatója nem nulla. Ezért a következõ sor transzformációt kell elvégeznünk

c̄T = cT − (t(1) + t(2) + t(3) ),

ahol t(i) a T mátrix i. sora. A célfüggvény értéke −ζ̄ = −ζ − (b̄1 + b̄2 + b̄3 )
képlettel számolható ki. Ekkor a feladat rövid pivot táblája a következõ lesz
Példa: lehetséges szimplex iterációk
x2 x3 x4 x5 x8 x9 b
x7 -4 1 -2 4 -2 6 4
x6 -3 3 1 4 -4 11 12
x1 1 -2 2 1 0 -2 1
22 -6 9 -18 13 -35 -14
A szimplex módszerrel a javító változók közül bármelyik kiválasztható.
1. Amennyiben az x3 változót választjuk belépőnek akkor a hányados teszt alapján
x7 b̄1 4 x6 b̄2 12
= = = 4 és = = =4
t12 t12 1 t22 t22 3
adódik, azaz x7 illetve x6 is választható lenne távozónak.
2. Az x5 változót választva belépő változónak akkor a hányados teszt alapján
x7 b̄1 4 x6 b̄2 12 x1 b̄3 1
= = = 1, = = = 3 és = = =1
t14 t14 4 t24 t24 4 t34 t34 1
két változó, x7 és x1 közül választhatunk belépő változót.
3. Belépőnek választhatjuk az x9 változót is. Ennek a változónak az oszlopára
alkalmazva a hányados tesztet
x7 b̄1 4 2 x6 b̄2 12
= = = és = =
t16 t16 6 3 t26 t26 11
a távozó változót, x7 , egyértelműen választhatjuk ki.
Végtelen javító irány

Az ℓ. változó javító, ha pozitív a redukált költsége, azaz cℓ − cT


B āℓ > 0,
ekkor a célfüggvény változása: ϑ(cℓ − cT B āℓ ).

Ha āℓ ≤ 0, akkor ϑ-ra nincs felső korlát, azaz


a célfüggvényre nincsen felső korlát, tehát
nem létezik optimális megoldás.

Bizonyíték: létezik végtelen javító irány, azaz olyan v ∈ Rn vektor, melyre


x + λv megengedett megoldás minden λ ≥ 0 esetén és cT (x + λv) → ∞, ha
λ → ∞.
Ez a kanonikus alak esetén azt jelenti, hogy

∃ v ≥ 0 : Av = 0, cT v > 0.
Új bázis

Legyen ϑ̄ véges és k egy olyan index, ahol felvétetik a minimum a hányados


szabályban, azaz ϑ̄ = b̄k /āℓk .
Ekkor xk (ϑ̄) = 0, ugyanis xk (ϑ̄) = b̄k − ϑ̄āℓk = b̄k − b̄ākk āℓk = 0.


ℓ, ha i = k,
Legyen az új bázis: B̃i =
Bi , különben.

Állítás. B̃ valóban bázis.


Pm
Bizonyítás. Legyen λ1 , . . . , λm ∈ R, melyekre i=1 λi āB̃i = 0.
Az új bázis elemei:
āB̃1 = e1 , . . . , āB̃k−1 = ek−1 , āℓ , āB̃k+1 = ek+1 , . . . , āB̃m = em .
Pm
Tehát i=1 λi āB̃i vektor k. koordinátája csak āℓ -től függ, és āℓk > 0, így
λk = 0 kell legyen.
Ám {e1 , . . . , ek−1 , ek+1 , . . . , em } lin. független rendszer, így a többi λi
együttható is 0 kell legyen.
Bázistranszformáció

B̃ bázisnak megfelelő alakra transzformáljuk a feladatot


(; megint I feleljen meg a bázisnak.)

Báziscsere (pivotálás):
1. k. sort végigosztjuk āℓk értékkel (normálás)
2. k. sor megfelelő számszorosát kivonjuk a többi sorból, hogy az
ℓ. oszlopban a megfelelő egységvektor jelenjen meg.
Optimális megoldás

Állítás. Ha minden redukált költség nempozitív, azaz


cℓ − cT
B āℓ ≤ 0 ∀ ℓ ∈ {1, . . . , n},
akkor optimális megoldásban vagyunk.

Bizonyítás. Legyen x̃ a B bázishoz tartozó megengedett bázismegoldás.


Ekkor
−1 T −1
cT x̃ = cT x̃B +cT
B |{z} x̃N = cT
N |{z} x ≥ cT x
B AB b = cB AB A |{z} ∀ x ∈ F.
| {z }
A−1 =0 ≥0
B
b ≥ cT

Ez pont az x̃ optimalitását jelenti.

Megjegyzés. Bázisbeli változó redukált költsége mindig 0.


Szimplex algoritmus (maximalizálás)
Adott egy B megengedett induló bázis.

A−1
B
A A−1
B
b

−1 −1
cT − cT
B AB A −cT
B AB b

−1
1 Határozzuk meg a redukált költségeket: c̄T = cT − cT
B AB A.
2 Ha létezik olyan B bázison kívüli változó, melynek redukált költsége
pozitív (javító oszlop), akkor menjünk a 3. lépésre.
Ha nem létezik javító oszlop → STOP: optimális megoldás.
3 Legyen ℓ a javító oszlop indexe.
Ha āℓ ≤ 0 → STOP: nem korlátos a célfüggvény felülről.
Különben alkalmazzuk a hányados szabályt ; k
4 Végezzük el a báziscserét az āℓk elemen:
k változó kilép, ℓ változó belép a bázisba. Menjünk az 1. lépésre.
Szimplex algoritmus: standard feladat
Leállási táblák

max cT x feltéve, hogy Ax = b, x ≥ 0

⊕ ⊖ ⊕
.. .. ..
. . .
⊕ ⊖ ⊕
⊖ ··· ⊖ +
Optimális tábla Nem korlátos a célfüggvény
Induló megengedett bázis előállítása

 
I. Ax ≤ b Ax + Iu = b
(b ≥ 0) ; ekvivalens feladatok.
x≥0 x, u ≥ 0
Ekkor az u eltérés változók megengedett bázist alkotnak.


II. Ax = b
(b ≥ 0) alakra hozható minden LP feladat.
x≥0

Segédfeladat: Ax + Iu = b

x, u ≥ 0
Legyen (x, u) egy megengedett megoldás. Ekkor
x az eredeti feladat megengedett megoldása ⇔ u = 0.
Pm
; i=1 ui célfüggvénnyel megoldjuk a segédfeladatot.
(Ez korlátos, ui. u ≥ 0.)
Első fázis


min 0T x + eT u 
Ax + Iu = b
x, u ≥ 0

Két eset lehetséges:


P
1. min ui > 0 ⇒ eredeti feladatnak nem létezik megengedett
megoldása. (Indirekt könnyen igazolható.)
P
2. min ui = 0 ⇒ u ≡ 0, de előfordulhat, hogy bizonyos uj változók
bentmaradtak a bázisban. Megpróbáljuk őket kivinni a bázisból (tetszőleges
nemnulla elemen pivotálhatunk, mert a megfelelő jobboldal 0).
Ha valamely uj -t nem tudjuk kivinni a bázisból, akkor a neki megfelelő sor
egy redundáns feltétel, így elhagyható a sor a táblából.
Az így kapott bázis az eredeti feladat egy megengedett bázisa.
Kétfázisú szimplex algoritmus
1. fázis: Megengedett bázis keresése

min 0T x + eT u 
Megoldjuk a Ax + Iu = b segédfeladatot.
x, u ≥ 0

Ha az opt. célfv. érték pozitív → STOP: nem létezik az eredeti feladatnak


megengedett megoldása.
Ha az opt. célfv. érték nulla → az eredeti feladat egy megengedett
bázisát kapjuk. → 2. fázis

2. fázis: Optimalizálás
Az előállított megengedett bázisból indulva keressük az optimális
megoldást.

Megjegyzés. 1. Hogy néz ki az 1. fázis induló bázis táblája?


2. Csak ott vezetünk be uj változókat, ahol szükséges.
Trichotómia tétel

Tétel. Minden LP feladat a következő három osztály valamelyikébe tartozik:


nem létezik megengedett megoldása;
létezik megengedett megoldása, de optimális megoldás nem létezik,
ui. a célfüggvény nem korlátos;
létezik optimális megoldása.

1
Megjegyzés. Ez általában nem igaz: min
x ≥1 x
feladat optimum értéke 0, de ez sehol sem vétetik fel.

You might also like