Operációkutatás II.

Bajalinov, Erik

Nyíregyházi Főiskola, Matematika és Informatika Intézete

Bekéné Rácz, Anett

Debreceni Egyetem, Informatikai Kar

Új Széchenyi Terv logó.

Lektorálta: Dr. Mala József, egyetemi docens, Corvinus Egyetem

A tananyag a TÁMOP-4.1.2-08/1/A-2009-0046 számú Kelet-magyarországi Informatika Tananyag Tárház projekt keretében készült. A tananyagfejlesztés az Európai Unió támogatásával és az Európai Szociális Alap társfinanszírozásával valósult meg.

A Kelet-magyarországi Informatika Tananyag Tárház logója.

Magyarország megújul logó.

Nemzeti Fejlesztési Ügynökség http://ujszechenyiterv.gov.hu/ 06 40 638-638

Az EU logója.

2010


Tartalom

1. Modellezés egészértékű változókkal
Hátizsák feladat
Hajórakodási probléma
Fix költségek modellezése
Beruházás modellezése
"Vagy-vagy" logikai feltétel modellezése
"Ha-akkor" logikai feltétel modellezése
Gyakorlat
Gyakorló feladatok
Ellenőrző kérdések
2. Szakaszonként lineáris függvények modellezése
Szakaszonként lineáris függvény
Modellezési eljárás
Numerikus példa
Gyakorlat
Gyakorló feladatok
Ellenőrző kérdések
3. Speciális témájú feladatok
Ütemezési feladat
Leszabási és pakolási feladat
Többperiódusú pénzügyi tervezési feladat
Gyakorlat
Gyakorló feladatok
Ellenőrző kérdések
4. Hálózati feladatok
A minimális költségű hálózati folyam feladat
A maximális folyam feladat
A legrövidebb út feladat
Gyakorlat
Gyakorló feladatok
Ellenőrző kérdések
5. További hálózati feladatok
Többperiódusú termeléstervezés
Kritikus út meghatározása
Gyakorlat
Gyakorló feladatok
Ellenőrző kérdések
6. Más speciális gazdasági feladatok
Halmazlefedési feladat
Utazó ügynök feladat
A feladat alakjai
Az utazó ügynök feladat heurisztikus algoritmusai
Keverési feladat
Gyakorlat
Gyakorló feladatok
Ellenőrző kérdések
7. Módosított szimplex módszer
A feladat
A módszer elméleti háttere
A módszer fő lépései
Bázistranszformáció
Numerikus példa
Gyakorlat
Gyakorló feladatok
Ellenőrző kérdések
8. Duális szimplex módszer
Megoldandó LP feladat
A módszer fő lépései
Numerikus példa
Duális szimplex módszer és egészértékű programozás
Baloldali részfeladat előkészítése
Baloldali részfeladat megoldása duális szimplex módszerrel
Gyakorlat
Gyakorló feladatok
Ellenőrző kérdések
9. Többcélú lineáris programozás
A szekvenciális optimalizálás módszere
A többcélúság helyettesítése, illetve közelítése egy célfüggvénnyel
A súlyozásos módszer
A korlátok módszere
Efficiens pontok
Célprogramozás
Abszolut prioritási modell
Súlyozott eltéréses modell
Gyakorlat
Gyakorló feladatok
Ellenőrző kérdések
10. Nemlineáris optimalizálás
Nemlineáris optimalizálási feladat
A Lagrange függvény és szorzók
A Karush-Kuhn-Tucker tétel
Gyakorlat
Gyakorló feladatok
Ellenőrző kérdések
11. Szeparábilis célfüggvény
Megoldandó feladat és előkészítés
Az eljárás
Gyakorlat
Gyakorló feladatok
Ellenőrző kérdések
12. Gradiens módszer
Megoldandó NLP feladat és előkészületek
A módszer
Numerikus példa
Gyakorlat
Gyakorló feladatok
Ellenőrző kérdések
Irodalomjegyzék

A táblázatok listája

6.1. Távolságok (vezetési idő) percben
8.1. Relaxációs feladat -- optimális megoldás.
8.2. Baloldali részfeladatnak megfelelő szimplex tábla
8.3. Baloldali részfeladat optimális megoldása
9.1.
9.2.
9.3.
9.4.
9.5.
9.6.
9.7.

A példák listája

1.1.
1.2.
1.3.
1.4.
1.5.
4.1.
4.2.
5.1.
6.1.
6.2.
6.3.
9.1.
9.2.
9.3. [Winston '91]
10.1.
10.2.
11.1.

Az egyenletek listája

1.1.
1.2.
1.3.
1.4.
1.5.
1.6.
1.7.
1.8.
1.9.
1.10.
1.11.
1.12.
1.13.
1.14.
5.1.
5.2.
5.3.
5.4.
5.5.
5.6.
6.1.
6.2.
6.3.
6.4.
6.5.
6.6.
6.7.
6.8.
6.9.
6.10.
6.11.
6.12.
6.13.
6.14.
7.1.
7.2.
7.3.
7.4.
7.5.
7.6.
7.7.
7.8.
8.1.
8.2.
8.3.
8.4.
8.5.
8.6.
8.7.
8.8.
8.9.
8.10.
8.11.
8.12.
9.1.
9.2.
9.3.
9.4.
9.5.
9.6.
9.7.
9.8.
9.9.
9.10.
9.11.
9.12.
9.13.
9.14.
9.15.
9.16.
10.1.
10.2.
10.3.
10.4.
10.5.
10.6.
10.7.
10.8.
10.9.
10.10.
10.11.
10.12.
10.13.
10.14.
10.15.
10.16.
10.17.
10.18.
10.19.
10.20.
10.21.
10.22.
10.23.
10.24.
10.25.
10.26.
10.27.
10.28.
10.29.
10.30.
11.1.
11.2.
11.3.
11.4.
11.5.
11.6.
11.7.
11.8.
11.9.
11.10.
11.11.
11.12.
11.13.
11.14.
12.1.
12.2.
12.3.
12.4.
12.5.
12.6.
12.7.
12.8.
12.9.
12.10.

1. fejezet - Modellezés egészértékű változókkal

A gyakorlati életben felmerülő számos probléma olyan optimumszámítási modellekhez vezet, amelyekben a változók egy része (vagy néha minden változó) csak nemnegatív, egész értékeket vehet fel. Az ilyen egészértékű változók között nagyon fontos szerepet játszanak a 0 vagy 1 értéket felvehető változók, azaz a bináris változók. Az egészértékű változókkal történő modellezés szemléltetéséhez tekintsük az alábbi néhány feladatot!

Hátizsák feladat

Tegyük fel, hogy adottak a szállítandó tárgyak (holmik) súllyal (vagy térfogattal) és értékkel (vagy fontossággal). A feladat abban áll, hogy meg kell határoznunk a hátizsákba beteendő holmiknak azt a részhalmazát, amelyek valamely értelemben a leghasznosabbak, és együtt beférnek a korlátozott kapacitású hátizsákba.

Használjuk a következő jelöléseket:

  • m -- a szállítandó tárgyak száma,

  • ai -- az i-edik tárgy súlya (vagy térfogata), i = 1, 2, ..., m,

  • ci -- az i-edik tárgy értéke (vagy fontossága), i = 1, 2, ..., m,

  • b -- a rakomány megengedett maximális összsúlya.

Legyen xi ismeretlen változó értéke 1, ha az i-edik szállítandó tárgy bekerült a hátizsákba, és 0, ha nem (i = 1, 2, ...,m). Ekkor a megoldandó feladat felírható a következő alakban:

feltéve, hogy

és

A hátizsák feladat tehát egy egészértékű, bináris lineáris programozási feladat. A feladat egy egyszerű általánosítása adódik akkor, ha a kiválasztandó tárgyak között vannak azonosak. Ilyenkor a megfelelő optimalizálandó változók értékei nemnegatív egészek lehetnek.

A feladat jellege miatt legtöbbször fel lehet tenni azt, hogy a súlyok és a súlyhatár nemnegatívak. Ennek ellenére mind az ai, mind a ci értékek előjele lehet tetszőleges.

A hátizsák feladatot megoldhatjuk több módszerrel. Ezek közül az egyik a "teljes felsorolás" (total enumeration). Ennek a "módszernek" a lényege az, hogy felsoroljuk az összes változó-kombinációt, és azokból csak a lehetséges megoldásokat választjuk ki. A lehetséges megoldások számára kiszámoljuk a célfüggvény értékeket, és ez alapján meghatározzuk az optimálisat. Nyilvánvalóan az eljárás hátránya az, hogy nagy számú változó esetén a feladat gyakorlatilag kezelhetetlenné válik, mert túl sok esetre kell ellenőrizni a feltételt, és ez a szám a változók számával exponenciálisan nő.

A másik megközelítés az általános LP apparátus és a megfelelő szoftverek használata.

1.1. példa -

Tekintsük a következő feladatot. Legyen a tárgyak súlya rendre 2, 3 és 4, a hasznossága pedig 5, 3, 1, míg a megengedett összsúly 5. Állítsuk elő a feladathoz tartozó összes változó-kombinációt! A megoldást tartalmazó táblázat (a lehetséges megoldásokat "+", az optimálist "*" jelzi) a következő:

Bináris vektorSúlyCélfüggvényJel
(0,0,0)00+
(0,0,1)41+
(0,1,0)33+
(0,1,1)74 
(1,0,0)25+
(1,0,1)66 
(1,1,0)58*
(1,1,1)99 

Oldjuk meg most ezt a feladatot Lingo-val! E feladat Lingo modellje és annak optimális megoldása megtekinthető az 1.1. és az 1.2. ábrán.

1.1. ábra. Példa - Lingo modell.

1.2. ábra. Példa - Megoldás.

A Lingo-ban kapott optimális megoldás teljesen egybeesik a "táblázatos" megoldással.


Hajórakodási probléma

Korlátozott térfogatú szállítóeszköz esetén a hátizsák feladat feltételéhez a térfogatra vonatkozó feltételt is meg kell adni. Ilyenkor a feladatot kétfeltételes terhelési feladatnak is szokás nevezni.

Tegyük fel, hogy ismert súly és térfogat kapacitású hajót kell megrakni bizonyos nem osztható árucikkekkel (pl. gépekkel), amelyek súlya, térfogata és értéke ismert. Meg kell határozni azt a legnagyobb értékű rakományt, amelyet a hajó elszállíthat.

Vezessük be a következő jelöléseket:

  • n -- az árucikkek (tárgyak) típusainak száma,

  • aj -- j-edik tárgy súlya,

  • bj -- j-edik tárgy térfogata,

  • rj -- j-edik tárgy darabszáma,

  • cj -- j-edik tárgy értéke,

  • T -- a hajó rakodási térfogata,

  • K -- a hajó rakodási súlya.

Ha xj jelöli a j-edik tárgyból szállítandó ismeretlen darabszámot, akkor a feladatunk a következő alakú LP modellhez vezet:

ahol x = (x1, x2, ..., xn).

Fix költségek modellezése

A bináris változók használatát igénylő következő feladatot a fix költségek modellezésének szokták nevezni.

A nagyüzemi termelésre az ún. sorozatgyártás a jellemző, vagyis, hogy ugyanazt a terméket nem állandóan, hanem bizonyos időközönként gyártják. A sorozatgyártásra való felkészülés idővel és különféle ráfordításokkal járhat, ezért egyáltalán nem mindegy, hogy egy terméket hányszor "vonnak be" a sorozatgyártásba és egy-egy ilyen időszakban mekkora mennyiségben gyártják le. Ezzel kapcsolatos a feladatunk.

A termelési költség általában két fő részből áll: egy fix költségből és egy a termelt mennyiséggel arányos változó költségből. Itt fix költségen nem azt a költséget értjük, amely minden termeléstől függetlenül felmerül (pl. épületkarbantartás), mert ezt a konstanst a célfüggvényhez adva (vagy abból levonva, a célfüggvény gazdasági tartalmától függően) az optimum helyét (azaz az optimális megoldást) nem változtatja meg, csak azt a költséget módosítja, amely minden sorozatgyártás beindulásakor felmerül és a sorozat nagyságától független (pl. speciális szerszámok, a gépek beállítási költsége stb.). Ez a költség azonban már nem független a termeléstől, mert egyáltalán nem merül fel, ha a megfelelő terméket nem állítják elő.

Jelölje:

  • n -- a termelhető termékek számát,

  • m -- a rendelkezésre álló (szűkös) erőforrások számát,

  • bi -- az i-edik erőforrás kapacitását (készletét),

  • aij -- az i-edik erőforrásból a j-edik termék egységnyi mennyiségének előállításához szükséges mennyiséget,

  • cj -- a j-edik termék egy egységéből származó árbevételét,

  • dj -- a j-edik termék előállításának beindításához szükséges fix költségét,

  • Nj -- a j-edik termékből gyártandó mennyiség felső korlátját. i = 1, 2, ..., m, j = 1, 2, ..., n.

Ha xj jelenti a j-edik termékből gyártandó ismeretlen mennyiséget, akkor a maximális P(x,y) "nyereséget" (az árbevétel és a gyártás fixköltségének különbsége) a következő modell határozza meg:

1.1. egyenlet -


1.2. egyenlet -


1.3. egyenlet -


1.4. egyenlet -


ahol x = (x1, x2, ..., xn), y = (y1, y2, ..., yn).

Ebben a modellben az (1.2) és y = 0/1 feltételek együttesen biztosítják azt, hogy

Azaz, hogy a dj fix költség akkor és csak akkor lépjen fel, ha a j-edik terméket gyártják. Más szavakkal, ha xj = 0, akkor a j-edik termék költsége 0 legyen, viszont ha xj > 0, akkor a termék költsége legyen dj egységes.

Az is belátható, hogy az (1.1)-(1.4) feladatban az xj ismeretlen változók alapértelmezés szerint folytonos értékűek, de a feladat tartalmától függően az (1.1)-(1.4) modellhez hozzácsatolhatunk az xj változókra vonatkozó egészértékűségi megszorításokat.

Természetesen, az (1.1)-(1.4) feladathoz még csatlakoztathatók más feltételek is, pl. amelyek a már megkötött szerződések miatt a termékekre alsó korlátot írnak elő.

1.2. példa -

Tegyük fel, hogy egy bútorgyártással foglalkozó üzemben gyártanak székeket, asztalokat és ágyakat. Az előállított bútorok után járó tiszta profit darabonként 4000, 7300 és 17500 forint. A gyártáshoz szükséges és rendelkezésre álló erőforrások (fűrészáru, géppark idő, munkaidő) készlete rendre 1500 egység, 2150 egység és 3000 egység. Az egy darab termék előállításához szükséges fűrészáru, gépóra és munkaóra mennyisége - összefoglaló néven fajlagos ráfordítási együtthatók - a következő táblában szerepelnek:

 SzékekAsztalokÁgyak
Fűrészáru3615
Géppark idő5825
Munkaidő101040

Ha a székek gyártásának beindítása 100 ezer, az asztalok gyártásának beindítása 300 ezer, az ágyaké 500 ezer forint fix költséggel jár, akkor a következő modellel lehet optimalizálni a nyereséget ezer forintban kifejezve:

Nj értéket azért választottuk mindhárom esetben 1000-nek, mert a feltételrendszer alapján könnyen látható, hogy egyik változó sem vehet fel 1000-nél nagyobb értéket, így egyik változó értékét sem korlátozzuk indokolatlanul. Vegyük észre, hogy az Nj értékek legkisebb értéke a feltételekből adódóan rendre

  • min {1500/3, 2150/5, 3000/10} = min {500, 430, 300} = 300,

  • min {1500/6, 2150/8, 3000/10} = min {250, 268 3/4, 300} = 250,

  • min {1500/15, 2150/25, 3000/40} = min {100, 86, 75} = 75

egység.

Ha azonban azt kívánjuk előírni, hogy x1 optimális értéke ne legyen nagyobb 50-nél, akkor az x1 ≤ 1000y1 feltétel helyett az x1 ≤ 50y1 feltételt csatoljuk a modellhez.


Beruházás modellezése

Gazdasági életben gyakran felmerülnek feladatok, amelyeknél olyan döntést kell hozni, hogy egy vagy több szóba jöhető beruházást gazdasági szempontból érdemes-e megvalósítani.

Ha csak egyetlen beruházásról kell dönteni, hogy azt megvalósítsuk-e vagy sem, akkor eljárhatunk úgy, hogy megoldjuk a feladatot úgy, mintha a beruházást végrehajtanánk és úgy is mintha nem, és a két variáció közül a kedvezőbbet fogadjuk el.

A probléma azonban általában úgy merül fel, hogy több (de véges sok), egymást bizonyos értelemben helyettesíthető, avagy kizáró beruházási változat közül valamely cél elérése érdekében melyiket, ill. melyeket érdemes megvalósítani. Itt az összes variációt nem lehet kipróbálni, többek között a nagy számuk miatt.

Az ilyen fajta feladatok modellezésénél ki fogjuk használni azt a tényt is, hogy a tervezendő időszakban nem feltétlenül merül fel költségként a beruházás teljes összege. Az egyszerűség érdekében feltételezni fogjuk, hogy a tervezendő időszak (pl. egy év) termelési szerkezetét kívánjuk optimalizálni.

Jelölje:

  • m -- a termeléshez felhasznált erőforrások számát (ezek, ill. egy részük kapacitása beruházással bővíthető),

  • n -- a termelhető termékek számát,

  • r -- a szóba jöhető beruházások számát,

  • aij -- a j-edik termék egy egységének gyártásához az i-edik erőforrásból felhasznált mennyiséget,

  • bi -- az i-edik erőforrásból rendelkezésre álló (beruházás nélküli) mennyiséget,

  • b0 -- a beruházásra maximálisan felhasználható pénzösszeget,

  • bik -- az i-edik erőforrás növekedésének mennyiségét, ha a k-adik beruházást megvalósítjuk,

  • dk -- a k-adik beruházás értékét,

  • cj -- a j-edik termék egy egységére jutó (beruházás nélküli) nyereségét,

  • vk -- a k-adik beruházás adott időszakra eső költségét.

Ha xj jelenti a j-edik termékből gyártott mennyiséget és yk = 1 vagy yk = 0 aszerint, hogy a k-adik beruházást megvalósítjuk-e vagy sem, akkor a maximális nyereséget biztosító termelési szerkezetet a következő egészértékű LP feladat megoldása adja:

1.5. egyenlet -


1.6. egyenlet -


1.7. egyenlet -


1.8. egyenlet -


1.9. egyenlet -


ahol x = (x1, x2, ..., xn), y = (y1, y2, ..., yr).

"Vagy-vagy" logikai feltétel modellezése

Az eddigiek során egy modell összes feltételének egyidejű teljesülését kívántuk meg. Ezt úgy jeleztük, hogy felsoroltuk a modell feltételeit és alapértelmezés szerint hallgatólagosan feltételeztük, hogy a logikai "és" köti össze őket. Tegyük fel, hogy e szigorú követelmény helyett megelégszünk azzal, hogy a modell f1(x) ≤ b1 és f2(x) ≤ b2 két feltétele közül legalább az egyik teljesül, tehát logikai "vagy" kapcsolja össze őket.

Más szavakkal, ha megengedhetjük, hogy vagy csak f1(x) ≤ b1 vagy csak f2(x) ≤ b2 feltétel teljesüljön, de nincs olyan követelmény, hogy mindkét feltétel egyidejűleg teljesüljön , akkor az

feltételek helyett az alábbi két feltételt kell beépíteni a modellbe:

ahol M ≫ 0 az f1(x) és f2(x) függvények egy közös felső korlátja, és y egy 0 vagy 1 éréket felvevő bináris segédváltozó. Vigyáznunk kell arra, hogy az M értékét olyan nagyra válasszuk, hogy ne jelentsen az f1(x) és f2(x) függvényekre nézve a feladatból adódóaknál szűkebb korlátozást.

Ha y = 0, akkor az (i) feltételnek kell teljesülni és f2(x) értéke nagyobb is lehet b2-nél. Ha viszont y = 1, akkor a (ii) feltételnek kell teljesülni és f1(x) értéke nagyobb is lehet b1-nél. Az (i)-(ii) feltételrendszer nem zárja ki azt sem, hogy mindkét feltétel egyidejűleg teljesüljön.

1.3. példa -

Tegyük fel, hogy a fenti bútorgyártással kapcsolatos feladatba be kell építenünk egy olyan követelményt, amely szerint a székek gyártandó mennyisége legyen vagy 50-nél nem nagyobb vagy 100-nál nem kisebb, azaz az

x1 ≤ 50 vagy x1 ≥ 100

két feltételből teljesüljön legalább egy. Ilyenkor a modellhez a következő megszorításokat kell csatolnunk:

ahol y4 ∈ {0,1}.


"Ha-akkor" logikai feltétel modellezése

Most tekintsük a következő két feltételt:

és tegyük fel, hogy azt a helyzetet kívánjuk modellezni, hogy ha a megoldásnál teljesül az f1(x) > 0 szigorú egyenlőtlenség, akkor f2(x) ≥ 0 feltétel is teljesüljön. Viszont, ha f1(x) > 0 feltétel nem teljesül, akkor f2(x) ≥ 0 feltétel teljesítése nem szükséges. Ekkor az eredeti két feltétel helyett a modellbe a következőt kell beépíteni :

ahol M ≫ 0 az f1(x) és f2(x) függvények egy közös felső korlátja (elég nagy pozitív szám) és y egy 0 vagy 1 éréket felvevő bináris segédváltozó.

1.4. példa -

Fogalmazzuk meg az alábbi feltételt bináris változók bevezetésével: ha az 1. számú vagy 2. számú termék közül legalább az egyiket gyártjuk, akkor a 3., 4. és 5. számú közül is legalább az egyiket gyártani kell.

Legyen yj = 1 akkor, ha a j-edik terméket gyártjuk és yj = 0, ha nem. Ekkor az

y1 + y2 > 0

egyenlőtlenség biztosítja, hogy az 1. és 2. termék közül legalább az egyiket gyártsuk. Hasonlóképpen

y3 + y4 + y5 ≥ 1

feltétel teljesülése esetén legalább az egyiket kell gyártanunk a 3., 4. és 5. számú termék közül.

A két fenti egyenlőtlenséget egy y bináris változó bevezetésével a következőképpen kapcsoljuk össze:

Ha y1 + y2 > 0, akkor legyen y = 0.

Ha y = 0, akkor legyen y3 + y4 + y5 ≥ 1 .

A fent leírt szabály szerint ezen összefüggés teljesülése az alábbi rendszerrel kényszeríthető ki:

1.10. egyenlet -


1.11. egyenlet -


ahol f1(y) = y1 + y2, f2 = y3 + y4 + y5 és M egy viszonylag nagy értékű pozitív szám.

Tegyük fel, hogy az optimális megoldásnál teljesül az y1 + y2 > 0 feltétel. Az (1.10) egyenlőtlenség szerint ebből következik, hogy ilyenkor y = 0, mert (1.10) szerint ilyenkor y nem lehet egy. Ebből kifolyólag, ha y = 0, akkor az (1.11) feltétel

-y3 - y4 - y5 + 1 ≤ 0

alakúvá válik és emiatt teljesül az igényelt előírás, azaz y3 + y4 + y5 ≥ 1.


1.5. példa -

Tekintsük a következő feltételt: ha az 1. és 2. számú termék gyártandó mennyiségének összege meghaladja a 100 egységet, akkor a 3. és a 4. termékből legalább 50-50 egységet kell gyártani. Az ilyen fajta feltétel modellezéséhez vezessük be a következő változókat: xj, a j-edik termék gyártandó mennyisége, y3 és y4 0/1 értékű segédváltozó. Ekkor

1.12. egyenlet -


kifejezi azt, hogy az 1. és 2. termék gyártandó mennyiségének összege meghaladja a 100 egységet. Az a követelmény, amely szerint a 3. és a 4. termékből legalább 50-50 egységet kell gyártani, leírható az

1.13. egyenlet -


formában.

A fent leírt szabálynak megfelelően írhatjuk, hogy

ahol x3, x4, y3 és y4 változók a következő összefüggésben állnak:

1.14. egyenlet -


Ebből kapjuk a következőt:

mégpedig y3, y4, y ∈ {0,1}.

Nyilvánvaló, ha teljesül az (1.12) feltétel, akkor (i) feltételnek megfelelően y = 0. Ilyenkor az (ii) feltételből következik, hogy 2 ≤ y3 + y4. Mivel y3 és y4 bináris változók, ebből kapjuk, hogy y3 = 1 és y4 = 1. Ennek következtében az (1.14) feltételből kapjuk az (1.13) feltétel teljesülését.


Gyakorlat

Gyakorló feladatok

  1. Egy műtrágya üzemben három féle terméket gyártanak: A-t, B-t és C-t. Az előállított termékek után járó tiszta profit egységenként 1000, 3200 és 7500 forint. A gyártáshoz szükséges erőforrások (alapanyagok, géppark idő, munkaidő) rendre 1250 egység, 2000 egység és 3000 egység. Az egy egység termék előállításához szükséges alapanyagok, gépóra és munkaóra mennyisége a következő táblában szerepelnek:

     ABC
    Alapanyagok245
    Géppark idő1582
    Munkaidő302010

    Fogalmazzon meg megfelelő, a nyereséget maximalizáló lineáris programozási modellt, ha az A termék gyártásának beindítása 150 ezer, a B termék gyártásának beindítása 230 ezer, a C termék gyártásának beindítása 370 ezer forint fix költséggel jár!

  2. Alakítsa át a fenti modellt úgy, hogy az tartalmazza a következő feltételeknek megfelelő megszorításokat:

    • Az A termék gyártandó mennyisége nem lehet nagyobb 100-nál.

    • Az A termék gyártandó mennyisége nem lehet nagyobb 100-nál vagy kisebb 250-nél.

    • A B termék gyártandó mennyisége nem lehet nagyobb 75-nél.

    • A B termék gyártandó mennyisége nem lehet nagyobb 75-nél vagy kisebb 150-nél.

    • A C termék gyártandó mennyisége nem lehet nagyobb 175-nél.

    • A C termék gyártandó mennyisége nem lehet nagyobb 175-nél vagy kisebb 350-nél.

  3. Fejlessze tovább az 1.1. pontban leírt modellt úgy, hogy az tartalmazza a következő feltételeknek megfelelő megszorításokat:

    • Az A termék csak akkor gyártható, ha C termék előállítandó mennyisége meghaladja a 100 egységet.

    • Az A termék csak akkor gyártható, ha B és C termék együttes előállítandó mennyisége meghaladja 150 egységet.

    • A B termék nem gyártható, ha A termék előállítandó mennyisége kisebb, mint 50 egység.

    • A B termék csak akkor gyártható, ha A termék előállítandó mennyisége nagyobb, mint 150 egység.

    • A C termék csak akkor gyártható, ha B termék előállítandó mennyiségé nullánál nagyobb.

    • A C termék nem gyártható, ha B termék előállítandó mennyisége kisebb, mint 150 egység.

  4. Módosítsa tovább az 1.1. pontban leírt modellt úgy, hogy az tartalmazza a következő feltételeknek megfelelő megszorításokat:

    • Az A és B termékből együtt legalább 100 egységet kell gyártani.

    • Az A és B termékből egyszerre csak az egyiket lehet gyártani.

    • Az A és C termékből együtt legfeljebb 250 egységet szabad gyártani.

    • Az A és C termékből együtt legalább 100 egységet kell gyártani.

    • A B és C termékből együtt legfeljebb 50 egységet szabad gyártani.

    • A B és C termékből egyszerre csak az egyiket lehet gyártani.

  5. Fejlessze tovább az 1.1. pontban leírt modellt úgy, hogy az tartalmazza a következő feltételeknek megfelelő megszorításokat:

    • Az A termék csak akkor gyártható, ha B és C termék együttes előállítandó mennyisége meghaladja a 100 egységet.

    • Az A termék csak akkor gyártható, ha B termék előállítandó mennyisége nem nagyobb 150 egységnél.

    • A B termék nem gyártható, ha A és C termék együtt előállítandó mennyisége kisebb, mint 50 egység.

    • A B termék csak akkor gyártható, ha A és C termék együttes előállítandó mennyisége nagyobb, mint 150 egységet.

    • A C termék csak akkor gyártható, ha A és B termék együttes előállítandó mennyisége nullánál nagyobb.

    • A C termék nem gyártható, ha A és B termék együtt előállítandó mennyisége kisebb, mint 150 egység.

Ellenőrző kérdések

  1. Egy gyárban egy 1000 egységes kiadás akkor és csak akkor keletkezik, ha x1 változó optimális értéke pozitív. Hogyan lehet a modellben leírni ezeket a feltételeket?

  2. Egy gyárban egy 1500 egységes kiadás akkor és csak akkor keletkezik, ha az optimális megoldásnál teljesül a következő feltétel: x1 > 25. Hogyan lehet a modellben leírni ezeket a feltételeket?

  3. Egy gyárban egy 1500 egységes kiadás akkor és csak akkor keletkezik, ha az optimális megoldásnál teljesül a következő feltétel: x1 < 25. Hogyan lehet a modellben leírni ezeket a feltételeket?

  4. Egy gyárban egy 1500 egységes kiadás akkor és csak akkor keletkezik, ha az optimális megoldásnál NEM teljesül a következő feltétel: x1 ≥ 25. Hogyan lehet a modellben leírni ezeket a feltételeket?

  5. Egy LP feladatnál felmerült az a megszorítás, hogy x1 ≥ 0 és x2 ≥ 0 feltétel közül legalább az egyik teljesüljön, de nem kötelező, hogy egyszerre teljesüljön mindkettő. Hogyan lehet a modellben leírni ezeket a követelményeket?

  6. Egy LP feladatnál felmerült az a megszorítás, hogy 2x1 + 3x2 ≥ 10 és x2 ≥ 0 feltétel közül legalább az egyik teljesüljön, de nem kötelező, hogy egyszerre teljesüljön mindkettő. Hogyan lehet a modellben leírni ezeket a követelményeket?

  7. Egy LP feladatnál felmerült az a megszorítás, hogy 2x1 + 3x2 ≤ 10 és x1 + 5x2 ≥ 0 feltétel közül legalább az egyik teljesüljön, de nem kötelező, hogy egyszerre teljesüljön mindkettő. Hogyan lehet a modellben leírni ezeket a követelményeket?

  8. Egy LP feladatnál felmerült az a megszorítás, hogy ha az optimális megoldásnál x1 > 0, akkor teljesüljön a következő feltétel: x2 ≥ 10 . Hogyan lehet a modellben leírni ezt a követelményt?

  9. Egy LP feladatnál felmerült az a megszorítás, hogy ha az optimális megoldásnál 2x1 + x2 > 100 , akkor teljesüljön a következő feltétel: x3 + x4 + x5 ≥ 250 . Hogyan lehet a modellben leírni ezt a követelményt?

  10. Egy LP feladatnál felmerült az a megszorítás, hogy ha az optimális megoldásnál NEM teljesül a 2x1 + x2 ≥ 100 feltétel, akkor teljesüljön a következő feltétel: x3 + x4 + x5 ≥ 250 . Hogyan lehet a modellben leírni ezt a követelményt?

2. fejezet - Szakaszonként lineáris függvények modellezése

Jelen fejezetben a lineáris programozási feladatnak olyan speciális esetével foglalkozunk, amelynek P(x) célfüggvénye nem folytonos az ún. törések miatt és ezért több egyenes szakaszból áll. Az ilyen függvényeket szakaszonként lineáris függvényeknek szoktuk nevezni.

Szakaszonként lineáris függvény

Tekintsük a 2.1. ábrán látható szakaszonként lineáris f(x) függvényt.

2.1. ábra. Szakaszonként lineáris függvény.

Ennek a függvény az értelmezési tartománya a [0; 22] intervallum, amely a következő négy kisebb intervallumból áll: [0; 6], [6; 12], [12; 16], [16; 22]. Azokat a pontokat, amelyekben az f(x) függvény dőlése változik (beleértve az értelmezési tartomány szélső pontjait), törési pontoknak fogjuk nevezni. Így, az f(x) függvényünk esetén a törési pontok a következők: 0, 6, 12, 16, 22.

Annak az illusztrálásához, hogy mikor és miként jelenhetnek meg szakaszonként lineáris függvények az alkalmazásokban, tekintsük az alábbi példát [Winston '91]. Tegyük fel, hogy egy vállalat az általa gyártott termék előállításához szükséges nyersanyagot a beszállítótól kapja a következő feltételekkel: a nyersanyagból legfeljebb 1500 egység kapható az adott beszállítótól úgy, hogy az első 500 egységet 25 Ft egységáron, a következő 500 egységet már 20 Ft egységáron, és az utolsó 500 egységet 15 Ft egységáron.

Jelölje x a nyersanyag ismeretlen mennyiségét és c(x) legyen a megvett nyersanyag teljes ára. Világos, hogy ha x ≤ 0, akkor c(x) = 0. Abban az esetben, ha 0 ≤ x ≤ 500, akkor c(x) = 25x. Továbbá, ha 500 ≤ x ≤ 1000, akkor c(x)= (az első 500 egység ára) + (az ára az 500 egység feletti mennyiségnek) = 25 × 500 +20 × (x-500) = 20x + 2500. A harmadik 500 egységnél, azaz ha 1000 ≤ x ≤ 1500, a teljes költség a következő módon alakul: (az első 500 egység ára) + (az második 500 egység ára) + (az ára az 1000 egység feletti mennyiségnek). Így,

Tehát, az adott szakaszonként lineáris c(x) függvény három szakaszból áll és a következő négy törési ponttal rendelkezik: 0, 500, 1000 és 1500 (2.2. ábra).

2.2. ábra. c(x) függvény - a nyersanyag teljes ára.

Annak ellenére, hogy a szakaszonként lineáris függvények nem lineárisak, az ilyen függvényeket tartalmazó optimumszámítási feladatok modellezéséhez illetve megoldásához mégis használhatjuk a lineáris programozási technikákat. Szerencsére bináris változók bevonásával a szakaszonként lineáris függvényeket viszonylag könnyen ki lehet fejezni lineáris alakban.

Tegyük fel, hogy a szakaszonként lineáris f(x) függvény a következő törési pontokkal rendelkezik: b1, b2, ..., bn. Tehát, bk ≤ x ≤ bk+1, valamilyen k = 1, 2, ..., n-1-re. Ennek megfelelően a k-adik intervallumra vonatkozóan írhatjuk, hogy

Mivel f(x) függvény lineáris a bk ≤ x ≤ bk+1 tartományban, ezért

Az ötlet illusztrálásához térjünk vissza a fenti példához és tegyük fel, hogy x = 800. Ekkor

b1 = 0, b2 = 500, b3 = 1000, b4 = 1500.

Ebből kifolyólag b2 = 500 ≤ 800 ≤ 1000 = b3 és ennek megfelelően

Abban az esetben, ha x = 1200, akkor b3 = 1000 ≤ 1200 ≤ 1500 = b4 és

Modellezési eljárás

Az elmondottak alapján a szakaszonként lineáris függvény lineáris programozási eszközökkel való modellezéséhez használhatjuk az alábbi eljárást.

  1. Jelöljük b1,b2, ..., bn törési pontokat és ezzel együtt meghatározzuk a [b1, b2], [b2, b3], ..., [bn-1, bn] (n-1) darab intervallumot.

  2. A k-adik intervallumhoz rendeljünk hozzá egy-egy yk "szakaszi" 0/1 értékű változót: yi [bi,bi+1].

  3. Minden bj törési ponthoz rendeljünk hozzá egy-egy zj ≥ 0 "törési" valós értékű változót: zj [0,1];

  4. Helyettesítsük az eredeti x változót és az eredeti f(x) szakaszonként lineáris függvényt a következő módon:

  5. Csatoljuk hozzá a modellhez az alábbi feltételeket:

  6. Adjuk hozzá a modellhez az y1 + y2 + ... + yn-1 = 1 feltételt.

Az ebben az eljárásban bevezettet yj segédváltozók előírják, hogy az (n-1) intervallumból csak egy intervallumot kell választani.

A zj változók pedig lehetővé teszik az yj változók által meghatározott intervallumon belül beállítani az x változó értékét a megfelelő intervallum szélső pontjainak lineáris kombinációjaként.

Numerikus példa

Az eljárás illusztrálásához tekintsük a következő példát [Winston '91]. Egy olajfinomító cég kétféle üzemanyagot állít elő (B1 és B2) kétféle olajból (O1 és O2). A technológiai előírások szerint a B1 termék tartalmában az O1 nyersanyagból nem lehet kevesebb, mint 50% és a B2 termékben az O1 nyersanyagból nem lehet kevesebb, mint 60%. A B1 és B2 késztermékek eladási ára 12 és 14 Ft per egy egység:

  B1 B2 Készlet
O1 min 50%min 60%500
O2 --1000
ár/l1214 

A rendelkezésre álló nyersanyagok mennyisége: 500 egység O1-ből és 1000 egység O2-ből. Tudjuk, hogy még legfeljebb 1500 egység szerezhető be az O1 nyersanyagból a következő feltételek mellett: első 500 egység 25 Ft per egység, következő 500 egység ára 20 Ft per egység, míg a harmadik 500 egységnél az ár 15 Ft per egység, azaz

Kiegészítő mennyiség0 ≤ x ≤ 500500 ≤ x ≤ 10001000 ≤ x ≤ 1500
Ár (Ft/egység)252015

Állítsunk elő olyan lineáris programozási modellt, amely maximalizálja a cég profitját, azaz

bevétel - beszerzési költség → max

Elsősorban vezessünk be a következő változókat:

  • x: az O1 nyersanyag kiegészítő mennyisége,

  • xij: a j-edik termék előállítására használt i-edik nyersanyag mennyisége, i = 1, 2, j = 1, 2.

Nyilvánvaló, hogy

Továbbá, B(x) bevétel és C(x) beszerzési költség a következő módon alakulnak:

Csatoljuk hozzá a modellhez a következő feltételeket:

Nyersanyag feltételek:

Keverési előírások:

Az előző szekcióban leírt eljárásnak megfelelően

  1. Jelöljük a törési pontokat: b1 = 0, b2 = 500, b3 = 1000, b4 = 1500.

  2. Vezessük be y1, y2, y3 "szakaszi" 0/1 értékű változókat.

  3. Vezessük be z1,z2, z3, z4 "törési" változókat úgy, hogy teljesüljön a következő feltétel:

  4. Helyettesítsük az x változót és a c(x) függvényt az alábbi módon:

  5. Bővítsük a modellt a következő feltételekkel:

  6. Végül, biztosítsuk, hogy a három szakaszból csak egyet lehessen választani:

Így a célfüggvény végleges formában a következőképpen írható fel:

P(x)=12(x11 + x21) + 14(x12 + x22)-c(x), ahol c(x)= 0z1 + 12500z2 + 22500z3 + 30000z4.

Gyakorlat

Gyakorló feladatok

  1. Oldja meg a 2.3. szekcióban megfogalmazott feladatot Lingo segítségével!

  2. A 2.3. szekcióban megfogalmazott feladatot bővítse azzal a feltételezéssel, hogy O2 nyersanyagból kiegészítő mennyiséget a következő feltételek mellett lehet szerezni:

    Kiegészítő mennyiség0 ≤ O2 ≤ 250250 ≤ O2 ≤ 500500 ≤ O2 ≤ 750
    Ár (Ft/egység)453025

  3. Fejlesszen az előző pontnak megfelelő LP modellt és oldja meg azt Lingo csomaggal!

  4. Írja le a modellezési menetét a következő szakaszonként lineáris f(x) függvénynek:

    Törési pontok: 0, 50, 100, 150, 200,

  5. Írja le a modellezési menetét a következő szakaszonként lineáris g(x) függvénynek:

    Törési pontok: 0, 50, 100, 150, 200,

  6. Tekintsük az előző két pontban megadott f(x) és g(x) függvényeket. Fejezze ki az f(x)-g(x) függvényt és fogalmazzon meg olyan LP modellt, amely maximalizálja az f(x)-g(x) függvényt a [0; 200] tartományban!

  7. Oldja meg az előző pontban megkonstruált modellt Lingo-val!

  8. Alakítsa át az előző pontban megfogalmazott modellt a g(x)-f(x) célfüggvénynek megfelelően! Majd oldja meg a kapott modellt Lingo-val!

  9. Alakítsa át az előző pontban megfogalmazott modellt a 3g(x)-2f(x) célfüggvénynek megfelelően! Majd oldja meg a kapott modellt Lingo-val!

  10. Alakítsa át az előző pontban megfogalmazott modellt a 3g(x)+2f(x) célfüggvénynek megfelelően! Majd oldja meg a kapott modellt Lingo-val!

Ellenőrző kérdések

  1. Mikor mondhatjuk egy f(x) függvényről, hogy az szakaszonként lineáris?

  2. Mik a törési pontok és milyen feladatokban merülhetnek fel?

  3. Mik a szakaszok és milyen viszonyban állnak a törési pontokkal?

  4. Mik a szakaszi változók és milyen viszonyban állnak a szakaszokkal?

  5. Mik a törési változók és milyen viszonyban állnak a szakaszokkal?

  6. Milyen értékűek lehetnek a törési változók?

  7. Milyen értékűek lehetnek a szakaszi változók?

  8. Adott egy három szakaszos lineáris függvény. Hány törési ponttal rendelkezik egy ilyen függvény?

  9. Adott egy négy szakaszos lineáris függvény. Összesen hány törési változót és szakaszi változót igényel egy ilyen függvény modellezése?

  10. Adott egy kilenc szakaszos lineáris függvény. Összesen hány törési változót és szakaszi változót igényel egy ilyen függvény modellezése?

3. fejezet - Speciális témájú feladatok

Tekintsünk még néhány olyan gazdasági feladatot, amelyek lineáris programozási feladathoz vezetnek.

Ütemezési feladat

Tekintsük a következő optimumszámítási ütemezési feladatot. Egy cég dolgozói állománya 30 emberből áll, akik hetente 5 napot dolgoznak. A hét egyes napjain különböző nagyságú létszám szükséges a munkák ellátásához. Ezek az adatok az alábbi táblázatban vannak:

NapHKSzCsPSzV
Szükéges létszám (fő)18242516212818

Kérdés: Hogyan kell megszervezni a műszakokat úgy, hogy minimális legyen azok száma, akik nem egymás utáni napokon szabadnaposak?

Jelölje xij, (i = 1, ..., 7, j = 1, ..., 7) azon emberek számát, akiknek a hét i-edik és j-edik napja szabad. Szokás szerint legyen a hét első napja hétfő.

Mivel hétfőn 18-an dolgoznak, ezért 12 főnek kell ezen a napon kivenni a heti egyik szabadnapját:

Kedden 6 (azaz 30-24) fő szabadnapos, ennek megfelelően a keddi egyenlet a következő alakú:

Szerdán 25-en dolgoznak és ezért 5 fő szabadnapos, így

A csütörtöki egyenletben ki kell fejezni azt a tényt, hogy 14 fő ezen a napon szabadnapos. Ezekhez tartoznak azok, akik szabadnaposok hétfőn és csütörtökön (azaz x14 változó), kedden és csütörtökön (azaz x24), szerdán és csütörtökön (azaz x34), csütörtökön és pénteken (azaz x45), csütörtökön és szombaton (azaz x46), illetve csütörtökön és vásárnap (azaz x47). Így

A hét többi napjára az alábbi feltételeket kapjuk:

Mivel minden dolgozó szabadnapjai vagy szomszédos, vagy nem szomszédos napokra esnek (nyilván kizáró értelemben), ezért keressük azok számának maximumát, akik szomszédos napokon szabadnaposak. Így a célfüggvény az alábbi alakú lesz:

Az optimális célfüggvényértéket 30-ból kivonva megkapjuk, hogy legalább hányan kénytelenek heti két pihenőnapjukat nem szomszédos napokon kivenni.

Természetesen gondoskodnunk kell arról is, hogy az optimális megoldás, azaz minden xij változó egészértékű legyen. Szóval, a fenti munkaerő-ütemezési feladatnak megfelelő egészértékű LP modell a következő:

Az ilyen fajta munkaerő-ütemezési feladatokban gyakran kell minimalizálni a dolgozók létszámát az adott műszakbeosztás mellett. Tekintsünk még egy numerikus példát.

Egy kórházban a hét napjain különböző számú nővérre van igény. A szükséges létszámot az alábbi táblázat mutatja:

NapHKSzCsPSzV
Munkaerő-igény (fő)16151718141210

Minden nővérnek négy napot kell egymás után dolgozni és utána (négy ledolgozott munkanap után) három szabadnapot kap. Kérdés: Legalább hány nővért kell a kórháznak alkalmazni?

Jelölje xi azon nővérek számát, akik a négy munkanapból álló időszakot a hét i-edik napján kezdik el, ahol a hét 1. napja hétfő.

Ekkor a megoldandó LP modell első (azaz hétfői) feltétele:

mivel hétfőn azok dolgoznak, akik pénteken (x5), szombaton (x6), vasárnap (x7) vagy hétfőn (x1) kezdik el a négynapos munkahetet. A hét minden napjára fel kell írni egy analóg feltételt:

A modell célfüggvénye:

Ezenkívül, minden változó nemnegatív és egészértékű:

Leszabási és pakolási feladat

Tekintsük a következő optimumszámítási feladatot. Egy kereskedő 6 méter hosszúságú csöveket árusít, amelyeket a vásárlók kívánságára méretre is kell vágni. A legutóbbi megrendelés tételeit az alábbi táblázat mutatja:

MennyiségMéret
70 db250 cm
100 db160 cm
120 db100 cm

A kérdés: Legalább hány darab 6 méteres csövet kell a kereskedőnek feldarabolnia, hogy a megrendelést ki tudja elégíteni?

A cél tehát a feldarabolandó csövek minimális számának meghatározása. A megfelelő optimumszámítási modell felépítését kezdjük azzal, hogy vegyük észre, hogy egy 6 méteres csövet többféle módon is fel lehet darabolni úgy, hogy a megrendelt hosszúságú csövek, és végül egy 100 cm-nél rövidebb darab keletkezzék. Minden feldarabolás - szaknyelven szabásminta (vagy szabási minta) - egy számhármassal, azaz egy három elemből álló vektorral felírható és jellemezhető. Egy ilyen vektor komponensei azt mutatják, hogy a kérdéses szabásminta esetén az egyes rendelt hosszakból (rendre 250 cm, 160 cm és 100 cm) hány darab cső keletkezik. Ezeket a vektorokat a kétdimenziós leszabásoknál (pl. lemezek, szövetek stb.) használatos elnevezés alapján mintavektoroknak nevezzük. A kérdés tehát az, hogy a kereskedő hány csövet daraboljon fel az egyes szabásminták szerint, ha minimális számú csövet szeretne felhasználni.

Ehhez először meg kell határozni és megfelelő módon leírni az összes szóba jöhető szabásmintát (azaz mintavektort), amelyek a rendelt hosszak kis száma és viszonylag nagy mérete miatt könnyen előállíthatók. Az adott feladatban összesen 8 ilyen mintavektort kapunk, amelyek az alábbi táblázat oszlopaiban találhatók:

HosszúságokSzabásminták
12345678
250 cm-es21110000
160 cm-es02103210
100 cm-es10131246

Jelölje xj azon csövek egész számát, amelyeket a j-edik szabásminta szerint darabolunk fel. Ezért a megoldandó LP modell célfüggvénye felírható a következő módon:

A feltételekben rögzítenünk kell az egyes rendelt hosszakból igényelt mennyiségeket:

Ez a feladat több optimális megoldással rendelkezik és ezek közül az egyik a következő: x* = (34, 2, 0, 0, 32, 0, 0, 9). Ezen optimális megoldás szerint elegendő 77 csövet feldarabolni, mégpedig az 1. minta szerint 34-et, a 2. minta szerint 2-t, az 5. minta szerint 32-t, és a 8. minta szerint 9 darabot.

A leszabási feladatok fontosságát az a tény támasztja alá, hogy sok terméket csak néhány méretben állítanak elő, és az igényeknek megfelelően kell feldarabolni azokat. Ez jellemző a fémiparra (csövek, idomacélok, stb.), de a papír-, bútor- és üvegiparra is. A cél általában az, hogy a megrendelést minimális számú termék feldarabolásával elégítsük ki, mivel a kisebb darabok már nehezebben értékesíthetők.

Számos olyan gyakorlati probléma is felfogható leszabási feladatként, ahol csak átvitt értelemben van szó darabolásról, mint pl. a raklap- vagy konténer-pakolási feladat. Ezek kettő, illetve háromdimenziós feladatok.

Többperiódusú pénzügyi tervezési feladat

Egy vállalkozásnak a következő 4 hónap mindegyikének elején vannak bevételei és a számlákat is ki kell fizetnie. Az összegeket (bevételeket és kiadásokat) az alábbi táblázat tartalmazza:

HónapBevételek (e Ft)Számlák (e Ft)
1600600
2800500
3300500
4300250
Összesen20001850

A számlák kiegyenlítése után fennmaradó összeg leköthető a következő táblázatban szereplő adatoknak megfelelően:

IdőtartamKamat
1 hónapra2 %
2 hónapra3 %
3 hónapra4 %
4 hónapra6 %

Az 1. hónap elején a vállalkozásnak 500 000 Ft készpénze van. Az egyes hónapok elején mennyi pénzt és hány hónapra kössön le ahhoz, hogy az ötödik hónap elején maximális mennyiségű készpénz álljon rendelkezésre? Jelölje xij az i-edik hónap elején j hónapra lekötött összeget, amely bármilyen nemnegatív értéket felvehet, i = 1, 2, 3, 4, j = 1, 2, 3, 4.

A modell feltételei mérlegegyenletek, amelyek biztosítják, hogy minden hónap elején a bevétel és a lekötésből felszabaduló pénz összege egyenlő a kiadás és a különböző időtartamú lekötések összegével:

E feltételrendszer teljesülése mellett keressük az ötödik hónap elején felszabaduló lekötések összegének maximumát, így a célfüggvény a következő lesz:

Gyakorlat

Gyakorló feladatok

  1. Tekintsünk olyan ütemezési feladatot (3.1. fejezet), amelyben a dolgozók napi szükséges létszámát az alábbi táblázat határozza meg:

    NapHKSzCsPSzV
    Szükéges létszám (fő)20252025152010

    A feladat többi adatai megegyeznek a 3.1. fejezetben leírt ütemezési feladat adataival. Fogalmazzon megfelelő LP feladatot és oldja meg azt Excel/Solverrel vagy Lingoval!

  2. Alakítsa át a fenti modellt úgy, hogy a modell tartalmazza a következő feltételeknek megfelelő megszorításokat:

    • A cég dolgozói hetente 4 napot dolgoznak.

    • A cég dolgozói hetente 6 napot dolgoznak.

    • Ha egy dolgozó hétfőn dolgozik, akkor kedden nem dolgozhat.

    • Ha egy dolgozó hétfőn vagy kedden dolgozik, akkor szerdán nem dolgozhat.

    • Ha egy dolgozó se hétfőn se kedden nem dolgozik, akkor szerdán sem dolgozhat.

    • Ha egy dolgozó hétfőn nem dolgozik, akkor nem dolgozhat vasárnap.

    • Ha egy dolgozó hétfőn dolgozik, akkor vasárnap is dolgozik.

  3. Tekintsünk olyan szabási feladatot (3.2. fejezet), amelyben a csövek hossza nem 6 méter, hanem 8 méter. A feladat többi adatai megegyeznek az eredeti feladat adataival. Fogalmazzon megfelelő LP feladatot és oldja meg azt Excel/Solverrel vagy Lingoval!

  4. Az előző feladatban a megrendelt csövek hosszát és mennyiségét a következő táblázat mutatja:

    MennyiségMéret
    80 db350 cm
    70 db260 cm
    150 db150 cm

    Fejlessze tovább az előző feladatot az új megrendelés adatainak megfelelően és oldja meg azt Excel/Solverrel vagy Lingoval!

  5. Oldja meg az alábbi táblázatban szereplő adatokkal adott leszabási feladatot, ha a szóban forgó feldarabolandó cső hossza 4,5 méter:

    MennyiségMéret
    20 db350 cm
    90 db260 cm
    120 db150 cm

  6. Tegyük fel, hogy a feldarabolandó cső hossza 6 méter és a megrendelés a következő táblázat szerint alakult:

    MennyiségMéret
    100 db50 cm
    100 db75 cm
    100 db100 cm
    100 db150 cm
    100 db200 cm
    100 db250 cm

    Fogalmazzon megfelelő LP feladatot és oldja meg azt Excel/Solverrel vagy Lingoval!

  7. Tekintsünk olyan többperiódusú pénzügyi tervezési feladatot (3.3. fejezet), amelyben az összegeket (bevételeket és kiadásokat) az alábbi táblázat tartalmazza:

    HónapBevételek (e Ft)Számlák (e Ft)
    1800600
    21200500
    3700500
    41300400
    Összesen40002000

    A feladat többi adatai megegyeznek az eredeti feladat adataival. Fogalmazzon megfelelő LP feladatot és oldja meg azt Excel/Solverrel vagy Lingoval!

  8. Az előző feladatban a lekötési kamatot a következő táblázat mutatja:

    IdőtartamKamat
    1 hónapra3 %
    2 hónapra5 %
    3 hónapra7 %
    4 hónapra9 %

    Módosítsa megfelelő módon a modellt és oldja meg azt Excel/Solverrel vagy Lingoval!

  9. Tegyük fel, hogy az előző feladatban a lekötési kamat az alábbi táblázat szerint alakul:

    IdőtartamKamat
    1 hónapra2 %
    2 hónapra4 %
    3 hónapra6 %
    4 hónapra8 %

    Módosítsa megfelelő módon a modellt és oldja meg azt Excel/Solverrel vagy Lingoval!

  10. Tegyük fel, hogy a többperiódusú pénzügyi tervezési feladatban (3.3. fejezet), a tervezendő időszak 6 hónapból áll és a pénzforgalom és kamatok az alábbi táblázatok szerint alakulnak:

    HónapBevételek (e Ft)Számlák (e Ft)
    110001000
    212001000
    315001000
    425001000
    510001000
    615001000
    Összesen87006000

    IdőtartamKamat
    1 hónapra2 %
    2 hónapra4 %
    3 hónapra6 %
    4 hónapra8 %
    5 hónapra9 %
    6 hónapra10 %

    Fogalmazzon megfelelő LP feladatot és oldja meg azt Excel/Solverrel vagy Lingoval!

Ellenőrző kérdések

  1. Hány változó és miért volt bevezetve az ütemezési feladatban (3.1. fejezet)? Melyik változó mit jelent?

  2. Hány változóra van szükség az ütemezési feladatban?

  3. Sorolja fel az ütemezési feladatban bevezetett de nem használt (ha vannak ilyenek) változókat!

  4. Hogyan változik a H betűvel jelölt egyenlet (3.1. fejezet), ha a hétfői szükséges létszám csökken három egységgel?

  5. Hány változó és miért volt bevezetve a szabási feladatban (3.2. fejezet)? Melyik változó mit jelent?

  6. Mik a szabásminták és miért éppen 8 szabásminta szerepel a szabási feladatban?

  7. Ha a szabási feladatban nem vesszük figyelembe a változók egészértékűségét, hogyan változhat a célfüggvény optimális értéke? Növekszik? Csökken? Növekedhet? Csökkenhet?

  8. Hány változó és miért volt bevezetve a Többperiódusú pénzügyi tervezési feladatban (3.3. fejezet)? Melyik változó mit jelent?

  9. Hány változóra van szükség a többperiódusú pénzügyi tervezési feladatban?

  10. Sorolja fel a többperiódusú pénzügyi tervezési feladatban bevezetett de nem használt (ha vannak ilyenek) változókat!

4. fejezet - Hálózati feladatok

Ahogy már láttuk az előző fejezetekben a gyakorlatból származó problémák nagy részében gyakran találkozunk olyan összefüggésekkel és kapcsolatokkal, amelyek modellezése bináris változókhoz vezet. Ezen relációk (kapcsolatok) szemléletes leírásának egyik eszköze a gráf. Nagyon sok probléma megfogalmazható, mint gráfelméleti feladat. A gráfalgoritmusok címszó alatt néhány fontos, a gyakorlati életben is gyakran előforduló feladatot, és a feladat megoldására használható modelleket ismertetünk.

Ha egy gráf élei valamilyen tevékenységet reprezentálnak, akkor az élekhez rendelhetünk nemnegatív valós változókat, amelyek e tevékenység erősségét (intenzitását) mutatják. Mivel a tevékenységek gyakran valaminek az áramlásával kapcsolatosak, ezért modhatjuk, hogy a változók a folyam erősségét mutatják a hozzájuk rendelt (tartozó) élen. A gráfokkal modellezhető feladatok esetén a hálózati folyamokról beszélünk. A hálózati folyamok elméleti hátterét, a sokféle ismert algoritmust és ezek szerteágazó alkalmazási területeit nagyon jól bemutatja Ahuja, Magnanti és Orlin [Ahuja '93] műve. Terjedelmi okokból a hálózati folyamatok optimalizálására fejlesztett speciális módszerekkel nem foglalkozunk. Ezeket a módszereket nagyon jól és részletesen ismerteti a [Temesi '07] könyv.

A továbbiakban ismertnek feltételezzük az alapvető gráfelméleti fogalmakat, definíciókat és tételeket. Most nézzünk néhány fontosabb fogalmat kevésbé formálisan, inkább csak a felelevenítés szintjén.

Egy G gráf két halmazból áll: a csúcsok (vagy pontok) V halmazából, mely egy véges nem üres halmaz és az élek E halmazából, melynek elemei bizonyos V-beli párok. Tehát, G=(V, E) pár, ahol V = {V1, V2, V3, ..., Vn}, E ⊆ V × V pedig az élek halmaza. A Vi és Vj pontokat összekötő él jelölése eij. Alapértelmezés szerint a gráf irányítatlan, azaz nem teszünk különbséget "Vi-ből Vj-be", illetve "Vj-ből Vi-be" menő élek között. Ezzel szemben az irányított gráfban a két iránynak irányított élek felelnek meg. A G halmaz elemszámát n = |G| jelöli, az élek számát pedig e = |E|.

A minimális költségű hálózati folyam feladat

A minimális költségű folyam (MKF) a hálózati folyamok legalapvetőbb modellje, amely speciális esetként magában foglal sok más folyamfeladatot is, többek között a két legismertebbet: a legrövidebb út és a maximális folyam problémát.

A minimális költségű folyam feladat lényege egy olyan minimális költségű "szállítási terv" vagy "folyam" meghatározása, amellyel az adott hálózat termelő csúcsaiból a fogyasztó csúcsokba eljuttathatjuk a megfelelő (előírt) mennyiségű terméket oly módon, hogy az élekre vonatkozó kapacitáskorlátokat (áteresztőképességeket) betartjuk.

Fogalmazzuk meg a minimális költségű folyam feladatát általános esetben.

Egy régióban n város található, amelyekben egy vállalat egy terméket állít elő bj, j = 1, 2, ..., n mennyiségben. Ismerjük a j-edik városban dj igényét erre a termékre. Bizonyos városok között egy vagy mindkét irányban szállítható a termék, de vannak olyan városok, amelyek között nincs közvetlen kapcsolat, csak egy (vagy több) másik városon keresztül. A tervezendő időszakban az i-edik városból a j-edik városba a szóban forgó termékből legfeljebb rij egység szállítható. A szállítás fajlagos költsége cij, ami nem feltétlenül egyenlő cji-vel. A vállalat célja, hogy minimális költséggel azokból a városokból, ahol a gyártás meghaladja a város igényét, szállítson el felesleget azokba a városokba, ahol az igény nagyobb, mint a gyártás.

A fenti probléma egy n csúcsponttal rendelkező irányított gráffal és a következő LP modellel leírható:

a következő feltételek mellett:

Ezt az LP feladatot minimális költségű hálózati folyam (MKHF) feladatnak nevezzük. Ennek a feladatnak csak akkor van lehetséges megoldása, ha

Emiatt feltételezzük ennek az egyenlőtlenségnek a teljesülését. Ha egy gyakorlati MKHF feladatban a kereslet és a kínálat között az egyensúly nem áll fenn, akkor fiktív keresleti vagy kínálati pontok bevezetésével a feladat kiegyensúlyozható.

4.1. példa -

Tegyük fel, hogy a 4.1. ábra hálózatában az 1-es, 2-es és 3-as csúcspontokkal jelölt városokban valamely termékből a nettó kínálat 60, 30 és 10 egység.

4.1. ábra. MKH példa hálózata

A 4-es és 5-ös csúcspontnak megfelelő városok nettó kereslete legyen 50-50 egység. Az összkínálat tehát 100 egység, amely egyenlő az összkereslettel. A fajlagos szállítási költségeket az élek mellé írt számok mutatják. A cél a 4-es és 5-ös csúcsponttal jelölt városok keresletének kielégítése minimális költséggel. Bármely élen korlátlan mennyiségű termék szállítható.

A feladat LP modelljében az összköltséget kell minimalizálni:

a következő feltételek megtartása mellett:

  • Az 1. pontból a 3. és 4. pontba való szállítás összege legyen pontosan 60 egység:

    x13 + x14 =60

  • A 2. pontból a 3. és 5. pontba való szállítás összege legyen pontosan 30 egység:

    x23 + x25=30

  • A 3. pontba érkező termék plusz a saját 10 egységes kínálat legyen összhangban a 3. pontból más városokba való szállítással:

    x13 + x23 + 10 = x34 + x35

  • A 4. pontba érkező összes termékből ki kell elégíteni a saját igényt, a megmaradt terméket pedig el lehet küldeni az 5. pontba:

    x14 + x34 + x54 - 50 = x45

  • Az 5. pontba érkező összes termékből ki kell elégíteni a saját igényt, a megmaradt terméket pedig el lehet küldeni 4. pontba:

    x25 + x35 + x45 - 50 = x54

  • Végül, a szállítás nem lehet negatív értékű:

    xij ≥ 0, ∀ (ij).


A maximális folyam feladat

A maximális folyam feladat (MFF) azzal a kérdéssel foglalkozik, hogy egy olyan hálózatban, amelyben minden élnek véges a kapacitása, legfeljebb mekkora erősségű folyam tud átáramlani a hálózat egy kitüntetett pontjából a másikba. A hálózat élei jelenthetnek például víz- vagy gázcsöveket, villamos vezetékeket, útvonalakat, de akár absztrakt dolgokat is, mint például egy személy és egy feladat kapcsolatát. A feladat lényegét az alábbi numerikus példa szemlélteti.

4.2. példa -

Egy főút menti városra az ünnepnapok előtt hatalmas forgalom zúdul, mivel a vendégmunkások ekkor igyekeznek haza. Az átmenő forgalom elvezetése érdekében a város mellett elkerülő utak épültek, ahol négy csomópontot alakítottak ki. A várost elkerülő fontosabb utak a 4.2. ábrán látható hálózattal modellezhetők.

4.2. ábra. Maximális folyam példa hálózata

Az átutazók az S csúcspontnál érik el a város körüli úthálózatot és a T csúcspontból kiinduló főútvonalon folytathatják útjukat. Az éleknek megfelelő utakon a járművek csak a nyílak irányában haladhatnak. Az egyes útszakaszokhoz tartozó percenkénti áteresztőképességeket az élek mellett látható számok adják. Tehát, ezek a számok az élek kapacitásai. A kérdés abban áll, hogy percenként legfeljebb hány jármű tud az S csúcsponttal jelölt csomópontnál ráhajtani a várost elkerülő úthálózatra. Feltételezzük, hogy a T-vel jelölt csomópontnál percenként ugyanannyi jármű el is hagyja az úthálózatot.

Mielőtt megismerkednénk a probléma matematikai modelljével, vezessünk be egy mesterséges élt, amely a T pontból indul és az S csúcspontba érkezik. Ezt az élt a 4.3. ábrán láthatjuk.

4.3. ábra. Maximális folyam hálózata mesterséges éllel

Ezen a mesterséges élen a folyam erősségét x0-val fogjuk jelölni. Nyilvánvaló, hogy ezen a (T, S) élen a folyam bármekkora nagy lehet, ami azt jelenti, hogy a folyam erősségét jelölő x0 változó értékére nem kell felső korlátot szabnunk. Így, az adott esetben a maximális folyam meghatározására alkalmazható LP modell a következő:


Fogalmazzuk meg a maximális folyam feladatát általános esetben. Ha x0 jelöli az S pontból T pontba áramló folyam erősségét, akkor a maximális folyam meghatározására alkalmas modell a következő:

az alábbi feltételek mellett:

ahol rij jelöli az (i,j)-edik él maximális áteresztőképességét, n pedig az S és T pontokat összekötő csomópontok számát.

A legrövidebb út feladat

Gyakori feladat, hogy két pont között meg kell találnunk a "legrövidebb" utat. A legrövidebb szó itt sok mindent jelenthet: jelentheti azt, hogy az út hossza legyen minimális, gondolhatunk arra, hogy az utazás ideje legyen a legkisebb, vagy az is elképzelhető, hogy olyan átszállásos útvonalat keresünk, melynek a költsége minimális. Akármelyik definíciót is használjuk, a feladat mindegyik esetben modellezhető gráfokkal a következő módon: Legyen adva egy irányított G gráf melynek minden e élének van egy c(e) súlya. Legyen adva továbbá a gráf két pontja, mondjuk S induló pont és T célpont. A feladat lényege az, hogy olyan S pontból T pontba vezető utat kell keresnünk, amelynek az összsúlya minimális.

Tekintsük a következő hálózatot (4.4. ábra)!

4.4. ábra. Legrövidebb út probléma.

A gráf 5 csúcspontját városoknak tekintjük, ezek jelölése: "Forrás", "Cél", V1, V2 és V3. Az élek útvonalakat jelölnek, s mindegyikre rá van írva az útvonal hossza (vagy a hozzá tartozó költség). Keressük a "Forrás" városból a "Cél" városba vezető legrövidebb (legolcsóbb) utat.

Állítsunk elő a fenti feladatnak megfelelő modellt! Ehhez először minden élhez rendeljünk hozzá egy-egy bináris változót. Így kapjuk a következő ismeretlen változókat:

ahol az első index meghatározza a megfelelő él induló csúcspontját, a második pedig az él célpontját. Ezt követően fejezzük ki a célfüggvényt (teljes hossz vagy összköltség):

A teljesítendő feltételrendszer tartalmazza a következő követelményeket:

  • Az induló pontból csak egy úton indulhatunk:

    xF1 + xF2 = 1

  • Minden "átszállási" csomópontban - ha oda érkeztünk, akkor mennünk kell tovább:

    xF1 = x12 + x13

    x12 + xF2 = x1C

    x13 = x3C

  • A célpontba csak egy úton érkezzünk:

    x2C + x3C = 1

A feladat Lingo modellje és annak optimális megoldása megtekinthető a 4.5. és 4.6. ábrán. A kapott optimális megoldás szerint a legrövidebb út: Forrás → V2 → Cél, amelynek tejes hossza 5 egység.

4.5. ábra. Lingo modell

4.6. ábra. Megoldás

Most pedig fogalmazzuk meg a legrövidebb út feladatot általános formában! Legyen adva egy irányított G gráf V0, V1, V2, ..., Vn, Vn+1 csúcspontokkal, melynek minden e ∈ E élének van egy cij súlya. Legyen adva továbbá a gráf két pontja, mondjuk V0 induló pont és Vn+1 célpont. Akkor a feladat leírható a következő módon:

a következő feltételek mellett:

ahol az összes ismeretlen xij változó vagy 0-t vagy 1-et vehet fel értékül, azaz

Gyakorlat

Gyakorló feladatok

  1. Oldja meg Excel/Solver és Lingo használatával a 4.1. szekcióban megfogalmazott példát!

  2. Oldja meg Excel/Solver és Lingo használatával a 4.2. szekcióban megfogalmazott példát!

  3. Oldja meg Excel/Solver és Lingo használatával a 4.3. szekcióban megfogalmazott példát!

  4. Fogalmazza meg a 4.7. ábrán látható gráfnak megfelelő minimális költségű folyam feladatot és oldja meg azt Lingo-val! Ezen a gráfon a Forrás1 és Forrás2 csúcspontoknál szereplő 12000 és 1000 értékek a megfelelő csúcspont készletét jelentik, a V1, V2, ..., V8 a városok melletti számok pedig a megfelelő város igényét. Az élekhez tartozó számok a maximális áteresztőképességek.

    4.7. ábra. MKF példa gyakorlathoz

  5. Tekintsük az alábbi (4.8.) irányított élekből és számozott csúcsokból álló gráf által megadott maximális folyam feladatot, amelyben az 1-es csúcs a forrás és a 7-es a nyelő! Az élekre írt első szám az él kapacitását jelöli, míg a második a rajta aktuálisan átmenő folyam értékét. Tehát, például az (1,2) él kapacitása 30 egység, s jelenleg 14 egység folyik át rajta. Maximális-e a jelenlegi folyam? Ha nem, akkor hány egységgel jobb az optimális megoldás a jelenleginél?

    4.8. ábra. MFF példa gyakorlathoz

  6. Legyen adott a 4.9. ábrán látható hálózat, amelyben a cél az S pontból a T-be vezető legrövidebb út meghatározása. Fogalmazzon megfelelő modellt és oldja meg azt Excel/Solver segítségével!

    4.9. ábra. Legrövidebb út példa gyakorlathoz

  7. Változtassa meg a 4.7. ábrának megfelelő feladatban a Forrás1 és Forrás2 12000 és 10000 egységes készletét 10000 és 12000 egységesre, majd adjon választ a következő kérdésekre: hogyan változik az optimális költség? Hogyan változik az optimális V6 → V4 folyam?

  8. Változik-e a 4.8. ábrán látható gráfnak megfelelő maximális hálózati folyam feladat optimális megoldása, ha az 4 → 6 élt eltöröljük?

  9. Változik-e a 4.8. ábrán látható gráfnak megfelelő maximális hálózati folyam feladat optimális megoldása, ha az 5 → 6 élt eltöröljük?

  10. Hogyan változik a 4.9. ábrán látható hálózatnak megfelelő legrövidebb út feladat optimális megoldása, ha az S és 5. pontok között megjelenik egy út 10 egységes költséggel?

Ellenőrző kérdések

  1. Adott egy irányított gráf 7 csúcsponttal és 18 éllel. Ez a gráf meghatároz egy neki megfelelő minimális költségű hálózati folyam feladatot. Hány változó és feltétel szerepel a megfelelő modellben?

  2. Mikor mondhatjuk, hogy adott minimális költségű hálózati folyam feladat megoldható?

  3. Javítható-e a helyzet, ha kiderült, hogy egy adott minimális költségű hálózati folyam feladat nem megoldható mert a lehetséges halmaza üres?

  4. Adott egy irányított gráf, amely meghatároz egy neki megfelelő maximális hálózati folyam feladatot. A gráf 12 csúcsponttal rendelkezik, amelyek között az egyik csúcs a forrás és egy másik a nyelő! Hány változó és feltétel szerepel a megfelelő modellben?

  5. Mikor mondhatjuk, hogy egy adott maximális hálózati folyam feladat megoldható?

  6. Előfordulhat-e, hogy egy adott maximális hálózati folyam feladatban a lehetséges halmaz üres?

  7. A fenti szekciókban leírt hálózati modellek közül melyekben van szükség egészértékű változókra?

  8. Adott egy irányított gráf, amely meghatároz egy neki megfelelő legrövidebb út feladatot. A gráf V1, V2, ..., V10 "átszállási" csúcspontokkal, egy forrás ponttal és egy célponttal rendelkezik. Ezek a pontok össze vannak kötve 25 éllel. Hány változó és feltétel szerepel a megfelelő modellben?

  9. Hány változót tartalmaz az előző pontban leírt modellhez tartozó célfüggvény?

  10. Előfordulhat-e, hogy a 4.8. kérdésben leírt legrövidebb út feladat nem megoldható mert a lehetséges halmaz üres?

5. fejezet - További hálózati feladatok

Többperiódusú termeléstervezés

Tekintsük a következő feladatot. Egy vállalatnál a következő évre termelési tervet kell készítenünk. A vállalat által gyártott egyik termék iránt az előrejelzések szerint az egymást követő negyedévekben rendre 3, 7, 9 és 2 ezer db lesz a kereslet. Az adott termék fajlagos előállítási költsége az egyes negyedévekben rendre 22, 23, 25 és 26 ezer forint. A gyártás negyedévében nem értékesített termékmennyiséget el lehet raktározni. Egyszerűség kedvéért feltételezzük, hogy a raktározási költség csak a negyedév végi készletszinttől függ és minden negyedévben 3 ezer Ft/db. Az év eleji nyitókészlet és az év végi zárókészlet legyen nulla. Kérdés: mennyi terméket kell előállítani az egyes negyedévekben (azaz mekkora legyen a termelési sorozat), hogy a kereslet kielégítésének összköltsége minimális legyen?

A fenti termeléstervezési probléma az alábbi hálózattal (5.1. ábra) modellezhető.

5.1. ábra. Termeléstervezési feladat hálózata

A többperiódusú termeléstervezési probléma olyan speciális MKHF probléma, amelynek forrása a termelést reprezentálja, kínálatát az összkereslettel tesszük egyenlővé, a hálózat többi csúcspontja a negyedéveknek felel meg. A lefelé haladó éleken a folyam intenzitása a termelési szintet mutatja, a vízszintes éleken a készlet áramlik a negyedévek között.

Az LP modell felírásához az alábbi változókat vezetjük be:

  • xt -- a t-edik negyedévben előállított termékmennyiség 1000 db-ban.

  • rt -- készletszint a t-edik negyedév végén 1000 db-ban.

A modell feltételrendszere a hálózat csúcspontjaira felírt mérlegegyenletekből áll. Mivel az ilyen módon felírt feltételrendszer egy felesleges egyenletet is tartalmaz, ezért a 0-val (5.1. ábra) jelölt forrásra vonatkozó x1 + x2 + x3 + x4 = 3 + 7 + 9 + 2 = 21 egyenletet nem írjuk fel. Az LP modell így a következő lesz:

5.1. egyenlet -


5.2. egyenlet -


5.3. egyenlet -


A feladat Lingo modellje és annak optimális megoldása megtekinthető a 5.2. és 5.3. ábrán.

5.2. ábra. Példa - Lingo modell

5.3. ábra. Példa - Megoldás

Fogalmazzuk meg a modellt általánosan is arra az esetre, ha a termelési kapacitások nem szűkösek és a készletszintre sincsenek korlátok.

Tegyük fel, hogy egy termék iránti kereslet a következő időszak (pl. 1 év) t = 1, 2, ..., T periódusaiban (pl. hónapjaiban) d1, d2, ..., dT. A t-edik periódus fajlagos termelési költségét ct, fajlagos raktározási költségét ht jelöli. A modell változói:

  • xt -- a t-edik periódusban előállított termékmennyiség.

  • rt -- készletszint a t-edik periódus végén.

Mivel minden periódusban megköveteljük a kereslet kielégítését, ezért az rt változók is csak nemnegatív értékeket vehetnek fel. Legyen a nyitó készletszint az első periódus elején, azaz a nulladik periódus végén r0, és az utolsó periódus végén, azaz rT. Ekkor a modell:

Kritikus út meghatározása

A gazdasági gyakorlatban egyre fontosabbá válik, hogy összetett, egymással bonyolult logikai és időrendi kapcsolatban álló gazdasági műveleteket, tevékenységeket a lehető leggyorsabban, minél jobban és magasabb hatékonysággal lehessen elvégezni. Beruházások megvalósítása, nagy rendszerek üzembe állítása, új termékek megtervezése és létrehozása, építkezések lebonyolítása - mind olyan feladatok, ahol egymással párhuzamosan haladó, vagy egymást követő tevékenységek folynak és ezeket a tevékenységeket úgy kell megszervezni, hogy a teljes projekt a legrövidebb idő alatt lebonyolódjon. Az ilyen fajta feladatok matematikai eszközei közé tartozik a CPM (Critical Path Method) vagy "kritikus út módszer".

A módszer első lépésében a projekt keretében végrehajtandó feladatokat és azok közötti logikai és időrendi kapcsolatokat ábrázoljuk egy olyan irányított gráfban, amely a következő tulajdonságokkal rendelkezik:

  1. Az élek jelentik a tevékenységeket, a csúcspontok pedig az eseményeket: egy-egy esemény azt jelenti, hogy az ebbe a csúcspontba vezető tevékenységek már befejeződtek. Az eseménynek nincs időbeli kiterjedése.

  2. A csúcspontból kivezető éleken definiált tevékenységek csak a csúcspontba bevezető tevékenységek befejezése után kezdődhetnek el. A tevékenységeket kapacitásukkal (időtartamukkal) együtt adjuk meg.

  3. A projektet megjelenítő hálózat a tevékenységek megelőzési viszonyát mutatja. A projektnek egyetlen kezdőponttal kell rendelkeznie (általában ez lesz az 1-es csúcspont). Ugyancsak egyetlen befejező csúcspont létezhet a hálózatban.

  4. Egy tevékenységet csak egyetlen él reprezentálhat. Két csúcspont között legfeljebb egy élt húzhatunk.

  5. A hálózat csúcspontjait (az eseményeket) úgy számozzuk, hogy bármely tevékenység végét jelentő csúcs sorszáma mindig nagyobb legyen, mint a tevékenység kezdetét jelentő csúcs sorszáma. (Ennek a feltételnek nem feltétlenül egyetlen számozás felel meg.)

  6. A tevékenységi háló a logikai feltételek betartása céljából tartalmazhat fiktív éleket (fiktív tevékenységeket) is, amelyek kizárólag azt a célt szolgálják, hogy a fenti szabályok betartása mellett létezzen lehetséges hálózati reprezentáció. A fiktív élek kapacitása (időtartama) mindig 0 egység.

Másképpen, a Tij-vel jelölt tevékenységnek van Ei kezdő eseménye és Ej végpont eseménye, jelölése ezek jeleiből alakul ki az időbeli sorrendnek megfelelően (5.4. ábra).

5.4. ábra. Két egymást követő esemény és azokat összekötő (ij) tevékenység.

Egy eseményből egy vagy több tevékenység indulhat ki, ezeket párhuzamos tevékenységeknek nevezzük. A párhuzamos tevékenységek típusai:

  • Ugyanabban az eseményben végződnek (5.5. ábra).

    5.5. ábra. Az i-edik eseményből két tevékenység indul és mindkettő l-be vezet.

    Itt Ej és Ek események két párhuzamos Tij és Tik tevékenységet igényelnek. Viszont El eseményt időben megelőzi a Tkl valódi tevékenység és Tjk fiktív tevékenység, ami azt jelenti, hogy a Tkl munka megkezdésének előfeltétele nem csak Tik tevékenység befejeződése, de a Tjk munka befejeződése is.

  • Különböző eseményekben végződnek, de szinkronban kell lefolyniuk (5.6. ábra).

    5.6. ábra. Az l eseménynek két előfeltétele van - Tij és Tik munkák befejeződése.

    Tehát a két munka Tij és Tik befejeződése előfeltétele a Tjl munka megkezdésének, és Tks csak akkor indulhat, ha Tik befejeződött.

  • Különböző eseményekben végződnek, tehát befejeződésük különböző munkák kezdetét befolyásolja (5.7. ábra).

    5.7. ábra. A Tks csak akkor indulhat, ha Tij és Tik munkák befejeződnek.

    Itt a Tks csak akkor kezdődhet el, ha Tik és Tij is befejeződött; a Tst pedig Tks és Til befejeződése után kezdődhet. A Tij, Tik és Til egyszerre kezdhető tevékenységek.

  • Párhuzamos eseménysorok (5.8. ábra).

    5.8. ábra. A T78 csak akkor indulhat, ha befejeződött T67 és T47.

    Itt T15 és T12 egyidejűsége megengedett, T12, T23, T34 és T47 időben egymásután következik, hasonlóan T15, T56, T67 is, de szinkron csak a 7 eseménynél kell hogy bekövetkezzen. Viszont ha a 3 és 5 szinkronját előírjuk 5-re (5.9. ábra), az események számozása megváltozik.

    5.9. ábra. A T45 csak akkor kezdődhet, ha befejeződött T14 és T23.

Mindezek tudatában tekintsünk egy példát!

5.1. példa -

Tegyük fel, hogy egy megvalósítandó projekthez tartozó munkák összefüggését leírja a következő táblázat:

TevékenységElőzményIdőtartam (nap)
A-7
B-20
C-2
DA, B, C25
EA5
FA, C3
GA, B, C15
HG10
IH2
JH15
KD, E, F, I10
LJ, K30

Láthatjuk, hogy A, B és C tevékenység elindítható párhuzamosan az 1. csúcspontból. A D művelet csak az A, B és C munkák befejeződése után kezdődik és 25 napig tart, stb. Mivel a projekt párhuzamos tevékenységeket tartalmaz, a logikai feltételek betartása céljából fiktív élekre is szükség lesz. Ennek a táblázatnak megfelelően állítsuk elő a projekthálót (5.10.).

5.10. ábra. A tevékenységi háló.

Mielőtt elkezdjük az összeállított háló kiértékelését, vezessük be a szükséges definíciókat!


  1. Definíció. Az i-edik esemény legkorábbi időpontja az az időpont, amikor az esemény be fog következni, ha az őt megelőző események a lehető legkorábban kezdődtek el.

Ha az i-edik esemény legkorábbi időpontját ET(i)-vel jelöljük, és az eseményhez közvetlenül bevezető tevékenységek (élek) időtartama tij, akkor az ET(i) értékek kiszámolása a következőképpen történik:

  1. Soroljuk fel egy négy oszlopos táblázatban a projekthez tartozó összes eseményt.

  2. ET(1) = 0.

  3. Keressük meg az i-edik csúcsba vezető élek kezdőpontjait. Ezek a csúcspontok lesznek a vizsgált i-edik esemény közvetlen előzményei.

  4. Az i-edik esemény közvetlen előzményeinek ET értékéhez adjuk hozzá az onnan az i-edik csúcspontba vezető él (tevékenység) tji időtartamát.

  5. Vegyük ezen értékek maximumát. Ez a szám lesz az ET(i) értéke.

A fenti példánkban a legkorábbi időpontok kiszámítását az alábbi táblázat mutatja:

Esemény

Közvetlenül megelőző

esemény

Legkorábbi időpont

+ tji

Maximum

ET(i)

1--0
210 + 7 = 77
3

1

2

0 + 2 = 2

7 + 0 = 7

7
4

1

3

0 + 20 = 20

7 + 0 = 7

20
5420 + 15 = 3535
6535 + 10 = 4545
7

2

3

4

6

7 + 5 = 12

7 + 3 = 10

20 + 25 = 45

45 + 2 = 47

47

8

6

7

45 + 15 = 60

47 + 10 = 57

60

9860 + 30 = 9090

A fenti táblázat alsó jobboldali cellájában szereplő érték (90 nap) a projekt legkorábbi befejezésének időtartamát mutatja. A mi esetünkben ez 90 nap.

  1. Definíció. Az i-edik esemény legkésőbbi időpontja az az időpont, amikor az esemény még bekövetkezhet anélkül, hogy a projekt egészének tervezett befejezését annak legkorábbi időpontján túl késleltetné.

Ha az i-edik esemény legkésőbbi időpontját LT(i)-vel jelöljük, és az eseményből közvetlenül kivezető tevékenységek (élek) időtartama tij, akkor LT(i) kiszámolása a következőképpen történik:

  1. Soroljuk fel egy négy oszlopos táblázatban az összes n eseményt a projekt befejezését jelző n-edik eseménytől elkezdve visszafelé az 1-ig.

  2. LT(n) = ET(n).

  3. Keressük meg azokat a csúcspontokat, ahová az i-edik csúcsból vezet él. Ezek a csúcspontok lesznek a vizsgált i-edik esemény közvetlen követői.

  4. Az i-edik esemény közvetlen követőinek LT értékéből levonjuk az i-edik csúcspontból a következőhöz vezető él (tevékenység) tij időtartamát.

  5. Vegyük ezen értékek minimumát. Ez a szám lesz az LT(i) értéke.

Példánkban ez a következőképpen történik:

Esemény

Közvetlen követő

esemény

Legkésőbbi időpont - tij

Minimum

LT(i)

9--90
8990 - 30 = 6060
7860 - 10 = 5050
6

7

8

50 - 2 = 48

60 - 15 = 45

45
5645 - 10 = 3535
4

5

7

35 - 15 = 20

50 - 25 = 25

20
3

4

7

20 - 0 = 20

50 - 3 = 47

20
2

3

7

20 - 0 = 20

50 - 5 = 45

20
1

2

3

4

20 - 7 = 13

20 - 2 = 18

20 - 20 = 0

0

  1. Definíció. Egy esemény tűrése a legkésőbbi és legkorábbi kezdése közötti különbség:

Az esemény tűrése azt mutatja meg, hogy egy esemény bekövetkezésében mekkora késés engedhető meg, amely még nem hátráltatja a projekt legkorábbi befejezését. Ha egy esemény tűrése 0, akkor legalább egy tevékenységet azonnal indítanunk kell, hogy ne késleltessük a befejezést. Ha T(i) > 0, akkor bármely rákövetkező esemény legalább ennyi ideig várakozhat, ez a befejezést nem késlelteti.

Esemény LT(i) ET(i) T(i)
1000
220713
320713
420200
535350
645450
747503
860600
990900

Példánkban az 5-ös, a 6-os vagy a 8-as eseményekből kifutó tevékenységek közül legalább egyet azonnal kell indítanunk. Ezeket az azonnal indítandó tevékenységeket fogjuk kritikus tevékenységeknek nevezni. Az 5-ös és a 8-as csúcspontból egy-egy tevékenység vezet ki, tehát azokat azonnal indítani kell. A 6-os csúcspontban a J műveletet azonnal indítani kell, ha nem akarjuk a befejezést hátráltatni. A 7-es számú esemény tűrése azt mondja, hogy az innen kiinduló tevékenységet (mivel csak egy van) 3 napig késleltethetjük.

Egyszerűbb lenne azonban azonnal a tevékenységekre vonatkozó értékekkel dolgozni. Az ET(i) és LT(i) értékek segítségével ki tudjuk számolni az egyes tevékenységek tűréshatárát is.

  1. Definíció. Egy tevékenység tűréshatára, amit TH(i,j)-vel jelölünk, a következő módon számolható ki:

Egy tevékenység tűréshatára az a szám, amennyivel az adott tevékenység elkezdése eltolódhat anélkül, hogy a projekt egészének befejezése késedelmet szenvedne. Ha a tevékenység tűréshatára egyenlő 0-val, akkor nincs lehetőség a késleltetésre. Ha viszont TH(i,j) > 0, akkor van ilyen lehetőség. Számoljuk ki a példánkban a tevékenységek tűréshatárait!

Tevékenység TH(i,j)
A(1,2) 20 - 0 - 7 = 13
B(1,4) 20 - 0 - 20 = 0
C(1,3) 20 - 0 - 2 = 18
Fiktív(2,3) 20 - 7 - 0 = 13
Fiktív(3,4) 20 - 7 - 0 = 13
D(4,7) 50 - 20 - 25 = 5
E(2,7) 50 - 7 - 5 = 38
F(3,7) 50 - 7 - 3 = 40
G(4,5) 35 - 20 - 15 = 0
H(5,6) 45 - 35 - 10 = 0
I(6,7) 50 - 45 - 22 = 3
J(6,8) 60 - 45 - 15 = 0
K(7,8) 60 - 47 - 10 = 3
L(8,9) 90 - 60 = 30

  1. Definíció. Azokat a tevékenységeket, amelyek tűréshatára 0, kritikus tevékenységeknek nevezzük. A kritikus út a kezdő csúcspontból a befejezés csúcspontba vezető olyan út, amely kizárólag kritikus tevékenységekből áll.

Példánkban a kritikus út a

tevékenységekből áll (és mint láttuk, a hossza 90 nap). Ezeket a tevékenységeket tehát haladéktalanul el kell kezdeni. A különböző gazdasági alkalmazásokban gyakran olyan tevékenységek vannak, amelyeknek kezdésével "játszani" lehet: akár késhetünk is 13 napot az A művelet elindításával, vagy a D művelet kezdődhet 5 nappal később.

  1. Definíció. Egy tevékenység mozgáshatára, amit MH(i,j)-vel jelölünk, az a maximális időtartam, amennyivel a tevékenység elkezdését várakoztathatjuk, ha a befutó eseményből azonnal tovább akarunk indulni, amint lehet:

Számoljuk ki a példában a tevékenységek mozgáshatárait.

TevékenységMozgáshatár MH(i,j)
A(1,2) 7 - 0 - 7 = 0
B(1,4) 20 - 0 - 20 = 0
C(1,3) 7 - 0 - 2 = 5
Fiktív(2,3) 7 - 7 - 0 = 0
Fiktív(3,4) 7 - 7 - 0 = 7
D(4,7) 50 - 20 - 25 = 5
E(2,7) 47 - 7 - 5 = 35
F(3,7) 47 - 7 - 3 = 37
G(4,5) 35 - 20 - 15 = 0
H(5,6) 45 - 35 - 10 = 0
I(6,7) 47 - 45 - 2 = 0
J(6,8) 60 - 45 - 15 = 0
K(7,8) 60 - 47 - 10 = 3
L(8,9) 90 - 60 = 30

A kritikus utat megkereshetjük lineáris programozási apparátus használatával is. Írjuk fel a mintafeladatunkhoz tartozó LP-modellt.

Legyen xj a j-edik csúcsponthoz tartozó esemény bekövetkezésének időpontja. Mivel minden (ij) tevékenységre igaz az, hogy a j-edik esemény bekövetkezte előtt az i-edik eseménynek be kell következnie és az (ij) tevékenységnek is be kell fejeződnie (lásd a hálózat megkonstruálására vonatkozó szabályokat), ezért a hálózat mindegyik élére vonatkozóan igaz, hogy

A mi példánk esetében

5.4. egyenlet -


5.5. egyenlet -


5.6. egyenlet -


A fenti LP feladat optimális megoldása:

Gyakorlatban előfordulhat, hogy a kritikus út feladatban több optimális megoldás van, azaz több kritikus út található.

Gyakorlat

Gyakorló feladatok

  1. Egy vállalatnál az egyik termékre termelési tervet kell készíteni. Ismert az adott termékre a kereslet a következő hat hónapra - rendre 100, 120, 150, 175, 200, 150 egység. A termék fajlagos előállítási költsége az egyes hónapokban rendre 10, 12, 25, 17, 20, 15 ezer forint. A legyártott terméket lehet raktározni, raktározási költség fix - 2 ezer Ft/db. A vállalat most nem rendelkezik nyitókészlettel és a félév végi zárókészlet sem kívánt. A vállalat célja a kereslet kielégítése minimális költséggel! Állítson elő a feladatnak megfelelő irányított gráfot és matematikai modellt!

  2. Oldja meg Excel/Solverrel vagy Lingo-val az előző pontban összeállított feladatot.

  3. Alakítsa át az előző pontokban előállított Lingo modellt úgy, hogy az összes előállítási költségnek és az összes raktározási költségnek feleljen meg egy-egy segédváltozó, mondjuk "Ktg1" és "Ktg2". Oldja meg megváltoztatott modellt és hasonlítsa össze a kapott optimális költségeket!

  4. Az első pontban leírt termelési feladatban vezesse be a következő gyártási kapacitásra vonatkozó korlátokat: xj ≤ 170, j = 1, 2, ..., 6; és oldja meg megváltoztatott LP modellt!

  5. Tekintsük az 5.2. szekcióban leírt példa feladatot (5.10. ábra) és a hozzá tartozó (5.4)-(5.6) LP modellt. Változtassa a 4-es és 7-es csúcspontokat összekötő él mellett álló 25 egységes együtthatót 20-ra és vezesse le a megfelelő változásokat az (5.4)-(5.6) LP modellben!

  6. Oldja meg az előző pontban kapott LP modellt!

  7. Változik-e az 5.10. ábrán látható gráfnak megfelelő LP feladat optimális megoldása, ha a 6 → 7 élt eltöröljük?

  8. Hogyan változik az 5.10. ábrán látható gráfnak megfelelő kritikus út, ha a 6-os és 9-es pontok között megjelenik egy új él 10 egységes időtartammal?

  9. Változik-e az 5.10. ábrán látható gráfnak megfelelő LP feladat optimális megoldása, ha a 4 → 7 élt eltöröljük?

  10. Változik-e az 5.10. ábrán látható gráfnak megfelelő LP feladat optimális megoldása, ha a 2 → 7 él időtartama növekszik 5 egységgel?

Ellenőrző kérdések

  1. Tekintsük az 5.1. szekcióban leírt példa feladatot (5.1. ábra) és adjon választ a következő kérdésre: hány egységes raktári készlet alakult ki a harmadik negyedévben az optimális megoldás szerint?

  2. A termelési példa feladatban (5.1. ábra) változtassuk meg a 0-ás és a 3-as csúcspontokat összekötő él mellett lévő 25 egységes együtthatót 15 egységesre. Hogyan változik az (5.1)-(5.3) feladat?

  3. Oldja meg a megváltoztatott (5.1)-(5.3) feladatot Excel/Solverrel vagy Lingo-val és hasonlítsa össze a kapott optimális megoldást az eredeti feladat optimális megoldásával (5.3.. ábra)!

  4. Az előző pontban kapott optimális megoldás szerint hány egységes lesz a raktári készlet a harmadik negyedévben?

  5. Tekintsük az 5.2. szekcióban leírt példa feladatot (5.10. ábra) és a hozzá tartozó (5.4)-(5.6) LP modellt. Adjon választ a következő kérdésre: hogyan változik az (5.5) feltételrendszer abban az esetben, ha a B tevékenység nem 20 napig tart, hanem csak 15-ig?

  6. Oldja meg az előző pontban megváltoztatott LP modellt Excel/Solverrel vagy Lingo-val és hasonlítsa össze a kapott optimális megoldást az eredetivel! Hogyan változik a kritikus út?

  7. Az (5.5) feltételrendszer x7 ≥ x2 + 5 feltételében változtassuk a jobb oldalt a x2 + 15 kifejezésre. Hogyan változik ekkor az (5.10.) tevékenységi haló?

  8. Oldja meg az előző pontban előállított LP modellt és hasonlítsa össze a kapott optimális megoldást az eredetivel! Hogyan változik a kritikus út?

  9. Ha az (5.5) feltétel rendszer x8 ≥ x6 + 15 feltételében a jobb oldali kifejezés x6 + 25 alakúra változik, akkor hogyan változik az (5.10.) tevékenységi haló?

  10. Oldja meg az előző pontban előállított LP modellt és hasonlítsa össze a kapott optimális megoldást az eredetivel! Változik-e a kritikus út?

6. fejezet - Más speciális gazdasági feladatok

Halmazlefedési feladat

A gyakorlati alkalmazásokban gyakran felmerülnek olyan optimalizálási problémák, amelyek az ún. halmazlefedési feladathoz vezetnek. Példáként tekintsünk a következő feladatot: adott egy régió, amelyben mindösszesen hat város (település) van. Ebben a régióban tűzoltóállomásokat kell építenünk úgy, hogy minden település elérhető legyen legalább egy tűzoltóállomástól legfeljebb 15 perc alatt (vezetési idő). Természetesen, az építendő tűzoltóállomások száma legyen minimális. A városok közötti távolságok az 6.1. táblázatban szerepelnek.

6.1. táblázat - Távolságok (vezetési idő) percben

Távolság (perc)

V1

V2

V3

V4

V5

V6

V1

01020303020

V2

10025352010

V3

20250153020

V4

30351501525

V5

30203015014

V6

20102025140


Fogalmazzuk meg a feladatnak megfelelő LP modellt! Elsősorban minden Vj városhoz rendeljünk hozzá egy-egy xj bináris változót, ahol

Ezen változók bevezetése lehetővé teszi az építendő állomások minimalizálandó számának kifejezését, így:

A modell feltételrendszerének előállítását kezdjük a V1 város elemzésével: az 6.1. táblázat első sora azt mutatja, hogy V1 városból nem több mint 15 perc alatt csak a V2 várost lehet elérni. Ez pedig azt jelenti, hogy a két város közül legalább az egyiknek kell rendelkeznie tűzoltóállomással, így kapjuk a V1-hez tartozó feltételt:

A V2 városból nem több mint 15 perc alatt elérhető V1, V2 és V6. Ezért

Hasonló módon folytatva végül a következő modellt kapjuk:

Ennek a feladatnak az (egyik) optimális megoldása: x*2 = x*4 = 1, x*1 = x*3 = x*5 = x*6 = 0, z(x*) = 2. Így az építendő tűzoltóállomások minimális száma 2 (a V2-esben és V4-esben kell építeni állomásokat).

A fenti példa olyan egészértékű LP modellek osztályát képviseli, amelyekben adott A halmaz minden elemét "le kell fedni" egy másik halmaz, mondjuk B, elemeivel, melyek mindegyike az A egy részhalmaza. A minimalizálandó célfüggvény kifejezi a lefedéshez szükséges, a B halmazból kiválasztott részhalmazok elemeinek számát. Így a mi példánkban az A halmazhoz tartozik az összes V1, V2, ..., V6 város, a B halmaz i-edik eleme tartalmazza azon városokat, amelyek lefedése biztosított, ha az i-edik városban helyezünk el tűzoltóállomást (i = 1, 2,..., 6).

Tekintsünk még egy példát. Tegyük fel, hogy egy múzeumban (6.1. ábra) múzeumi őröket kell elhelyezni úgy, hogy minden helyiséget megfigyelés alatt lehessen tartani az őrök minimális száma mellett.

6.1. ábra. Példa - Múzeum helyiségei.

Példánkban mindösszesen 7 helyiség van 9 nyílással (ajtóval). Fogalmazzuk meg az ennek a feladatnak megfelelő LP modellt! Ehhez vezessük be a következő 9 bináris változót: x1, x2, ..., x9, ahol xj meghatározza, hogy kell-e a j-edik ajtóban őr (xj = 1), vagy nem kell (xj = 0), j = 1, 2, ..., 9. Fejezzük ki az elhelyezendő őrök minimalizálandó számát:

A modell feltételrendszerének előállítását kezdjük az első számú helyiség elemzésével: a 6.1. ábrán látható, hogy az első szobában mindössze három ajtó (nyílás) van: 1-es, 2-es és 9-es. Ezért a három ajtó közül legalább az egyikben el kell helyezni egy őrt:

Hasonló módon folytatva a következő modellt kapjuk eredményként:

6.1. egyenlet -


6.2. egyenlet -


6.3. egyenlet -


A feladat Lingo modellje és annak optimális megoldása megtekinthető a 6.2. és 6.3. ábrán.

6.2. ábra. Példa - Lingo modell.

6.3. ábra. Példa - Megoldás.

A kapott optimális megoldás szerint az őröket a 2-es, a 4-es, a 6-os és a 7-es ajtóban kell elhelyezni.

Utazó ügynök feladat

Az utazó ügynök feladat (Traveling Salesman problem, TSP) egy kombinatorikus optimalizálási probléma. Adott városok egy halmaza és páronként az egymástól való távolságuk. A feladat az, hogy meghatározzuk a legrövidebb túrát, amely minden várost pontosan egyszer érint. Azaz legyen adott n város: V1, V2, ..., Vn. Az i-edik és j-edik város közötti távolságot jelölje dij, (i = 1, 2, ..., n; j = 1, 2, ..., n). Egy ügynök mindegyik várost meg akarja látogatni - mondjuk a V1 városból indulva -, de mindegyiket csak egyszer. Ezt a körutat úgy kell végrehajtania, hogy az általa megtett út minimális legyen.

A szimmetrikus TSP-ben a távolság két város között mindkét irányban azonos, azaz Vi városból Vj városba ugyanolyan hosszú az út, mint Vj-ből a Vi-ba. Ilyenkor a feladatot irányítatlan gráffal modellezhetjük. Az aszimmetrikus TSP irányított gráffal modellezhető: itt két város között az oda-vissza út nem biztos, hogy azonos hosszúságú, sőt, nem is biztos, hogy létezik mindkettő. Ilyenre példa a forgalmi dugó vagy az egyirányú út esete.

Kézenfekvőnek látszik az a gondolat, hogy határozzuk meg az összes lehetséges bejárási sorrendet és ezek közül válasszuk ki a legjobbat. V1-ből indulva n város esetén (n-1)! útvonal lehetséges (nyilvánvaló, ha a D=|dij|n × n költségmátrix szimmetrikus, akkor ennek a fele), amely a városok számával olyan nagyra növekedik, hogy végigszámolása számítógépek segítségével is reménytelen, ezért programozási módszereket fogunk alkalmazni. Mielőtt még a probléma egészértékű lineáris programozási feladatként való megfogalmazásával foglalkoznánk, megjegyezzük, hogy sok más gyakorlati alkalmazása is lehetséges, ilyen például a gyártásütemezés is. Úgy is fogalmazhatjuk a feladatot, hogy adva van egy teljes értékelt gráf, egy olyan n élű körutat kell meghatározni, amelyben az élek értékeinek összege minimális, és minden csomópont pontosan egyszer szerepelhet.

A feladat alakjai

Számozzuk be egy körút éleit V1 pontból indulva és definiáljunk egy háromdimenziós X̃ = |xijk|n × n × n mátrixot, amelynek xijk eleme 1, ha Vi-ből Vj-be a körút k-adik éle vezet, a többi eleme nulla. Ekkor nyilvánvalóan a

lineáris függvény minimumát keressük.

A következő feltételeknek kell teljesülniük:

  1. Az első él kiindulópontja V1-ben legyen:

  2. Az utolsó él végpontja V1-ben legyen:

  3. Vi és Vj között csak egy él lehet:

  4. Vi pontból pontosan egy él induljon:

  5. Vj pontba pontosan egy él érkezzen:

  6. Az út legyen összefüggő, azaz ha Vi pontból Vj pontba a k-edik él vezet, akkor Vj pontból induljon k+1 él:

  7. Az xijk elemek nemnegatív egészértékűek, mégpedig vagy 0 vagy 1, azaz

Az utazó ügynök feladat tulajdonságai miatt számos esetben ésszerű azt feltételezni, hogy a költségmátrix szimmetrikus. E szabály alól azonban vannak természetes kivételek. Még a városok közti távolság esetén is lehet eltérés az oda és a vissza út között, de még gyakoribb a termékek gyártási sorrendjének megválasztása esetén, hogy az A termék gyártásáról a B-re gyorsabban lehet áttérni, mint fordítva.

A feladat egy másik (formálisabb) matematikai modell megfogalmazásában legyenek a következő változók: xij= 0/1, i= 1, 2, ..., n, j= 1, 2, ..., n; ahol az x=|xij|n × n mátrix xij eleme azt adja meg, hogy a Vi és a Vj város között áthalad-e az aktuális körút. A feladatot a következő módon fogalmazhatjuk meg:

6.4. egyenlet -


6.5. egyenlet -


6.6. egyenlet -


6.7. egyenlet -


6.8. egyenlet -


A (6.4) célfüggvény a megtett útszakaszok költségét összegzi. Az (6.5) feltételek azt követelik meg, hogy az ügynök minden városból távozzon, a (6.6) pedig azt, hogy mindegyikbe beérkezzen, mindkét esetben pontosan egyszer. E két feltétel teljesülése esetén még előfordulhat, hogy a kapott útvonal különálló körutakból áll, ami a feladat eredeti megfogalmazásának nem felel meg.

Ezt a problémát rendezi a (6.7) feltétel, amelyet a következő módon lehet értelmezni: ha lenne olyan zárt körút, amely nem tartalmazza az összes várost, akkor az ehhez tartozó városok alkotta Q halmazra ez a feltétel nem teljesülne, hiszen ekkor a baloldali összegre nulla adódna.

Az utazó ügynök feladat (6.4)-(6.8) modellje 2n darab feletti feltételt tartalmaz, ez valódi feladatok esetén elviselhetetlenül nagy szám. C. E. Miller, A. W. Tucker, R. A. Zemlin 1960-ban [Miller, Tucker, Zemlin '60] kevesebb feltétellel fogalmazta újra a feladatot:

6.9. egyenlet -


6.10. egyenlet -


6.11. egyenlet -


6.12. egyenlet -


6.13. egyenlet -


6.14. egyenlet -


Az új feladatnak n2 nagyságrendű feltétele van. A részkör mentességet a (6.12) új feltétel hivatott biztosítani. Ennek a feltételnek a lényege abban áll, hogy az ui számokkal alkalmasan sorszámozott körút elemekre a (6.12) feltétel csak akkor teljesülhet, ha az teljes körút.

Az utazó ügynök feladat két modellje ((6.4)-(6.8) és (6.9)-(6.14)) ekvivalens olyan értelemben, hogy azonos optimális megoldáshoz vezetnek.

Az utazó ügynök feladat nagyszámú feltételére, és a leszámolási eljárás reménytelenül nagy műveletigényére tekintettel a feladatot szokás egyrészt korlátozás és szétválasztás módszerrel megoldani, másrészt gyors, heurisztikus közelítő eljárásokat alkalmazni, amelyek csaknem optimális megoldást adnak viszonylag rövid idő alatt.

Az utazó ügynök feladat heurisztikus algoritmusai

A heurisztikus algoritmusok lényege, hogy ezek az eljárások gyorsan, viszonylag kevés műveletigény árán javítják a közelítő megoldásokat, de arra nem mindig van remény, hogy ezek minden esetben konvergálnának az optimális megoldáshoz. Számos ilyen heurisztikus algoritmust sikerült fejleszteni az utolsó néhány évtizedben. Ezekből tekintsük a következő kettőt.

Legközelebbi város beillesztése

A módszer lényege, hogy az adott pillanathoz meghatározott részkörutat bővítsük egy olyan újabb várossal, hogy a részkörút városain kívüli városok között megkeressük azt a Vk-t, amelynek távolsága a legkisebb a részkörút valamely városához képest és ezután ezzel a várossal bővítjük a részkörutat: ha dik volt a kiválasztásban talált minimális távolság, akkor az új részkörútban a Vi város után a Vk következik, majd ezután az város, amely előző lépésben szerepelt a Vi város után.

6.1. példa -

Tekintsük a következő távolsági D mátrixszal rendelkező feladatot:

ahol M nagyon nagy pozitív szám.


Kiinduláshoz válasszuk a V1 körutat. A többi város ettől mért távolsága rendre 1, 5, 5 és 5. Ez alapján válasszuk V2 várost és a meghatározandó körutat bővítsük V2 várossal, azaz : V1 → V2 → V1. A következő lépésben tekintsük a V3, V4 és V5 városok távolságait a már részkörútban szereplő V1 és V2 városoktól. Ezek a D mátrix főátlója feletti elemek, az első és második sorban (d12 kivételével). A minimális távolságot a d23 = 1 elem adja, ennek megfelelően a kibővített részkörút: V1 → V2 → V3 → V1.

A következő lépésben keressük a minimális távolságot a részkörútban lévő városoktól a V4 és V5 városba vezető pozíciókban, azaz a következők közül: d14, d24, d34, d15, d25 és d35 :

min{ d14, d24, d34, d15, d25, d35 } = min{5, 5, 5, 5, 5, 5} = 5

Ezek mindegyike 5, válasszuk a V4 várost a bővítéshez. Ezzel az új részkörút: V1 → V2 → V3 → V4 → V1. Az utolsó lépésben már csak egy városból választhatunk, és ezt a V4 városhoz kell kötni, mert az 5. sorban a legkisebb elem d54 = 1. Szóval az eredmény: V1 → V2 → V3 → V4 → V5 → V1, így ez a heurisztika által talált teljes körút. Nyilvánvaló, hogy ez egy lehetséges megoldás és a hozzá tartozó össztávolság 13 egység. Ez egyben optimális megoldás is, bár ez nem jellemző a heurisztikák esetén.

Legközelebbi város hozzáadása

Ez a heurisztika az előzőnél még egyszerűbb. Az eddig összeállított részkörutat bővíteni kell a meglévő útvonal végpontjához legközelebbi várossal. Ha minden város szerepel már az útvonalban, akkor az utolsót összekötjük az elsővel, és így képezzük a teljes körutat.

6.2. példa -

Mutassunk most egy olyan példát, amely szuboptimális megoldást eredményez. Tekintsük a következő feladatot:


Kövessük végig a legközelebbi város hozzáadása heurisztikát a V1 városból indulva!

  1. A D mátrix szerint az első városhoz a második város a legközelebbi, azaz

    min {d12, d13, d14} = d12 = 4

  2. A V2 városhoz a V3 város van a legközelebb:

    min {d23, d24} = d23 = 3

  3. A harmadik városból már csak a V4 városba mehetünk. Ezután zárjuk a körutat, ami így

    V1 → V2 → V3 → V4 → V1.

    Az ehhez tartozó teljes megtett út: 4 + 3 + 4 + 8 = 19 egység.

Az algoritmus egyszerűsége miatt rendkívül gyors, de mohó stratégiája miatt könnyen adhat rossz közelítést. Bár lokálisan mindig a legjobb lépéseket teszi meg, könnyen "kihagyhat" pontokat, amelyeket végül csak nagy költséggel tud bejárni, így sokszor igen kusza utakat kaphatunk.

Keverési feladat

Különböző gyakorlati alkalmazásokban előfordulhat olyan szituáció, amikor adott alapanyagokból ismert arányok megtartása mellett elő kell állítani egy keveréket. Az ilyen fajta keverési feladatok (vagy keverék készítési feladatok) leggyakrabban az élelmiszeriparban, vegyiparban, acéliparban, olajiparban, stb. merülnek fel.

6.3. példa -

Tekintsük az alábbi példát. Egy vállalatnál 5 fajta nyersolaj finomításával, majd összekeverésével egy T96 jelölésű terméket állítanak elő. A nyersolajak közül kettő, A1 és A2 A-osztályú, míg B1, B2 és B3 B-osztályú. A finomítás két külön technológia szerint történik, az A-osztályú technológia kapacitása a tervezendő időszakban 10000 liter, a B-osztályú pedig 15000. A vállalat ezeket az A1, A2, B1, B2,B3 nyersolajakat literenként rendre 155, 160, 165, 175 és 170 forintos áron szerzi be.

A nyersolajaknak több fontos jellemzője van, de az adott feladatban az egyszerűség kedvéért mi most csak a benzol tartalmát fogjuk figyelembe venni. A rendelkezésünkre álló ötféle olaj esetén a benzol tartalom rendre a következő: 1,5%, 5,2%, 2,5%, 1,2%, 3,5%. Az értékesítésre kerülő T96 terméknél ennek az értéknek szabvány szerint 2,1% és 3,5% között kell lenni.

A finomítási eljárás során nem lép fel térfogatváltozás, és az eljárás költségét is figyelmen kívül hagyjuk. A kész termék literenként 275 forintért értékesíthető. Mennyit vásároljon a gyár az egyes nyersolaj-fajtákból, hogy nyeresége a tervezendő időszakban maximális legyen?


Vezessük be a következő változókat: xj a j-edik nyersolaj fajtából vásárolt mennyiség, j = 1, 2, ..., 5.

Ekkor az alábbi két feltétel biztosítja, hogy ne lépjük túl a gyártósorok kapacitását:

Az összes nyersolaj beszerzési költsége és értékesítési bevétele:

A kész termék benzol tartalma:

A modell célfüggvénye a bevételek és kiadások különbségéből áll:

Az általános modell felírásához tegyük fel, hogy a felhasználható m-féle nyersanyagból legfeljebb bi mennyiséget tudunk vásárolni rendre ci egységáron. Az n-féle különböző összetételű keverék iránt a kereslet dj, és a j-edik keverék pj egységáron értékesíthető.

Tegyük fel, hogy egy keverék előállításánál a felhasznált nyersanyagok r számú összetevőjének (alkotóelemének) részarányára kell tekintettel lennünk. Ismeretes, hogy ezek az összetevők hány százalékban alkotják a nyersanyagokat, és be kell tartanunk az előírásokat arra vonatkozóan, hogy legalább (vagy legfeljebb) hányad részét alkothatják a keveréknek. Tegyük fel, hogy a k-adik összetevő az i-edik nyersanyagnak aik-ad részét (azaz aik szorosát) alkotja, és a j-edik keverékben a részarányának legalább tkj-nek kell lenni. Mennyit vásároljunk az egyes nyersanyagokból, hogy maximális nyereséget érjünk el?

Jelölje xij az i-edik nyersanyagból a j-edik keverék előállításához felhasznált mennyiséget. Mivel nyersanyagokat nem vásárolhatunk korlátlan mennyiségben, ezért teljesülni kell az

feltételnek. A vizsgált időszakban minden keverékből ki kell elégíteni a keresletet:

Minden keveréknek a figyelembe vett összetevőket az előírt részarányban kell tartalmazni, tehát pl. a 2. keveréknek a 3. összetevő legalább t32-ed részét kell, hogy alkossa, akkor teljesülni kell a

feltételnek. Általában az

feltételeknek kell teljesülni k = 1, 2, ..., r és j = 1, 2, ..., n esetén attól függően, hogy a k-adik összetevőnek a j-edik keverékben legfeljebb, pontosan vagy legalább tkj-ed részben kell jelen lenni. A változók mindegyikére megköveteljük a nemnegativitást, a célfüggvényben pedig az árbevétel és a kiadások különbsége szerepel:

Gyakorlat

Gyakorló feladatok

  1. Egy megyében hat város van, amelyek közötti távolságok (menetidő percekben) az alábbi táblázatban szerepelnek:

      V1 V2 V3 V4 V5 V6
    V1 0820301010
    V2 8025352010
    V3 20250153012
    V4 30351501225
    V5 10203012014
    V6 10101225140

    Meg kell határozni, hogy minimális számban hol kell építeni tűzoltóállomásokat úgy, hogy minden város legalább egy tűzoltóállomásról elérhető legyen maximum 15 perc alatt. Fogalmazza meg a megfelelő LP modellt, majd oldja meg Lingo-val!

  2. Egy megyében hat város van, amelyek közötti távolságok (menetidő percekben) a fenti táblázatban szerepelnek. A megyében legalább 3 tűzoltóállomást kell építeni figyelembe véve, hogy az építési költség városonként rendre 20, 25, 32, 27, 36 és 25 MFt. Meg kell határozni, hogy hol kell a tűzoltóállomásokat építeni úgy, hogy minden város legalább egy tűzoltóállomásról elérhető legyen maximum 15 perc alatt és az építési költség minimális legyen. Fogalmazza meg a megfelelő LP modellt, majd oldja meg Lingo-val!

  3. Tekintsünk egy utazó ügynök feladatot a következő távolsági D mátrixszal:

    Állítson elő ennek a mátrixnak megfelelő LP modellt először (6.4)-(6.8), majd (6.9)-(6.14) alakban! Oldja meg mindkettőt Lingo-val és hasonlítsa össze a kapott optimális megoldásokat!

  4. Tekintsünk egy utazó ügynök feladatot a következő távolsági D mátrixszal:

    Állítson elő ennek a mátrixnak megfelelő LP modellt először (6.4)-(6.8), majd (6.9)-(6.14) alakban! Oldja meg mindkettőt Lingo-val és hasonlítsa össze a kapott optimális megoldásokat!

  5. Adjon olyan feladatot a hétköznapi problémái közül, amely átalakítással megfeleltethető az utazó ügynök feladatnak, vagy tartalmazza azt!

  6. Egy üzemben négy fajta alapanyagból (A1, A2, A3, A4) összekeveréssel állítanak elő egy speciális nitrogénműtrágyát, amelynek nitrogén tartalma az előírások szerint 34% és 46% között mozoghat. Az alapanyagok nitrogéntartalma rendre 50%, 55%, 25% és 15%. Mivel a szóban forgó alapanyagok tartalmaznak még foszfort is, rendre 5%, 4%, 2,5% és 12%, és a foszfor tartalom a termékben nem lehet nagyobb 7%-nál, ezért a keverék előállításkor nem csak a nitrogéntartalomra kell figyelni, hanem a foszfortartalomra is. Fogalmazzon megfelelő LP modellt, amely meghatározza a keverési arányokat, amelyek mellett az összeállítandó termék költsége minimális! Feltételezzük, hogy az alapanyagok beszerzési ára rendre 120, 150, 90 és 140 Ft per 1 kg és az összeállítandó termék mennyisége legyen pontosan 100 kg!

  7. Egy dohánygyár 4 cigarettafélét gyárt: Munkás, Fecske, Kossuth és Simphonia. A cigaretták alapanyaga két hazai és két külföldi dohány: H1, H2, K1 és K2. Az előírások szerint a dohánytermékeknél a megengedett legnagyobb kátrány tartalom nem lehet nagyobb mint 10 mg per 1 kg termék. A különböző alapanyagok keverési arányai az egyes cigarettatípusokban és a kátrány tartalom a dohányokban az alábbi táblázatban szerepelnek:

    Cigaretta típusKeverési arányok (%)
    H1 H2 K1 K2
    Munkás10252550
    Fecske5302550
    Kossuth50102515
    Simphonia25101550
    Kátrány (mg per 1 kg) 615520

    Kérdés: megtartható-e a kátrány tartalomra vonatkozó előírás az adott keverési arányok mellett?

  8. Tegyük fel, hogy az előző feladatban szereplő keverési arányokat meg lehet változtatni 1-1 egységgel mindkét irányban: pl. "Munkás" sorban H1 oszlopban szereplő 10% helyett [9%; 11%] intervallumot kapunk. Milyen minimális kátrányszint érhető el a Simphonia típusnál ilyen keverési arányok mellett?

  9. Tegyük fel, hogy egy takarmányüzemben kukoricadara, halliszt és zab felhasználásával 30 kg olyan takarmány keveréket kell összeállítanunk, amelynek protein, zsiradék és szénhidrát tartalma megfelel az alábbi táblában összefoglalt előírásoknak:

     Tápanyagtartalom (%) 
    AlapanyagokProteinZsiradékSzénhidrátokKészlet (kg)
    Kukoricadara433520
    Halliszt1935820
    Zab524520
    Előírt tartalom10-4535-5020-35 

    Adott, hogy az alapanyagok egységára rendre 120, 240 és 150 Ft/kg. Állítson elő olyan LP modellt, amely segítségével meg lehet határozni egy olyan keverék minimális árat, amely mellett teljesül az összes fenti előírás!

  10. Az előző pontban összeállított LP model használatával adjon választ a következő kérdésre: a fenti keverési arányok mellett megtartható-e a protein tartalom (a 10%-45% intervallumban), ha a halliszt készlete a felére csökken, azaz 10 kg-ra?

Ellenőrző kérdések

  1. Adott egy halmazlefedési feladat szimmetrikus távolsági mátrixszal, amelynek mérete 10 × 10. Hány változót és feltételt tartalmaz a megfelelő LP modell?

  2. Adott egy halmazlefedési feladat NEM szimmetrikus távolsági mátrixszal, amelynek mérete 10 × 10. Hány változót és feltételt tartalmaz a megfelelő LP modell?

  3. Adott egy utazó ügynök feladat szimmetrikus távolsági mátrixszal, amelynek mérete 10 × 10. Hány változót és feltételt tartalmaz megfelelő (6.4)-(6.8) alakú LP modell?

  4. Adott egy utazó ügynök feladat szimmetrikus távolsági mátrixszal, amelynek mérete 10 × 10. Hány változót és feltételt tartalmaz megfelelő (6.9)-(6.14) alakú LP modell?

  5. Hogyan változik az előző pontokban leírt utazó ügynök feladat megfelelő LP modelljének mérete NEM szimmetrikus távolsági mátrix esetén? Adjon választ a két külön esetre: (6.4)-(6.8) alakú modellre és (6.9)-(6.14) alakúra is!

  6. Tekintsük az alábbi távolsági mátrixszal rendelkező utazó ügynök feladatot:

    Oldja meg ezt a feladatot a Legközelebbi város hozzáadása heurisztikával, majd a Legközelebbi város beillesztése heurisztikával! Hasonlítsa össze a kapott megoldásokat és adjon választ a következő kérdésre: melyik megoldás kedvezőbb és mennyivel?

  7. Mennyivel lesz olcsóbb az optimális túra az előző feladatban a heurisztikus megoldásokkal szemben?

  8. Hogyan változik a "Gyakorló feladatok" szekció 6.6. pontjában megfogalmazott keverési feladatnak megfelelő modell alakja és mérete, ha az összeállítandó termék mennyiségével kapcsolatos 100 kg-os feltételt teljesen eltöröljük?

  9. Az előző pontban kapott optimális megoldás szerint hány egységes az előállítandó termék önköltsége?

  10. Az előző pontban kapott optimális megoldás szerint hány egységet kell előállítani a termékből?

7. fejezet - Módosított szimplex módszer

A módosított szimplex módszer kidolgozása G. B. Dantzig nevéhez kötődik [Dantzig '53], majd W. Orchard-Hays fejlesztette azt tovább [Orchard-Hays '54 (1)], [Orchard-Hays '54 (2)]. A kétfázisú szimplex módszer fontos következménye az, hogy a szimplex módszer alap algoritmusa alkalmazásakor mindig feltehetjük, hogy a megoldani kívánt lineáris programozási feladat feltételrendszere teljes sorrangú, azaz a B lehetséges bázisok m számú együttható oszlopvektorból állnak. Ha nem csak a bázisvektorok halmazát jelöljük ezentúl B-vel, hanem a belőlük összeállított m × m méretű mátrixot is, akkor B-ról tudjuk, hogy négyzetes és így a bázisvektorok lineáris függetlensége miatt invertálható mátrix. Gondoljuk meg, nem lehetne-e a szimplex módszer alap algoritmusának a végrehajtásában ezt az észrevételt felhasználni. Ez mindenekelőtt azzal az előnnyel járna, hogy felhasználhatóvá válnának a mátrix invertálásra korábban kifejlesztett, numerikusan stabil, megbízható számítógépes programok, illetve olyan magasabbszintű programnyelvek, amelyekben a mátrixok inverzét egyetlen utasítással nyerhetjük.

A feladat

Tekintsük a következő standard alakú m × n méretű LP feladatot:

a következő feltételek mellett:

Alakítsuk át ezt a feladatot kanonikus normál alakúra (mérete m × (n+m)):

A kapott feladathoz tartozó induló szimplex táblázat:

  

x1

x2

...

xn

s1

s2

...

sm

B

PB

xB

 

p1

p2

...

pn

0

0

...

0

As1

ps1

xs1

 

x11

x12

...

x1n

1

0

...

0

As2

ps2

xs2

 

x21

x22

...

x2n

0

1

...

0

 

Asm

psm

xsm

 

xm1

xm2

...

xmn

0

0

...

1

P(x)

 

Δ1

Δ2

...

Δn

Δn+1

Δn+1

...

Δn+m

ahol xij elemek a következő egyenletekből adódnak:

és

Mivel az induló bázis egységmátrix

ezért az induló szimplex táblázatban xij = aij, i = 1, 2, ..., m, j = 1, 2, ..., n.

A módszer elméleti háttere

Először vezessünk be a következő jelöléseket:

  • BVt -- bázisváltozók halmaza a t-edik iterációban

  • NBVt -- nembázis változók halmaza a t-edik iterációban

  • b -- az eredeti feladat jobb oldali oszlopvektora

  • Aj -- az eredeti feladat A mátrixának j-edik oszlopa

  • B -- m × m méretű bázismátrix

  • B-1 -- m × m méretű inverz bázismátrix

  • pj -- célfüggvény j-edik együtthatója

  • psi -- bázisegyüttható (a B bázis i-edik pozíciója)

  • PB -- célfüggvény bázisegyütthatóiból összeállított vektor

Az ilyen módon bevezetett jelölések használatával fejezzük ki a szimplex táblázatban szereplő elemeket.

Definíció szerint Asi , i = 1, 2, ..., m vektorok lineárisan függetlenek és ezért tetszőleges Aj vektor előállítható az Asi vektorok lineáris kombinációjaként:

7.1. egyenlet -


vagy másképpen

7.2. egyenlet -


Mivel a B bázist alkotó Asi vektorok lineárisan függetlenek, ezért létezik B-1 inverz mátrix és a (7.2) egyenlet mindkét oldalának a B-1-vel történő szorzása után kapjuk, hogy

7.3. egyenlet -


A Δj redukált költség:

7.4. egyenlet -


Mivel x vektor lehetséges megoldása a megoldandó LP feladatnak, ezért

Figyelembe véve, hogy az összes nembázis változó nulla értékű, az utóbbit átírhatjuk a következő módon:

vagy

7.5. egyenlet -


A (7.5) egyenlet mindkét oldalának a B-1 inverz mátrixszal történő szorzása után kapjuk, hogy

Így az xB oszlopvektor kifejezhető a következő képlettel:

7.6. egyenlet -


Ennek következtében a P(x) célfüggvény aktuális értéke kifejezhető a következő módon:

7.7. egyenlet -


Tehát, ha ismert a BVt bázisváltozók halmaza és az eredeti szimplex táblázat, akkor a (7.3 )-(7.7) képletek segítségével, a B-1 inverz bázismátrix használatával kiszámíthatjuk a szimplex-táblázat tetszőleges részét.

Ez azt jelenti, hogy a szimplex módszer számítógépes megvalósítása esetén egy adott iterációban a bázisváltozók aktuális BVt halmazát, megfelelő B-1 inverz mátrixot és az eredeti feladat adatait kell kezelnünk a számítógépes memóriában. Tehát, a szimplex módszer alap algoritmusát végiggondolva, azonnal láthatjuk, hogy az aktuális B lehetséges bázis mátrix inverzének rendelkezésre állása mellett egy iterációs lépés végrehajtásához nincs szükség a teljes szimplex táblában foglalt információra.

Ez a módosított szimplex módszer alapötlete.

A módszer fő lépései

Az alábbiakban összefoglaljuk a módosított szimplex módszer fő lépéseit (maximalizálási feladat esetén):

  1. Lépés. Alakítsunk át az eredeti megoldandó feladatot olyan formára, hogy az induló lehetséges bázismegoldáshoz tartozó B bázismátrix egységmátrix legyen, azaz B=E=B-1.

  2. Lépés. Az aktuális bázisra vonatkozóan számítsunk ki a PBB-1 értékelő vektort.

  3. Lépés. Számoljuk ki a nembázis Δj = (PBB-1)Aj - pj redukált költségeket (7.4 képlet). Ha minden nembázis Δj nemnegatív értékű, akkor az aktuális bázis optimális. Vége. Egyébként, válasszunk egy negatív értékű redukált költséget, mondjuk Δk-t és léptessünk be az xk változót a bázisba.

  4. Lépés. Annak meghatározásához, hogy a bázisba melyik pozícióba (a táblázat melyik sorába) lépjen be az xk változó, számítsuk ki a szimplex táblázat k-adik oszlopát (7.3 képlet), azaz B-1Aj-t. Majd számítsunk ki a B-1b vektort (7.6 képlet). Ezután a θ-hányados tesztet alkalmazzuk annak meghatározására, hogy melyik sorba lépjen be az xk változó:

    Ha xik ≤ 0, i = 1, 2, ..., m, akkor vége, a feladat nem megoldható, mert a célfüggvény felülről nem korlátos. Egyébként,

  5. Lépés. Hajtsunk végre bázis transzformációt az aktuális B-1 inverz mátrixon. Ezzel megkapjuk az új B-1 inverz mátrixot. Térjünk vissza az 1. lépésre.

Fő kérdés: hogyan kell összeállítani az aktuális szimplex táblázathoz (bázishoz) tartozó B-1 inverz-mátrixot ?

Válasz: NEM kell összeállítani, mert a B-1 inverz mátrix már az aktuális szimplex táblázatban van (s1, s2, ..., sm mesterséges változókhoz tartozó oszlopokban).

Bázistranszformáció

Az új inverz mátrix kiszámításához alkalmazhatjuk a következő eljárást: bal oldalról szorozzuk az aktuális inverz mátrixot az ún. pivot mátrixszal:

ahol k az új bázisváltozó indexe, r annak a sornak az indexe, ahova kerül az xk új változó, xrk pedig a generáló elem.

Tehát,

7.8. egyenlet -


Numerikus példa

A módosított szimplex módszert úgy szemléltetjük, hogy megoldjuk vele a következő LP feladatot:

  1. Lépés. A mesterséges változók bevezetése után a kanonikus LP feladat:

    Nagyon fontos: Bármely báziscsere után az aktuális B-1 inverz mátrix egyszerűen az a 3 × 3 mátrix, amelynek j-edik oszlopa éppen az sj változóhoz tartozó oszlop az aktuális szimplex táblázatban.

    Induló táblában:

1. Iteráció

  1. Lépés. Az aktuális bázisra vonatkozóan számítsuk ki a PBB-1 értékelő vektort!

  2. Lépés. Számoljuk ki a nembázis Δj = (PBB-10)Aj - pj redukált költségeket (7.4 képlet):

    Mindhárom nembázis változóhoz tartozó redukált költség negatív értékű. Válasszuk az x1 változót és léptessük be a bázisba!

  3. Lépés. Számoljuk ki az x1 változóhoz tartozó oszlopot (7.3 képlet):

    Majd számítsuk ki a B-10b vektort (7.6 képlet):

    Ezután a θ-hányados tesztet alkalmazzuk annak meghatározására, hogy melyik sorba lépjen be az x1 változó:

    Tehát az x1 változó a bázis 3. sorába lép be. Más szavakkal

    BV1 = {s1, s2, x1}, NBV1 = {s3, x2, x3}.

  4. Lépés. Hajtsunk végre bázis transzformációt az aktuális B-10 inverz mátrixon (azaz alkalmazzuk a jól ismert transzformációs képleteket):

    x1 s1 s2 s3 x1 s1 s2 s3
    8100810-4
    4010401-2
    20012001/2

    Ezzel megkapjuk az új B-11 inverz mátrixot:

    Vagy pivot mátrix alkalmazásával: mivel r = 3, k = 1 és B-1A1 = (8, 4, 2 )T, azaz a generáló elem = 2, ezért

    és a (7.8) képletnek megfelelően

    Most pedig az új bázissal térjünk vissza az 1. lépésre!

2. Iteráció

  1. Lépés. Az aktuális bázisra vonatkozóan számítsuk ki a PBB-1 értékelő vektort.

  2. Lépés. Számoljuk ki a nembázis Δj = (PBB-1)Aj-pj redukált költségeket (7.4 képlet):

    Mivel az x3 nembázis változó az egyetlen egy olyan változó, amelynek redukált költsége negatív értékű, ezért az x3 változót léptetjük be a bázisba.

  3. Lépés. Számoljuk ki az x3 változóhoz tartozó oszlopot (7.3 képlet):

    Majd számítsuk ki a B-1b vektort (7.6 képlet):

    Ezután a θ-hányados tesztet alkalmazzuk annak meghatározására, hogy az x3 változó melyik sorba lépjen be:

    Tehát az x3 változó az aktuális bázis 2. sorába kerül. Más szavakkal

    BV2 = {s1, x3, x1}, NBV2 = {s3, x2, s2}

    és a generáló elem x23 = 0.5.

  4. Lépés. Hajtsunk végre bázistranszformációt az aktuális B-11 inverz mátrixon (azaz alkalmazzuk a jól ismert transzformációs képleteket):

    Ezzel megkapjuk az új B-1 inverzet:

    és térjünk vissza az 1. lépésre.

3. Iteráció

  1. Lépés. Az aktuális bázisra vonatkozóan számítsunk ki a PBB-1 értékelő vektort.

  2. Lépés. Számoljuk ki a nembázis Δj = (PBB-1)Aj - pj redukált költségeket (7.4 képlet):

    Mivel minden redukált költség nemnegatív értékű, az aktuális bázis optimális.

Optimális megoldás összeállítása

Az optimális megoldás meghatározásához ki kell számítanunk az új xB vektort:

Tehát,

vagy közvetlenül:

P(x*) = 60*2 + 30*0 + 20*8 = 120 + 0 + 160 = 280

Szóval, az eredeti feladat optimális megoldása a következő:

x*1 = 2, x*2 = 0, x*3 = 8, P(x*) = 280

Gyakorlat

Gyakorló feladatok

Oldjuk meg módosított szimplex módszerrel az alábbi LP feladatokat!

Ellenőrző kérdések

  1. Alkalmazható-e a módosított szimplex módszer közvetlenül egy általános LP feladat megoldására? Indoklás szükséges!

  2. Soroljon fel legalább három fontos különbséget az általános és módosított szimplex módszerek között!

  3. Ha kiderült, hogy a megoldandó maximalizálási LP feladatban az L lehetséges halmazon a célfüggvény alulról nem korlátos, ennek mi a jele az általános szimplex módszerben?

  4. Ha kiderült, hogy a megoldandó maximalizálási LP feladatban az L lehetséges halmazon a célfüggvény alulról nem korlátos, ennek mi a jele a módosított szimplex módszerben?

  5. Alkalmazható-e a módosított szimplex módszer minimalizálási LP feladat megoldására? Magyarázat szükséges!

  6. Mi a jele a módosított szimplex módszerben annak, hogy a megoldandó LP feladatban a lehetséges halmaz üres?

  7. Mi a jele a módosított szimplex módszerben annak, hogy az aktuális bázis optimális?

  8. Előfordulhat-e hogy egy LP feladatot meg lehet oldani általános szimplex módszerrel, de a módosított szimplex módszerrel nem?

  9. Előfordulhat-e hogy egy LP feladatot nem lehet megoldani általános szimplex módszerrel, de a módosított szimplex módszerrel igen?

  10. A módosított szimplex módszer használata folyamán kiderült, hogy az összes (PBB-1)Aj érték pozitív. Mit jelent ez és mi a teendő?

8. fejezet - Duális szimplex módszer

A primál és duál feladat közötti kapcsolatot felhasználva 1954-ben C. E. Lemke [Lemke '54] kidolgozta az ún. duális szimplex algoritmust, amellyel megoldhatók az alábbi típusú feladatok.

Megoldandó LP feladat

Tekintsünk a következő speciális alakú m × n méretű LP feladatot:

8.1. egyenlet -


8.2. egyenlet -


8.3. egyenlet -


ahol

8.4. egyenlet -


8.5. egyenlet -


Vegyük észre, hogy most a jobboldali b vektorra nincs előírva a nemnegativitás, viszont a célfüggvényben szereplő p vektor pj együtthatóihoz most tartozik (8.4) nempozitívitási feltétel.

Először alakítsuk át ezt a feladatot a következő módon: szorozzunk minden (8.2) feltételt (-1)-gyel, majd vezessük be az si, i = 1, 2, ..., m mesterséges változókat. Az ilyen módon kapott feladat mérete m × (n+m):

8.6. egyenlet -


8.7. egyenlet -


8.8. egyenlet -


Mivel a mesterséges változókhoz tartozó oszlopvektorok egységmátrixot alkotnak, az induló bázisba válasszuk az s1, s2, ..., sm változókat, azaz:

x1 = x2 = ... = xn = 0; s1 = -b1, s2 = -b2, ..., sm = -bm

és

Így kapjuk a következő induló szimplex táblázatot:

   x1 x2 ... xn s1 s2 ... sm
B PB xB p1 p2 ... pn 00...0
An+1 0 -b1 -a11 -a12 ... -a1n 10...0
An+2 0 -b2 -a21 -a22 ... -a2n 01...0
An+m 0 -bm -am1 -am2 ... -amn 00...1
P(x) = 0 Δ1 = -p1 Δ2 = -p2 ... Δn = -pn 0 0...0

Vegyük észre, hogy

Δj = -pj ≥ 0, j = 1, 2, ..., n és Δn+i = 0, i = 1, 2, ..., m

Ezenkívül világos, hogy az aktuális bázismegoldás nem biztos, hogy lehetséges, de minden Δj redukált költség nemnegatív értékű.

  1. Definíció. A B bázis primál lehetséges, ha a hozzá tartozó szimplex táblában az összes bázisváltozó nemnegatív értékű.

  2. Definíció. A B bázis duál lehetséges, ha a hozzá tartozó szimplex táblában maximalizálási feladat esetén az összes redukált költség nemnegatív értékű, minimalizálási feladat esetén az összes redukált költség nempozitív értékű.

A duális szimplex módszer lényege az, hogy duál lehetséges bázisból indulva, a duál lehetségesség megőrzésével igyekszünk elérni, hogy a bázis primál lehetséges is legyen. Az a bázis, amely egyszerre duál és primál lehetséges, az optimális megoldás bázisa. Amennyiben ezt nem lehet elérni, akkor a megoldani kívánt feladatnak nincs lehetséges megoldása, azaz a lehetséges halmaza üres és emiatt a feladat nem megoldható.

Mielőtt áttérünk a módszer tanulmányozására, vezessük be a következő jelöléseket! Jelölje JB a bázishoz tartozó oszlopvektorok indexeinek halmazát! Így az aktuális JB = {n+1, n+2, ..., n+m}. Legyen J={1,2,...,n+m}, akkor JN = J∖JB halmaz csak azon oszlopok indexeit tartalmazza, amelyek nem tartoznak a B bázishoz, azaz az aktuális JN = {1, 2, ..., n}.

A módszer fő lépései

Az alábbiakban összefoglaljuk a duális szimplex módszer fő lépéseit (maximalizálási feladat esetén):

  1. Lépés. Alakítsuk át az eredeti megoldandó feladatot olyan formába, hogy az induló bázismegoldás mellett minden Δj redukált költség nemnegatív értékű legyen (ilyenkor egy vagy több bázisváltozó lehet negatív értékű).

  2. Lépés. Ha minden bázisváltozó nemnegatív értékű, vége. Az aktuális bázismegoldás optimális. Egyébként

  3. Lépés. A negatív értékű bázisváltozókból valamilyen módon válasszunk xsr kilépő változót. Ez a változó meghatározza a szimplex tábla generáló sorát.

  4. Lépés. Annak meghatározásához, hogy a bázisba melyik nembázis változó fog kerülni (a táblázat melyik oszlopából), alkalmazzuk az ún. duális θ - hányados tesztet:

    A teszt alapján meghatározott oszlopot jelöljük generáló oszlopként.

    Ha JN- = ∅, azaz xrj ≥ 0, ∀ j ∈ JN, akkor vége, a feladat nem megoldható, mert a lehetséges halmaz üres. Egyébként,

  5. Lépés. Hajtsunk végre bázistranszformációt. Majd térjünk vissza az 1. lépésre.

A duális szimplex módszer fő alkalmazási területe nem a feladat megoldása (az induló szimplex táblázattól indulva végig az optimális megoldásig), hanem a lehetségesség visszaállítása abban az esetben, amikor a primál szimplex módszerrel megoldott feladatban új feltétel(eke)t kell bevezetnünk. Ilyenkor nem kell újra megoldani a bővített (megváltoztatott) feladatot, hanem az optimális szimplex táblázatban be kell vezetni az új feltétel(eke)t és a duális szimplex módszer alkalmazásával visszaállítani a táblázat primál lehetségességét (és azzal előállítani az új optimális megoldást). Éppen emiatt a duális szimplex módszer fontos szerepet játszik az egészértékű programozásban.

Numerikus példa

A duális szimplex módszert azzal szemléltetjük, hogy megoldjuk vele a következő LP feladatot:

1. iteráció.

  1. Lépés. Szorozzunk meg minden feltételt (-1)-gyel és vezessük be a megfelelő mesterséges változókat:

    Induló táblában:

    Más szavakkal:

    x1 = 0, x2 = 0, x3 = 0, s1 = -4, s2 = -6

    Így, az induló szimplex táblázat a következő:

       x1 x2 x3 s1 s2
    B PB xB -1-2000
    s1 0-4-12-110
    s2 0-6-2-1101
    P(x) = 0 12000

    Vegyük észre, hogy ez a bázismegoldás tartalmaz negatív értékű bázisváltozókat (s1 = -4 és s2 = -6) és emiatt primál nem lehetséges, azonban ez dual lehetséges, mivel az összes Δj redukált költség nemnegatív értékű.

  2. Lépés. Mivel a bázisváltozók között vannak negatív értékűek, az aktuális bázismegoldás nem optimális.

  3. Lépés. A negatív értékű bázisváltozókból válasszuk az s2 változót, mivel abszolut értéke a legnagyobb. Ennek megfelelően a szimplex tábla második sora lesz a generáló sor.

  4. Lépés. A duális θ-tesztből következik, hogy J-N = {j ∈ JN : x2j < 0} = {1, 2} és

    Így x21 = -2 lesz a generáló elem és ennek megfelelően x1 változó bekerül a bázis 2. sorába. Más szavakkal

    BV1 = {s1, x1}, NBV1 = {s2, x2, x3}

  5. Lépés. Hajtsunk végre bázistranszformációt és új szimplex táblázatot kapunk:

       x1 x2 x3 s1 s2
    B PB xB -1-2000
    s1 0-105/2-3/21-1/2
    x1 -1311/2-1/20-1/2
    P(x) = -3 03/21/201/2

    Majd térjünk vissza az 1. lépésre.

2. iteráció.

  1. Lépés. Mivel a bázisváltozók között vannak negatív értékűek, az aktuális bázismegoldás nem optimális.

  2. Lépés. A negatív értékű bázisváltozókból csak s1 maradt, ezért ez a változó kilép a bázisból. Ennek megfelelően jelöljük a tábla 1. sorát, ez a sor lesz a generáló sor.

  3. Lépés. Annak meghatározásához, hogy a bázisba melyik nembázis változó fog bekerülni (azaz a táblázat melyik oszlopából), alkalmazzuk a duális -hányados tesztet: J-N = {j ∈ JN : x1j < 0} = {3, 5} és

    Tehát x3 változó a bázis 1. sorába kerül. Más szavakkal

    BV2 = {x3, x1}, NBV2 = {s2, x2, s1}

  4. Lépés. Hajtsunk végre bázistranszformációt és új szimplex táblázatot kapunk:

       x1 x2 x3 s1 s2
    B PB xB -1-2000
    x3 02/30-5/31-2/31/3
    x1 -110/31-1/30-1/3-1/3
    P(x) = -10/3 07/301/31/3

    Mivel minden bázisváltozó nemnegatív értékű (azaz primál lehetséges), az aktuális bázis optimális.

    Tehát,

Duális szimplex módszer és egészértékű programozás

A duális szimplex módszer egészértékű programozásban való használatának illusztrálásához tekintsük a következő tiszta egészértékű LP feladatot:

8.9. egyenlet -


Először oldjuk meg a

8.10. egyenlet -


megfelelő relaxációs feladatot primál szimplex módszerrel! Ennek a (8.10) relaxációs LP feladatnak az optimális megoldását látjuk a következő szimplex táblázatban:

8.1. táblázat - Relaxációs feladat -- optimális megoldás.

   x1 x2 x3 x4
B PB xB 7300
x2 372/17014/17-1/17
x1 775/1710-3/345/34
P(x) = 741/17 = 43 10/17 003/34 29/34


Szóval,

x* = (47/17, 44/17) és P(x*) = 741/17 = 43 10/17.

Mivel a kapott relaxációs megoldás nem egészértékű, ezért válasszunk egy "branch" változót, mondjuk x1-t, és vezessünk be a következő két feltételt a megfelelő részfeladatokba:

x1 ≤ 4 és x1 ≥ 5

Baloldali részfeladat előkészítése

A folyamat illusztrálásához tekintsük a baloldali részfeladatot, azaz az x1 ≤ 4 feltétellel bővítendő részfeladatot. A (8.1.) optimális szimplex tábla x1 sora szerint teljesül a következő egyenlet:

1x1 + 0x2 - 3/34x3 + 5/34x4 = 75/17.

Írjuk át ezt a feltételt az

8.11. egyenlet -


formában és alakítsuk át a feladat feltételrendszeréhez csatolandó x1≤ 4 feltételt a következő módon:

8.12. egyenlet -


Majd a (8.12) egyenletet a (8.11) képlet használatával írjuk át az

3/34x3 - 5/34x4 + u1 = 4 - 75/17 = -7/17

alakban, vagy másképpen:

0x1 + 0x2 + 3/34x3 - 5/34x4 + u1 = -7/17

Majd az ilyen módon kapott feltételt adjuk hozzá az optimális táblához (lásd. 8.2. táblázat).

8.2. táblázat - Baloldali részfeladatnak megfelelő szimplex tábla

   x1 x2 x3 x4 u1
B PB xB 73000
x2 372/17014/17-1/170
x1 775/1710-3/345/340
u1 0-7/17003/34-5/341
P(x) = 741/17 = 43 10/17003/3429/340


Vegyük észre, hogy az eredeti Δ1, Δ2, Δ3, és Δ4 redukált költségek ilyenkor nem változnak.

Baloldali részfeladat megoldása duális szimplex módszerrel

Hajtsuk végre a duális szimplex módszert a 8.2. szimplex táblában.

  1. Lépés. Mivel a bázisváltozók között van negatív értékű (u1) változó ezért az aktuális bázismegoldás nem lehetséges.

  2. Lépés. A tábla u1 sora lesz a generáló sor.

  3. Lépés. A duális θ-tesztből kapjuk, hogy J-N = { 4} és :

    Ennek megfelelően az x4 változóhoz tartozó oszlopvektor lesz a generáló oszlop. Ebből kifolyólag az x4 változó a bázis 3. sorába lép be. Más szavakkal

    BV1 = {x2, x1, x4}, NBV1 = {x3, u1}

  4. Lépés. A bázistranszformáció végrehajtása után egy új optimális szimplex táblát (lásd 8.3. táblázat) kapunk.

    8.3. táblázat - Baloldali részfeladat optimális megoldása

       x1 x2 x3 x4 u1
    B PB xB 73000
    x2 322/5011/50-2/5
    x17410001
    x4014/500-3/51-34/5
    P(x) = 206/5 = 41 1/5003/5029/5


Gyakorlat

Gyakorló feladatok

Oldjuk meg duális szimplex módszerrel az alábbi LP feladatokat!

Ellenőrző kérdések

  1. Alkalmazható-e a duális szimplex módszer közvetlenül egy általános LP feladat megoldására? Indoklás szükséges!

  2. Soroljon fel legalább három fontosabb különbséget az általános és duális szimplex módszerek között!

  3. Mi a jele a duális szimplex módszerben annak, hogy a megoldandó maximalizálási LP feladatban a célfüggvény alulról nem korlátos?

  4. Mi a jele a duális szimplex módszerben annak, hogy a megoldandó maximalizálási LP feladatban a célfüggvény felülről nem korlátos?

  5. Mi a jele a duális szimplex módszerben annak, hogy a megoldandó LP feladatban a lehetséges halmaz nem üres?

  6. Mi a jele a duális szimplex módszerben annak, hogy a megoldandó LP feladatban a lehetséges halmaz üres?

  7. Mi a jele a duális szimplex módszerben annak, hogy az aktuális bázis optimális?

  8. Mi a jele a duális szimplex módszerben annak, hogy az aktuális bázis nem optimális?

  9. Mi a jele a duális szimplex módszerben annak, hogy az aktuális bázis nem lehetséges?

  10. A korlátozás és szétválasztás módszer alkalmazása folyamán kiderült, hogy a duális szimplex módszer segítségével megoldott egyik részfeladatban az összes bázisváltozó nemnegatív értékű lett. Mit jelent ez és mi a teendő?

9. fejezet - Többcélú lineáris programozás

A döntési problémák programozási modelljeinek megalkotása során, mint erről már többször szóltunk, egyik fontos lépés az elérendő céllal összhangban álló célfüggvény meghatározása. Az eddigiekben feltételeztük azt, hogy az elérendő célt egyetlen célfüggvénnyel megfogalmazhatjuk. Azonban a vállalati döntések során nagyon gyakran több cél egyidejű érvényesítésére van szükség, hiszen általában a többcélúság jellemzi a gazdálkodást. Elég csupán a rövid- és közép-, valamint a hosszútávú eredményességet szolgáló szempontok viszonylagos ellentmondásosságára utalnunk.

Általában az a jellemző, hogy egyáltalán nem biztos, hogy a különböző célfüggvényekhez ugyanaz az optimális szerkezet tartozik. Ezért egy kicsit részletesebben kell foglalkozni ezzel a problémával.

Ebben a témakörben csak azt az esetet vizsgáljuk, amikor a célok mindegyikét (lineáris korlátozó feltételek mellett) lineáris függvénnyel fejezhetjük ki. Megállapodhatunk abban is, hogy minden egyes célfüggvény a gazdaságilag kedvezőbb következményt mindig nagyobb célfüggvényértékkel fejezi ki, azaz a célfüggvények maximalizálására törekszünk.

  1. Definíció. Az

    9.1. egyenlet -


    9.2. egyenlet -


    9.3. egyenlet -


    feladatot többcélú programozási feladatnak nevezzük.

A kérdés az, hogyan értelmezhetjük ilyen körülmények között reálisan a "legkedvezőbb" programokat. Mint látni fogjuk, a kérdésre a válasz megadása nem egyértelmű, hiszen a "legkedvezőbb" program fogalma függ attól, hogy az egyes célfüggvényeknek megfelelő célok egyformán fontosak vagy közöttük valamilyen preferencia-sorrendet kell, ill. lehet érvényesíteni.

A szekvenciális optimalizálás módszere

Először azzal az esettel foglalkozunk, amikor az egyes célfüggvényeknek megfelelő célok preferálhatók, azaz fontossági sorrendjük alapján egyértelműen sorba rendezhetők. Legyen tehát az első célfüggvény a legfontosabb, ettől eltekintve a második a legfontosabb stb., míg az utolsó a legkevésbé fontos. (Ez a gondolat megfelel annak a vállalati magatartásnak, hogy van egy legfontosabb cél, s a második, ill. a további célok csak akkor és annyiban fontosak, ha az előző céloknak is megfelelnek.) Így először az f1(x) célfüggvény maximális értékét biztosító megoldást keressük a (9.2)-(9.3) feltételek által meghatározott L lehetséges halmazon.

Tegyük fel, hogy az

LP feladat megoldható és optimális megoldáshalmaza legyen L1.

Az f2(x) célfüggvényt már csak az L1 halmazon maximalizáljuk (ha L1 nemüres és nem egyetlen pontból áll, vagyis akkor, ha f1(x) célfüggvénynek több optimuma van), s általában az fi(x) célfüggvényt már csak Li-1 halmazon (1 < i ≤ k) fogjuk maximalizálni. Nyilvánvaló, hogy L ⊇ L1 ⊇ L2 ⊇ ... ⊇ Li-1. Az eljárást addig folytatjuk, amíg egyértelmű optimumot nem nyerünk. Ezt az algoritmust a következő numerikus példán szemléltetjük.

9.1. példa -

Van egy vállalat, amely négyféle termék előállítására képes. A korlátozó feltételek legyenek a következők:

A termékek egy egységére jutó fedezeti összegek ezer forintban rendre a c1 = (2, 3, 2, 2) vektor, az árbevétel pedig a c2 = (4, 6, 5, 4) vektor komponensei. Legyenek a termékek súlyai kg-ban a c3 = (1 , 5, 1, 3) vektor elemei. Vizsgáljuk meg, hogy létezik-e olyan termelési program, amely (sorrendben) a legnagyobb fedezeti összeget, lehetőleg nagy árbevételt, továbbá a termelt termékek lehetőleg kis súlyát biztosítja.


  • Az első (legfontosabb) célnak megfelelő célfüggvény:

  • A második:

  • A harmadik:

Az utóbbi célfüggvény (-1)-gyel történő szorzása, majd a feladat feltételrendszerének kanonikus alakúvá átalakítása után kapjuk a következő, három célfüggvénnyel rendelkező LP feladatot:

Ennek megfelelően az L1 halmazt meghatározó LP feladat (azaz f1(x) célfüggvénnyel) induló szimplex táblája a következő alakú lesz:

9.1. táblázat -

   x1 x2 x3 x4
B C1B xB 2322
u1 01001101
u2 0800111
u3 0501110
f1(x) = 0 -2-3-2-2


Az u3 sorában x2 oszlopában lévő 1 elem generáló elemnek kiválasztása és megfelelő transzformáció végrehajtása után kapjuk a következő táblázatot:

9.2. táblázat -

   x1 u3 x3 x4
B C1B xB 2022
u1 0500-1-11
u2 030-1-101
x2 3501110
f1(x) = 150 131-2


A második iteráció a következő táblázathoz vezet:

9.3. táblázat -

   x1 u3 x3 u2
B C1B xB 2020
u1 02010-1-1
x4 230-1-101
x2 3501110
f1(x) = 210 -1112


A harmadik iteráció utáni táblázat már optimális:

9.4. táblázat -

   u1 u3 x3 u2
B C1B xB 0020
x1 22010-1-1
x4 2501-1-10
x2 330-1121
f1(x) = 230 1101


A 9.4. táblának megfelelő x' = (x1 = 20; x2 = 30; x3 =0; x4 = 50) termelési program már a fedezeti összeg maximumát biztosítja (f1(x') = 230). Ennek a x' termelési programnak megfelel a következő árbevétel: f2(x') = 4×20 + 6×30 + 5×0 + 4×50 = 460. Vegyük észre, hogy a 9.4. táblában a redukált költségeket tartalmazó sorban van egy nembázis x3 változó, amelyhez tartozó redukált költség egyenlő nullával (Δ3 = 0). Ebből kifolyólag a feladatnak van alternatív optimuma, azaz L1 halmaz több pontot tartalmaz. A 9.4. szimplex táblázatban az f1(x) célfüggvény helyett alkalmazzuk az f2(x) célfüggvényt és számoljuk újra a redukált költségeket. Az eredményt a következő táblázat mutatja:

9.5. táblázat -

   u1 u3 x3 u2
B C2B xB 0050
x1 42010-1-1
x4 4501-1-10
x2 630-1121
f2(x) = 460 22-12


Nyilvánvaló, hogy az adott szimplex táblázat nem optimális, mert tartalmaz pozitív Δ3 = 2 redukált költséget. A megfelelő iteráció végrehajtása után kapott 9.6. szimplex táblázat már optimális az f2(x) célfüggvény szempontjából is:

9.6. táblázat -

   u1 u3 x2 u2
B C2B xB 0060
x1 4351/21/21/2-1/2
x4 4651/2-1/21/21/2
x3 515-1/21/21/21/2
f2(x) = 475 3/25/21/25/2


A 9.6. táblából kiolvasható, hogy az x'' = (x1 = 35; x2 = 0; x3 = 15; x4 = 65) megoldásnak megfelelő termelési program tekinthető a példában megfogalmazott cél szempontjából a legjobbnak. Ebben az esetben a fedezeti összeg 230 ezer Ft, az árbevétel 475 ezer Ft, a termék összsúlya pedig 245 kg. Viszont ha a 9.6. táblában az f2(x) célfüggvény helyett az f3(x) célfüggvényt alkalmazzuk és a kapott 9.7. táblában kiszámoljuk az új redukált költségeket, akkor az is látható lesz, hogy nincs olyan termelési program, amely mindhárom célfüggvény szempontjából a legjobb lenne.

9.7. táblázat -

   u1 u3 x2 u2
B C2B xB 0050
x1 1351/21/21/2-1/2
x4 3651/2-1/21/21/2
x3 115-1/21/21/21/2
f3(x) = 245 -3/21/25/2-3/2


A legegyszerűbb az a ritkán előforduló eset, amikor a k darab célfüggvényhez létezik olyan x* vektor, amely mindegyik célfüggvény szempontjából optimális.

  1. Ha az x* vektor minden célfüggvénynek optimumhelye, akkor az x*-t a (9.1)-(9.3) feladat abszolút optimumának nevezzük.

A többcélúság helyettesítése, illetve közelítése egy célfüggvénnyel

Két olyan példát mutatunk be, amelyek speciális esetben előfordulhatnak, ill. kielégítő eredményt adnak.

A súlyozásos módszer

Ez egy elég gyakran alkalmazott módszer (megközelítés), amely lényege abban áll, hogy az egyes célfüggvényekhez (fontosságuk szerint) λμ ≥ 0, μ = 1, 2, ..., k súlyokat rendelünk. A súlyok ismeretében az L halmazon a következő súlyozott célfüggvény maximumát keressük:

Így feladatunkat a jól ismert LP feladatra vezettük vissza.

Ennek az F(x) célfüggvénynek bizonyos esetekben gazdasági értelme is lehet. Például tegyük fel, hogy termékeinket különböző (belföldi és külföldi) piacokon is értékesíthetjük. Ebben az esetben a "jövedelem" egyrészt forintban, másrészt különböző devizákban jelentkezhet. Fejezze ki az f1(x) a belföldi, az f2(x) , f3(x) és így tovább, fk(x) a különböző külföldi piacokon való értékesítéssel elért jövedelmet. Ha a λμ súlyoknak a devizaárfolyamokat tekintjük, akkor F(x) célfüggvény gazdasági jelentése kézenfekvő.

Túl azon, hogy a súlyok megválasztása - általában - erősen szubjektív (egyes szerzők pl. a "szavazás" módszerét javasolják), azzal a problémával is számolnunk kell, hogy a célfüggvények dimenziója és nagyságrendje különböző lehet és más-más intervallumban változhatnak (más-más az értékkészletük). Ezért gyakran a súlyozásos módszernél a

célfüggvényt szokták választani, ahol M'μ, ill. M''μ az fμ(x) függvény minimumát, ill. maximumát jelöli az L lehetséges megoldások halmazán. Ennek előnye, hogy a

transzformált célfüggvények dimenzió nélküliek és értékeik a [0; 1] intervallumba esnek.

Megemlítjük azt a viszonylag gyakran alkalmazott módszert is, hogy meghatározzák az egyes célfüggvényeknek megfelelő optimális termelési szerkezeteket és ezeknek veszik valamilyen konvex lineáris kombinációját. Így biztosan lehetséges megoldást kapunk, mivel az L lehetséges megoldások halmaza konvex. A konvex lineáris kombinációban szereplő súlyok megválasztása ebben az esetben is a fent említett problémákat veti fel.

A korlátok módszere

Bizonyos alkalmazásoknál szokásos eljárás az is, hogy az fμ(x) célfüggvényekre egy (pl. az első) kivételével valamilyen "elfogadható" dμ alsó korlátot adunk meg azzal a céllal, hogy biztosítsunk ezekre a célfüggvényekre egy dμ értékű színvonal-elérést:

Így az eredeti (9.1)-(9.3) feladatunk helyett a következő LP feladatot kell megoldanunk:

Az ilyen megközelítés megfelel annak a vállalati politikának, amikor a vállalat egy bizonyos (az adott esetben f1(x)) célt tekint a legfontosabbnak és a többi cél szempontjából megelégszik egy elfogadható dμ szint elérésével. Pl. ha a vállalat a jelenlegi nyereségéből a jövőbeni nyeresége érdekében csak "bizonyos" áldozatot hajlandó hozni, akkor árbevételét maximalizálja a nyereségre előírt alsó korlát mellett.

Nyilvánvalóan előfordulhat, hogy túlságosan magas dμ korlátok esetén - nevezetesen, ha az M'μ ≤ dμ ≤ M''μ, μ = 2, 3, ..., k legalább egy esetben nem teljesül - nem kapunk lehetséges megoldást. Ennek elkerülésére is dolgoztak ki olyan eljárást, amely nem igényli az M'μ és M''μ korlátértékek közvetlen meghatározását.

Efficiens pontok

Térjünk vissza az eredeti (9.1)-(9.3) feladathoz olyan feltételezéssel, hogy a f1(x), f2(x), ..., fk(x) célfüggvények nem preferálhatók, azaz a célfüggvényeknek megfelelő célok egyformán fontosak. Felvetődhet a kérdés, hogy a feladat szempontjából a lehetséges megoldások L halmazának két pontja, x' és x'' közül melyiket nevezzük hatékonyabbnak, vagyis hogyan értelmezzünk hatékonysági sorrendet az L halmaz két eleme között.

Azt fogjuk mondani, hogy az x' ∈ L lehetséges megoldás hatékonyabb az x'' ∈ L megoldásnál, ha fμ(x') ≥ fμ(x''), μ = 1, 2, ..., k és létezik legalább egy olyan index μ0, amely mellett fμ0(x') >fμ0(x''), azaz ha az x' lehetséges megoldás egyik célfüggvény szempontjából sem rosszabb az x''-nél, de legalább egy célfüggvény szempontjából jobb.

  1. Definíció. Az x̃ ∈ L pontot a (9.1)-(9.3) feladat efficiens pontjának nevezzük, ha nincsen olyan x ∈ L, x ≠ x̃, amelyre fμ(x̃) ≤ fμ(x), μ = 1, 2, ..., k és valamely μ-re fμ(x̃) ≠ fμ(x).

Az efficiens pontok tehát abban az értelemben a legjobb megoldások, hogy nincsenek az L halmazban olyan további pontok, amelyek legalább egy cél vonatkozásában jobbak lennének, ugyanakkor egyetlen más cél tekintetében sem rosszabbak.

Annak eldöntésére, hogy valamely x ∈ L pont efficiens-e, elégséges feltétel adható.

Tekintsük a következő függvényt: G(x) = f1(x) + f2(x) + ... + fk(x), vagyis

9.4. egyenlet -


  1. Tétel. Ha a

    9.5. egyenlet -


    9.6. egyenlet -


    9.7. egyenlet -


    9.8. egyenlet -


    LP feladat megoldható és max G(x) = G(x̃), akkor az pont efficiens.

A tétel illusztrálásához tekintsük a következő numerikus példát:

9.9. egyenlet -


9.10. egyenlet -


9.11. egyenlet -


9.12. egyenlet -


A tétel alapján belátható, hogy a feladat efficiens pontjainak halmazát a 9.1. ábrán az L halmaz vastagabb vonallal jelölt határpontjai szemléltetik.

9.1. ábra. Lehetséges halmaz és efficiens pontok.

Az ábrán látható, hogy az efficiens pontok halmaza nem konvex. Ezenkívül, bizonyítás nélkül megemlítjük, hogy ha két efficiens pont által meghatározott szakasz belső pontjai között van legalább egy efficiens pont, akkor a szakasz minden pontja efficiens.

Valamennyi efficiens pont meghatározására léteznek ugyan eljárások, mi azonban megelégszünk a 9.1. tétel alapján konstruálható olyan algoritmus ismertetésével, amely véges sok efficiens pont előállítását teszi lehetővé.

Először határozzuk meg az eredeti (9.1)-(9.3) feladat egy x' ∈ L lehetséges megoldását (amely nem feltétlenül bázismegoldás), majd oldjuk meg a

9.13. egyenlet -


9.14. egyenlet -


9.15. egyenlet -


9.16. egyenlet -


LP feladatot, amelynek optimális megoldását jelöljük x''-vel. Ekkor a következő két eset lehetséges:

  1. Ha G(x'') > G(x'), akkor az x' pont nem efficiens. Ebben az esetben x' vektort írjuk felül x'' vektorral, újra konstruáljuk meg az (9.13)-(9.16) feladatot és ismételjük meg az egész eljárást az új megengedett megoldással.

  2. Ha G(x'') = G(x'), akkor az x' pont efficiens. Vége.

Ez az eljárás véges számú lépésben véget ér. Újabb efficiens pontot úgy kaphatunk, ha más x' ∈ L lehetséges megoldásból indulunk ki. Figyelembe kell vennünk azt is, hogy nincs semmi garancia arra, hogy az ilyen módon kapott következő efficiens pont valóban újabb lesz.

9.2. példa -

Vizsgáljuk meg, hogy a (9.9)-(9.12) feladatnak az x' = (3; 4) ∈ L és x' = (0; 3) ∈ L pontok efficiens pontjai-e, s ha nem, akkor ezekből kiindulva határozzunk meg efficiens pontokat!


Először tekintsük a x'= (3; 4) pontot. Mivel

ezért a (9.13)-(9.16) LP feladatnak megfelel a következő alak:

Ennek a feladatnak az optimális megoldása az x'' = (3; 4), így G(x'') = 20. Mivel G(x'') = G(x'), ez azt jelenti, hogy az x' = (3; 4) pont efficiens.

Most tekintsük az x' = (0; 3) pontot. Ebben a pontban

Ebből kifolyólag a (9.13)-(9.16) LP feladatnak megfelelő a következő alak:

Ennek a feladatnak az optimális megoldása az x'' = (4; 4), így G(x'') = 24. Mivel G(x'') = 24 > G(x') = 6, ez azt jelenti, hogy az x' = (0; 3) pont nem efficiens. Az algoritmusnak megfelelően ilyenkor az x' pontnak kell tekinteni a x'' pontot, azaz x' ← x'', és újra ismételni az eljárást. Ennek az új eljárásnak az eredménye x'' = (4; 4) vektor, amely mellett G(x'') = 24 = G(x'), ami azt jelenti, hogy x'' = (4; 4) pont efficiens.

Célprogramozás

Gyakorlati modellekben sokszor előfordul, hogy a model feltételrendszerében olyan feltételek jelennek meg, amelyeket a többiekkel együtt nem lehet kielégíteni, például egy gyártandó termékre a feltételrendszerben vonatkozik egy alsó korlát: x1 ≥ 50. Ugyanakkor az adott termék egy egységének előállítása 10 egység munkaidőt igényel, viszont a rendelkezésre álló munkaidő-készlet 100 egység. Világos, hogy az x1 ≥ 50, és 10 x1 ≤ 100 feltételeket egyszerre együtt nem lehet kielégíteni.

A lineáris programozási feladatban ebben az esetben az L lehetséges megoldások halmaza üres és így, természetesen, a feladat nem megoldható. Felmerülhet a kérdés, hogy mi lenne a feladat megoldása akkor, ha ezen feltételeknél a lehető legjobb közelítést írnánk csak elő, a többi feltétel változatlanul hagyása mellett.

Ebben a szekcióban egy olyan modellcsaládot mutatunk be, amelyik a fenti konfliktusos helyzetek kezelésére alkalmas.

9.3. példa - [Winston '91]

Egy hirdetéssel foglalkozó céget megbíztak azzal, hogy egy árut a TV-ben és rádióban reklámozzon. A kampányra nem fordíthatnak többet 120 millió forintnál, ugyanakkor minél több nézőt, hallgatót szeretnének elérni.

Médiaszakemberek megbecsülték a TV - és rádióreklám hatását és ezt az egy hónap alatt elért előfizetők számával határozták meg. A kétféle reklámhordozó hatékonyságát az egy hónap alatt l millió költséggel elért emberek számával mérik. Az ügynökség kiemelten megcélozta a magas jövedelmű réteget. Felmérések alapján kiderítették, hogy 1 millió forint reklámköltséggel a TV-ben 14 ezer előfizetőt érhetnek el, akik között 1200 magas jövedelmi rétegbe tartozó fő van, míg ugyanez a rádióhirdetés esetében csak 6000 fő, akik között szintén 1200 fő a magas jövedelmű.

A megrendelővel történt hosszú egyeztetések után kialakítottak egy célrendszert, amely fontossági sorrendben a következő:

  1. Legalább 840 ezer előfizetőhöz jusson el a hirdetés. Ez a maximálisan elérhető célközönség 80%-át jelentené. Ha ugyanis a rendelkezésre álló pénzt kizárólag TV-reklámra költik, akkor érik el a legnagyobb közönséget, 1 680 ezer embert.

  2. A hatékony rádiókampány érdekében nem akarnak 90 millió Ft-nál többet költeni TV-hirdetésre.

  3. Szeretnék elérni, hogy a maximálisan elérhető célközönség legalább 10%-a felső jövedelmi kategóriába tartozó legyen. (Ez tehát minimálisan 168 ezer főt jelent).

  4. Olyan közel szeretnének kerülni a maximális lehetőséghez, amennyire lehet.


Írjunk fel először egy LP modellt, ahol a legfontosabb célt emeljük ki célfüggvénynek:

ahol x1 és x2 az egyes reklámhordozókra költött pénz millió Ft-ban.

A fenti LP feladat -- grafikusan is ellenőrizhetően -- nem megoldható, mert a lehetséges halmaza üres. Válasszuk tehát azt a modellezési elvet, amely a megbízóval való tanácskozás eredményeit is tükrözve a problémát egy általános célprogramozási feladattá transzformálja.

A modellben az egyes feltételeknél az alul- és felülteljesítés reprezentálására a di- és di+ változókat (eltérésváltozók) szerepeltetjük. Az első feltételben nincs ilyen változó, mert itt a költségvetési korlát egy kemény feltétel. A többi feltételnél mind az alul-, mind a felülteljesítést megengedjük: ezek a puha vagy célfeltételek. A második feltételnél nem kívánatos az alulteljesítés, hiszen legalább 840 ezer főt el szeretnénk érni. Ezért a célfüggvényben szerepel a minimalizálandó d1- változó. A TV -hirdetésekre nem szeretnénk 90 millió forintnál többet költeni, ezért a célfüggvényben megjelenik a d2+ változó. A célfüggvényben az eltérésváltozók súlyozott összegének minimalizálása szerepel. Figyeljük meg, hogy a több célfüggvényes feladatnak megfelelő alakot kapnánk, ha az alábbi módon írnánk fel a célokat:

Eltérésváltozók szerepe a célprogramozás modelljében:

A fenti célprogramozási numerikus példában kiemelkedő szerepet kaptak a di- és di+ eltérésváltozók. Nyilvánvaló, hogy az eredeti változók helyett éppen ezek a "mesterségesen" bevezetett változók vezérlik és határozzák meg a megoldást. Az alábbiakban összefoglaljuk a di- és di+ változók legfontosabb alkalmazási lehetőségeiket. Jelölje di- az i-edik cél alulteljesítésének mértékét, di+ pedig az i-edik cél túlteljesítésének mértékét. Feltételezzük, hogy az i-edik célfeltétel a k-adik a célok fontossági sorrendjében.

  1. A célnak sem az alul- sem a túlteljesítése nem kívánatos:

    Célfüggvény:

    Célfeltétel:

  2. A célnak csak a túlteljesítése nem kívánatos, de alulteljesíthető:

    Célfüggvény:

    Célfeltétel:

  3. A célnak csak az alulteljesítése nem kívánatos, de túlteljesíthető:

    Célfüggvény:

    Célfeltétel:

  4. A cél túlteljesítése nem kívánatos, alulteljesítése nem megengedett:

    Célfüggvény:

    Célfeltétel:

  5. A cél túlteljesítése nem megengedett, alulteljesítése nem kívánatos:

    Célfüggvény:

    Célfeltétel:

Abszolut prioritási modell

Abszolút prioritási modellnek szoktuk nevezni az olyan célprogramozási modelleket, amelyekben a célok csökkenő fontossági sorrendben vannak rendezve. A legegyszerűbb esetben minden cél egy osztályt alkot, más esetekben bizonyos célok lehetnek azonos fontosságúak, s ilyenkor ugyanabba a prioritási osztályba kerülnek.

Tegyük fel, hogy a fenti numerikus példában a célfüggvényt a következő alakban írhatjuk fel:

ahol a μi értékek az úgynevezett prioritási faktorok vagy tényezők, és az i-edik tényező sokkal fontosabb (nagyobb), mint a μi+1 tényező, azaz: μ1 > μ2 > ... > μk . Ezt a feladatot lexikografikus célprogramozási feladatnak is nevezik, mivel a megoldást a prioritási faktorok sorrendjében, szekvenciálisan végezzük.

Súlyozott eltéréses modell

A célprogramozás egy eltérő szemléletű változata a súlyozott eltéréses modell. Ebben a modellben a nemkívánatos eltérést képviselő változók az ún. büntető súlyok segítségével súlyozott összegként szerepelnek a célfüggvényben. Ezáltal a feladat megoldása nem esik szét részfeladatok megoldásának sorozatára, hanem a lineáris programozás szokásos megoldó módszereinek egyikével kiszámítható.

Ha az előző numerikus példánkban a 840 ezer fő elérésének nem teljesülése előfizetőnként 5000 Ft büntetőköltséget von maga után, a magas jövedelmi kategóriába tartozók esetében pedig ugyanez a költség 10 ezer Ft, akkor a feladat feltételrendszere változatlan, a célfüggvény viszont a következőképpen alakul:

Gyakorlat

Gyakorló feladatok

  1. Oldjuk meg a szekvenciális optimalizálás módszerével az alábbi LP feladatot azzal a feltételezéssel, hogy fontossági szempontból az f1(x) célfüggvény a legfontosabb!

    Rendelkezik-e az adott feladat abszolut optimummal?

  2. Oldjuk meg az előző LP feladatot szekvenciális optimalizálás módszerével, feltételezve, hogy a fontossági szempontok közül az f2(x) célfüggvény a legfontosabb. Rendelkezik-e az adott feladat abszolut optimummal?

  3. Oldjuk meg az 9.1. pontban szereplő LP feladatot súlyozásos módszerrel a következő súlyok alkalmazásával: λ1 = 2 és λ2 = 0,5! Majd alkalmazzuk a következő súlyokat: λ1 = 0,5 és λ2 = 2! Miben különböznek az ilyen módon kapott eredmények?

  4. Oldjuk meg az alábbi LP feladatot korlátok módszerével azzal a feltételezéssel, hogy fontossági szempontból az f1(x) célfüggvény a legfontosabb és az f2(x) célfüggvény "elfogadható" értéke d2 = 10!

    Milyen eredményhez vezet ez a módszer, ha d2 = 20?

  5. Keressük meg az alábbi LP feladat legalább egy efficiens pontját!

    Majd adjon választ a következő kérdésre: efficiens-e a (3; 11) pont?

  6. Állítsa elő a következő feladat legalább egy efficiens pontját!

  7. Oldja meg a következő feladatot súlyozásos módszerrel a következő súlyok alkalmazásával: λ1 = 0,75 és λ2 = 0,25!

  8. Az előző feladat megoldásánál alkalmazza a következő súlyokat: λ1 = 0,25 és λ2 = 0,75!

  9. Az előző feladat megoldásánál alkalmazza a következő súlyokat: λ1 = 0,5 és λ2 = 0,5!

  10. Hasonlítsa össze a 7-es, 8-as és 9-es pontokban kapott eredményeket!

Ellenőrző kérdések

  1. Maximum hány célfüggvény szerepelhet a többcélú programozási feladatban?

  2. Sorolja fel a szekvenciális optimalizálás módszerének fő lépéseit!

  3. Mit szoktak abszolut optimumnak nevezni többcélú programozásban?

  4. Sorolja fel a súlyozásos módszer fő lépéseit!

  5. Milyen módon lehet/szokták választani a súlyokat?

  6. Mit jelöltünk M'μ-vel és M''μ-vel?

  7. Milyen értéket vehetnek fel azok a súlyok, amelyek kiválasztásához M'μ-t és M''μ-t alkalmaztuk?

  8. Mit jelent az "efficiens pont" kifejezés?

  9. Efficiens pontja e az x' = (0; 4) pont a (9.9)-(9.12) feladatnak? Indoklás szükséges!

  10. Efficiens pontja e az x' = (1; 4) pont a (9.9)-(9.12) feladatnak? Indoklás szükséges!

10. fejezet - Nemlineáris optimalizálás

Ahogy már többször is lehetett tapasztalni, a gyakorlatból származó problémák modellezése nem mindig csak lineáris összefüggések és kifejezések felhasználásával végezhető. Például, az előző fejezetekben szereplő numerikus feladatokban feltételeztük, hogy az előállítandó termék egységára mindig fix és nem függ a termék mennyiségétől. Viszont a mindennapi gyakorlat azt mutatja, hogy különböző árucikkeknél az eladás-vételi egységár függ a termék mennyiségétől. Hasonló nemlineáris jellegű összefüggéseket találhatunk a különböző technológiai folyamatokkal kapcsolatos problémáknál is, például a gyártásban felhasznált munkaerő, gépek, nyersanyagok és más erőforrások igénybevétele gyakran nem lineárisan és folytonosan történik, hanem akár ugrásszerűen, lépcsősen is változhat.

Ebben és a következő fejezetekben az operációkutatás olyan speciális feladataival foglalkozunk, amelyeket nemlineáris programozási (rövidítve NLP) vagy nemlineáris optimalizálási (rövidítve NLO) feladatoknak szokás nevezni.

Nemlineáris optimalizálási feladat

Egy nemlineáris optimalizálási feladat a következő formában adható meg:

10.1. egyenlet -


10.2. egyenlet -


10.3. egyenlet -


ahol f(x) és gi(x) (i = 1, 2, ..., m) skalár értékű függvények, bi, (i = 1, 2, ..., m) ismert konstansok.

Nyilvánvaló, hogy az ilyen alakú optimumszámítási feladat magában foglalja a lineáris programozási feladatot. Ebből kifolyólag mondhatjuk, hogy a NLO a lineáris programozási feladat általánosítása.

Az esetek többségében a NLO problémák megoldása lényegesen nehezebb feladat, mint lineáris programozási esetben. A következő ábrák szemléltetik a lineáris és nemlineáris optimalizálási feladatok közötti legfontosabb különbségeket.

A 10.1. ábra azt mutatja hogy egy f(x1, x2) = x1x2 alakú célfüggvény az x1 ≥ 0, x2 ≥ 0, x1 + x2 ≤ 4, feltételek által meghatározott lehetséges halmazon maximális értéket nem csúcspontban vesz fel, hanem a (0; 4) és (4; 0) pontokat összekötő szakasz közepén, azaz a (2; 2) pontban.

10.1. ábra. Példa - Egy NLO probléma, ahol az optimális megoldás nem extremális pont

  1. Definíció. Minimalizálási (maximalizálási) feladatra vonatkozóan egy x' pontot lokális minimumnak (lokális maximumnak) nevezünk, ha létezik olyan δ > 0, hogy tetszőleges olyan lehetséges x megoldás mellett, amelynél |x - x'| ≤ δ, teljesül az f(x') ≤ f(x) (f(x') ≥ f(x)) feltétel.

A 10.2. ábra olyan függvényt mutat, amelynek két lokális maximuma van (A és B pontban). Ebből a két pontból az A pont lokális maximumot biztosít, a B pontban pedig a függvény felveszi a maximális értékét.

10.1. ábra. Példa - Egy lokális maximum nem feltétlenül a NLO probléma optimális megoldása

Egy NLO problémában a lokális minimumok száma nagyon nagy lehet. Példaként tekintsük a következő feladatot ([Rapcsák]):

Ebben a feladatban a lehetséges halmaz egy n-dimenziós egységkocka 2n csúcsponttal. Az f(x) célfüggvény mindegyik csúcspontban lokális minimumot ér el. Ugyanakkor az adott feladatban minden lokális optimum egyben globális is.

A Lagrange függvény és szorzók

Tekintsük a következő alakú NLO feladatot:

10.4. egyenlet -


10.5. egyenlet -


10.6. egyenlet -


Feltételezzük, hogy a feladat f(x) célfüggvénye és gi(x) feltétel függvényei differenciálhatók és ezért a lokális optimalitás az elsőrendű feltételekkel jellemezhető.

Ebben a szekcióban a fenti (10.4)-(10.6) alakú NLO feladat szükséges és elégséges lokális optimalitási feltételeit fogjuk tárgyalni. Ezeket a feltételeket a szakirodalomban a Lagrange szorzók módszerének nevezik.

A módszer lényege abban áll, hogy minden i-edik (10.5) feltételhez hozzá kell rendelni egy-egy λi változót (amelyeket Lagrange szorzóknak szoktak nevezni), majd ezek használatával össze kell állítani az

10.7. egyenlet -


Lagrange függvényt, ahol x = (x1, x2, ..., xn), λ = (λ1, λ2, ..., λm). A következő lépésben meg kell keresni azt az (x', λ') = (x'1, x'2, ..., x'n, λ'1, λ'2, ..., λ'm) pontot, amelyben az L(x,λ) függvény összes (n+m) elsőrendű parciális deriváltja nullává válik.

A módszer elméleti alapjaként szolgál a következő két tétel.

  1. Tétel. Tegyük fel hogy a (10.4)-(10.6) feladatban a célfüggvényt maximalizálni kell. Ha az f(x) célfüggvény konkáv és minden gi(x) függvény lineáris, akkor tetszőleges (x',λ') vektor, amely kielégíti a

    10.8. egyenlet -


    feltételeket, a (10.4)-(10.6) feladat x'=(x'1, x'2, ..., x'n) optimális megoldását eredményezi.

  2. Tétel. Tegyük fel hogy a (10.4)-(10.6) feladatban a célfüggvényt minimalizálni kell. Ha az f(x) célfüggvény konvex és minden gi(x) függvény lineáris, akkor tetszőleges (x',λ') vektor, amely kielégíti a (10.8) feltételeket, a (10.4)-(10.6) feladat x'=(x'1, x'2, ..., x'n) optimális megoldását eredményezi.

10.1. példa -

A módszer illusztrálásához tekintsük a következő maximalizálási feladatot konkáv célfüggvénnyel és lineáris feltételekkel:


Ennek a feladatnak megfelel a következő Lagrange függvény:

és a következő (10.8) feltételrendszer

vagy másképpen

A fenti egyenletrendszer megoldása az (x',λ') = (69/28; 73/28; 1/4) vektor. Ebből kifolyólag a feladat megoldása az x' = (69/28; 73/28) vektor. Így, f(x') = 15 1/56.

A Karush-Kuhn-Tucker tétel

Ebben a szekcióban a következő alakú

10.9. egyenlet -


10.10. egyenlet -


10.11. egyenlet -


NLO feladat számára fogalmazzuk meg az optimalitás szükséges és elégséges feltételeit. A szakirodalomban ezeket a feltételeket Karush-Kuhn-Tucker feltételeknek szokták nevezni.

Ugyanúgy, mint az előző szekcióban itt is feltételezzük, hogy a feladat f(x) célfüggvénye és gi(x) feltétel függvényei differenciálhatók. Ezenkívül feltételezzük, hogy a gi(x) i = 1, 2, ..., m függvények mellett teljesül valamilyen ún. regularitási feltétel (több különböző alakú regularitási feltétel létezik, de a könyvünk terjedelmi korlátai miatt ezekkel nem foglalkozunk, részletesebben lásd [Bazaraa, Shetty '79] könyben). Az alábbi tételeket csak megfogalmazzuk bizonyítás nélkül (lásd. [Rapcsák], [Winston '91]).

  1. Tétel. Tegyük fel hogy a (10.9)-(10.11) feladatban a célfüggvényt maximalizálni kell. Ha x'=(x'1, x'2, ..., x'n) vektor optimális megoldása a (10.9)-(10.11) feladatnak, akkor létezik olyan λ' = (λ'1, λ'2, ..., λ'm) vektor, amely mellett teljesül a következő feltételrendszer

    10.12. egyenlet -


    10.13. egyenlet -


    10.14. egyenlet -


  2. Tétel. Tegyük fel hogy a (10.9)-(10.11) feladatban a célfüggvényt minimalizálni kell. Ha x'=(x'1, x'2, ..., x'n) vektor optimális megoldása a (10.9)-(10.11) feladatnak, akkor létezik olyan λ'=(λ'1, λ'2, ..., λ'm) vektor, amely mellett teljesül a következő feltételrendszer

    10.15. egyenlet -


    10.16. egyenlet -


    10.17. egyenlet -


Abban esetben ha a (10.9)-(10.11) feladatban szereplő xj változók nemnegatív értékűek, akkor a (10.9)-(10.11) feladatot átírhatjuk az alábbi alakban

10.18. egyenlet -


10.19. egyenlet -


10.20. egyenlet -


Ekkor a (10.20) feltételekhez hozzá kell rendelni egy-egy μj ≥ 0, (i = 1, 2, ..., m) változót (Lagrange szorzót) és a 10.3. és 10.4. Tételeket át kell írni a következő formára.

  1. Tétel. Tegyük fel hogy a (10.18)-(10.20) feladatban a célfüggvényt maximalizálni kell. Ha x'=(x'1, x'2, ..., x'n) vektor optimális megoldása a (10.18)-(10.20) feladatnak, akkor léteznek olyan λ' = (λ'1, λ'2, ..., λ'm) és μ' = (μ'1, μ'2, ..., μ'n), amely mellett teljesül a következő feltételrendszer

    10.21. egyenlet -


    10.22. egyenlet -


    10.23. egyenlet -


    10.24. egyenlet -


    10.25. egyenlet -


  2. Tétel. Tegyük fel hogy a (10.18)-(10.20) feladatban a célfüggvényt minimalizálni kell. Ha x'=(x'1, x'2, ..., x'n) vektor optimális megoldása a (10.18)-(10.20) feladatnak, akkor léteznek olyan λ' = (λ'1, λ'2, ..., λ'm) és μ' = (μ'1, μ'2, ..., μ'n), amely mellett teljesül a következő feltételrendszer

    10.26. egyenlet -


    10.27. egyenlet -


    10.28. egyenlet -


    10.29. egyenlet -


    10.30. egyenlet -


A fenti tételek (10.3., 10.4., 10.5., 10.6.) megadják az x' = (x'1, x'2, ..., x'n) vektor optimalitásának szükséges feltételeit. A következő két tételben ([Bazaraa, Shetty '79]) megfogalmazzuk az elégséges feltételeit annak, hogy x' = (x'1, x'2, ..., x'n) vektor optimális megoldása legyen a (10.9)-(10.11) vagy (10.18)-(10.20) feladatnak.

  1. Tétel. Tegyük fel hogy a (10.9)-(10.11) feladatban a célfüggvényt maximalizálni kell. Ha f(x) célfüggvény konkáv és gi(x), i = 1, 2, ..., m, konvex függvények, akkor minden olyan x' = (x'1, x'2, ..., x'n) vektor, amely kielégíti a 10.3. Tételt, optimális megoldása a (10.9)-(10.11) feladatnak.

    Hasonlóképpen, ha a (10.18)-(10.20) feladatban a célfüggvényt maximalizálni kell és f(x) célfüggvény konkáv és gi(x), i = 1, 2, ..., m, konvex függvények, akkor minden olyan x' = (x'1, x'2, ..., x'n) vektor, amely kielégíti a 10.5. Tételt, optimális megoldása a (10.18)-(10.20) feladatnak.

  2. Tétel. Tegyük fel hogy a (10.9)-(10.11) feladatban a célfüggvényt minimalizálni kell. Ha f(x) célfüggvény konvex és gi(x), i = 1, 2, ..., m, konvex függvények, akkor minden olyan x' = (x'1, x'2, ..., x'n) vektor, amely kielégíti a 10.4. Tételt, optimális megoldása a (10.9)-(10.11) feladatnak.

    Hasonlóképpen, ha a (10.18)-(10.20) feladatban a célfüggvényt minimalizálni kell és f(x) célfüggvény konvex és gi(x), i = 1, 2, ..., m, konvex függvények, akkor minden olyan x' = (x'1, x'2, ..., x'n) vektor, amely kielégíti a 10.6. Tételt, optimális megoldása a (10.18)-(10.20) feladatnak.

10.2. példa -

Tekintsük a következő maximalizálási feladatot konkáv célfüggvénnyel és lineáris feltételekkel:


A 10.7. Tételnek megfelelően a feladathoz tartozó Karush-Kuhn-Tucker (vagy röviden KKT) feltételrendszer felírható a következő formában:

Könnyen belátható, hogy ennek a rendszernek a megoldása a λ1 = 10, λ2 = 0, x1 = 8,5, x2 = 8,75 és x3 = 17,25. Így, a fenti NLO feladat optimális megoldása az x= ( 8,5; 8,75; 17,25) vektor.

Gyakorlat

Gyakorló feladatok

  1. Oldja meg az alábbi NLO feladatot Lagrange szorzók módszerével!

  2. Alakítsa át az előző pontban adott feladatot a (10.9)-(10.11) alakra és oldja meg KKT feltételek felhasználásával!

  3. Oldja meg az alábbi NLO feladatot Lagrange szorzók módszerével!

  4. Alakítsa át az előző pontban adott feladatot a (10.9)-(10.11) alakra és oldja meg KKT feltételek felhasználásával!

  5. Oldja meg az alábbi NLO feladatot a KKT feltételek felhasználásával!

  6. Oldja meg az előző pontban megadott feladatot a KKT feltételek felhasználásával feltételezve, hogy x1 változó nemnegatív!

  7. Oldja meg az előző pontban megadott feladatot a KKT feltételek felhasználásával feltételezve, hogy az összes változó nemnegatív!

  8. Oldja meg az alábbi NLO feladatot a KKT feltételek felhasználásával!

  9. Oldja meg az alábbi NLO feladatot a KKT feltételek felhasználásával!

  10. Oldja meg az alábbi NLO feladatot a KKT feltételek felhasználásával!

Ellenőrző kérdések

  1. Mikor modhatjuk, hogy egy optimumszámítási feladat nemlineáris programozási feladat?

  2. Sorolja fel a nemlineáris programozási feladat megoldása során megjelenő nehézségeket!

  3. Mik a Lagrange szorzók és mi a lényege a Lagrange módszernek?

  4. Adott egy (10.4)-(10.6) alakú NLO maximalizálási feladat 6 változóval és 8 (10.5) féle feltétellel. Hány Lagrange szorzó tartozik ehhez a feladathoz és hány feltételből áll a feladathoz tartozó (10.8) alakú feltételrendszer?

  5. Adott egy (10.9)-(10.11) alakú NLO maximalizálási feladat 6 változóval és 8 (10.10) féle feltétellel. Hány feltételt és változót tartalmaz a feladathoz tartozó (10.12)-(10.14) alakú KKT feltételrendszer?

  6. Mi és hogyan változik az előző pontban megfogalmazott kérdésben (és a válaszban), ha a feladatban a célfüggvényt minimalizálni kell?

  7. Adott egy (10.18)-(10.20) alakú NLO maximalizálási feladat 6 változóval és 8 (10.19) féle feltétellel. Hány feltételt és változót tartalmaz a feladathoz tartozó (10.21)-(10.25) alakú KKT feltételrendszer?

  8. Mi és hogyan változik az előző pontban megfogalmazott kérdésben (és a válaszban), ha a feladatban a célfüggvényt minimalizálni kell?

  9. Adott egy (10.18)-(10.20) alakú NLO maximalizálási feladat 8 (10.19) féle feltétellel és 8 változóval. A változók közül csak az első három változóhoz tartozik nemnegatívitási feltétel. Hány feltételt és változót tartalmaz a feladathoz tartozó (10.21)-(10.25) alakú KKT feltételrendszer?

  10. Mi és hogyan változik az előző pontban megfogalmazott kérdésben (és a válaszban), ha a feladatban a célfüggvényt minimalizálni kell?

11. fejezet - Szeparábilis célfüggvény

A jelen fejezetben a konvex programozási feladatok olyan speciális esetével foglalkozunk, amelynek P(x) célfüggvénye felírható nj=1 fj (xj) alakban, ahol az fj (xj) egyváltozós függvények rendre konvex függvények a megfelelő intervallumokban. Az ilyen függvények esetén szokás szétválasztható változójú vagy szeparábilis függvényről beszélni.

Megoldandó feladat és előkészítés

Az általános szeparábilis programozási feladat alatt a következő speciális alakú nemlineáris programozási feladatot értjük:

Mielőtt tárgyalni kezdenénk a feladat tulajdonságait és kezelését, tekintsük az alábbi példát ([Winston '91]).

11.1. példa -

Egy olajfinomítással foglalkozó cég két fajta termék előállítását tervezi a következő évre. Ha az első fajta termék előállítandó mennyiségét az x1 változó jelöli, akkor a korábban végzett felmérések szerint a termék ára per egy egység a 30-x1 kifejezéssel fejezhető ki. Ha második termék gyártandó mennyiségét az x2 jelöli, akkor a második termék ára per egy egység a 35-x2 kifejezés szerint alakul. Az első termék előállítási költsége x12 egység, a másiké pedig 2x22 egység. A vállalat maximális kapacitása a tervezendő időszakban korlátos és ezért a gyártandó termékek összege nem lehet nagyobb, mint 20 egység. Másrészt, a gyártási költségek nem haladhatják meg a 250 egységet. A cég igyekszik olyan gyártási tervet keresni, amely az adott körülményekhez képest biztosítja a maximális profitot. Így kapjuk a következő feladatot:


11.1. egyenlet -


11.2. egyenlet -


Az ilyen módon kapott szeparábilis programozási feladatban

A továbbiakban az egyszerűség kedvéért itt és mindenütt feltételezzük, hogy gij(xj) = aijxj, i = 1, 2, ..., m, j = 1, 2, ..., n.

Tekintsük a következő feladatot:

11.3. egyenlet -


11.4. egyenlet -


11.5. egyenlet -


amelyről a továbbiakban hivatkozás nélkül mindig feltételezzük a következőket:

  1. A feladat lehetséges megoldásainak L halmaza korlátos.

  2. A z(x) függvény folytonos az L-n.

Vegyük észre, hogy az adott feltételek mellett L korlátos, zárt, nemüres halmaz, így z(x) folytonossága miatt a feladatnak létezik optimális megoldása. A következőkben megmutatjuk, hogy megadható a (11.3)-(11.5) feladat optimális megoldásának egy olyan numerikus közelítése, amelyre a tényleges optimum értéke és a közelítő optimális megoldáson felvett célfüggvényérték eltérése kisebb, mint egy előre adott pozitív ε. E célból a (11.3)-(11.5) feladathoz a korábban leírt szakaszonként lineáris függvényekre (2. fejezet) kifejlesztett apparátus felhasználásával megkonstruálunk egy olyan speciális

11.6. egyenlet -


11.7. egyenlet -


11.8. egyenlet -


alakú lineáris programozási feladatot, hogy teljesüljenek a következők:

  1. A feladat lehetséges megoldásainak L' halmaza korlátos.

  2. Megadható olyan φ : L → L' leképezés, hogy

    1. tetszőleges u̅ ∈ L' vektorhoz meghatározható olyan û ∈ L(φ), amelyre w( û ) ≤ w(u̅) teljesül,

    2. tetszőleges x̅ ∈ L lehetséges megoldásra z(x̅) ≈ w(x̅ φ).

Az ilyen módon bevezetett feladatpárra vonatkozóan érvényes a következő állítás:

  1. Tétel. Ha a (11.3)-(11.5) feladathoz megkonstruálunk egy olyan (11.6)-(11.8) feladatot, hogy a feladatpárra teljesülnek az 1., 2. állítások, és ha tetszőleges x̅ ∈ L lehetséges megoldásra | z(x̅) - w(x̅} φ)| ˂ ε/2, akkor megadható olyan x0 ∈ L, amelyre

Ennek az állításnak a (11.3)-(11.5) feladat optimális megoldására vonatkozóan fontos következménye az alábbi módon fogalmazható meg:

  1. Következmény. Ha rögzített ε > 0 mellett a (11.3)-(11.5) feladathoz megkonstruálunk egy olyan (11.6)-(11.8) feladatot, hogy a feladatpárra teljesülnek az 1., 2. állítások, és a 2. állítás b. részében megadott közelítés ε/2 pontosságú, akkor megadható a (11.3)-(11.5) optimális megoldásának egy olyan numerikus közelítése, hogy a tényleges optimum eltérése a közelítő optimumértéktől kisebb, mint ε.

A kérdés ezek után az, hogy miként lehet a (11.3)-(11.5) feladathoz olyan (11.6)-(11.8) típusú LP feladatot konstruálni, hogy a feladatpár kielégítse a fentieket. A továbbiakban ezt vizsgáljuk. Megadunk egy olyan eljárást, amellyel a megfelelő (11.6)-(11.8) feladat előállítható. Ezt követően megmutatjuk, hogy az eljárással előállított feladat valóban rendelkezik a kívánt tulajdonságokkal. Az említett eljárás megadása előtt bizonyos előkészületek szükségesek.

Mivel a (11.3)-(11.5) feladat lehetséges megoldásainak L halmaza korlátos, ezért léteznek olyan hl, ... , hn konstansok, hogy tetszőleges x̅ ∈ L lehetséges megoldásra

11.9. egyenlet -


teljesül. Ilyen értékek valóban léteznek, ugyanis a korlátosság miatt van olyan M, hogy

Ekkor viszont hj = M, j = 1, 2, ..., n máris alkalmas konstansok.

Sajnos a hj, j = 1, 2, ..., n értékek létezésén kívül szükségünk van konkrét konstansok ismeretére is, amelyek meghatározása esetenként nehézségekbe ütközik. Kettő és három változót tartalmazó feladatok esetében ezek a korlátok meghatározhatók grafikusan. Nagyobb feladatnál egy lehetséges eljárás a Fourier-módszer (ld. [Bajalinov, Imreh '01]), ez azonban igen nagy számításigényű, és nehezen végrehajtható.

Ha visszatérünk a fenti példához, könnyen belátható hogy a (11.1) és (11.2) feltételek elemzése alapján következik, hogy √ X̅

Így, a (11.9) korlátok a feladatra vonatkozóan a következő alakot kapják:

A továbbiakban nem térünk ki a hj, j = 1, 2, ..., n konstansok meghatározási technikájára. Feltételezzük, hogy ezek valamilyen módszerrel meghatározhatók.

Továbbá, használni fogjuk az fj(xj) függvénynek a [0, hj] intervallumon lineáris függvényekkel történő közelítését. E célból tekintsük a [0, hj] intervallum egy 0 = hj0 < hj1 < ... < hjkj = hj beosztását. Képezzük az s = 1,2,..., kj értékekre a (hjs-l, fj(hjs-l)), (hjs, fj(hjs)) pontokat összekötő szakaszok

iránytangenseit. Ekkor a

függvényt az fj(xj) húrpoligonjának nevezzük a [0, hj] intervallumon. Γj függvényt úgy lehet interpretálni, mint az egyes osztópontokban felvett függvényértékeket összekötő szakaszok által meghatározott függvényt. Ennek alátámasztására legyen 0 ≤ x̅j ≤ hj tetszőleges. Tekintsük az x tengelyen a (0, j) pontok által meghatározott szakaszt. Jelölje ezen szakasz [hjs-1, hjs]-be eső részének hosszát js. Akkor nyilvánvalóan teljesülnek a következők:

11.10. egyenlet -


11.11. egyenlet -


11.12. egyenlet -


Másrészt a Γj függvény definíciójából következik, hogy az így meghatározott js, s = 1, 2, ..., kj értékekre a Γj (u̅j1, u̅j2, ..., u̅jkj) pontosan a függvényértékeket összekötő szakaszok által meghatározott függvény értéke az j pontban.

Feltételezésünk szerint fj(xj) konvex függvény [0, hj]-n. Ebből a Γj húrpoligonban szereplő tjs, s = 1, 2, ..., kj iránytangensekre következik, hogy

11.13. egyenlet -


Végül vizsgáljuk a húrpoligon és az fj(xj) függvény eltérését a [0, hj]-n. Mivel a húrpoligont a beosztás határozza meg, ezért az eltérés a tekintett beosztástól függ. Másrészt ii. alapján z(x) folytonos L-en, de akkor fj(xj) is folytonos a [0, hj] intervallumon. Matematikai analízisből ismeretes, hogy ekkor fj(xj) egyenletesen is folytonos [0, hj]-n, azaz tetszőleges pozitív ε-hoz van olyan δ > 0, hogy bármely u̅, v̅ ∈ [0, hj] pontpárra, ha |u̅ - v̅| < δ, akkor |fj(u̅) - fj(v̅)| < ε. Ez viszont azt eredményezi, hogy véve egy olyan beosztást, amelyre hjs - hjs-l < δ, s = 1,2,...,kj teljesül, a beosztáshoz tartozó húrpoligon és az fj (xj) függvény eltérése a [0, hj] intervallumon kisebb, mint ε.

Összegezve a fentieket, az eltérést illetően azt kaptuk, hogy tetszőlegesen előírt pozitív ε pontossággal közelíthető az fj(xj) függvény egy alkalmas húrpoligonnal. Konkrét feladatoknál a megfelelő beosztás meghatározása igen komplikált lehet, az fj(xj) függvényektől függően különböző technikákat lehet alkalmazni. Itt ennek a részleteivel nem foglalkozunk, a tárgyalásra kerülő feladatokban a megfelelő beosztások könnyen meghatározhatók.

A fenti előkészítés után a (11.3)-(11.5) feladat rögzített ε > 0 hibahatár melletti megoldására a következő eljárást építhetjük fel.

Az eljárás

Az eljárás a következő lépésekből áll:

  1. Lépés. A feladat változóira rendre határozzuk meg a hj, j = 1,2, ...,n felső korlátokat.

  2. Lépés. Minden j-re, j = 1, 2, ..., n vegyünk fel a [0, hj] intervallum egy olyan beosztását, hogy az ehhez tartozó húrpoligon és az fj(xj) függvény eltérése kisebb legyen, mint ε/2n, majd határozzuk meg rendre a Γj (uj1, uj2, ..., ujkk), j = 1, 2, ..., n húrpoligonokat.

  3. Lépés. A (11.3)-(11.5) feladat (11.4) egyenlőtlenség-rendszerében minden j indexre, j = 1, 2, ..., n helyettesítsük az xj változót a

    11.14. egyenlet -


    kifejezéssel. Az így előálló feltételrendszert egészítsük ki a

    feltételekkel. Ezt követően vegyük fel célfüggvényként a

    függvényt.

  4. Lépés. A 3. lépésben előállított (11.6)-(11.8) típusú lineáris programozási feladatot oldjuk meg, és a kapott optimális megoldásból képezzük az

    értékeket, j = 1, 2, ..., n, és az x̅ = (x̅1, x̅2, ..., x̅n) vektort. Az előállított vektor a (11.3)-(11.5) feladat optimális megoldásának egy numerikus közelítése.

Az eljárás működésének illusztrálására tekintsük a következő konvex programozási feladatot:

Legyen az ε = 0,4. Vizsgáljuk elsőként a feltételek teljesülését. Az első feltétel biztosítja a korlátosságot, amiből adódik (i.) Másrészt z(x) folytonos az egész térben, így a lehetséges megoldások L halmazán is, azaz (ii.) is teljesül. Végül

ahol az fi(xi), i = 1, 2, 3 függvények egyenesállású parabolák, és így konvexek az egész számegyenesen. Ezzel azt kaptuk, hogy valamennyi feltétel teljesül.

Ezek után határozzuk meg a hj, j = 1, 2, 3 értékeket. Ehhez vegyük észre, hogy a harmadik egyenlőtlenségből következik, hogy tetszőleges x̅ ∈ L lehetséges megoldásra 1 ≤ 1, x̅3 ≤ 3 . Másrészt összeadva az első és második egyenlőtlenségek bal- és jobboldalait, azt kapjuk, hogy 2x1 + 2x2 ≤ 6 amiből adódik, hogy 2 ≤ 3. Következésképpen hl = 1, h2 = 3 és h3 = 3.

Most határozzuk meg az előírt hibahatárhoz a megfelelő beosztásokat. Ehhez vegyük észre, hogy mivel az fi(xi), i = 1, 2, 3 függvények egyenesállású parabolák, ezért a függvények és a húrpoligonok eltérésének vizsgálatához elegendő az y = cx2 (c > 0) függvénynek és a hozzátartozó húrpoligonnak az eltérését vizsgálni. Az eltérés meghatározásához legyen a számegyenes egy tetszőleges rögzített pontja, és legyen δ > 0 tetszőleges. Akkor az (x̅, cx̅2), (x̅ + δ, c(x̅ + δ)2) pontokat összekötő egyenes egyenlete:

y = c(2x̅ + δ)x - cx̅(x̅ + δ)

Képezve az y = c(2x̅ + δ)x - cx̅(x̅ + δ) és y = cx2 függvények különbségét, az alábbi Δ(x) függvényt kapjuk:

Δ(x) = -cx2 + c(2x̅ + δ)x - cx̅(x̅} + δ)

Vegyük a Δ(x) deriváltját, Δ'(x) = -2cx + 2cx̅ + cδ, amelynek egyetlen 0-helye van, az x =x̅+ δ/2 pont. Mivel Δ''(x) = -2c < 0, ezért a Δ(x) függvény konkáv, így a 0-hely maximumhelye Δ(x)-nek. Behelyettesítve az x̅ + δ/2 értéket Δ(x)-be, azt kapjuk, hogy a két függvény maximális eltérése az [x̅,x̅ + δ] intervallumon 2/4. A kapott eredmény mutatja, hogy az eltérés valóban csak az intervallum hosszától függ, az intervallum helyétől nem.

Most a [0, h1] intervallumot 3, a [0, h2] és [0, h3] intervallumokat 6-6 egyenlő részre osztva, olyan egymástól egyenlő távolságra lévő beosztásokhoz jutunk, amelyekre rendre teljesül, hogy a függvény és a beosztáshoz tartozó húrpoligon eltérése kisebb, mint ε/6.

Meghatározva a húrpoligonokhoz tartozó iránytangenseket, a következő értékeket kapjuk:

t11= -7/3, t12= -1, t13= 1/3,

t21= -9/2, t22= -7/2, t23= -5/2, t24= -3/2, t25= -1/2, t26= 1/2,

t31= 1/2, t32= 3/2, t33= 5/2, t34= 7/2, t35= 9/2, t36= 11/2,

Az iránytangensek kiszámítását illetően vegyük észre, hogy parabolák esetén ezek egy számtani sorozatot alkotnak, így elegendő minden beosztásnál az első két iránytangenst kiszámítani, ezek ismeretében a többi érték egyszerűen meghatározható. Megkonstruálva a lineáris programozási feladatot, az alábbi feladathoz jutunk:

ahol

Megoldva az előállított lineáris programozási feladatot, azt kapjuk, hogy a következő egy optimális megoldás:

A w(u̅) optimumérték: -64/9. Az optimális megoldásra teljesül a (11.12) minden 1 ≤ j ≤ n indexre, így az

komponensekből álló vektor a tekintett nemlineáris programozási feladat egy közelítő optimális megoldása.

A vizsgált feladat optimális megoldása x* = (3/4, 9/4, 1/4), és az optimum értéke: -58/8. Képezve a kapott optimumértékek eltérését

ami valóban kisebb, mint az előírt 0,4 hibahatár.

A konstruált lineáris programozási feladat megoldása során viszonylag nagy szimplex táblázattal kell dolgozni, ugyanis minden ujs ≤ hjs+ujs-1, 1 ≤ s ≤ kj, 1 ≤ j ≤ n feltétel egy külön egyenletet eredményez. Sok esetben a táblázat átalakítása során csak a generáló elem oszlopában lévő elemek előjele és a táblázat jobboldala változik. A táblázat újbóli leírása helyett ezt átvezethetjük a táblázaton úgy, hogy átelőjelezzük a generáló elem oszlopában lévő elemeket, továbbá bővítjük a táblázatot az új jobboldallal.

A fentiekkel kapcsolatban megemlítjük, hogy az ilyen típusú feladatokra, amelyekben a változók értéke felülről korlátos, 1954-ben A. Charnes és C. E. Lemke [Charnes, Lemke '54] kidolgoztak egy külön eljárást, az úgynevezett felsőkorlátos szimplex algoritmust. Ez kiküszöböli a vázolt technikai nehézségeket, de itt most ezen eljárás ismertetésétől eltekintünk.

Gyakorlat

Gyakorló feladatok

  1. Határozza meg az alábbi rendszerre vonatkozóan a változók felső korlátait:

    A feladat megoldásához használja a lineáris programozási grafikus módszert!

  2. Határozza meg az alábbi egyenlőtlenség rendszerre vonatkozóan a változók felső korlátait:

    A feladat megoldásához használja a Lingo lineáris programozási csomagot!

  3. Oldja meg az alábbi szeparábilis konvex programozási feladatot az ε = 2,01 hibahatár mellett:

  4. Oldja meg az előző feladatot Lingo csomag segítségével és hasonlítsa össze a kapott megoldásokat!

  5. Oldja meg az alábbi szeparábilis konvex programozási feladatot az ε = 0,51 hibahatár mellett:

  6. Oldja meg az előző feladatot Lingo csomag segítségével és hasonlítsa össze a kapott megoldásokat!

  7. Határozza meg az alábbi feladatra vonatkozóan a változók felső korlátait:

  8. Oldja meg a fenti szeparábilis konvex programozási feladatot az ε = 0,1 hibahatár mellett!

  9. Oldja meg az előző feladatot Lingo csomag segítségével és hasonlítsa össze a kapott megoldásokat!

  10. Határozza meg az alábbi feladatra vonatkozóan a változók felső korlátait:

    Majd oldja meg ezt a feladatot Lingo csomag használatával és hasonlítsa össze a meghatározott hj korlátokat az optimális értékekkel!

Ellenőrző kérdések

  1. Adott egy (11.3)-(11.5) alakú szeparábilis programozási feladat 3 változóval és 1 feltétellel, azaz n = 3, m = 1. Összesen hány hj értéket kell meghatároznunk a 11.2. szekcióban leírt eljárás szerint?

  2. Milyen módszereket alkalmazhatunk a hj korlátok meghatározására?

  3. Milyen szerepet játszanak a hj korlátok az fj(xj) függvényekhez tartozó húrpoligonok meghatározásában?

  4. Mit jelöl az js az xj változónak megfelelő tengelyen?

  5. Mik az alsó és felső korlátjai az js értéknek?

  6. Mit jelölnek a tjs értékek?

  7. Összesen hány tjs értéknek van kapcsolata xj változóval?

  8. Van-e a tjs értékeknek valami grafikus értelmezése? Ha igen, milyen?

  9. Mekkora hosszúak lehetnek a [hjs-1, hjs] intervallumok?

  10. Mi a maximális száma az xj változóhoz tartozó [hjs-1, hjs] intervallumoknak?

12. fejezet - Gradiens módszer

Jelen fejezetben egy általános módszerrel ismerkedünk meg, amely a gradiens módszer vagy hatékony irányok módszere néven ismeretes.

Megoldandó NLP feladat és előkészületek

Tekintsük a következő nemlineáris programozási feladatot:

12.1. egyenlet -


12.2. egyenlet -


12.3. egyenlet -


és feltételezzük, hogy

  1. a (12.1)-(12.3) feladat L lehetséges halmaza nem üres és korlátos,

  2. a P(x) célfüggvény minden xj, j = 1, 2, ..., n; változója szerint differenciálható az L halmazon és P(x) függvény minden elsőrendű parciális deriváltja folytonos L-en.

Az eljárás tárgyalásához szükségesek bizonyos előkészületek. A tárgyalásra kerülő eljárás felépítésében alapvető szerepet játszik a következő tétel, amely a gradiens vektor egy fontos tulajdonságát adja meg.

  1. Tétel. Ha van egy h = (h1, h2, ..., hn) vektor és egy x' = (x'1, x'2, ..., x'n) ∈ L pont és teljesül a ∇P(x')h < 0 feltétel, akkor létezik olyan δ > 0, hogy tetszőleges 0 < t < δ esetén P(x'+th) < P(x').

A fenti tétel figyelembe vétele mellett tekintsük ismét a (12.1)-(12.3) feladatot. Legyen x' ∈ L és tetszőleges h=(h1, h2, ..., hn) vektor.

  1. Definíció. Azt mondjuk, hogy a h vektor az x' ponthoz tartozó lehetséges hatékony irány, ha x' + h ∈ L és ∇ P(x') h < 0. Ha x' ponthoz nem tartozik lehetséges hatékony irány, akkor x' pontot stacionáris pontnak nevezzük.

A lehetséges hatékony irányhoz a 12.1. tételt felhasználva, egy szemléletes jelentés kapcsolható. Mivel x' és x' + h lehetséges megoldások és L konvex halmaz, ezért a két pontot összekötő szakasz x' + th, (0 ≤ t ≤ 1) pontjai is rendre lehetséges megoldások. Másrészt a 12.1. tételben megfogalmazottaknak megfelelően létezik olyan δ > 0, hogy 0 < t < δ esetén teljesül a következő reláció: P(x' + th) < P(x'). Így az x' pontból az x' + th, (0 ≤ t ≤ 1) szakaszon elmozdulva, csökkenthetjük a célfüggvény értékét. Az elmondottak alapján a (12.1)-(12.3) feladat megoldására kezdeményezhetjük a következő iterációs eljárást.

A módszer

  • Előkészítő rész. Határozzunk meg egy x(0) lehetséges megoldást és legyen r = 0.

  • Iterációs rész. (r-dik iteráció.) Ha x(r) stacionáris pont, akkor vége az eljárásnak. Ellenkező esetben határozzunk meg egy, az x(r) ponthoz tartozó h(r) lehetséges hatékony irányt, majd egy olyan 0 ≤ λr ≤ 1 konstanst, amelyre P(x(r) + λr h(r)) < P(x(r)). Legyen x(r+1) = x(r) + λr h(r), r = r + 1, és folytassuk az eljárást a következő iterációs lépéssel.

Könnyen belátható, hogy az adott eljárás hiányos. Ahhoz, hogy végre lehessen hajtani a következő kérdések megoldására kell további algoritmusokat megadni:

  1. Hogyan lehet eldönteni egy x ∈ L vektorról, hogy az stacionáris pont?

  2. Ha az x ∈ L ponthoz tartozik lehetséges hatékony irány, akkor miként lehet egy ilyen vektort meghatározni?

  3. Az x ∈ L és egy hozzátartozó h lehetséges hatékony irány ismeretében hogyan határozható meg olyan 0 < λ ≤ 1 konstans, amelyre teljesül a P(x + λ h) < P(x) reláció?

Ha a fentiekben felvetett kérdéseknek a megoldására algoritmusokat adunk meg, és ezekkel kiegészítjük az ismertetett eljárást, akkor egy komplett eljárást kapunk. A felvetett kérdések különböző módon, eltérő technikákkal oldhatók meg, és így a megadott eljárásból különböző komplett algoritmusok származtathatók. Ezek a gradiens módszer különböző változatai. Ezek a változatok eltérően viselkednek az előállított pontsorozat konvergenciáját illetően. A továbbiakban egy olyan változattal fogunk megismerkedni, amelyet M. Frank és P.Wolfe [Frank, Wolfe '56] dolgoztak ki 1956-ban, és amelyre bizonyos feltételek mellett biztosítható az előállított pontsorozat konvergenciája.

Vizsgáljuk ezek után a fentiekben felvetett problémák Frank és Wolfe által javasolt megoldását.

Az 1. és 2. pont alatti problémák megoldása szerencsés módon összekapcsolható, és visszavezethető egy lineáris programozási feladat megoldására. Ezt foglalja magába a következő tétel.

  1. Tétel. Az x' = (x'1, x'2, ..., x'n) ∈ L lehetséges megoldáshoz akkor és csak akkor tartozik lehetséges hatékony irány, ha a

    lineáris programozási feladat optimuma negatív, és ebben az esetben az x* optimális megoldással képezett x* - x' = h vektor az x' ponthoz tartozó lehetséges hatékony irány.

Most vizsgáljuk a 3. pont alatti problémát. Ehhez tegyük fel, hogy adott egy x' = (x'1, x'2, ..., x'n) ∈ L lehetséges megoldás és h az x' vektorhoz tartozó lehetséges hatékony irány. Akkor ∇P(x) h < 0 és 12.1. tétel szerint létezik olyan δ > 0, hogy 0 < t < δ esetén P(x' + th) < P(x'). Másrészt az L halmaz konvexitása miatt x' + t h ∈ L, ∀ t ∈ [0; 1]. Így véve a G(t) = P(x' + th) függvényt, a 3. pont alatti probléma visszavezethető a G(t) függvénynek a [0; 1] intervallumra vonatkozó függvénymenet vizsgálatára, és egy minimumhely meghatározásra. Mivel erre analízisből ismertek a módszerek, ezért a továbbiakban a 3. pont alatti kérdés megoldásával nem foglalkozunk.

Miután sikerült megoldást találnunk az 1., 2. és 3. pont alatti problémákra, felépíthetjük az alábbi konkrét eljárást.

Gradiens módszer ([Frank, Wolfe '56]).

  • Előkészítő rész. Határozzunk meg egy x(0) lehetséges megoldást és legyen r = 0.

  • Iterációs rész. (r-dik iteráció.)

    1. Állítsuk elő a következő lineáris programozási feladatot:

      12.4. egyenlet -


      12.5. egyenlet -


      12.6. egyenlet -


      Oldjuk meg ezt a feladatot és jelöljük a kapott optimális megoldást (r)-rel.

      Ha az optimum értéke nempozitív, akkor vége az eljárásnak, (r) optimális megoldása a (12.1)-(12.3) feladatnak. Ellenkező esetben

    2. képezzük a h(r) = x̂(r) - x(r) vektort. Vegyünk a

      függvényt és határozzuk meg λ szerint a [0; 1] intervallumon a minimumhelyét, azaz oldjuk meg a következő egyváltozós optimalizálási feladatot:

      12.7. egyenlet -


      12.8. egyenlet -


      A feladat optimális megoldását jelöljük λr-rel.

    3. Legyen x(r+1) = x(r) + λr h(r), r = r + 1 és folytassuk az eljárást a következő iterációs lépéssel.

Természetesen az eljárással kapcsolatban felvetődik a kérdés, hogy mit állíthatunk az előállított pontsorozatról. A 12.1. tétel és a λr, r = 0, 1, 2, ... konstansok definíciójából adódik, hogy az előállított x(0), x(1), x(2), ... pontsorozatra teljesülnek az alábbi relációk:

12.9. egyenlet -


12.10. egyenlet -


A fenti tulajdonságokból még nem következik az x(0), x(1), x(2), ... pontsorozat konvergenciája. Ahhoz, hogy ezt biztosítsuk, további megszorításokat kell tenni a P(x) célfüggvényre. Ha a P(x) függvény szigorúan konvex az L-en, akkor ez egy elegendő feltétele a konvergenciának. Az eljárással előállítható pontsorozatot illetően érvényes a következő állítás.

  1. Tétel. Ha a P(x) függvény szigorúan konvex az L-en, akkor a Frank-Wolfe féle eljárás vagy véges lépésben véget ér és az utolsó pont optimális megoldás, vagy vég nélkül folytatódik és az előállított pontsorozat az optimális megoldáshoz konvergál.

Az eljárással kapcsolatban célszerű megjegyezni a következőt. Gyakorlati problémák megoldásánál egy fontos kérdés, hogy mikor kapunk elfogadható közelítést. A tárgyalt esetre egy igen használható feltétel adható a megállásra.

A P(x) függvény konvex volta miatt a 2. tétel alapján tetszőleges x ∈ L lehetséges megoldásra teljesül a következő reláció:

Vegyük észre, hogy az egyenlőtlenség jobboldalán az aktuális lineáris programozási feladat célfüggvényének az x pontban vett értéke szerepel. Így ezen érték nem kisebb, mint a lineáris programozási feladat optimuma, azaz tetszőleges x ∈ L lehetséges megoldásra

Speciálisan, ha x=x*, azaz ha x vektor optimális megoldása a (12.1)-(12.3) feladatnak, akkor a baloldal nemnegatív, és így

Következésképpen, ha az r-edik lépésben a (12.4)-(12.6) lineáris programozási feladat optimuma , azaz

akkor a P(x(r)) érték ε pontossággal közelíti a (12.1)-(12.3) nemlineáris programozási feladat optimumát.

Numerikus példa

Az algoritmus demonstrálására tekintsük a következő nemlineáris programozási feladatot:

Vizsgáljuk elsőként a lehetséges halmazt meghatározó feltételek teljesülését. A változók nemnegatívitásából és a második és harmadik egyenlőtlenségekből nyilvánvalóvá válik, hogy az L lehetséges halmaz korlátos. A P(x1, x2) célfüggvény az egész térben minden változója szerint differenciálható, és a parciális deriváltak mindenhol folytonos függvények, így teljesül a 2. feltételezés is. Végül egyszerű számolással belátható, hogy a P(x1, x2) célfüggvény az egész térben szigorúan konvex. Következésképpen valamennyi feltétel teljesül.

Legyen x(0) = (0; 0). Akkor ∇P(x(0)) = (-10; -12), és ∇P(x(0)) (x - x(0)) = W0(x).

Így az első megoldandó (12.4)-(12.6) alakú lineáris programozási feladat a következő:

Ennek a feladatnak az optimális megoldása: (0) = (2; 3). Így h(0) = x̂(0) - x(0) = (2; 3) - (0; 0) = (2;3) az x(0) vektorhoz tartozó lehetséges hatékony irány.

Most vizsgáljuk a

függvényt a [0; 1] intervallumon. Mivel G'(t) = 26t - 56 < 0, ∀t ∈ [0; 1], ezért a [0; 1] intervallumon a G(t) függvény szigorúan monoton csökkenő, és így ezen az intervallumon a t = 1 pontban felveszi a minimális értéket, azaz λ0 = 1. Ennek megfelelően kapjuk az új pontot:

x(1) = x(0) + λ0 h(0) = (0; 0) + 1 (2; 3) = (2; 3).

Rátérve a következő iterációs lépésre állítsuk elő a következőket:

Így a második megoldandó (12.4)-(12.6) alakú lineáris programozási feladat a következő:

Mivel ennek a feladatnak az optimum értéke 0, ezért vége az eljárásnak. A célfüggvény konvexitása miatt az utolsó x(1) = (2; 3) pont a tekintett feladat optimális megoldása.

Gyakorlat

Gyakorló feladatok

Olda meg Frank-Wolfe féle gradiens módszerrel az alábbi NLP feladatokat!

Ellenőrző kérdések

  1. Igazolja, hogy a P(x) = -x1 + x12 + x2 + x22 függvény szigorúan konvex a 2-dimenziós térben!

  2. Igazolja, hogy a P(x) = 10x1 - x12 + 12x2 - x22 függvény szigorúan konkáv a 2-dimenziós térben!

  3. Alkalmazható-e a fent leírt Frank-Wolfe féle gradiens módszer olyan NLP feladathoz, amelyben P(x) = -x1 + x12 + x2 + x22 és L halmaz (12.2)-(12.3) alakú?

  4. Alkalmazható-e a fent leírt Frank-Wolfe féle gradiens módszer olyan NLP feladathoz, amelyben P(x) = 10x1 - x12 + 12x2 - x22 és L halmaz (12.2)-(12.3) alakú?

  5. Előfordulhat-e a Frank-Wolfe féle gradiens módszer használata esetén, hogy a megoldandó minimalizálási NLP feladatnál a célfüggvény felülről nem korlátos?

  6. Előfordulhat-e a Frank-Wolfe féle gradiens módszer használata esetén, hogy a megoldandó minimalizálási NLP feladatnál a lehetséges halmaz üres?

  7. Mi a jele a gradiens módszerben annak, hogy az aktuális x(r) pont optimális megoldás?

  8. Mi a jele a gradiens módszerben annak, hogy az aktuális x(r) pont nem optimális megoldás?

  9. Használhatunk-e a Frank-Wolfe féle gradiens módszerben induló x(0) pontként nemlehetséges megoldás?

  10. Előfordulhat-e a Frank-Wolfe féle gradiens módszer használata esetén, hogy a megoldandó NLP feladatnál az aktuális x(r) pont nem lehetséges megoldás?

Irodalomjegyzék

[Winston '91] Winston, W. L.. Introduction to Mathematical Programming. Applications & Algorithms. PWS-KENT. 1991.

[Ahuja '93] Ahuja, R. K., Magnanti, T. L., és Orlin, J. B.. Network Flows: Theory, Algorithms, and Applications. Prentice-Hall, Inc.. 1993.

[Temesi '07] Temesi, J. és Várró, Z.. Operációkutatás. AULA Kiadó Kft. 2007.

[Miller, Tucker, Zemlin '60] C. E. Miller A. W. Tucker R. A. Zemlin „Integer Programming Formulation of Traveling Salesman Problems” Journal of the ACM (JACM) 1960 4 7

[Dantzig '53] Dantzig, G. B. és Várró, Z.. Computational algorithm of the revised simplex method. RM-1266, The Rand Corporation. 1953.

[Orchard-Hays '54 (1)] Orchard-Hays, W.. A composit simplex algorithm-II.. RM-1275, The Rand Corporation. 1954.

[Orchard-Hays '54 (2)] Orchard-Hays, W.. Background, development and extensions of the revised simplex method. RM-1433, The Rand Corporation. 1954.

[Lemke '54] C. E. Lemke „The dual method of solving the linear programming problem” Naval Research Logistics Quarterly 1954 1 48-54

[Rapcsák] Rapcsák, T.. Nemlineáris optimalizálás. Operációkutatás, 8. http://www.oplab.sztaki.hu/tanszek/.

[Bazaraa, Shetty '79] Bazaraa, M. S. és Shetty, C. M.. Nonlinear programming, theory and algorithms. John Willey and Sons. New York. 1979.

[Bajalinov, Imreh '01] Bajalinov, E. és Imreh, B.. Operációkutatás. Polygon. 2011.

[Charnes, Lemke '54] A. Charnes C. E. Lemke „Minimization of non-linear separable convex functionals” Naval Research Logistics Quarterly 1954 1 301-312

[Frank, Wolfe '56] M. Frank P. Wolfe „An algorithm for quadratic programming” Naval Research Logistics Quarterly 1956 3 95-110

[Varga '85] Varga, J.. Gyakorlati programozás. Tankönyvkiadó. 1985.