Tartalmi kivonat
Előszó Jelen jegyzet a József Attila Tudományegyetem programozó matematikus és közgazdasági programozó hallgatói számára készült, akik második félévtől hallgatnak operációkutatást. A feldolgozott anyag bevezető jellegű. Néhány karakterisztikus, ma már klasszikusnak számı́tó részterületet ölel fel, érintve ezek alapkérdéseit és néhány ismertebb, egyszerűbb megoldási technikát. Nem érinti a jegyzet az utóbbi időben igen előtérbe került kombinatorikus optimalizálás témakörét, amely külön tantárgyként szerepel az oktatásban. A tárgyalás során mind lineáris algebrából, mind analı́zisből csak a legszükségesebb fogalmak, alapöszefüggések ismeretét tételezzük fel. A felépı́tett eljárások rendre egyszerű numerikus példákon keresztül kerülnek bemutatásra. Az egyes fejezeteket feladatok követik, amelyek részben az
algoritmusoknak a hallgatók által történő önálló végrehajtását szolgálják, részben egyszerű bizonyı́tások kitűzésével a fogalmak maradandóbb megismerését célozzák. A jegyzet megı́rása során nagy segı́tséget jelentett Csirik János, Grőger Hans Dietmar és Máté Eörs munkatársaim számos hasznos tanácsa, konstruktı́v észrevételeik. Végül itt szeretnék köszönetet mondani lektoraimnak, Megyesi Lászlónak, a JATE docensének, és Szántai Tamásnak, az ELTE docensének a kézirat igen alapos és gondos lektorálásáért. Szeged, 1993. február 2 Imreh Balázs 1 2 1. BEVEZETÉS 1.1 Az optimumszámı́tási modellek Az operációkutatás viszonylag új tudományág, amelynek fejlődése és széleskörű alkalmazása szorosan összefügg a számı́tógépek kialakulásával, fejlődésével. Maga az ”operációkutatás” kategória a
második világháború idején alakult ki. A szövetséges hadseregek vezérkarai mellett létrehoztak olyan különböző szakmájú tudósokból álló kutatócsoportokat, amelyeknek az volt a fő feladata, hogy tudományos eszközök segı́tségével javaslatokat dolgozzanak ki a hadműveletek legeredményesebb irányı́tásához. Innen ered az elnevezés, amelyben az operáció szó katonai műveletre, hadműveletre utalt. A világháború után, a számı́tógépek fejlődésével párhuzamosan az operációkutatás mind tartalmában, mind alkalmazási körét illetően gyorsan fejlődött, és napjainkban a társadalmi-gazdasági élet majd minden területén alkalmazást nyer. Az operációkutatás feladatának szemléltetéséhez tekintsük a következő gyakorlati problémát. Adott egy műhely, amely asztalokat, székeket és szekrényeket gyárt A gyártás során kétféle anyagot
használnak fel, egyfajta lemezt és egyfajta deszkát. Ezek egymással nem helyettesı́thetők és korlátozott mennyiségben állnak rendelkezésre. A feladat: olyan termékösszetétel meghatározása, amely mellett a műhely nyeresége maximális. A fenti problémához egy matematikai modellt konstruálhatunk E célból jelölje rendre x1 , x2 , x3 a gyártásra kerülő asztalok, székek, szekrények számát, l1 , l2 , l3 egy asztal, egy szék, egy szekrény készı́téséhez szükséges lemezek számát, d1 , d2 , d3 egy asztal, egy szék, egy szekrény készı́téséhez szükséges deszkák számát, c1 , c2 , c3 egy asztal, egy szék, egy szekrény gyártásából származó nyereséget, l, d a rendelkezésre álló lemezek és deszkák számát. A bevezetett jelölésekkel a tekintett probléma az alábbi, úgynevezett optimumszámı́tási modellel ı́rható le, amely matematikai szempontból egy
feltételes szélsőérték feladat. l1 x1 + l2 x2 + l3 x3 ≤ l d1 x1 + d2 x2 + d3 x3 ≤ d xi egész & xi ≥ 0 (i = 1, 2, 3) – c1 x1 + c2 x2 + c3 x3 = z max A fentiekkel kapcsolatban vegyük észre, hogy a kapott modell leı́rhatná más olyan műhelyek problémáját is, amelyek háromféle terméket gyártanak kétféle anyag felhasználásával. Így lényegében a modellhez egy problémacsoport rendelhető A problémát, problémacsoportot leı́ró modell ismerete önmagában persze még nem jelenti a probléma megoldását. Ehhez szükséges lenne olyan eljárás ismerete, amely a modell által meghatározott matematikai feladat megoldására 3 szolgál. Következésképpen az alábbi három, egymással szorosan összefüggő fogalmat különböztethetjük meg: (1) gyakorlati problémák, tevékenységek formalizálhatóság szempontjából közös tulajdonságú csoportja, (2) a fenti
problémacsoportot leı́ró optimumszámı́tási modell, (3) a szóban forgó optimumszámı́tási modell által meghatározott matematikai feladat megoldására szolgáló eljárás. A gyakorlati problémák csoportosı́thatóságát, az ezzel kapcsolatos meggondolásokat főképpen a rendszerszervezésnek és a konkrét alkalmazási terület, területek szakembereinek kell vizsgálniuk. Mi elsősorban a (2) és (3) pontokhoz tartozó problémákkal fogunk foglalkozni. Kézenfekvő az a kérdés, hogy adott problémacsoporthoz hogyan határozható meg az illető problémacsoportot leı́ró optimumszámı́tási modell. A modellalkotás általában igen bonyolult tevékenység, amely során a jelenségek tömegéből ki kell emelni a lényeges, meghatározó és tartós jegyeket, összefüggéseket és a többi összefüggéstől, ismérvtől el kell tekinteni a modell kezelhetőségének érdekében. A
modellekkel szemben kétirányú követelménnyel lépünk fel: tükrözzék minél hűebben a valóságot, legyenek matematikailag, számı́tástechnikailag kezelhetők. Sok esetben ez két ellentétes szempont ütköztetését jelenti, és a modell kialakı́tásánál olyan kompromisszumra kell törekedni, amelynél az matematikailag, számı́tástechnikailag még kezelhető és emellett a vizsgálat szempontjából hűen tükrözi a valóságot is. Tekintettel a modellalkotás bonyolultságára, nem adható meg olyan eljárás, amely alapján bármely problémacsoporthoz a megfelelő modell elkészı́thető lenne. Megadhatók viszont olyan általános elvek, amelyek segı́tséget nyújthatnak a modellalkotásban. A továbbiakban áttekintjük ezeket az elveket, miközben végrehajtásukat az előzőek során megadott problémán szemléltetjük. 1.2 A modellalkotás elemei 1. A vizsgálat tárgyát
képező tevékenységet bontsuk fel véges sok, úgynevezett elemi tevékenységre. Elemi tevékenységen a teljes tevékenység azt a pontosan körülhatárolt részét értjük, amelyet tovább bontani már nem szándékozunk. Jelölje a felbontás során előálló elemi tevékenységeket E1 , . , En A szemléltetésül választott problémánál a műhely termelését három elemi tevékenységre bontottuk fel: asztalgyártásra, székgyártásra és szekrénygyártásra. Nyilvánvaló, hogy választhatnánk finomabb felbontást is, de a probléma megfogalmazása nem teszi ezt szükségessé. Ilyen finomabb felbontás lehetne például az, amikor a három termékfajta gyártásához szükséges részeket (fedőlap, lábak, stb.) különkülön is figyelembe vennénk, és ennek megfelelően az anyagok kiválasztását is tovább bontanánk. Láthatjuk, hogy a teljes tevékenység
felbontása elemi tevékenységekre 4 bizonyos tekintetben önkényes eljárás, ami általában igen alapos közgazdasági, rendszerelméleti, modellalkotási megfontolásokat igényel. 2. Minden egyes Ei elemi tevékenységhez rendeljünk hozzá egy xi valós változót, amely arra nézve ad felvilágosı́tást, hogy Ei milyen mértékben vesz részt a teljes tevékenységben. Az xi változót az Ei elemi tevékenység szintjének, intenzı́tásának nevezzük. Példánkban az asztalgyártás elemi tevékenység intenzı́tásának vegyük a gyártandó asztalok számát, és ehhez hasonlóan, a másik két termékféleségnél is legyen a legyártandó termékek száma az illető elemi tevékenység intenzı́tása. Ekkor a három elemi tevékenység aktuális intenzı́tásait az (x1 , x2 , x3 ) vektorral ı́rhatjuk le. Nyilvánvaló, hogy a lemez és deszka korlátozott volta miatt az
intenzı́tásértékek korlátosak és nem függetlenek egymástól. 3. Határozzuk meg azokat a kapcsolatokat, összefüggéseket, amelyeket az intenzı́tásértékeknek külön-külön és együttesen ki kell elégı́teni Ezeket fogjuk feltételeknek nevezni. Itt tehát egyrészt az xi változókra (i = 1, , n), másrészt az (x1 , , xn ) vektorváltozóra vonatkozó feltételeket kell meghatározni. Egy (x̄1 , , x̄n ) valós vektort a feladat lehetséges megoldásának nevezünk, ha x az intenzı́tásértékekre vonatkozó összes, az előzőekben meghatározott feltételt kielégı́ti. A lehetséges megoldások halmazát a továbbiakban L-lel fogjuk jelölni Példánkban az intenzı́tásértékekre vonatkozó, a probléma szempontjából lényeges összefüggések a következők: mivel xi a gyártandó termékek száma, ezért xi ≥ 0 és xi egész (i = 1, 2, 3), továbbá, mivel a
rendelkezésre álló lemezek és deszkák száma l és d, ezért az l1 x1 + l2 x2 + l3 x3 ≤ l és d1 x1 + d2 x2 + d3 x3 ≤ d feltételeknek is teljesülnie kell. Ekkor a lehetséges megoldások halmaza a 3-dimenziós euklideszi tér azon részhalmaza, amelyet a felsorolt feltételek határoznak meg. Ezen részhalmaz minden pontja egy terv abban az értelemben, hogy végre lehet hajtani. 4. A tevékenység vizsgálatának általában valamilyen célja van Fogalmazzuk meg ezt a célt a választott elemi tevékenységek segı́tségével, azaz adjunk meg egy olyan z : L V valós függvényt, amely a lehetséges megoldások ”értékét”, ”jóságát” jellemzi a kitűzött cél szempontjából. Ezt a függvényt célfüggvénynek nevezzük A vizsgált problémában célunk a nyereség maximalizálása. A nyereség mennyisége c1 x1 +c2 x2 +c3 x3 , ı́gy a vizsgálat szempontjából alkalmas célfüggvény a
z(x1 , x2 , x3 ) = c1 x1 + c2 x2 + c3 x3 függvény. A modellalkotás nagy körültekintést igénylő feladatával a továbbiakban nem foglalkozunk, hanem a modellek által meghatározott matematikai feladatok megoldására szolgáló eljárásokat fogjuk vizsgálni. 1.3 Az optimumszámı́tási modellekkel megadott matematikai feladatok megoldására szolgáló eljárások Az előzőekből adódik, hogy az optimumszámı́tási modell matematikai szempontból egy feltételes szélsőérték feladatnak tekinthető, nevezetesen a feltételek által 5 meghatározott L halmazon keressük a célfüggvény szélsőértékét. Maximum keresés esetén maximum feladatról, minimum keresésnél minimum feladatról beszélünk. Maximum feladatnál egy maximumhelyet optimális megoldásnak, a maximum értékét pedig optimumnak nevezzük. (Ugyanezen elnevezéseket használjuk minimum feladat esetén is.) Tehát x ∈ L
optimális megoldása egy maximum feladatnak, ha z(x) ≥ z(x) teljesül bármely x ∈ L lehetséges megoldásra, és ebben az esetben az optimum z(x). Nyilvánvaló, hogy egy feltételes szélsőérték feladatnak nem szükségképp létezik optimális megoldása, továbbá ha létezik optimális megoldás, akkor az optimumot egyidejűleg több helyen is felveheti a célfüggvény. Az általunk vizsgálandó eljárások általában egy optimális megoldás meghatározását biztosı́tják, feltéve, hogy a feladatnak létezik optimális megoldása. Ellenkező esetben az eljárás alapján véges lépésben kiderül, hogy a feladatnak nincs optimális megoldása. Az egyetlen optimális megoldás meghatározására vonatkozó törekvést gyakorlati meggondolások motiválták. Általában gyakorlati szempontból egy optimális megoldás ismerete is kielégı́tő Gondoljunk például a tekintett műhely
termelésére A maximális nyereséget biztosı́tó valamely terv ismeretében nem okvetlenül szükséges ugyanekkora nyereséget biztosı́tó más tervet is meghatározni. Az eddig elmondottak lehetővé teszik számunkra, hogy a továbbiakban vázoljuk az operációkutatás feladatát, és osztályozzuk az optimumszámı́tási modelleket. 1.4 Az operációkutatás feladata, az optimumszámı́tási modellek osztályozása Az operációkutatásnak, mint tudományágnak a feladatát a következőképpen határozhatjuk meg: Az operációkutatás feladata a gyakorlati élet különböző problémacsoportjaihoz az illető problémacsoportokat leı́ró optimumszámı́tási modellek konstruálása, továbbá a meglévő modellekhez az optimális megoldást meghatározó eljárások kidolgozása. Igen fontos, és gazdasági okokból egyre inkább előtérbe kerül az operációkutatás gyakorlati
alkalmazása. Ez abban áll, hogy a meglévő modelleket és eljárásokat a gyakorlati élet problémáinak megoldására használjuk fel. Ahhoz, hogy ezt megtehessük, meg kell ismerkednünk a modellekkel és a kapcsolódó eljárásokkal Mielőtt erre rátérnénk megkı́sérlünk rövid áttekintést adni a fontosabb modelltı́pusokról. Az optimumszámı́tási modellek több szempont szerint osztályozhatók. A következőkben ismertetjük a főbb szempontokat és a megfelelő osztályozásokat I. Az elemi tevékenységek intenzı́tásértékeitől függően megkülönböztetünk 1. folytonos modelleket, 2. diszkrét modelleket, 3. vegyes modelleket Egy modellt folytonosnak nevezünk, ha a benne szereplő xi (i = 1, . , n) változók mindegyikére teljesül az, hogy xi a modell által meghatározott, i-től függő intervallumban bármilyen értéket felvehet. Diszkrét modellről beszélünk akkor, ha
a modellben 6 szereplő minden xi változó a számegyenes bizonyos diszkrét pontjait tartalmazó, i-től függő halmazból veheti fel az értékeit. Ha a modell változóira az előző feltételek egyike sem teljesül, akkor vegyes modellről beszélünk. Megjegyezzük, hogy általában akkor neveznek egy modellt vegyesnek, ha a fenti tı́pusú változókat és csak ilyeneket tartalmaz. Az utóbbi meghatározással nem kapnánk osztályozást Például az x ∈ [a, b] vagy x ∈ {i1 , . , ik } feltételű modellt nem sorolhatnánk sehová Ennek kiküszöbölésére használjuk a vegyes modellre a fenti, általánosabb meghatározást. II. A modellekben szereplő paraméterek szerint megkülönböztetünk 1. determinisztikus modelleket, 2. sztochasztikus modelleket Determinisztikus modellről akkor beszélünk, ha a modellben szereplő paraméterek pontosan meghatározható konstansok. Abban az esetben, ha a
modellnek van olyan paramétere, amely valószı́nűségi változó, akkor a modellt sztochasztikusnak nevezzük. III. Az olyan modellek között, amelyekben a feltételek mindegyike lineáris egyenlőség vagy egyenlőtlenség, a célfüggvény szerint megkülönböztetünk 1. lineáris programozási modelleket, 2. nemlineáris programozási modelleket Lineáris programozási modellről vagy feladatról beszélünk, ha a célfüggvény maga is lineáris függvény. Ellenkező esetben használjuk a modellre a nemlineáris programozási feladat elnevezést. E rövid bevezetésből is kitűnik, hogy az operációkutatás igen nagy és sokrétű anyagot foglal magába. Ennek a nagy anyagnak csak egy kis részével fogunk megismerkedni a továbbiak során. Elsőként a lineáris programozás témakörével foglalkozunk. Ismertetjük a lineáris programozási feladatok megoldására szolgáló szimplex algoritmust és
ennek különböző változatait. Ezt követően a lehetséges megoldások halmazának tulajdonságait vizsgáljuk, és érintjük a dualitás, valamint az egészértékű lineáris programozás témakörét, majd két speciális lineáris programozási feladatot vizsgálunk, a hozzárendelési feladatot és a szállı́tási feladatot. Ezek után a nemlineáris programozás néhány speciális, viszonylag jól kezelhető feladatát tárgyaljuk. 2. LINEÁRIS PROGRAMOZÁS 2.1 A lineáris programozás általános feladata, standard feladat Az előző pontban megismerkedtünk az optimumszámı́tási modellek osztályozásával. Ennek kapcsán definiáltuk a lineáris programozási feladatot, amelyben a feltételek lineáris egyenlőség, egyenlőtlenség formájában adottak, és ezen feltételek mellett kell egy lineáris függvény maximumát vagy minimumát meghatározni. Tekintettel arra, hogy
tetszőleges lineáris programozási feladatra max{z(x) : x ∈ L} és min{−z(x) : 8 x ∈ L} egyidejűleg léteznek illetve nem léteznek, továbbá max{z(x) : x ∈ L} = −min{−z(x) : x ∈ L}, az optimális megoldás létezése és meghatározása szempontjából elegendő a két tı́pus közül az egyik vizsgálatára szorı́tkozni. Ennek megfelelően a továbbiakban csak minimum feladatokat vizsgálunk. Nyilvánvaló, hogy tetszőleges minimum feladat sorcserékkel az alábbi alakban ı́rható fel: a11 x1 + . + a1m xm ≤ b1 . . . . . . (2.11) ak1 x1 + . + akm xm ≤ bk ak+1,1 x1 + . + ak+1,m xm = bk+1 . . . . . . al1 x1 + . + alm xm = bl al+1,1 x1 + . + al+1,m xm ≥ bl+1 . . . . . . an1 x1 + . + anm xm ≥ bn α + c1 x1 + . + cm xm = z min ahol 1 ≤ k ≤ l ≤ n. A feladatot mátrixokkal és vektorokkal a következőképpen adhatjuk meg: A1 x ≤ b(1) A2 x = b(2) A3 x ≥ b(3) α + cx = z(x) min ahol A1 , A2 , A3 , b(1)
, b(2) , b(3) , c a megfelelő együtthatókból álló mátrixokat illetve vektorokat jelölik. A sor- és oszlopvektorokat külön jelöléssel nem fogjuk megkülönböztetni, az egyes formulákból mindig ki lehet következtetni, hogy az illető vektor sorvektor vagy oszlopvektor Például a fenti felı́rásban c = (c1 , , cm ) és x pedig olyan oszlopvektor, amelynek komponensei x1 , . , xm Hasonlóan fogunk eljárni a mátrixok, vektorok méreteit illetően is, azaz a tı́pust csak akkor ı́rjuk ki, ha ez az összefüggésekből nem következtethető ki, vagy a tárgyalás szükségessé teszi azt. A fenti felı́rásban A1 például egy k × m-es mátrix. Megjegyezzük még, hogy szisztematikusan x-szel fogjuk jelölni a vektorváltozót, és x̄, x∗ mindig egy-egy konkrét vektort fog jelölni. Tekintsük most a (2.11) feladatot Nyilvánvaló, hogy egy x̄ vektor akkor és csak akkor elégı́t ki egy
egyenlőséget, egyenlőtlenséget, ha x̄ kielégı́ti ennek az egyenlőségnek, egyenlőtlenségnek a −1-szeresét is. Következésképpen, ha a (211) feladatban −1-gyel megszorozzuk azokat az egyenlőségeket, egyenlőtlenségeket, amelyek jobboldala negatı́v, akkor olyan lineáris programozási feladatot kapunk, amelynek feltételrendszerét azok és csak azok a vektorok elégı́tik ki, amelyek kielégı́tik a (2.11) feladat feltételrendszerét is Ez azt jelenti, hogy e két feltételrendszerhez tartozó lehetséges megoldások halmaza megegyezik Így a két feladatnak egyidejűleg létezik optimális megoldása, továbbá, ha x̄ optimális megoldása az egyik feladatnak, akkor x̄ optimális megoldása a másik feladatnak is. Ez azt jelenti, hogy az optimális 9 megoldás létezését és meghatározását illetően az alábbi tı́pusú feladatok vizsgálatára szorı́tkozhatunk: (2.12) A1 x ≤ b(1) A2 x
= b(2) A3 x ≥ b(3) , (b(i) ≥ 0, i = 1, 2, 3) α + cx = z(x) min Konstruáljunk a (2.12) feladatból egy további lineáris programozási feladatot úgy, hogy a feladatban szereplő xi változók mindegyikét az ui , vi nemnegatı́v változók különbségével helyettesı́tjük. Ekkor a következő feladathoz jutunk: (2.13) A1 (u − v) ≤ b(1) A2 (u − v) = b(2) A3 (u − v) ≥ b(3) u ≥ 0, v ≥ 0, (b(i) ≥ 0, i = 1, 2, 3) α + c(u − v) = z̃(u, v) min A (2.12) és (213) feladatok között igen szoros kapcsolat van, ezt adja meg az alábbi segédtétel. 1.segédtétel A (212) és (213) feladatoknak egyidejűleg létezik optimális megoldása, és az optimális megoldások közvetlenül származtathatók egymásból Bizonyı́tás. Tegyük fel, hogy a (212) feladatnak létezik optimális megoldása, és jelöljön x̄ egy optimális megoldást. Képezzük az ū, v̄ vektorokat a következő módon: ½ ½ 0,
ha x̄j ≥ 0, x̄j , ha x̄j ≥ 0, v̄j = ūj = −x̄j különben. 0 különben, Megmutatjuk, hogy (ū, v̄) optimális megoldása a (2.13) feladatnak Ehhez elsőként igazoljuk, hogy (ū, v̄) lehetséges megoldása (2.13)-nak, azaz kielégı́ti annak feltételrendszerét Az (ū, v̄) definı́ciójából következik, hogy ū ≥ 0, v̄ ≥ 0 Másrészt vegyük észre, hogy ū − v̄ = x̄. Mivel x̄ a (212) feladat lehetséges megoldása, ezért A1 x̄ ≤ b(1) , A2 x̄ = b(2) , A3 x̄ ≥ b(3) teljesül. De akkor A1 (ū − v̄) ≤ b(1) , A2 (ū − v̄) = b(2) , A3 (ū − v̄) ≥ b(3) is teljesül, és ı́gy (ū, v̄) lehetséges megoldása a (213) feladatnak Most megmutatjuk, hogy (ū, v̄) optimális megoldás is. Ehhez elegendő belátni, hogy a (213) feladat tetszőleges (u∗ , v∗ ) lehetséges megoldására z̃(u∗ , v∗ ) ≥ z̃(ū, v̄) teljesül. Legyen x∗ = u∗ − v∗ . Mivel (u∗ , v∗ ) lehetséges
megoldása (213)-nak, ezért A1 (u∗ − v∗ ) ≤ b(1) , A2 (u∗ −v∗ ) = b(2) és A3 (u∗ −v∗ ) ≥ b(3) teljesül. De akkor A1 x∗ ≤ b(1) , A2 x∗ = b(2) és A3 x∗ ≥ b(3) , és ı́gy x∗ lehetséges megoldása a (2.12) feladatnak Mivel x̄ optimális megoldás, ezért z(x∗ ) ≥ z(x̄) Másrészt z(x̄) = z̃(ū, v̄) és z(x∗ ) = z̃(u∗ , v∗ ), amiből z̃(u∗ , v∗ ) ≥ z̃(ū, v̄) következik, azaz (ū, v̄) a (2.13) feladatnak egy optimális megoldása. Ezzel igazoltuk, hogy amennyiben x̄ optimális megoldása a (2.12) feladatnak, akkor a fentieknek megfelelően megkonstruált (ū, v̄) optimális megoldása a (2.13) 10 feladatnak. Teljesen hasonló gondolatmenettel belátható, hogy ha (ū, v̄) optimális megoldása (2.13)-nak, akkor az x̄ = ū − v̄ vektor optimális megoldása a (212) feladatnak. Ebből a két állı́tásból következik, hogy a (212) és (213) feladatoknak egyidejűleg
létezik optimális megoldása, és az optimális megoldások közvetlenül származtathatók egymásból. Ezzel az 1segédtétel bizonyı́tását befejeztük Következmény. Az optimális megoldás létezését és meghatározását illetően elegendő az alábbi, (214) tı́pusú feladatok vizsgálatára szorı́tkozni A1 x ≤ b(1) A2 x = b(2) (2.14) A3 x ≥ b(3) x ≥ 0, (b(i) ≥ 0, i = 1, 2, 3) – α + cx = z(x) min Valóban, hiszen a zárójelek felbontásával és átjelölések alkalmazásával a (2.13) feladat (2.14) alakúra hozható Megjegyezzük, hogy a fenti Ai mátrixok nem egyeznek meg a (2.12)-ben szereplő mátrixokkal, az azonos szimbólumokat csak az egyszerűbb jelöléstechnika érdekében használjuk Vizsgáljuk ezek után (2.14)-et Konstruáljuk meg hozzá az alábbi (215) feladatot, amelyben E(1) , E(3) megfelelő méretű egységmátrixok és u,v megfelelő dimenziójú
vektorváltozók. (2.15) A1 x + E(1) u = b(1) A2 x = b(2) A3 x −E(3) v = b(3) x ≥ 0, u ≥ 0, v ≥ 0, (b(i) ≥ 0, i = 1, 2, 3) α + cx = z(x) min A két feladat között ismét szoros kapcsolat van, amint azt a következő segédtétel mutatja. 2.segédtétel A (214) és (215) feladatoknak egyidejűleg létezik optimális megoldása, és az optimális megoldások közvetlenül származtathatók egymásból. Bizonyı́tás. Elsőként igazoljuk, hogy amennyiben x̄ (214) optimális megoldása, akkor (x̄, ū, v̄) optimális megoldása (215)-nek, ahol ū = b(1) − A1 x̄, továbbá v̄ = A3 x̄ − b(3) . Az ū, v̄ definı́ciójából és abból, hogy x̄ lehetséges megoldása a (214) feladatnak következik egyrészt az, hogy x̄ ≥ 0, ū ≥ 0, v̄ ≥ 0, másrészt az, hogy A1 x̄ + E(1) ū = b(1) , A2 x̄ = b(2) , A3 x̄ − E(3) v̄ = b(3) teljesül. Ez pontosan azt jelenti, hogy (x̄, ū, v̄) lehetséges
megoldása a (2.15) feladatnak Ahhoz, hogy (x̄, ū, v̄) optimális megoldás is, azt kell igazolnunk, hogy (215) tetszőleges (x∗ , u∗ , v∗ ) lehetséges megoldására z(x∗ ) ≥ z(x̄) teljesül. Ehhez vegyük észre, hogy ha (x∗ , u∗ , v∗ ) lehetséges megoldása (2.15)-nek, akkor x∗ lehetséges megoldása (214)-nek De akkor x̄ optimális megoldás volta miatt z(x∗ ) ≥ z(x̄) teljesül, amivel igazoltuk, hogy (x̄, ū, v̄) optimális megoldás. 11 Teljesen hasonló gondolatmenettel belátható, hogy amennyiben (x̄, ū, v̄) a (2.15) feladat egy optimális megoldása, akkor x̄ a (2.14) feladat egy optimális megoldása A fenti két állı́tásból következik, hogy a két feladatnak egyidejűleg létezik optimális megoldása, és ezek egymásból közvetlenül származtathatók. Következmény. Az optimális megoldás létezését és meghatározását illetően elegendő az alábbi, (216)
tı́pusú feladatok vizsgálatára szorı́tkozni (2.16) Ax = b x ≥ 0, (b ≥ 0) – α + cx = z(x) min Összegezve az előzőeket, igazolást nyert, hogy tetszőleges lineáris programozási feladat megoldása visszavezethető egy alkalmas (2.16) tı́pusú feladat megoldására Tekintettel ezen feladatok ilyen értelmű kitüntetett szerepére, a (2.16) tı́pusú feladatokat standard feladatoknak nevezzük Az elmondottak egyben az alábbi eljárást is szolgáltatják, amely tetszőleges lineáris programozási feladat standard feladatra való visszavezetésére alkalmas. Eljárás: 1.lépés Ha a megoldandó feladat maximum feladat, akkor szorozzuk meg a célfüggvényt −1-gyel, és keressük ennek az új célfüggvénynek a minimumát 2.lépés Ha szerepel negatı́v mennyiség a jobboldalon, akkor szorozzuk meg a megfelelő egyenlőséget vagy egyenlőtlenséget −1-gyel. 3.lépés Ha szerepelnek olyan változók
a feladatban, amelyekre nincs előı́rva nemnegativitási feltétel, akkor helyettesı́tsük rendre ezeket a változókat két nemnegatı́v változó különbségével. 4.lépés Minden egyes egyenlőtlenség baloldalához adjunk hozzá illetve vonjunk ki egy nemnegatı́v változót attól függően, hogy a tekintett egyenlőtlenségben ≤ illetve ≥ szerepel, és változtassuk az egyenlőtlenségeket egyenlőségekre. Az eljárás alkalmazását az alábbi példán illusztráljuk: 1.példa 2x + 3y ≤ 5 −4x + 7y = 3 2x + 5y ≥ 5 8x− y ≥ −3 17 + 4x + 5y = z(x, y) max Az első lépés után a következő feladatot kapjuk: 2x + 3y ≤ 5 −4x + 7y = 3 2x + 5y ≥ 5 12 8x− y ≥ −3 – −17 − 4x − 5y = z̃(x, y) min Végrehajtva a második lépést, az alábbi feladat adódik: 2x + 3y ≤ 5 −4x + 7y = 3 2x + 5y ≥ 5 −8x+ y ≤ 3 – −17 − 4x − 5y = z̃(x, y) min A harmadik lépésben az x =
x1 − x2 , y = x3 − x4 helyettesı́téssel a következő feladatot nyerjük: 2x1 − 2x2 + 3x3 − 3x4 ≤ 5 −4x1 + 4x2 + 7x3 − 7x4 = 3 2x1 − 2x2 + 5x3 − 5x4 ≥ 5 −8x1 + 8x2 +x3 −x4 ≤ 3 xj ≥ 0, (j = 1, . , 4) – −17 − 4x1 + 4x2 − 5x3 + 5x4 = z̄(x1 , . , x4 ) min Végül a negyedik lépésben, bevezetve az x5 , x6 , x7 változókat, az alábbi standard feladathoz jutunk: 2x1 − 2x2 + 3x3 − 3x4 +x5 =5 −4x1 + 4x2 + 7x3 − 7x4 =3 2x1 − 2x2 + 5x3 − 5x4 −x6 =5 −8x1 + 8x2 +x3 −x4 +x7 = 3 xj ≥ 0, (j = 1, . , 7) −17 − 4x1 + 4x2 − 5x3 + 5x4 = z ∗ (x1 , . , x7 ) min A standard feladatok vizsgálatánál igen hasznos lesz a következő fogalom. Két standard feladatot ekvivalensnek nevezünk, ha a lehetséges megoldások halmazai egybeesnek, és ezen a közös L halmazon a két célfüggvény megegyezik. A bevezetett relációról könnyen belátható, hogy reflexı́v, szimmetrikus, valamint
tranzitı́v, és ı́gy a standard feladatok halmazán egy ekvivalenciareláció. Ismeretes, hogy egy ekvivalenciarelációhoz hozzárendelhető az illető halmaz egy osztályozása, ha az egymással ekvivalens elemeket egy osztályba soroljuk. Így a bevezetett reláció alapján a standard feladatok egy osztályozásához jutunk: két feladat akkor és csak akkor kerül egy osztályba, ha ekvivalensek. Az ilyen módon meghatározott osztályokat az ekvivalenciareláció osztályainak nevezzük Az ekvivalencia definı́ciójából következik, hogy ekvivalens feladatok optimális megoldásai megegyeznek Ez azt jelenti, hogy az optimális megoldás létezését és meghatározását illetően adott feladat helyett tekinthetünk egy másik, az előzővel ekvivalens feladatot. Az ekvivalenciának ezt a következményét a továbbiakban gyakran fel fogjuk használni. 13 Feladatok 1. Határozzuk meg az alábbi lineáris
programozási feladatokhoz rendre azokat a standard feladatokat, amelyekre az illető lineáris programozási feladatok visszavezethetők. (a) (b) 3x1 + x2 − 4x3 ≥ −2 2x1 − x2 + x3 ≤ 8 x1 + x2 + x3 = 4 x1 ≥ 0 3x1 + x2 − 2x3 = z(x) max 4x1 + x2 − 5x3 ≤ 7 2x1 + x2 + 2x3 ≤ 8 −5x1 + x2 ≥ −2 x1 ≤ 0, x2 ≥ 0 −2x1 − 4x2 + x3 = z(x) min 2. Mutassuk meg, hogy az alábbi standard feladatok ekvivalensek: 2x − y = 0 x+y =1 x ≥ 0, y ≥ 0 – 5x + 4y = z(x, y) min −x + 2y = 1 −3x + 3y = 1 x ≥ 0, y ≥ 0 – −x + 7y = z(x, y) min 3. Adjunk meg olyan standard feladatot, amely ekvivalens az alábbi feladattal −8x + 12y = 9 −2x − 2y = 1 x ≥ 0, y ≥ 0 – 2x + 3y = z(x, y) min 4. Igazoljuk, hogy az alábbi műveletek egy standard feladathoz olyan feladatot rendelnek, amely ekvivalens az eredetivel. (a) A feladat valamely egyenletét helyettesı́tsük az illető egyenlet egy pozitı́v konstansszorosával. 14 (b) A
feladat valamely egyenletének konstansszorosát adjuk hozzá a feladat egy másik egyenletéhez, és az eredménnyel helyettesı́tsük az utóbbi egyenletet, feltéve, hogy az új egyenlet jobboldala nemnegatı́v. (c) A feladat valamely egyenletének konstansszorosát adjuk hozzá a célfüggvényt meghatározó egyenlethez, és az előálló egyenlettel helyettesı́tsük a célfüggvény egyenletét. 5. Vezessük be a standard feladatok halmazán a következő relációt: két standard feladat gyengén ekvivalens, ha lehetséges megoldásaik halmazai egybeesnek, és ezen a közös halmazon a két célfüggvény eltérése konstans. Igazoljuk, hogy a bevezetett reláció ekvivalenciareláció, továbbá mutassuk meg, hogy gyengén ekvivalens feladatok optimális megoldásai megegyeznek. 2.2 Szimplex algoritmus A továbbiakban egy olyan eljárást épı́tünk fel, amely alapján tetszőleges standard feladatról
eldönthető, hogy létezik-e optimális megoldása, és ha létezik, akkor az eljárás alapján egy optimális megoldás meg is határozható. Ezen eljárás felépı́tése több lépésen keresztül történik, és az algoritmus konkrét megadására a 2.6 fejezetben kerül sor. Első lépésként egy speciális standard feladatot vizsgálunk, és ehhez adunk meg egy, a megoldást szolgáltató algoritmust. Egy standard feladatot lehetséges kanonikus alakú feladatnak nevezünk, ha sorés oszlopcserékkel, a változók átjelölésével az alábbi formában ı́rható fel: x1 + (2.21) a1,n+1 xn+1 + . + a1,n+m xn+m = b1 x2 + a2,n+1 xn+1 + . + a2,n+m xn+m = b2 . . . . . . . . xn + an,n+1 xn+1 + . + an,n+m xn+m = bn xj ≥ 0 (j = 1, . , n + m), (bi ≥ 0, i = 1, , n) α+ +cn+1 xn+1 + . + cn+m xn+m = z(x) min A (2.21) feladattal kapcsolatban vegyük észre, hogy közvetlenül leolvasható egy triviális
lehetséges megoldása, nevezetesen x̄s = bs (s = 1, . , n), x̄n+t = 0 (t = 1, . , m) Ezt a triviális lehetséges megoldást bázismegoldásnak, az xs (s = 1, , n) változókat pedig bázisváltozóknak nevezzük. Ha van olyan 1 ≤ i ≤ n index, hogy bi = 0, akkor a fenti bázismegoldást szokásos degenerált bázismegoldásnak nevezni. A bázismegoldást illetően vegyük észre, hogy az xs bázisváltozó együtthatóiból álló oszlopvektor pontosan az n-dimenziós euklideszi tér s-edik egységvektora, és 15 xs együtthatója a célfüggvény egyenletében 0-val egyenlő. Végül egyszerű behelyettesı́téssel megállapı́thatjuk, hogy a z(x) célfüggvény a bázismegoldáson az α értéket veszi fel. A következő tétel elegendő feltételt ad arra nézve, hogy a (2.21) feladat bázismegoldása mikor lesz optimális megoldás 1.tétel A (221) feladat bázismegoldása egyben optimális
megoldás is, ha cn+t ≥ 0 (t = 1, . , m) teljesül Bizonyı́tás. Mivel a bázismegoldáson felvett célfüggvényérték α, ezért elegendő igazolni, hogy a (2.21) feladat tetszőleges x̄ lehetséges megoldására z(x̄) ≥ α teljesül Valóban, x̄ lehetségesPmegoldás lévén nemnegatı́v. Másrészt a feltétel Pm szerint cn+t ≥ 0 m (t = 1, . , m), ı́gy t=1 cn+t x̄n+t ≥ 0 De akkor z(x̄) = α + t=1 cn+t x̄n+t ≥ α, amivel az állı́tást igazoltuk. A tételben megfogalmazott elégséges feltételt szokásos optimum-kritériumnak nevezni. Azt, hogy a fenti feltétel nem szükséges, például a következő lehetséges kanonikus alakú feladat mutatja: x1 +x3 = 0 x2 + x3 = 0 0 ≤ xj (j = 1, 2, 3) −5x3 = z(x) min Nyilvánvaló, hogy a fenti feladatnak egyetlen lehetséges megoldása van, az x̄ = (0, 0, 0) vektor, amely egyben bázismegoldás is, és optimális megoldás is. Ennek ellenére az
optimum-kritérium nem teljesül. A következő tétel, amely bázisváltoztatás tétele néven ismeretes, lehetővé teszi, hogy bizonyos esetben a (2.21) feladatról áttérjünk egy vele ekvivalens lehetséges kanonikus alakú feladatra úgy, hogy az új feladat bázismegoldásán felvett célfüggvényérték ne legyen nagyobb, mint α. 2.tétel Ha a (221) feladat célfüggvényében a cj (n + 1 ≤ j ≤ n + m) együttható negatı́v, továbbá létezik a ∆ = min{br /arj : arj > 0, 1 ≤ r ≤ n} mennyiség, akkor megadható egy olyan, a (2.21) feladattal ekvivalens lehetséges kanonikus alakú feladat, amelynek x∗ bázismegoldására z(x∗ ) = α + cj ∆ teljesül. Bizonyı́tás. Első lépésként megkonstruáljuk az új feladatot E célból tegyük fel, hogy cj < 0, ∆ = bk /akj és jelölje (2.21) i-edik egyenletét ri , a célfüggvény egyenletét pedig z. Hajtsuk végre a (221) feladaton az
alábbi átalakı́tásokat: r0k = r0i = ri − aij rk akj 1 rk , akj (1 ≤ i ≤ n, i 6= k), z0 = z − 16 cj rk , akj ahol r0t az új feladat t-edik egyenletét (t = 1, . , n), z0 pedig az új feladat célfüggvényegyenletét jelöli. Megmutatjuk, hogy a fenti módon előállı́tott feladat rendelkezik a kı́vánt tulajdonságokkal, azaz ekvivalens a (2.21) feladattal, lehetséges kanonikus alakú, továbbá az x∗ bázismegoldására z(x∗ ) = α + cj ∆ teljesül. Az ekvivalencia igazolásához jelölje L a (2.21) feladat, és L0 az új feladat lehetséges megoldásainak a halmazát. Legyen x̄ ∈ L tetszőleges Akkor x̄ ≥ 0 Pn+m és x̄ kielégı́ti az rt (t = 1, . , n) egyenletek mindegyikét, azaz s=1 ats x̄s = bt (t = 1, . , n) teljesül, ahol tetszőleges 1 ≤ p ≤ n; 1 ≤ q ≤ n indexekre n 1, ha p = q, apq = 0 különben. Vizsgáljuk az új feladat r0i egyenletét, ahol 1 ≤ i ≤ n, i 6= k. Az ri −
(aij /akj )rk összefüggéssel meghatározott r0i egyenlet a következő: ¶ n+m Xµ aij aij ais − aks xs = bi − bk . a a kj kj s=1 Egyszerű behelyettesı́téssel belátható, hogy x̄ kielégı́ti Pn+ma fenti egyenletet. Tekintsük 0 ezek után rk -t. Ez definı́ció szerint a következő: s=1 (aks /akj )xs = bk /akj . Ismét behelyettesı́téssel adódik, hogy x̄ kielégı́ti ezt az egyenletet is. Következésképp x̄ kielégı́ti az új feladat minden egyenletét, amiből x̄ ∈ L0 , és ı́gy L ⊆ L0 következik. A fordı́tott irányú tartalmazás igazolásához legyen x̄ ∈ L0 tetszőleges. Akkor ¶ n+m Xµ aij aij aks x̄s = bi − bk (1 ≤ i ≤ n, i 6= k), ais − a a kj kj s=1 n+m X s=1 bk aks x̄s = akj akj Pn+m teljesül. Az utóbbi egyenletből s=1 aks x̄s = bk adódik Ezt felhasználva, az első Pn+m n − 1 egyenletből azt kapjuk, hogy s=1 ais x̄s = bi (1 ≤ i ≤ n, i 6= k) teljesül, azaz x̄ ∈ L,
amivel L0 ⊆ L adódik. Az igazolt két tartalmazásból az L = L0 egyenlőség következik. Ezek után az ekvivalenciához még azt kell megmutatnunk, hogy az L halmazon a két célfüggvény megegyezik. Az új célfüggvényt meghatározó egyenlet a következő: ¶ n+m Xµ cj cj aks xs = z(x) − bk , α+ cs − akj akj s=1 ahol ct = 0 (t = 1, . , n) Az egyenlet által meghatározott új függvényt jelölje z 0 (x) Rendezéssel z 0 (x)-re a következő kifejezést kapjuk: ! Ã n+m n+m X X c j z 0 (x) = α + cs xs + aks xs . bk − a kj s=1 s=1 17 A fenti kifejezésből nyilvánvaló, hogy tetszőleges x̄ ∈ L lehetséges megoldásra z(x̄) = z 0 (x̄) teljesül, amivel az ekvivalenciát igazoltuk. Ezek után megmutatjuk, hogy az új feladat lehetséges kanonikus alakú. Ehhez elsőként igazoljuk az előállı́tott feladat b01 , . , b0n jobboldalának nemnegativitását Valóban, b0k = bk /akj nemnegatı́v, mivel bk
≥ 0 és akj > 0. Most legyen 1 ≤ i ≤ n, i 6= k tetszőleges. Akkor b0i = bi − (aij /akj )bk Az aij előjelétől függően két esetet különböztetünk meg. Ha aij ≤ 0, akkor bi ≥ 0 és bk /akj ≥ 0 alapján b0i ≥ 0 teljesül Ha aij > 0, akkor ∆ = bk /akj miatt bi /aij ≥ bk /akj , és ı́gy bi ≥ (aij /akj )bk , amivel b0i ≥ 0 adódik. Most vegyük észre, hogy egyrészt az átalakı́tás során az x1 , . , xk−1 , xk+1 , , xn változók együtthatói sem az egyenletrendszerben, sem a célfüggvényben nem változnak, másrészt kiszámı́tva az új feladatban az xj változó a0ij (i = 1, . , n), c0j együtthatóit, a következőket kapjuk: n 1, ha i = k, 0 0 aij = cj = 0 , 0 különben. Következésképp, ha az új feladatban az xs változókról áttérünk az x0s változókra az x0s = xs (1 ≤ s ≤ n + m, s 6= k, s 6= j), x0j = xk , x0k = xj helyettesı́téssel, és átrendezzük
az oszlopokat az új változók indexei szerint, akkor egy (2.21) alakú feladatot kapunk, azaz az új feladat lehetséges kanonikus alakú. Végül vizsgáljuk az új feladat x∗ bázismegoldásán a célfüggvény értékét. A bázismegoldás definı́ciója szerint x∗j = b0k , x∗i = b0i (1 ≤ i ≤ n, i 6= k) és x∗s = 0 a további s Pn+m indexekre. Az ekvivalencia miatt z 0 (x∗ ) = z(x∗ ) Másrészt z(x∗ ) = α + s=1 cs x∗s = Pn+m α + t=n+1 ct x∗t = α + cj b0k = α + cj bk /akj = α + cj ∆. Ezzel a 2.tétel bizonyı́tását befejeztük Vegyük észre, hogy a fenti bizonyı́tásban alapvető szerepet játszott az akj együttható. Tekintettel ezen kitüntetett szerepre, az akj együtthatót generáló elemnek nevezzük. Feltételezésünk szerint min{br /arj : arj > 0, 1 ≤ r ≤ n} = bk /akj Nyilvánvaló, hogy A j-edik oszlopának több eleme is rendelkezhet ezzel a tulajdonsággal. Mivel akj
tetszőleges ilyen elem volt, ezért a bizonyı́tásban szereplő átalakı́tás bármelyik, a fenti tulajdonsággal rendelkező együtthatóra érvényes. A 2.tétellel kapcsolatban vegyük még észre, hogy pozitı́v ∆ esetén a régi feladatról az új feladatra történő áttérés egyidejűleg egy jobb megoldást is eredményez abban az értelemben, hogy az új bázismegoldáson felvett célfüggvényérték kisebb, mint az eredeti bázismegoldáshoz tartozó célfüggvényérték. Valóban, ez utóbbi érték α, mı́g az új bázismegoldáshoz tartozó függvényérték α + cj ∆, ami kisebb α-nál, ha ∆ > 0. Ezek után vizsgáljuk a 2.tétel feltételét Nyilvánvaló, hogy min{br /arj : arj > 0, 1 ≤ r ≤ n} akkor és csak akkor létezik, ha az arj (r = 1, . , n) elemek között van legalább egy pozitı́v. Ellenkező esetben a feladatnak nem létezik optimális megoldása, amint
azt az alábbi állı́tás mutatja. arj 3.tétel Ha a (221) feladatban valamely n + 1 ≤ j ≤ n + m indexre cj < 0 és az (r = 1, . , n) elemek egyike sem pozitı́v, akkor a feladat célfüggvénye alulról nem 18 korlátos a lehetséges megoldások halmazán. Bizonyı́tás. Feltételünk szerint arj ≤ 0 (r = 1, , n) Definiáljuk az x̄(1) , x̄(2) , vektorsorozat elemeit a következőképpen: (k) x̄j =k, (k) x̄r (k) x̄s = br − arj k (r = 1, . , n) , = 0 (n + 1 ≤ s ≤ n + m, s 6= j), ahol k tetszőleges pozitı́v egész. Mivel arj ≤ 0 és br ≥ 0 teljesül bármely 1 ≤ r ≤ n indexre, továbbá k > 0, ezért a fenti sorozat elemei rendre nemnegatı́v vektorok. Másrészt egyszerű behelyettesı́téssel adódik, hogy bármely k pozitı́v egészre x̄(k) kielégı́ti a (2.21) feladat egyenletrendszerét, azaz x̄(k) lehetséges megoldása a feladatnak Vizsgáljuk most a
célfüggvényértékek z(x̄(1) ), z(x̄(2) ), sorozatát Behelyettesı́tve x̄(k) -t a célfüggvény egyenletébe, azt kapjuk, hogy z(x̄(k) ) = α + cj k Ekkor a cj < 0 feltétel miatt, ha k ∞, akkor z(x̄(k) ) −∞. Ebből viszont már adódik, hogy z(x) alulról nem korlátos a lehetséges megoldások halmazán, amivel az állı́tást igazoltuk. Az 1., 2 és 3tételekkel kapcsolatban megjegyezzük, és a továbbiakban felhasználjuk a következőket Tekintettel arra, hogy tetszőleges lehetséges kanonikus alakú feladat sor- és oszlopcserékkel, a változók átjelölésével (2.21) alakúra hozható, és a felsorolt műveletek az eredeti feladattal ekvivalens feladatot eredményeznek, ezért az emlı́tett három tétel tetszőleges lehetséges kanonikus alakú feladatra is érvényes. A három tételt felhasználva felépı́thetünk egy olyan eljárást, amely alkalmas lehetséges kanonikus alakú
feladatok megoldására. Mielőtt erre rátérnénk, vegyük észre, hogy a 2.tétel alkalmazása adott esetben nem egyértelmű Az emlı́tett tétel két helyen is szabad választást biztosı́t. Egyrészt, ha több negatı́v cj szerepel a célfüggvényben, akkor a tétel nem tartalmaz utalást arra, hogy ezek közül melyiket válasszuk. Másrészt, ha cj < 0 és ½ ¾ br bk bk min : arj > 0, 1 ≤ r ≤ n = 1 = . = s , arj ak1 j aks j ahol s ≥ 2, akkor nincs meghatározva, hogy az akt j (t = 1, . , s) elemek közül melyiket válasszuk generáló elemnek. Nyilván egy eljárásban ezeket a választásokat szabályozni kell. Egy konkrét választási stratégia rögzı́tésével, egy konkrét eljáráshoz jutunk, és különböző választási stratégiák különböző eljárásokat eredményezhetnek. Ezek mindegyike épülhet a 2.tételre, ugyanis a bizonyı́tás során nem használtuk ki,
hogy a negatı́v célfüggvényegyüttható és a generáló elem milyen stratégia alapján lett kiválasztva. Az alábbi, történetileg legelső ilyen eljárásban egy egyszerű stratégia alapján történik a választás, ami az eljárás végességét illetően problémát okoz. Szimplex algoritmus: 19 1.lépés Ha a tekintett lehetséges kanonikus alakú feladat célfüggvénye nem tartalmaz negatı́v együtthatót, akkor vége az eljárásnak, a feladat bázismegoldása optimális megoldás. Ellenkező esetben a 2lépés következik 2.lépés Vegyük a negatı́v cs -ek minimumát Jelölje cj a minimummal megegyező cs -ek közül a legkisebb indexűt. Ha arj ≤ 0 (r = 1, , n), akkor vége az eljárásnak, a célfüggvény alulról nem korlátos a lehetséges megoldások halmazán. Ellenkező esetben a 3.lépés következik 3.lépés Ha min{br /arj : arj > 0, 1 ≤ r ≤ n} = bk1 /ak1 j =
= bks /aks j , akkor válasszuk az akt j (t = 1, . , s) elemek közül a legkisebb sorindexűt generáló elemként, majd hajtsuk végre a 2.tétel bizonyı́tásában megadott átalakı́tásokat, és a kapott lehetséges kanonikus alakú feladattal folytassuk az eljárást az 1.lépésnél Az algoritmus helyessége következik az 1., 2 és 3tételekből Alapvető kérdés, hogy mit állı́thatunk az eljárás végességéről. Ezt most nem tárgyaljuk, de a későbbiek során visszatérünk rá. Előbb azonban egy példán illusztráljuk az algoritmust, majd az úgynevezett szimplex táblázatok bevezetésével olyan eszközt adunk meg, amely nagyban megkönnyı́ti az eljárás tényleges végrehajtását. 2.példa +2x4 +x6 = 2 x2 +3x4 − x5 + 3x6 = 1 x3 −x4 + 2x5 +x6 = 3 xi ≥ 0 (i = 1, . , 6) −2x4 − 3x5 − 3x6 = z(x) min x1 A negatı́v célfüggvényegyütthatók minimuma −3, és a minimummal
megegyező cs -ek közül c5 a legkisebb indexű. Az a15 , a25 , a35 elemek közül csak a35 pozitı́v, ı́gy csak ez az együttható választható generáló elemnek. Ekkor a feladat átalakı́tása a következő összefüggések alapján történik: r03 = 1 r3 , a35 r0i = ri − ai5 r3 (i = 1, 2), a35 z0 = z − c5 r3 . a35 Végrehajtva a fenti átalakı́tásokat, a következő feladathoz jutunk: x1 x2 + 1 2 x3 1 2 x3 +2x4 + 52 x4 +x6 = 2 + 72 x6 = 52 − 12 x4 + x5 + 12 x6 = 3 2 xi ≥ 0 (i = 1, . , 6) 3 7 − 32 x6 = z(x) + 92 min 2 x3 − 2 x4 Most c4 = −7/2 a legkisebb negatı́v célfüggvényegyüttható, és a14 , a24 lehet generáló elem. Ezek közül a kisebb sorindexű a14 -et választva generáló elemnek, és végrehajtva a megfelelő átalakı́tásokat, az alábbi feladatot kapjuk: 20 1 2 x1 − 54 x1 1 4 x1 + 12 x6 = 1 +x4 + x2 + 12 x3 + 94 x6 = 0 + 12 x3 +x5 + 34 x6 = 2 xi ≥ 0 (i = 1, . ,
6) – 7 + 32 x3 + 14 x6 = z(x) + 92 + 72 min 4 x1 Ebben a feladatban már valamennyi célfüggvényegyüttható nemnegatı́v, ı́gy az x̄4 = 1, x̄2 = 0, x̄5 = 2 és x̄1 = x̄3 = x̄6 = 0 bázismegoldás egyben optimális megoldás is. A bázismegoldáson felvett z(x̄) célfüggvényérték −9/2 − 7/2 = −8. Az eljárás konkrét végrehajtása után felvetődik az a kérdés, hogy az egyenletrendszerek valamilyen tömörı́tett ı́rásmódja nem eredményezne-e technikailag egy egyszerűbb számı́tást. Erre a kérdésre pozitı́v a válasz Nevezetesen, rendeljük a (221) feladathoz a következő táblázatot, amelyet az illető feladat szimplex táblázatának vagy szimplex táblájának nevezünk. xn+1 (2.22) . xn+m x1 a1,n+1 . a1,n+m b1 . . . . xn an,n+1 . an,n+m bn cn+1 . cn+m −α A hozzárendelésnél valójában a változókat emeljük ki oly módon, hogy a táblázat i-edik sora első
elemként tartalmazza az i-edik egyenletben szereplő bázisváltozót, majd rendre az i-edik egyenletre vonatkozóan az xs (s = n + 1, . , n + m) változók együtthatóit, végül az i-edik egyenlet jobboldalát. Lényegében a szimplex táblázat a lehetséges kanonikus alakú feladat egy tömörı́tett leı́rása. Ebből adódóan az eljárást átfogalmazhatjuk szimplex táblázatokra. Ehhez azt kell megvizsgálnunk, hogy a 2.tétel bizonyı́tásában megadott, az egyenletekre vonatkozó átalakı́tások során az egyenletekben szereplő együtthatók hogyan változnak meg. E célból tegyük fel, hogy cj < 0, min{br /arj : arj > 0, 1 ≤ r ≤ n} = bk /akj . Ekkor az egyenletrendszeren végrehajtandó átalakı́tások a következők: r0k = (2.23) 1 rk , akj r0i = ri − z0 = z − aij rk akj (1 ≤ i ≤ n, i 6= k), cj rk , akj A 2.tétel bizonyı́tásából tudjuk, hogy a k-adik bázisváltozó xj
lesz, és xk kikerül a bázisváltozók közül. Ezt a szimplex táblázattal történő felı́rásban úgy tudjuk megadni, hogy az új táblázatban az xk , xj változók helyét megcseréljük. 21 Vizsgáljuk ezek után az új táblázatban szereplő együtthatókat, jelölje ezeket rendre a0ij , b0i , c0j , α0 , ahol 1 ≤ i ≤ n, n + 1 ≤ j ≤ n + m. Elsőként tekintsük a0kj t Az xj , xk változók cseréje miatt a0kj az xk változó együtthatója r0k -ben Mivel xk együtthatója rk -ban 1, ezért (2.23) alapján a0kj = 1/akj Ezt szavakban úgy fogalmazhatjuk meg, hogy a generáló elem helyére annak reciproka kerül. A j-edik oszlop elemeinél maradva, mivel xk együtthatója ri -ben és z-ben 0, ezért a változók cseréje és (2.23) alapján a0ij = −aij /akj (1 ≤ i ≤ n, i 6= k), c0j = −cj /akj , azaz a generáló elem oszlopában lévő elemek helyére az illető elemeknek a generáló
elem negatı́vjával képezett hányadosa kerül. Vizsgáljuk most a k-adik sor elemeit. A (223) alatti összefüggések miatt a0ks = aks /akj (n+1 ≤ s ≤ n+m, s 6= j), b0k = bk /akj , azaz a generáló elem sorában szereplő elemek helyén az illető elemeknek a generáló elemmel képezett hányadosa szerepel. Végül tekintsük a felsorolt elemektől eltérő indexű együtthatók számı́tását. Ha 1 ≤ i ≤ n, i 6= k és n + 1 ≤ s ≤ n + m, s 6= j, akkor (2.23) alapján a0is = ais − c0s = cs − aij aks , akj b0i = bi − cj aks , akj α0 = α − aij bk , akj cj bk . akj Vegyük észre, hogy a felsorolt esetekben az illető elemből ki kell vonni a sorában és a generáló elem oszlopában, továbbá az oszlopában és a generáló elem sorában lévő két elem szorzatának a generáló elemmel képezett hányadosát. aks akj Amint azt a mellékelt ábra mutatja, ezen elemek egy téglalap
csúcsain helyezkednek el, és a kivonandó a generáló elemmel szomszédos csúcsokban lévő elemek ais aij szorzatának a generáló elemmel képezett hányadosa. Az átfogalmazott eljárás illusztrálására végrehajtjuk az algoritmust az előzőekben megadot lehetséges kanonikus alakú feladaton. A végrehajtás során a választott cj -t aláhúzással, a választott generáló elemet *-gal jelöljük meg. 3.példa x4 x5 x6 x1 x2 x4 x3 x6 1 3 2 1 x1 x2 1 3 x5 −2 −3 −3 0 2 0 3 −1 x3 −1 ∗ 2 ∗ x1 x3 x6 2 0 1 2 5 2 1 −2 1 2 1 2 7 2 1 2 5 2 3 2 − 72 3 2 − 32 9 2 − 1 x4 2 5 x2 − 4 x5 1 0 1 4 1 2 1 2 1 2 9 4 3 4 7 4 3 2 1 4 8 0 2 Az utolsó szimplex táblázatnak megfelelő lehetséges kanonikus alakú feladatban már minden célfüggvényegyüttható nemnegatı́v, ı́gy az x̄4 = 1, x̄2 = 0, x̄5 = 2, x̄1 = x̄3 = x̄6 = 0 bázismegoldás egyben optimális
megoldás is. A bázismegoldáson felvett z(x̄) célfüggvényérték −8. 22 A lehetséges kanonikus alakú feladatok megoldására szolgáló, az előzőekben ismertetett szimplex algoritmus G. B Dantzigtól származik Érdekes momentum, hogy az eljárás már 1947-ben elkészült, de publikálására csak 1951-ben került sor, tekintettel a téma katonai indı́ttatására. Az eljárás elkészülte után a végesség kérdése egyre inkább előtérbe került. A kutatók egy része annak igazolására törekedett, hogy az eljárás bármely lehetséges kanonikus alakú feladaton véges lépésben véget ér. Ezzel szemben mások ellenpéldát kerestek, azaz olyan lehetséges kanonikus alakú feladatot, amelyen az eljárás vég nélkül folytatódik. Ez utóbbi kutatások bizonyultak eredményesnek Elsőként A J Hoffmannak sikerült egy ilyen lehetséges kanonikus alakú feladatot megadnia. Hoffman
példája, amely szerepel a fejezet végén felsorolt feladatok között, három egyenletet és tizenegy változót tartalmaz, az együtthatók pedig szögfüggvényértékek. Az eljárás során a szögfüggvények addı́ciós tételeit kell alkalmazni, ı́gy az algoritmus végrehajtása igen nehézkes Később, 1955-ben E M L Beale is megadott egy ellenpéldát, amely racionális együtthatókat tartalmaz és méreteiben is kisebb, mint Hoffman feladata. Tekintettel a fentiekre, az algoritmus vég nélküli folytatódásának illusztrálására a Beale-féle feladatot oldjuk meg. 4.példa x4 ∗ x2 1 4 1 2 x3 0 x1 − 34 − x5 x6 x7 −8 −1 9 x1 0 x4 x6 x7 4 −32 −4 36 0 4 3 2 −15 0 0 1 0 1 3 −4 − 72 33 0 −12 − 12 3 0 x2 −2 0 1 0 1 x3 0 20 − 12 6 0 x1 x2 x4 −12 8 x5 − 12 x3 x6 ∗ − x7 x1 8 −84 0 x6 − 32 1 4 3 8 − 15 4 0 x5 0 0 1 0 1
x3 1 16 3 2 1 1 −2 18 0 ∗ x5 −2 x2 x4 x7 1 8 1 3 − 8 − 64 −1 − 18 − 21 2 0 ∗ 3 16 21 2 0 1 4 −3 0 x4 x5 −3 − 54 1 3 − x1 x4 x5 2 −6 − 52 56 x7 1 3 − 23 x3 x6 x2 x6 16 3 0 x7 −2 6 − 14 5 2 1 2 1 −6 −56 1 x3 1 −1 1 − 12 16 0 ∗ − 0 x1 1 2 23 x2 1 − 28 0 ∗1 3 1 6 −4 0 0 0 0 1 −2 − 74 44 0 − x6 x4 x5 −8 0 táblázat csak az oszlopok sorrendjé- −12 0 ben különbözik az elsőtől. Tekintettel 1 arra, hogy a célfüggvény együtthatói x1 −1 9 x2 − 12 3 1 4 1 2 x3 1 0 0 0 6 − 34 20 − 12 Vegyük észre, hogy az utolsó szimplex x7 között minden lépésben van legkisebb, az oszlopok sorrendje az eljárást nem befolyásolja. Így, folytatva az algoritmust, az oszlopok sorrendjétől eltekintve ismét megkapnánk rendre a második, harmadik, . , szimplex táblát, és az eljárás
vég nélkül folytatódna. Miután sikerült ciklizációs példákat megadni, a kutatások új irányt vettek. Azt vizsgálták, hogy miként lehetne az eljárást úgy megváltoztatni, hogy minden esetben véges lépésben véget érjen. Az eljárásban az alkalmazott kiválasztási stratégia bizonyult döntőnek Igazolást nyert, hogy alkalmas stratégiával elérhető a végesség Az algoritmus első ilyen változata lexikografikus szimplex algoritmus néven ismeretes. Mielőtt ezzel megismerkednénk, az eljárás egy másik változatát, az úgynevezett módosı́tott szimplex algoritmust fogjuk a következő fejezetben tárgyalni, amelyet azután felhasználunk a lexikografikus eljárás végességének igazolásához. 0 − Feladatok 1. Írjuk fel rendre az alábbi szimplex táblázatoknak megfelelő lehetséges kanonikus alakú feladatokat x4 x5 x6 x7 x4 x1 −2 1 2 4 6 x1 1 2 x2 1 3 −
23 1 1 3 7 x2 −1 0 x3 −2 6 5 −5 8 x3 3 1 1 −2 2 −3 4 3 0 2. Az alábbi szimplex táblázattal megadott feladathoz konstruáljunk lehetséges megoldásoknak egy végtelen sorozatát. Következik-e a sorozat létezéséből, hogy a célfüggvény alulról nem korlátos a lehetséges megoldások halmazán? x4 x5 x6 x1 1 −1 1 4 x2 −1 −1 2 5 x3 3 −1 2 2 2 −3 0 −2 24 3. Konstruáljunk az alábbi lineáris programozási feladatokhoz olyan lehetséges kanonikus alakú feladatokat, amelyekre az illető lineáris programozási feladatok viszszavezethetők. Adjuk meg a feladatok szimplex táblázatát, és oldjuk meg szimplex algoritmussal ezen feladatokat. (a) (b) (c) x1 + 3x2 ≤ 7 3x1 −x2 ≤ 11 x2 ≤ 4 x1 ≥ 0, x2 ≥ 0 −x1 −x2 = z(x) min 4x1 +3x2 −11x3 ≤ 10 2x1 +2x2 −6x3 ≤ 4 5x1 −2x2 +8x3 ≤ 2 xi ≥ 0 (i = 1, 2, 3) 3x1 −5x2 −8x3 = z(x) min 2x1 −x2 −2x3 −x4
+x5 ≤ 4 4x1 −2x2 +3x3 −x4 ≤ 8 −2x1 +x2 +x3 +2x4 ≤ 6 x1 −x2 +4x3 +3x4 ≤ 10 xi ≥ 0 (i = 1, . , 5) −3x1 −2x2 +x3 −x4 = z(x) min 4. Hajtsuk végre a szimplex algoritmust az alábbi, A W Tucker által megadott feladaton, amely hasonlóan a Beale-féle feladathoz azt demonstrálja, hogy esetenként az eljárás vég nélkül folytatódik. x4 x1 x5 x6 x7 −2 −9 1 9 0 x2 1 3 1 − 13 −2 0 x3 1 1 1 1 1 −2 −3 1 12 0 5. Hajtsuk végre a szimplex algoritmust az alábbi, A J Hoffmantól származó feladaton, és figyeljük meg, hogy az első és harmadik szimplex táblázatban ugyanazon együtthatók szerepelnek, csak az oszlopok sorrendje más. Vegyük észre, hogy az első 25 és harmadik szimplex táblázat összehasonlı́tásából az következik, hogy folytatva az eljárást, a tizennegyedik szimplex tábla megegyezik az első szimplex táblával. x1 x2 x3 x4 x5 x6 x7 0 0 0 0
cos ρ −t cos ρ cos 2ρ x8 x9 0 0 2 −2t cos ρ cos 2ρ sin ρtgρ t cos ρ tgρ sin 2ρ t cos 2ρ −(1−cos ρ) cos ρ t 0 2t x10 x11 0 0 1 2t cos ρ cos ρ t cos ρ 0 cos 2ρ −tgρ sin ρ t cos ρ 0 2 2 −2 sin ρ t 4 sin2 ρ −2t cos 2ρ 4 sin2 ρ t(1 − 2 cos ρ) 0 ahol ρ = 2π/5 és t > (1 − cos ρ)/(1 − 2 cos ρ). 6. Oldjuk meg szimplex algoritmussal a következő feladatot x4 x1 x2 x3 x5 x6 x7 x8 1 1 2 1 1 2 2 1 −2 1 1 2 1 1 2 1 2 −5 1 −6 x9 x10 x11 2 2 1 2 1 3 1 1 1 4 6 5 1 −6 8 0 7. Adott szimplex táblázatról egy másik szimplex táblázatra történő áttérés során, az új együtthatókat kiszámı́thatjuk úgy is, hogy miután kiszámı́tottuk a generáló elem sorában és oszlopában szereplő új elemeket, a további együtthatók meghatározását a régi és az új táblázatokban szereplő értékek alapján végezzük. Adjuk meg az
a0is = ais − aij aks /akj összefüggéseknek megfelelő összefüggéseket, ha (a) a számı́tások a régi táblázat és az új táblázat k-adik sorának felhasználásával történnek, (b) a számı́tásoknál a régi táblázatot és az új táblázat j-edik oszlopát használjuk, (c) a számı́tásokat a régi táblázat, továbbá az új táblázat k-adik sora és j-edik oszlopa alapján végezzük. 2.3 Módosı́tott szimplex algoritmus Bizonyos problémák, problémacsoportok olyan lehetséges kanonikus alakú feladatokat eredményeznek, amelyek kevés feltétel mellett viszonylag sok változót tartalmaznak. Ilyen feladatokon végrehajtva a szimplex algoritmust, azt tapasztaljuk, hogy egyes változók és a hozzájuk tartozó oszlopvektorok érdemben nem befolyásolják az 27 eljárást. A 22 fejezet 6feladatában, például ilyenek az x4 , x5 , x7 , x9 , x10 , x11 változók. Az
észrevételhez kapcsolódva felvethető az a kérdés, hogy az eljárás valamilyen módosı́tásával nem kerülhetők-e el a feleslegesnek tűnő számı́tások A kérdésre pozitı́v a válasz. A következőkben megmutatjuk, hogy az algoritmus végrehajtási technikájának megváltoztatásával az emlı́tett elvárás elérhető. E célból ı́rjuk fel a (2.21) feladatot a következő módon: Ax = b x ≥ 0, (b ≥ 0) – α + cx = z(x) min (2.31) ahol az A mátrixba most beleértjük az egységmátrixot is, azaz 1 ≤ i ≤ n, 1 ≤ j ≤ n esetén n 1, ha i = j, cj = 0 , aij = 0 különben. Most tegyük fel, hogy cj < 0 és a szimplex algoritmus alapján választott generáló elem akj . Tudjuk, hogy ebben az esetben a szimplex algoritmus végrehajtása során a következő átalakı́tásokat kell végrehajtani: r0k = 1 rk , akj r0i = ri − (2.32) z0 = z − aij rk akj (1 ≤ i ≤ n, i 6= k), cj rk
, akj ahol rt (t = 1, . , n), z a (231) feladat és r0t (t = 1, , n), z0 pedig az új feladat egyenleteit jelöli. Meg fogjuk mutatni, hogy a fenti átalakı́tások elérhetők úgy is, hogy az egyenletrendszer mindkét oldalát balról megszorozzuk egy reguláris mátrixszal, és a célfüggvény egyenletéhez hozzáadjuk az új egyenletrendszer egyenleteinek egy alkalmas lineáris kombinációját. Ennek előkészı́téseként tekintsük a következő Q= 1 . −a1j /akj . . . 1 1/akj . . −anj /akj 1 . . 1 mátrixot, amelyben a feltüntetett elemektől különböző elemek rendre 0-val egyenlőek. Jelölje d = (d1 , . , dn ) azt a vektort, amelyre dk = cj és dt = 0, ha 1 ≤ t ≤ n, t 6= k 28 Akkor érvényes a következő állı́tás. 3.segédtétel Végrehajtva a (231) feladaton a (232) alatti átalakı́tásokat, az
előálló új feladat megegyezik az alábbi feladattal: QAx = Qb x ≥ 0 (Qb ≥ 0) α + dQb + (c − dQA)x = z(x) min Bizonyı́tás. Az egybeesés igazolásához elegendő megmutatnunk, hogy a változók együtthatói, a megfelelő jobboldalak és a célfüggvényekben szereplő konstansok rendre egyenlők. E célból legyenek 1 ≤ i ≤ n, 1 ≤ s ≤ n + m tetszőleges indexek Jelölje Q i-edik sorvektorát Qi , és A s-edik oszlopvektorát As . Ismeretes, hogy ekkor a QA szorzatmátrix (i, s) indexű eleme Qi As . Vizsgáljuk elsőként az r0k egyenletben szereplő együtthatókat. Az xs változó együtthatója r0k -ben aks /akj , és r0k jobboldalán pedig bk /akj szerepel. Ugyanezen változók együtthatója a fenti egyenletrendszer k-adik egyenletében Qk As = aks /akj , továbbá ezen egyenlet jobboldala Qk b = bk /akj . Következésképp a két k-adik egyenlet megegyezik Most tegyük fel, hogy i 6= k, és vizsgáljuk
az i-edik egyenleteket. Az xs változó együtthatója r0i -ben ais −aij aks /akj , és r0i jobboldala bi −aij bk /akj . Ugyanezen változó együtthatója a fenti egyenletrendszer i-edik egyenletében Qi As = ais − aij aks /akj , továbbá ezen egyenlet jobboldala Qi b = bi − aij bk /akj . Következésképp a két i-edik egyenlet megegyezik. Mivel i tetszőleges volt, ezért a fentiekből azt kapjuk, hogy a két egyenletrendszer azonos. Vizsgáljuk ezek után a célfüggvényeket meghatározó egyenleteket. A z0 egyenletben xs együtthatója cs − cj aks /akj , az α0 konstans pedig α + cj bk /akj A fenti feladat célfüggvényének egyenletében xs együtthatója cs − cj Qk As = cs − cj aks /akj és az egyenletben szereplő konstans α + dQb = α + cj Qk b = α + cj bk /akj . Tehát a célfüggvényeket megadó egyenletek is megegyeznek, amivel az állı́tást igazoltuk. A segédtétellel kapcsolatosan három
észrevételt teszünk. Nevezetesen, a 22 fejezet 2tételének bizonyı́tásából ismeretes, hogy a (223) átalakı́tásokkal előállı́tott új feladat bázisváltozói x1 , . , xk−1 , xj , xk+1 , , xn , és ezen változókhoz tartozó, az új feladatban szereplő együtthatók egységmátrixot alkotnak. Jelölje most B azt a mátrixot, amely ugyanezen változókhoz tartozó, az eredeti, tehát a (2.31) feladatban szereplő együtthatókból áll Akkor a fentiek és a segédtétel alapján tetszőleges 1 ≤ i ≤ n, 1 ≤ s ≤ n indexekre ½ 1, ha i = s, Qi Bs = 0 különben, teljesül, ahol Bs a B mátrix s-edik oszlopvektorát jelöli. Ez pontosan azt jelenti, hogy QB = E, azaz Q a B mátrix inverze. A második észrevételünk a segédtétel érvényességi köréhez kapcsolódik. Mivel a 2.2 fejezet 2tétele bármilyen, a 29 bk = min akj ½ br : arj > 0, arj ¾ 1≤r≤n feltételt
kielégı́tő generáló elem esetén érvényes, továbbá a 3.segédtétel bizonyı́tásában nem használtuk ki, hogy akj milyen módon lett kiválasztva, ezért a 3.segédtétel is érvényes bármilyen, a fenti feltételt kielégı́tő generáló elem esetén. Végül vegyük észre a következőt. Mivel tetszőleges lehetséges kanonikus alakú feladat sor- és oszlopcserékkel, a változók átjelölésével (2.31) alakú feladatként ı́rható fel, ezért a 3.segédtétel, valamint az előző két észrevétel tetszőleges lehetséges kanonikus alakú feladatra is érvényes Az elmondottak arra utalnak, hogy nemcsak a kiindulási és az azt követő feladat között mutatható ki szoros kapcsolat, hanem a kiindulási és a szimplex algoritmus végrehajtása során előálló v-edik feladat között is teljesülnie kell valamilyen, a segédtételben megadott összefüggéshez hasonló
összefüggésnek. A továbbiakban ezt a kapcsolatot fogjuk vizsgálni Ennek érdekében hajtsuk végre a (231) feladaton a szimplex algoritmust, és jelöljük a végrehajtás során előálló v-edik feladatot a következőképpen: A(v) x = b(v) x ≥ 0, (b(v) ≥ 0) – α(v) + c(v) x = z(x) min Ekkor érvényes a következő állı́tás. 4.tétel Ha az eljárás során előálló v-edik feladat bázisváltozói xi1 , , xin és Bv az ezen változókhoz tartozó, az eredeti feladatban szereplő együtthatókból álló mátrix, (0) (0) továbbá dv = (ci1 , . , cin ), akkor a v-edik feladat megegyezik az alábbi feladattal: (0) (0) B−1 x = B−1 v A v b (0) ≥ 0) x ≥ 0, (B−1 v b (0) (0) α(0) + dv B−1 + (c(0) − dv B−1 )x = z(x) min v b v A Bizonyı́tás. Az állı́tást v szerinti teljes indukcióval igazoljuk A v = 1 esetben az állı́tás nyilvánvalóan következik a 3.segédtételből Most
legyen v ≥ 1 tetszőleges egész, és tegyük fel, hogy v-re érvényes az állı́tás. Legyenek xi1 , , xin a v-edik feladat bázisváltozói, és jelölje Bv az ezen változókhoz tartozó, az eredeti feladatban szereplő együtthatókból álló mátrixot. Tegyük fel továbbá, hogy nem ér véget az eljárás, és a (v) soron következő lépésnél akj a generáló elem. Akkor a 3segédtétel és az azt követő harmadik észrevétel alapján a v + 1-edik feladat megegyezik az alábbi feladattal: (2.33) Q(v) A(v) x = Q(v) b(v) x ≥ 0, (Q(v) b(v) ≥ 0) α(v) + dQ(v) b(v) + (c(v) − dQ(v) A(v) )x = z(x) min (v) ahol d k-adik komponense cj és d többi komponense 0, továbbá Q(v) a következő 30 (v) 1 . (v) −a1j /akj . . . 1 (v) 1/akj . . (v) (v) −anj /akj 1 . . 1 mátrixot jelöli, amelyben a
feltüntetett elemektől különböző elemek rendre 0-val egyenlők. Vizsgáljuk elsőként a (2.33) feladat egyenletrendszerét Az indukciós feltevés (0) (0) alapján A(v) = B−1 , b(v) = B−1 . Mivel a (233) alatti feladat megegyezik a v A v b (v+1) (v) (v) v + 1-edik feladattal, ezért A = Q A , b(v+1) = Q(v) b(v) . De akkor A(v+1) = (v) −1 (0) (v+1) (v) −1 (0) Q Bv A , b = Q Bv b . Másrészt tudjuk, hogy a v + 1-edik feladat bázisváltozói xi1 , . , xik−1 , xj , xik+1 , , xin Jelölje az ezen változókhoz tartozó, az eredeti feladatban szereplő együtthatókból álló mátrixot Bv+1 . Mivel a v + 1edik feladatban a felsorolt változókhoz tartozó együtthatókból álló vektorok rendre egyenlők a megfelelő egységvektorokkal, ezért bármely 1 ≤ i ≤ n, 1 ≤ s ≤ n indexekre ½ 1, ha i = s, (v) −1 (Q Bv )i (Bv+1 )s = 0 különben, (v) −1 teljesül, ahol (Q(v) B−1 Bv szorzatmátrix i-edik
sorvektorát, (Bv+1 )s v )i a Q pedig a Bv+1 mátrix s-edik oszlopvektorát jelöli. Ez pontosan azt jelenti, hogy (v) −1 (v+1) (0) Q(v) B−1 Bv = B−1 = Q(v) B−1 v Bv+1 = E, azaz Q v A v+1 . Ezzel viszont az A −1 (0) és b(v+1) = Q(v) B−1 egyenletekből azt kapjuk, hogy A(v+1) = Bv+1 A(0) és v b −1 b(v+1) = Bv+1 b(0) , amivel az állı́tásnak az egyenletrendszerre vonatkozó részét igazoltuk. Vizsgáljuk ezek után a célfüggvény (2.33) alatt megadott egyenletét Jelölje dv (0) (0) (0) (0) (0) (0) (0) és dv+1 a (ci1 , . , cin ) és (ci1 , , cik−1 , cj , cik+1 , , cin ) vektorokat Akkor az indukciós feltevés alapján (0) α(v) = α(0) + dv B−1 , v b (0) c(v) = c(0) − dv B−1 , v A (0) b(v) = B−1 , v b (0) A(v) = B−1 , v A A felı́rt egyenlőségeket felhasználva a célfüggvény (2.33) alatti egyenletét a következő alakban ı́rhatjuk fel: (0) (0) (0) (0) α(0) + dv B−1 + dQ(v) B−1 + (c(0) − dv
B−1 − dQ(v) B−1 )x = z(x). v b v b v A v A A kapott kifejezést rendezve, az alábbi egyenlethez jutunk: (0) (0) α(0) + (dv + dQ(v) )B−1 + (c(0) − (dv + dQ(v) )B−1 )x = z(x). v b v A 31 Ha most teljesül a dv + dQ(v) = dv+1 Q(v) egyenlőség, akkor ezt felhasználva, a fenti egyenletből a következő egyenletet nyerjük: (0) (0) α(0) + dv+1 Q(v) B−1 + (c(0) − dv+1 Q(v) B−1 )x = z(x). v b v A −1 Másrészt tudjuk, hogy Q(v) B−1 v = Bv+1 , ı́gy az utóbbi egyenlet megegyezik az alábbi egyenlettel: (0) (0) )x = z(x), α(0) + dv+1 B−1 + (c(0) − dv+1 B−1 v+1 b v+1 A amivel az állı́tás igazolást nyert. Következésképp, a továbbiakban elegendő a dv + dQ(v) = dv+1 Q(v) egyenlőséget (v) igazolni. E célból legyen 1 ≤ t ≤ n tetszőleges, és jelölje Qt a Q(v) mátrix t-edik (0) (v) (0) oszlopvektorát. Ha t 6= k, akkor dv + dQ(v) t-edik komponense cit + dQt = cit , (v) (0) és dv+1 Q(v) t-edik komponense
pedig dv+1 Qt = cit , azaz a t-edik komponensek megegyeznek. Vizsgáljuk ezek után a k-adik komponenseket. Ha w-vel jelöljük a dv + dQ(v) vektor k-adik komponensét, akkor (v) (0) (v) (0) w = cik + dQk = cik + cj 1 (v) akj . (0) (0) és A(v) = B−1 . Így c(v) = Az indukciós feltevés szerint c(v) = c(0) − dv B−1 v A v A (v) c(0) −dv A(v) . Ennek a vektornak a j-edik komponense cj , amelyre az utóbbi kifejezés miatt n X (v) (0) (v) (0) (0) (v) cj = cj − dv Aj = cj − cih ahj h=1 teljesül. Ezt behelyettesı́tve w kifejezésébe, w= (0) (0) cik + cj (v) akj − (0) cik + 1 (0) (c (v) j akj (v) (0) ahj cih (v) akj h=1 k−1 X (0) cj (v) akj − − − n X (0) (v) cih ahj ) = h=1 (v) (0) akj cik (v) akj − (v) (0) ahj cih (v) akj h=k+1 n X = (v) (0) ahj cih (v) . akj n X h=1 h6=k Tekintsük most a dv+1 Q(v) vektor k-adik komponensét. Erre (v) dv+1 Qk = (v) (0) ahj − cih (v) akj h=1 k−1 X + (0) cj 32 1 (v)
akj − (v) (0) ahj cih (v) akj h=k+1 n X = (0) cj (v) akj − n X h=1 h6=k (v) (0) ahj cih (v) akj teljesül, azaz a k-adik komponensek is megegyeznek. Következésképp dv + dQ(v) = dv+1 Q(v) , amivel a 4.tétel bizonyı́tását befejeztük A 4.tétellel kapcsolatban vegyük észre, hogy annak bizonyı́tása magába foglalja a Bv mátrixok inverzeinek egy szorzat alakban történő előállı́tását. Valóban, ha az egyes lépésekben szereplő Q(v) mátrixokat tekintjük, akkor egy olyan Q(0) ,Q(1) ,. ,Q(v) (t) −1 sorozathoz jutunk, amelyre B−1 = Q(0) B0 és B−1 (t = 1, . , v) 1 t+1 = Q Bt teljesül, ahol B0 = E. Ebből teljes indukcióval egyszerűen adódik, hogy B−1 v+1 = (v) (v−1) (0) Q Q .Q Egy másik észrevételünk a 4.tétellel kapcsolatban a következő Egyrészt tudjuk, hogy a 3.segédtétel bármilyen, a ½ ¾ br bk = min : arj > 0, 1 ≤ r ≤ n akj arj feltételt kielégı́tő akj
generáló elem esetén érvényes. Másrészt a 4tétel bizonyı́tásában nem használtuk ki, hogy a szimplex algoritmusnál a fenti feltételt kielégı́tő elemek közül a legkisebb sorindexűt kell generáló elemként választani, továbbá azt sem használtuk ki, hogy a célfüggvényegyüttható milyen stratégia alapján kerül kiválasztásra. A felsoroltakból az következik, hogy a 4.tétel érvényes minden olyan eljárásra, amely csak a negatı́v cj kijelölését és a generáló elem kiválasztását meghatározó stratégiapárban tér el a szimplex algoritmustól. A 4.tételben megadott összefüggések illusztrálására tekintsük a 22 fejezet 2.példáját, amelyen a szimplex algoritmus végrehajtását mutattuk be A tekintett példánál 1 0 0 2 0 1 2 A(0) = 0 1 0 3 −1 3 , b(0) = 1 , 0 0 1 −1 2 1 3 c(0) = (0, 0, 0, −2, −3, −3) , α(0) = 0 , (0)
és a feladat bázisváltozói x1 , x2 , x3 . A szimplex algoritmus első lépésében a35 a generáló elem. Ekkor a megfelelő átalakı́tások az alábbi Q(0) mátrixszal érhetők el: Q(0) 1 = 0 0 0 1 0 0 1/2 1/2 Az átalakı́tás utáni feladat bázisváltozói x1 , x2 , x5 . A felsorolt változóknak megfelelő, az eredeti feladatban szereplő együtthatókból álló B1 mátrix a következő: 33 1 0 B1 = 0 1 0 0 0 −1 2 A B1 mátrix inverzét a 4.tételt követő megjegyzés alapján elöállı́thatjuk Q(0) B−1 0 = Q(0) E = Q(0) alakban. Ezek után végrehajtva a tételben megadott műveleteket, az új feladat együtthatóira vonatkozóan a következő értékeket kapjuk: A(1) = Q(0) A(0) 1 0 0 = 0 1 1/2 0 0 1/2 2 0 1 5/2 0 7/2 , −1/2 1 1/2 b(1) = Q(0) b(0) 2 = 5/2 , 3/2 3 7 9 3 c(1) = c(0) − d1 Q(0) A(0) = (0, 0, , − , 0, − ) ,
α(1) = α(0) + d1 Q(0) b(0) = − , 2 2 2 2 ahol d1 = (0, 0, −3). (1) Az eljárás második lépésében a14 a generáló elem. Ekkor a megfelelő átalakı́tásokat biztosı́tó Q(1) mátrix a következő: 1/2 0 0 = −5/4 1 0 1/4 0 1 Q(1) Az előálló új feladat bázisváltozói: x4 , x2 , x5 . A felsorolt változóknak megfelelő, az eredeti feladat szereplő együtthatókból álló B2 mátrix: 2 0 B2 = 3 1 −1 0 0 −1 2 B2 inverzét előállı́thatjuk Q(1) Q(0) alakban. 1/2 0 0 = −5/4 1 1/2 1/4 0 1/2 Q(1) Q(0) = B−1 2 Most végrehajtva a tételben megadott műveleteket, a soron következő feladat együtthatóira az alábbi értékeket kapjuk: 1/2 0 0 1 0 1/2 (0) A(2) = B−1 = −5/4 1 1/2 0 0 9/4 , 2 A 1/4 0 1/2 0 1 3/4 34 (0) b(2) = B−1 2 b 1 = 0 , 2 (0) (0) = −8, c(2) = c(0) − d2 B−1 = (7/4, 0, 3/2, 0, 0, 1/4) , α(2) =
α(0) + d2 B−1 2 b 2 A ahol d2 = (−2, 0, −3). A kapott célfüggvényegyütthatók rendre nemnegatı́vak, ezért a szimplex algoritmus ennél a lépésnél befejeződik. A nyert összefüggések alapján a (2.31) feladat megoldására az alábbi eljárást épı́thetjük fel. Módosı́tott szimplex algoritmus: Előkészı́tő rész. v = 0 Iterációs rész (v-edik iteráció). 1.lépés Ha c(v) ≥ 0, akkor vége az eljárásnak, a v-edik feladat bázismegoldása optimális megoldás. Ellenkező esetben a 2lépés következik (v) (v) 2.lépés Vegyük a negatı́v cs -k minimumát Jelölje cj a minimummal mege- (v) gyező cs együtthatók közül a legkisebb indexűt. Határozzuk meg az xj -hez tartozó, (v) (0) a v-edik feladatban szereplő együtthatókat az Aj = B−1 összefüggés alapján, v Aj majd képezzük a ( ) (v) br (v) : arj > 0, 1 ≤ r ≤ n ∆ = min (v) arj mennyiséget. Ha ez a
minimum nem létezik, akkor vége az eljárásnak, a célfüggvény alulról nem korlátos a lehetséges megoldások halmazán. Ellenkező esetben a 3lépés következik. (v) (v) (v) (v) (v) 3.lépés Ha ∆ = bk1 /ak1 j = = bkw /akw j , akkor válasszuk az akt j (t = 1, , w) elemek közül a legkisebb sorindexűt generáló elemként. Képezzük a választott (v) generáló elem és Aj felhasználásával a Q(v) mátrixot. Határozzuk meg az aktuális bázisváltozókat, és az illető változóknak megfelelő dv+1 vektort. Számı́tsuk ki a (v) −1 (0) (0) B−1 Bv mátrixot, a c(v+1) = c(0) − dv+1 B−1 , b(v+1) = B−1 v+1 = Q v+1 A v+1 b (0) vektorokat, és az α(v+1) = α(0) + dv+1 B−1 konstanst. Ezt követően növeljük v+1 b 1-gyel v értékét, és folytassuk az eljárást a következő iterációs lépéssel. Az eljárás helyessége a 4.tétel és az azt követő első észrevétel,
valamint a szimplex algoritmus helyességének a következménye. A számı́tások végrehajtásához vegyük észre, hogy bevezetve az xn+1 x1 . x(1) = . , x(2) = , xn xn+m 35 (0) a1,n+1 . Ā = . . (0) an,n+1 (0) (0) a1,n+m . , . (0) an,n+m . . (0) (0) c̄ = (cn+1 , . , cn+m ) jelöléseket, A(0) x = Ex(1) + Āx(2) Ekkor A(v) x = B−1 x= v A (1) −1 (2) −1 (1) −1 (2) Bv (Ex + Āx ) = Bv x + Bv Āx , azaz az x1 , . , xn változókhoz tartozó, a v-edik feladatban szereplő együtthatókból álló mátrix pontosan B−1 v . (v) (0) Vegyük észre továbbá, hogy c(v) = c(0) −dv B−1 alapján cj v A = 0−dv B−1 v Ej , (v) (v) ha 1 ≤ j ≤ n, ahol Ej a j-edik egységvektort jelöli. Így (c1 , , cn ) = −1 0 − dv B−1 Következésképp, az x1 , . , xn változókhoz tartozó v E = −dv Bv . célfüggvényegyütthatókat megkapjuk, ha a
−dv vektort megszorozzuk a B−1 v mátrix(v) (0) −1 (0) −1 (0) szal. Ha n + 1 ≤ j ≤ n + m, akkor cj = cj − dv Bv Aj = cj − dv Bv Aj , azaz (v) (v) (cn+1 , . , cn+m ) = c̄ − dv B−1 v Ā. Figyeljük meg, hogy a kapott kifejezés tartalmazza vektort. Így elsőként meghatározva −dv B−1 az előzőekben már szerepelt −dv B−1 v v (0) (0) et, majd képezve ezzel az A mátrix Aj oszlopvektorának belső szorzatát és az (0) (v) eredményhez hozzáadva cj -t, megkapjuk a cj együtthatót. A módosı́tott szimplex algoritmust, ellentétben a szimplex algoritmussal, már közvetlenül a feladatokban szereplő együtthatókra fogalmaztuk meg, amelyeket célszerű táblázatos formában elrendezni. A továbbiakban egy ilyen elrendezést adunk meg, amelyben az oszlopok fölé ı́rt változók jelzik, hogy az illető együtthatók melyik változóhoz tartoznak. Induló táblázatként vegyük a következőt:
b.vált b(v) x1 . xn x1 . . b(0) E xn+1 . xn+m Ā xn v=0 −α 0 . 0 c̄ Az egyszerűbb ábrázolás érdekében tegyük fel, hogy α = 0 és n = m = 5. Tegyük (0) fel továbbá, hogy a választott célfüggvényegyüttható c9 < 0. Akkor az eljárás sze(0) (0) rint a 0-adik iteráció második lépésében meg kell határoznunk az A9 = B−1 0 A9 = (0) (0) EA9 = A9 oszlopvektort. Ez a vektor a 0-adik iterációban rendelkezésünkre áll, ı́gy meghatározása felesleges. Az eljárás ezt a számı́tást technikai okok miatt tartalmazza, ugyanis ezen meghatározás a további iterációs lépésekben már szükséges. Ezek után képezzük a (0) (0) pozitı́v ar9 értékekre a br /ar9 hányadosokat, és tegyük fel, hogy a választott generáló 36 (0) (0) (0) mátrix. Mivel elem a39 . Akkor a39 és A9 ismeretében elkészı́thető a Q(0) = B−1 1 B−1 a soron következő feladatban
az x , . . . , x változókhoz tartozó együtthatókból 1 5 1 álló mátrix, ezért B−1 -et beı́rhatjuk az x , . . . , x változóknak megfelelő tömbbe. Az új 1 5 1 bázisváltozók x1 , x2 , x9 , x4 , x5 , ezeket beı́rhatjuk a táblázat baloldalába. Képezzük a (0) d1 vektort, amelynek 3-adik komponense c9 és a többi komponense 0, majd számı́tsuk ki a −d1 B−1 vektort. Az előálló vektor pontosan az x1 , , x5 változóhoz tartozó 1 célfüggvényegyütthatókat tartalmazza, ı́gy beı́rhatjuk a táblázat megfelelő sorába. A felsorolt műveletek után a v = 0 és v = 1 iterációkra vonatkozó táblázatok az alábbi értékeket tartalmazzák: b.vált b(v) x1 . x5 x6 x7 x8 x9 Ā a39 x10 x1 x2 x3 b(0) E (0) x4 x5 v=0 0 . 0 c̄ x1 x2 x9 (0) B−1 1 =Q x4 x5 v=1 −d1 B−1 1 −1 Most B−1 ismeretében az előzőekben leı́rt módon rendre kiszámı́tjuk a 1 , −d1
B1 (1) (0) (0) (0) további cj = cj − d1 B−1 (j = 6, . , 10) együtthatókat, a b(1) = B−1 1 Aj 1 b −1 (0) vektort és a −d1 B1 b konstanst. Ezeket beı́rva a táblázat megfelelő helyeire, az eljárást a következő iterációs lépéssel folytatjuk. Az alábbi táblázat az eljárás folytatását mutatja. Itt feltételeztük, hogy az eljárás (0) (0) (1) (1) a harmadik iterációs lépésnél véget ér, és az egyes lépésekben rendre c9 , a39 ; c7 , a47 ; (2) (2) c8 , a28 a választott célfüggvényegyütthatók illetve generáló elemek. A táblázatba bejelöltük azokat az oszlopokat, amelyek kiszámı́tásra kerülnek az algoritmus során. 37 b(v) b.vált x1 . x5 x6 x7 x8 x9 Ā a39 x10 x1 x2 b(0) x3 E (0) x4 x5 v=0 0 0 . 0 c̄ x1 x2 (0) B−1 1 b x9 (0) (0) B−1 1 =Q ← B−1 1 A7 (0) x4 a47 x5 v=1 (0) −d1 B−1 1 b −d1 B−1 1 c̄ − d1 B−1 1 Ā x1 (2) x2
a28 (0) B−1 2 b Q(1) B−1 1 (0) −d2 B−1 2 b −d2 B−1 2 (0) B−1 3 b Q(2) B−1 2 (0) −d3 B−1 3 b −d3 B−1 3 x9 (0) ← B−1 2 A8 x7 x5 v=2 c̄ − d2 B−1 2 Ā x1 x8 x9 x7 x5 v=3 c̄ − d3 B−1 3 Ā A módosı́tott szimplex algoritmus végrehajtását a következő feladaton illusztráljuk. 5.példa 38 x1 + x4 +x5 +x6 +x7 +x8 +2x9 +2x10 = 4 x4 +2x5 +2x6 +x7 +x8 +2x9 +x10 = 6 x3 + 2x4 +x5 −2x6 +2x7 +2x8 +x9 +3x10 = 5 xj ≥ 0 (i = 1, . , 10) x4 +2x5 −5x6 +x7 −6x8 +x9 −6x10 =z(x) min x2 + b.vált b(v) x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x1 4 1 0 0 1 1 1 1 1 2 2 x2 6 0 1 0 1 2 2 1 1 2 1 x3 5 0 0 1 2 1 −2 2 ∗ 2 1 3 v=0 0 0 0 0 1 2 −5 1 −6 1 −6 x1 3/2 1 0 −1/2 x2 7/2 0 1 −1/2 3 x8 5/2 0 0 1/2 −1 v=1 15 0 0 3 4 3 x6 3/4 1/2 0 −1/4 x2 5/4 −3/2 1 1/4 x8 13/4 1/2 0 1/4 93/4 11/2 0 1/4 v=2 ∗ 2 7 5 −11 7
0 7 31/4 0 7 0 49/4 23/4 Mivel c(2) ≥ 0, ezért az eljárás véget ér. Az optimális megoldás a következő: x̄6 = 3/4 x̄1 = x̄3 = x̄4 = 0 x̄2 = 5/4 x̄5 = x̄7 = x̄9 = 0 x̄8 = 13/4 x̄10 = 0 Az optimum értéke: −93/4 39 A módosı́tott szimplex algoritmust G. B Dantzig és W Orchard-Hays dolgozta ki 1953-ban. Az eljárással kapcsolatban meg kell emlı́tenünk, hogy a végrehajtás során érintett feladatsort illetően a módosı́tott változat nem különbözik a szimplex algoritmustól. Az eljárásokat alkalmazva egy lehetséges kanonikus alakú feladatra, mindkét eljárás ugyanazon feladatsoron fut végig. A két eljárás a kiszámı́tott együtthatók mennyiségében és a kiszámı́tás módjában különbözik egymástól. Nevezetesen, amig a szimplex algoritmusnál az érintett feladatok összes együtthatóját meghatározzuk, addig a módosı́tott eljárásnál az
érintett feladatok együtthatóinak csak egy részét számı́tjuk ki, és a kiszámı́tás módja eltér a szimplex algoritmusnál alkalmazott technikától. Ebből adódóan lehetséges a szükséges együtthatókat (a v-edik lépésben B−1 v+1 , −1 −1 (0) Bv+1 b , −dv+1 Bv+1 elemei) a normál szimplex algoritmus szerint számı́tani. A következő fejezetben ismertetésre kerülő eljárás eltér az eddigiektől, a végrehajtás során előálló feladatsor bizonyos esetekben más lesz, mint a tárgyalt algoritmusoknál, és éppen ez az eltérés fogja biztosı́tani ezen algoritmus végességét. Feladatok 1. Hajtsunk végre a szimplex algoritmusból egy iterációs lépést az alábbi feladaton Ezt követően határozzuk meg a B−1 1 mátrixot, a d1 vektort, és ellenőrizzük le a 4.tételben megadott összefüggések teljesülését x1 + 2x4 +3x5 +x6 −x7 +x8 = 1 x2 + −2x4 +3x5 +x6 +x7
+2x8 = 1 x3 + 2x4 −3x5 +x6 −2x7 +2x8 = 1 xj ≥ 0 (i = 1, . , 8) −4x4 −9x5 −5x6 +3x7 +7x8 =z(x) min 2. Oldjuk meg módosı́tott szimplex algoritmussal az alábbi feladatokat: x1 + +x5 +x6 −x7 +2x8 +x9 −x10 = 2 x4 +x5 +2x6 +x7 +2x8 −x9 +x10 = 6 x3 + 2x4 +2x5 +x6 +x7 +3x8 +2x9 +3x10 = 8 xj ≥ 0 (i = 1, . , 10) x4 −4x5 +2x6 +x7 −5x8 +2x9 −3x10 =z(x) min x2 + (a) x1 + x4 +x5 +x6 +x7 +x8 +2x9 +2x10 = 4 x4 +2x5 +2x6 +x7 +x8 +2x9 +x10 = 6 x3 + 2x4 +x5 −2x6 +2x7 +2x8 +x9 +3x10 = 5 xj ≥ 0 (i = 1, . , 10) x4 +2x5 −5x6 +x7 −6x8 +x9 −6x10 =z(x) min x2 + (b) 40 3. Igazoljuk a 4tétel felhasználásával, hogy bármely olyan eljárásra, amely csak a generáló elem kijelölésében különbözik a szimplex algoritmustól érvényes a következő állı́tás. Ha az eljárás v-edik iterációjában a bázisváltozók xi1 , . , xin , továbbá a w-edik iterációban ugyanezen bázisváltozók szerepelnek,
csak xij és xik (1 ≤ j < k ≤ n) −1 helye fel van cserélve, akkor B−1 w előállı́tható Bv -ből a j-edik és k-adik sorvektorok (v) (v) (w) (w) cseréjével, és (−α(v) , c1 , . , cn+m ) = (−α(w) , c1 , , cn+m ) 4. Alkalmazva a 21 fejezet eljárását az alábbi feladatokra, rendre lehetséges kanonikus alakú feladatokhoz jutunk. Alkalmazzuk ezen eljárást, és az előállı́tott lehetséges kanonikus alakú feladatokat oldjuk meg módosı́tott szimplex algoritmussal. x1 −2x2 +x3 −x1 +x2 −2x3 3x1 −x2 −x3 −x4 +x5 −2x6 +x7 ≤ 5 +x4 +x5 −x6 −2x7 ≥ −7 +x4 −x5 −x6 +x7 ≤ 4 xi ≥ 0 (i = 1, . , 7) 2x1 −9x2 −3x3 +x4 +2x5 −11x6 +3x7 =z(x) min 2x1 +x2 −x3 ≤ 5 −x1 +x2 −2x3 ≥ −4 x1 −x2 −x3 ≤ 2 −3x1 −x2 +x3 = z(x) min 2.4 Lexikografikus szimplex algoritmus Amint azt az előzőek során emlı́tettük A. J Hoffman, E M L Beale és A W. Tucker példái negatı́v irányban
ugyan, de eldöntötték a szimplex algoritmus végességének kérdését. Miután ez ilyen módon megoldódott, a kutatók azt vizsgálták, hogy az eljárás milyen változtatása biztosı́taná annak végességét. A vizsgálatok során kiderült, hogy ezt a generáló elem kijelölésének stratégiája döntően befolyásolja. Igazolást nyert, hogy amennyiben a generáló elem kijelölése a sorvektorok figyelembevételével történik, akkor a célfüggvényegyütthatókból álló vektorok között elérhető egyféle szigorú monoton növekedés, amely már biztosı́tja az eljárás végességét. Az algoritmus ezen változata lexikografikus szimplex algoritmus néven ismeretes. A továbbiakban a szükséges fogalmak és jelölések bevezetése után, ismertetjük a szóban forgó eljárást, majd igazoljuk annak végességét. Legyen d és c az n-dimenziós tér két vektora. Azt
mondjuk, hogy d lexikografikusan nagyobb vagy egyenlő, mint c, ha a d − c vektor első 0-tól különböző komponense pozitı́v. A bevezetett reláció jelölésére a d º c jelölést használjuk Könnyen belátható, hogy az n-dimenziós euklideszi térben a tekintett reláció reflexı́v, tranzitı́v, antiszimmetrikus és dichotom. Ez pontosan azt jelenti, hogy a bevezetett reláció lineáris rendezés, vagy más terminológia szerint teljes rendezés. Ebből viszont 41 az következik, hogy az n-dimenziós tér vektoraiból álló bármely {d1 , . , dn } véges halmaznak van legkisebb eleme a tekintett rendezés szerint. Ezt a legkisebb elemet lexmin{d1 , . , dn }-nel jelöljük Használni fogjuk a fenti rendezéshez tartozó szigorú rendezést is, amelyre d  c, ha d º c és d 6= c . Speciálisan, d  0 esetén a d vektort lexikografikusan pozitı́vnak nevezzük. Alkalmazzuk még a fordı́tott
relációjeleket is a természetes értelmezésnek megfelelően, azaz c ¹ d pontosan akkor teljesül, ha d º c, és c ≺ d pontosan akkor teljesül, ha d  c. Végül azt mondjuk, hogy egy P mátrix lexikografikusan pozitı́v, ha P minden sorvektora lexikografikusan pozitı́v. A P mátrix ezen tulajdonságát P  0 -val jelöljük Ezek után a (2.31) lehetséges kanonikus alakú feladat megoldására a szimplex algoritmus következő változatát épı́thetjük fel. Lexikografikus szimplex algoritmus 1.lépés Ha a tekintett lehetséges kanonikus alakú feladat célfüggvénye nem tartalmaz negatı́v együtthatót, akkor vége az eljárásnak, a feladat bázismegoldása optimális megoldás. Ellenkező esetben a 2lépés következik 2.lépés Vegyük a negatı́v cs -ek minimumát Jelölje cj a minimummal megegyező cs -ek közül a legkisebb indexűt. Ha arj ≤ 0 (r = 1, , n), akkor vége az eljárásnak, a
célfüggvény alulról nem korlátos a lehetséges megoldások halmazán. Ellenkező esetben a 3.lépés következik 3.lépés Ha min{br /arj : arj > 0, 1 ≤ r ≤ n} = bk1 /ak1 j = = bks /aks j , akkor tekintsük a hkt = (bkt , akt 1 , . , akt n+m )/akt j (t = 1, , s) vektorokat, és legyen hk = lexmin{hk1 , . , hks } Válasszuk az akj együtthatót generáló elemnek, majd hajtsuk végre a 2.2 fejezet 2tételében megadott átalakı́tásokat, és a kapott lehetséges kanonikus alakú feladattal folytassuk az eljárást az 1.lépésnél Az eljárással kapcsolatban elsőként az egyértelműséget igazoljuk. Ehhez azt kell megmutatnunk, hogy a generáló elem kiválasztása egyértelmű. Ez akkor teljesül, ha a hkt (t = 1, . , s) vektorok páronként különbözőek, ami nyilvánvaló, mivel minden feladat tartalmaz egy egységmátrixot, ı́gy a sorvektorok nem egymás konstansszorosai. Az eljárás
helyességét illetően vegyük észre, hogy a fenti algoritmus csak a harmadik lépésben tér el a szimplex algoritmustól, az eltérés a generáló elem kiválasztásánál van. De akkor az eljárás helyessége következik a 22 fejezet 1, 2 és 3.tételeiből Az algoritmus végességére vonatkozóan a következő állı́tás érvényes. 5.tétel A lexikografikus szimplex algoritmus véges lépésben véget ér Bizonyı́tás. Jelölje az eljárás során előálló v-edik feladatot A(v) x = b(v) x ≥ 0, (b(v) ≥ 0) – α(v) + c(v) x = z(x) min 42 (v) Legyen továbbá P(v) = (b(v) , A(v) ), q(v) = (−α(v) , c(v) ), és jelölje pi a P(v) mátrix i-edik sorvektorát. Elsőként megmutatjuk, hogy a P(v) (v = 0, 1, . ) mátrixok rendre lexikografikusan pozitı́vak Ezt az állı́tást v szerinti teljes indukcióval igazoljuk Ha v = 0, akkor az állı́tás nyilvánvalóan teljesül, mivel b(0) ≥ 0 és
bármely 1 ≤ i ≤ n, 1 ≤ j ≤ n indexekre n (0) 1, ha i = j, aij = 0 különben. Most legyen v tetszőleges nemnegatı́v egész és tegyük fel, hogy az állı́tás teljesül vre. Tegyük fel továbbá, hogy az eljárás nem ér véget, és a soron következő lépésben (v) (v) a generáló elem akj . Ekkor tetszőleges 1 ≤ i ≤ n indexre, ha aij > 0, akkor (v) (v) (v) (v) (v) (v) (v) (v) pi /aij  pk /akj teljesül. Valóban, ha bi /aij > bk /akj , akkor a reláció nyil(v) (v) (v) (v) vánvalóan fennáll. Ha bi /aij = bk /akj , akkor a reláció teljesülése a generáló elem kiválasztásának következménye. Vizsgáljuk ezek után a P(v+1) mátrix sorvektorait Elsőként tekintsük a k-adik sorvektort A 22 fejezet 2tételében megadott (v) (v+1) (v) (v) (v) átalakı́tásoknak megfelelően r0k = rk /akj , és ı́gy pk = pk /akj . Mivel akj > 0 (v) (v+1) és az indukciós feltevés szerint pk  0,
ezért pk  0. Most legyen 1 ≤ i ≤ n, (v) (v) i 6= k tetszőleges. Akkor a 2tétel bizonyı́tásának megfelelően r0i = ri − aij rk /akj , (v+1) (v) (v) (v) (v) (v) és ı́gy pi = pi − aij pk /akj . Az aij együttható előjelétől függően két esetet különböztetünk meg. (v) (v) (v) (v) Ha aij ≤ 0, akkor −aij /akj ≥ 0. Másrészt az indukciós feltevés szerint pk  0, (v) (v) (v) (v) (v) (v+1) és pi  0. De akkor pi − aij pk /akj  0 is teljesül, azaz pi  0. (v) (v) (v) (v) (v) Ha aij > 0, akkor az előzőek alapján tudjuk, hogy pi /aij  pk /akj , amiből (v) (v) (v) (v) (v+1) pi − aij pk /akj  0 következik, azaz pi  0. (v+1) (v) Következésképp P  0, amivel a P (v = 0, 1, . ) mátrixokra vonatkozó állı́tást igazoltuk. Következő lépésként megmutatjuk, hogy az additı́v konstans negatı́vjából és a célfüggvényegyütthatókból álló q(0) , q(1) , . vektorok a
lexikografikus rendezésre nézve egy szigorúan monoton növekvő sorozatot alkotnak, azaz q(0) ≺ q(1) ≺ q(2) ≺ . E célból legyen v tetszőleges nemnegatı́v egész, és tegyük fel, hogy a soron következő (v) generáló elem akj . Akkor a 22 fejezet 2tétele bizonyı́tásának megfelelően z0 = z − (v) (v) (v) (v) (v) (v) (v) (v) cj rk /akj , és ı́gy q(v+1) = q(v) − cj pk /akj , amiből q(v+1) − q(v) = −cj pk /akj . (v) (v) (v) Az előzőekben bizonyı́tást nyert, hogy pk  0. Másrészt −cj /akj > 0, ´ igy (v) (v) (v) −cj pk /akj  0, amiből q(v+1) − q(v)  0, és ı́gy q(v+1)  q(v) következik. Ezzel a monotonı́tásra vonatkozó állı́tást igazoltuk. Befejezésül a kapott monotonı́tást felhasználva megmutatjuk, hogy az eljárás véges lépésben véget ér. Az állı́tást indirekt bizonyı́tjuk Tegyük fel, hogy az állı́tás nem igaz, az eljárás vég nélkül
folytatódik. mivel a változók száma n + m, és a ¡ Akkor ¢ bázisváltozók száma n, ezért legfeljebb n+m n! lépés után olyan bázisváltozókhoz jun tunk, amelyek már valamely korábbi feladatnak is bázisváltozói voltak, és a változók 43 ¡ ¢ n! természetes számok, sorrendje is azonos. Így léteznek olyan 0 ≤ r < s ≤ n+m n hogy az eljárás során előálló r-edik és s-edik feladatokhoz ugyanazon bázisváltozók tartoznak, és a bázisváltozók sorrendje is azonos. Ekkor az ezen változókhoz tartozó, az eredeti feladatban szereplő együtthatókból álló Br , Bs mátrixokra és dr , ds vektorokra Br = Bs és dr = ds teljesül. Mivel a lexikografikus szimplex algoritmus csak a generáló elem kijelölésében tér el a szimplex algoritmustól, ezért a 2.3 fejezet 4.tételét követő megjegyzés alapján a 4tétel összefüggései érvényesek a lexikografikus szimplex
algoritmusra is. Alkalmazva ezeket az összefüggéseket, (0) α(r) = α(0) + dr B−1 , r b (0) c(r) = c(0) − dr B−1 , r A α(s) = α(0) + ds Bs−1 b(0) , (0) c(s) = c(0) − ds B−1 . s A A fenti egyenletekből Br = Bs , dr = ds miatt α(r) = α(s) , c(r) = c(s) , és ı́gy q(r) = q(s) következik. Ez ellentmond a q(r) ≺ q(s) reláció teljesülésének, amivel ellentmondáshoz jutottunk. Következésképp az eljárás véges lépésben véget ér, amivel az 5.tétel bizonyı́tását befejeztük A fenti bizonyı́tással kapcsolatban meg kell emlı́teni, a q(r) = q(s) egyenletet ¡n+mhogy ¢ kielégı́tő r < s indexek eléréséhez nem szükséges n! lépés, a korlátból az n! n elhagyható. Valóban, ismeretes, hogy bármely permutáció felı́rható transzpozı́ciók szorzataként, és ı́gy a 2.3 fejezet 3feladatát felhasználva, belátható, hogy a sorrendtől eltekintve, a bázisváltozók
megegyezéséből már következnek a Br = Bs , dr = ds ¡n+m¢ egyenlőségek. Ez azt eredményezi, hogy legfeljebb n lépés után léteznek a fenti tulajdonsággal rendelkező r, s indexek. A nagyobb korlátot azért használtuk, mert a végesség szempontjából közömbös a korlát nagysága, és a jelen tárgyalásmódban a nagyobb korlát egy egyszerűbb bizonyı́tást tett lehetővé. Az ismertetett eljárás demonstrálására megoldjuk E. M L Beale példáját A lexikografikus szimplex algoritmust a módosı́tott szimplex algoritmusnál megismert elrendezésben hajtjuk végre az együtthatókon. Az induló táblázat a következő: b.vált b(v) x1 x2 x3 x4 x5 x6 x7 x1 0 1 0 0 1/4 −8 −1 9 x2 0 0 1 0 x3 1 0 0 1 v=0 0 0 0 0 A legkisebb célfüggvényegyüttható: −3/4. 0/(1/4) = 0/(1/2) = 0. Véve a (0) p1 (0) a14 ∗ 1/2 −12 −1/2 0 1 −3/4 20 −1/2 0 6 Az
oszlopában képezett hányadosok: 1 = 4(0, 1, 0, 0, , −8, −1, 9) , 4 44 0 3 (0) p2 (0) a24 1 1 = 2(0, 0, 1, 0, , −12, − , 3) 2 2 (0) (0) vektorokat, ezek közül lexikografikusan kisebb a p2 /a24 vektor, ı́gy a generáló elem (0) a24 . Végrehajtva a 2tételben megadott átalakı́tásokat, a következő táblázathoz jutunk: b.vált b(v) x1 x2 x3 x4 x5 x1 0 1 −1/2 0 0 −2 −3/4 15/2 x4 0 0 2 0 1 −24 x3 1 0 0 1 0 0 v=1 0 0 3/2 0 0 2 x6 x7 −1 6 ∗ 0 1 −5/4 21/2 (1) A −5/4 oszlopában csak az a36 lehet generáló elem. Végrehajtva a megfelelő átalakı́tásokat, az alábbi táblázatot kapjuk: b.vált b(v) x1 x1 3/4 1 x4 1 0 2 x6 1 0 v=2 5/4 0 x2 x3 x4 x5 x6 x7 −1/2 3/4 0 −2 0 15/2 1 1 −24 0 6 0 1 0 0 1 0 3/2 5/4 0 2 0 21/2 45 Az utolsó táblázatban már minden célfüggvényegyüttható nemnegatı́v, ı́gy az
x̄1 = 3/4, x̄4 = 1, x̄6 = 1, x̄2 = x̄3 = x̄5 = x̄7 = 0 bázismegoldás egyben optimális megoldás is, amivel a tekintett feladatot megoldottuk. A feladat megoldásánál alkalmazott elrendezés azért praktikus, mert a táblázat sorvektorai a kı́vánt összetételűek, és ı́gy a lexikografikus minimum a sorvektorok átrendezése nélkül meghatározható. A megoldás során előállı́tott három táblázaton kontrollálható a P(0) Â 0, P(1) Â 0, P(2) Â 0 és q(0) ≺ q(1) ≺ q(2) relációk teljesülése. Szintén az alkalmazott elrendezés kapcsán felvethető az a kérdés, hogy van-e a módosı́tott szimplex algoritmusnak lexikografikus változata. Egy ilyen változat létezéséhez azt kell belátnunk, hogy a módosı́tott eljárás során előállı́tott együtthatók alapján meghatározható a szükséges lexikografikus minimum. Ez viszont teljesül, mivel az előállı́tott együtthatók
tartalmaznak egy reguláris mátrixot, amelynek sorvektorai nem konstansszorosai egymásnak. Így ½ ¾ 1 1 (bk , ak1 , . , akn ) lexmin (bkt , akt 1 , . , akt n ) = t=1,.,s akt j akj akkor és csak akkor, ha ½ ¾ 1 1 (bk , ak1 , . , ak,n+m ) lexmin (bkt , akt 1 , . , akt ,n+m ) = t=1,.,s akt j akj A fenti ekvivalencia biztosı́tja a kı́vánt algoritmus létezését. A lexikografikus szimplex algoritmus végességét bizonyı́tó 5.tétellel kapcsolatban természetesen vetődik fel az a kérdés, hogy hány iterációs lépés szükséges a (2.21) lehetséges kanonikus alakú feladat megoldásához. A válasz megadásához először magát a kérdést kell pontosı́tanunk. Az magától értetődőnek látszik, hogy a feladat méreteinek növelésével az iterációs lépések számának növekedését várhatjuk, legalábbis a szélsőséges esetektől eltekintve. Az is magától értetődő, hogy
rögzı́tett méretek mellett az iterációs lépések száma függ az együtthatók konkrét értékeitől, vagyis más-más értékek mellett más és más számú lépést kell elvégeznünk a megoldásig. Ezért eredeti kérdésünk egy pontosabb megfogalmazása a következő lehet: mi az iterációs lépések számának átlagos értéke rögzı́tett méretek mellett. A válasz megadásához természetesen szükségünk lenne a feladatban szereplő együtthatók valószı́nűségeloszlásának ismeretére, ami a gyakorlati feladatoknál általában reménytelen. Az elmúlt évtizedekben megoldott lineáris programozási feladatoknál nyert megfigyelések alapján elfogadhatónak tűnik az a becslés, hogy az iterációs lépések számának átlagos értéke 3n-nél kisebb, ahol n az egyenletek számát jelöli. A kérdés egy másik irányú pontosı́tása gyakorlati szempontból
talán kevésbé érdekes, de elméleti szempontból nagyon is az: legfeljebb hány iterációs lépést kell elvégeznünk ahhoz, hogy az optimumot megkapjuk? Ilyen szempontból jónak szokás tekinteni azokat az eljárásokat, amelyek a bemenő adatok számának egy polinomiális függvényével korlátozható lépésszámot használnak fel. Mi egy V Klee és G J Minty által 1972-ben megadott példán mutatjuk be, hogy a lexikografikus szimplex algoritmus ebből a szempontból nem jó. Tekintsük a következő feladatot: 46 x1 +x4 = 1 +x5 = 100 +20x4 x3 +200x4 +20x5 +x6 = 10000 −100x4 −10x5 −x6 =z(x) min x2 Oldjuk meg a feladatot lexikografikus szimplex algoritmussal. Mivel minden lépésben a generáló elem kijelölése egyértelmű, ezért a lexikografikus eljárás egybeesik a szimplex algoritmussal, ı́gy a megoldás során szimplex táblázatokkal dolgozhatunk. x4 x5 x6 x1 x5 x6 0 0 1 1 0 80 20
1 9800 100 −10 −1 100 x4 x2 x6 x1 ∗ 1 0 0 1 x4 1 x2 20 1 0 100 x2 −20 x3 200 20 1 10000 −1 0 −100 −10 − x1 x3 −200 ∗ − x2 x6 1 0 0 1 x1 1 0 0 1 x5 −20 1 0 80 x5 20 1 0 100 x3 200 −20 1 8200 −100 10 −1 900 x4 x2 x3 x4 ∗ − x3 −200 −20 ∗ 1 8000 1000 100 10 −1 x1 x2 x3 0 0 1 1 0 80 − x1 ∗ 1 0 0 1 x4 1 x5 20 1 0 100 x5 −20 x6 −200 −20 1 8000 x6 200 −20 1 8200 −100 −10 1 9000 100 −10 1 9100 x4 x5 x3 − x1 ∗ − x5 x3 1 0 0 1 x1 1 0 0 1 −20 1 0 80 x2 20 1 0 100 x6 −200 20 1 9800 x6 200 20 1 10000 −100 10 1 9900 100 10 1 10000 x4 x2 ∗ − 47 Az optimális megoldást 7 iterációs lépés után kaptuk meg. Általánosan is igazolható, hogy a következő x1 +xn+1 +2 · 10xn+1 +2 · 102 xn+1 . . x2 x3 . . = 1 = 100 = 1002 . = . +xn+2 +2 ·
10xn+2 +xn+3 xn +2 · 10n−1 xn+1 +2 · 10n−2 xn+2 . +x2n =100n−1 xi ≥ 0 (i = 1, . , 2n) – −10n−1 xn+1 −10n−2 xn+2 . −x2n = z(x) min feladatot megoldva lexikografikus szimplex algoritmussal (szimplex algoritmussal), a végrehajtásra kerülő iterációs lépések száma 2n − 1. Ennek szemléltetését n = 4-re a gyakorlatokra hagyjuk. A fentiekhez kapcsolódva megjegyezzük még, hogy a következő fejezetben ismertetésre kerülő további véges módszerekre (P. Wolfe és R G Bland algoritmusai) is hasonló példák konstruálhatók, vagyis azok sem szolgáltatnak polinomiális lépésszámú eljárást az optimum meghatározására. Végezetül megemlı́tjük, hogy az ismertetett lexikografikus szimplex algoritmust G. B Dantzig, A Orden és P Wolfe dolgozta ki 1955-ben Azóta számos további változata készült el a szimplex algoritmusnak, amelyek közül néhányat a következő fejezetben
ismertetünk. Feladatok 1. Rendezzük lexikografikusan az alábbi vektorokat: (3, 4, 2, 1, 0), (2, 1, −1, 0, 4), (3, 4, 1, −2, 0), (2, 1, −1, 0, 5), (3, 4, −2, 3, 4), (2, 1, −1, 0, 0). 2. Adjuk meg n-dimenziós vektoroknak egy olyan végtelen halmazát , amelynek nem létezik lexikografikus minimuma. 3. Adjunk meg olyan műveleteket, amelyekre az n × m-es valós lexikografikusan pozitı́v mátrixok halmaza zárt, azaz végrehajtva az adott műveletet egy ilyen mátrixon, az eredmény is lexikografikusan pozitı́v mátrix. 4. Oldjuk meg az alábbi feladatokat lexikografikus szimplex algoritmussal b.vált b(v) x1 x2 x3 x4 x5 x6 x7 x1 0 1 0 0 1 −2 −3 4 x2 0 0 1 0 4 −3 −2 1 x3 1 0 0 1 1 1 1 1 v=0 0 0 0 0 −1 1 −1 1 48 b.vált b(v) x1 x2 x3 x4 x5 x6 x7 x1 0 1 0 0 2 −3 −5 6 x2 0 0 1 0 6 −5 −3 2 x3 1 0 0 1 3 1 2 4 v=0 0 0 0 0 −1 1 −1 1 5.
Készı́tsük el a módosı́tott szimplex algoritmus lexikografikus változatát, és a felépı́tett algoritmussal oldjuk meg a fenti két feladatot. 6. Tekintsük a fejezet végén megadott feladatot n=4 esetén, és igazoljuk illetve válaszoljuk meg az alábbiakat: (a) Igazoljuk, hogy az első hét transzformáció során csak az első három sorból választunk generáló elemet. (b) Adjuk meg a negyedik sort és a célfüggvényt a hetedik iterációs lépés után. (c) Honnan választunk generáló elemet a nyolcadik iterációs lépéshez? (d) Adjuk meg a szimplex táblázatot a nyolcadik iterációs lépés után. Mit állapı́thatunk meg az első három sorról? 2.5 A szimplex algoritmus néhány további változata Az előző fejezetben megismert lexikografikus szimplex algoritmussal megoldódott az eljárás végességének problémája. Ennek ellenére folytatódtak az olyan jellegű vizsgálatok,
amelyek az algoritmus további változatainak kifejlesztéséhez vezettek. Ezeket a kutatásokat egyrészt az eljárás hatékonyságának növelése, másrészt az eljárás gyakorlati végrehajtásának szempontjai motiválták. A kutatások eredményeként az algoritmus számos változata került kidolgozásra. Ezek közül a továbbiakban néhány olyan változatot ismertetünk, amelyek csak a célfüggvényegyüttható és a generáló elem kiválasztásának stratégiájában térnek el a szimplex algoritmustól. Tekintettel az emlı́tett eltérésre, ezen eljárások helyessége következik a 2.2 fejezet 1, 2 és 3tételeiből, ı́gy tárgyalásuk során csak a végesség kérdésére fogunk kitérni. Szintén a stratégiák közötti eltérés miatt, bizonyos esetekben eltekintünk a konkrét eljárás megadásától, csak a célfüggvényegyüttható és a generáló elem
kiválasztásának szabályait adjuk meg. A legkorábbi változatok egyike az alábbi eljárás. A generáló elem véletlenszerű kiválasztása 49 Az algoritmusnál a célfüggvény együtthatójának kiválasztása tetszőleges rögzı́tett stratégia szerint történhet. A választott cj oszlopában a ½ min ¾ bk br bk : arj > 0, 1 ≤ r ≤ n = 1 = . = s arj ak1 j aks j egyenőséget kielégı́tő akt j (t = 1, . , s) elemek közül azonos valószı́nűséggel véletlenszerűen kiválasztunk egyet, és ezt az elemet vesszük generáló elemnek A fenti tı́pusú eljárásokra igazolást nyert, hogy bármely ilyen algoritmust egy lehetséges kanonikus alakú feladatra alkalmazva, az eljárás 1 valószı́nűséggel véges lépésben véget ér. A következő két eljárás a célfüggvény értékének változtatásához kapcsolódik. A szimplex algoritmus végrehajtása során a
legkisebb negatı́v célfüggvényegyüttható oszlopában választunk generáló elemet. A választott cj önmagában még nem biztosı́tja azt, hogy a lehető legnagyobb mértékű csökkenést érjük el a célfüggvény értékében. A 22 fejezet 2tételéből ismeretes, hogy a csökkenés nagysága cj ∆, ahol ∆ = min{br /arj : arj > 0, 1 ≤ r ≤ n}. Ennek megfelelően a változás függ ∆-tól is Másrészt a csökkenés nagyságának explicit ismerete lehetővé teszi egy olyan változat kidolgozását, amelynél minden egyes iterációs lépés során az adott lépésre vonatkozóan a lehető legnagyobb mértékben csökken a célfüggvény értéke. Ezt az elvet valósı́tja meg az eljárás következő változata. 50 A legnagyobb csökkentés módszere Az eljárás alapvetően a cj kijelölésében tér el a szimplex algoritmustól. Minden iterációs lépésnél, minden
egyes cs < 0 együtthatóra meghatározzuk a ½ ¾ br : ars > 0, 1 ≤ r ≤ n ∆s = min ars mennyiséget. Ha ezek a minimumok rendre léteznek, akkor képezzük a Θ = min{cs ∆s : cs < 0, 1 ≤ s ≤ n + m} minimumot, és kiválasztjuk a legkisebb olyan j indexet, amelyre Θ = cj ∆j teljesül. Ezt követően a cj oszlopában választunk generáló elemet a szimplex algoritmusnak megfelelően. Az eljárás ismertetett változata nem véges, azaz alkalmas lehetséges kanonikus alakú feladatra alkalmazva, az eljárás vég nélkül folytatódik. Ez kiküszöbölhető azzal, hogy a generáló elem kiválasztását nem a szimplex algoritmusnak megfelelően hajtjuk végre, hanem a lexikografikus szimplex algoritmusnál alkalmazott kiválasztási stratégiát alkalmazzuk. Mivel a lexikografikus szimplex algoritmus végességének bizonyı́tása során nem használtuk ki, hogy a negatı́v cj milyen stratégia alapján lett
kiválasztva, ezért ez a bizonyı́tás a fenti algoritmus lexikografikus változatára is érvényes, és ı́gy egy véges változatot kapunk. Nyilvánvaló, hogy az ismertetett eljárásban a cj kijelölése jelentős többlet munkával jár, ami megtérülhet olyan módon, hogy az iterációs lépések száma esetleg kevesebb, mint a szimplex algoritmusnál. Ilyen jellegű eredmény nem ismeretes, csak bizonyos számı́tógépes kı́sérletek történtek ennek alátámasztására, amelyeket a későbbiek során ismertetünk. A célfüggvény értékének változtatását másféleképp is meg lehet közelı́teni. Ehhez vegyük a bázisba bevonandó változó értékét 1-nek és egyszerű behelyettesı́téssel határozzuk meg a megfelelő megoldást. Ezek után az előállı́tott új pontot és a bázismegoldást összekötő szakasz hosszának egységnyi részére eső csökkenést
tekintsük a cj kiválasztási kritériumának. Ezt az elvet valósı́tja meg az algoritmus következő változata. A legmeredekebb csökkentés módszere Egyszerű behelyettesı́téssel belátható, hogy bármely iterációs lépésben , ha x∗ a bázismegoldás, xj nem bázisváltozó, és xj értékét 1-gyel növeljük, akkor x∗ -ból az x∗j változtatásával előállı́tott x̄ megoldásra x̄j = 1, x̄it = bt − atj (t = 1, . , n), x̄s = 0 teljesül, ahol xit a t-edik egyenletben szereplő bázisváltozó és 1 ≤ s ≤ n + m, s∈ / {i1 , . , in , j} A kapott x̄ vektor nem szükségképp lehetséges megoldás Az x̄ és x∗ pontok távolsága: v v u u n n X X u u σj = t12 + a2tj ((bt − atj ) − bt )2 = t1 + t=1 t=1 51 A célfüggvény értéke az x∗ pontban α, az x̄ pontban pedig α + cj . Így az x̄ és x∗ pontokat összekötő szakasz hosszának egységére eső csökkenés
cj /σj . A fentieknek megfelelően minden iterációs lépésében, minden egyes cs < 0 együtthatóra meghatározzuk a cs /σs mennyiséget. Ezek után képezzük a Θ = min{cs /σs : cs < 0, 1 ≤ s ≤ n + m} értéket, és kiválasztjuk a legkisebb olyan j indexet, amelyre Θ = cj /σj teljesül. Ezt követően a cj oszlopában választunk generáló elemet a szimplex algoritmusnak megfelelően. Az eljárás ismertetett változata nem véges. Hasonlóan a legnagyobb csökkentés módszerénél elmondottakhoz, végessé tehető a generáló elem lexikografikus szimplex algoritmus szerinti választásával. Nyilvánvaló, hogy az előző módszerhez hasonlóan ebben az eljárásban is cj kiválasztása jelentős többletmunkát ı́gényel. A fenti két eljárás és a szimplex algoritmus összehasonlı́tására 1963-ban H. W Kuhn és R. E Quandt végeztek számı́tógépes kisérletet Ennek során
véletlenszámgenerátorral előállı́tott feladatok sorozatán hajtották végre mindhárom algoritmust, és összehasonlı́tották az iterációs lépések számát, valamint a futási időket. A kapott eredmények azt mutatták, hogy a legmeredekebb csökkentés módszere átlagosan kevesebb iterációs lépésben véget ér, mint a másik két módszer, és erre az eljárásra a futási idők átlaga is kisebb. Hasonló vizsgálatokat végzett 1989-es vizsgadolgozatában Varga József, és az általa regisztrált átlagok is a fentieket támasztják alá. Az előzőekben tárgyalt két eljárás esetében csak a lexikografikus szimplex algoritmus generáló elem választásával lehet az eljárások végességét biztosı́tani. Szemben ezekkel az eljárásokkal, a továbbiakban ismertetésre kerülő algoritmusok mindegyike véges lépésben véget ér. Az első eljáránál, amelyet 1963-ban P
Wolfe dolgozott ki, a generáló elem kiválasztásának stratégiája biztosı́tja az eljárás végességét. P. Wolfe algoritmusa 1.lépés A tekintett lehetséges kanonikus alakú feladat jobboldalán szereplő bi (i = 1, . , n) mennyiségeket rendre helyettesı́tsük a (bi , 0) (i = 1, , n) elempárokkal 2.lépés Ha a feladat célfüggvénye nem tartalmaz negatı́v együtthatót, akkor vége az eljárásnak, a feladat bázismegoldása (a bázisváltozók értéke az elempárok első komponensével egyezik meg, ha a második komponens 0, különben a változó értéke 0) optimális megoldás. Ellenkező esetben a 3lépés következik 3.lépés Vizsgáljuk meg rendre az egyenletrendszer jobboldalán szereplő (bi , µi ) (i = 1, . , n) elempárokat, és bi = 0 esetén a (bi , µi ) párt helyettesı́tsük (1, µi +1)-gyel Ezek után vegyük a negatı́v cs -ek minimumát. Jelölje cj a minimummal
megegyező cs -ek közül a legkisebb indexűt, és térjünk rá a 4.lépésre 52 4.lépés Képezzük a µ = max{µt : 1 ≤ t ≤ n} maximumot és határozzuk meg az M = {t : 1 ≤ t ≤ n, µ = µt } halmazt, továbbá a ∆ = min{ br : arj > 0, r ∈ M } arj értéket. Ha az utóbbi minimum nem létezik és µ = 0, akkor vége az eljárásnak, a célfüggvény alulról nem korlátos a lehetséges megoldások halmazán. Ha ∆ nem létezik és µ > 0, akkor az 5.lépéssel folytatódik az eljárás Végül, ha ∆ létezik és ∆= bk1 bk = . = s , ak1 j aks j akkor válasszuk az akt j (t = 1, . , s) elemek közül a legkisebb sorindexűt generáló elemként. Jelölje a választott generáló elemet akj Ezek után hajtsuk végre a 22 fejezet 2.tételének bizonyı́tásában megadott átalakı́tásokat az ais együtthatókon és a célfüggvényegyütthatókon a szokásos módon, a (bi ,
µi ) (i = 1, . , n) elempárokon és az α konstanson pedig a következők szerint: (i) ha µi < µk (= µ), akkor (b0i , µ0i ) = (bi , µi ), (ii) ha µi = µk és i 6= k, akkor (b0i , µ0i ) = (bi − aij bk /akj , µi ), (iii) (b0k , µ0k ) = (bk /akj , µk ), ½ α, ha µk > 0, 0 (iv) α = α − cj bk /akj különben. Az átalakı́tásokkal előállı́tott új feladattal folytassuk az eljárást a 2.lépésnél 5.lépés Minden egyes t ∈ M indexre a (bt , µt ) elempárt helyettesı́tsük (0, µt − 1)gyel, majd folytassuk az eljárást a 4lépéssel Terjedemi okok miatt az algoritmus helyességének és végességének igazolásától eltekintünk. Az eljárás demonstrálására megoldjuk a Beale-féle példát, és a végrehajtás során a feladatokat szimplex táblázatukkal adjuk meg. Az induló táblázatból az 1.lépésnek megfelelően a jobboldalakat rendre elempárokkal helyettesı́tve, a
következő táblázathoz jutunk x4 x5 x6 x7 x1 1/4 −8 −1 9 (0, 0) x2 1/2 −12 −1/2 3 (0, 0) x3 0 0 1 0 (1, 0) −3/4 20 −1/2 6 0 Mivel a feladat célfüggvénye tartalmaz negatı́v együtthatót, ezért az eljárás 3.lépése következik. A (0, µi ) elempárokat (1, µi + 1)-gyel helyettesı́tve, a következőket kapjuk: 53 x1 x2 x3 x4 x5 x6 x7 1/4 −8 −1 9 (1, 1) 3 (1, 1) ∗ 1/2 −12 −1/2 0 0 1 0 (1, 0) −3/4 20 −1/2 6 0 − Most −3/4 a legkisebb cs , µ = 1, M = {1, 2}, ∆ = 1/(1/2), és ı́gy a generáló elem a24 . Végrehajtva a megfelelő átalakı́tásokat, a következő táblázathoz jutunk x2 x5 x6 x7 x1 −1/2 −2 x4 2 −24 −1 6 (2, 1) x3 0 0 1 0 (1, 0) 3/2 2 −3/4 15/2 (1/2, 1) −5/4 21/2 0 − Folytatva az eljárást a 2.lépéssel, mivel a célfüggvény tartalmaz negatı́v együtthatót, ezért a 3.lépés, majd a
4lépés következik A legkisebb célfüggvényegyüttható −5/4, µ = 1, M = {1, 2} és ∆ nem létezik, ı́gy az 5.lépést kell végrehajtani, ami a következő táblázatot eredményezi: x2 x5 x1 −1/2 −2 x4 2 −24 x3 0 0 3/2 2 x6 x7 −3/4 15/2 (0, 0) −1 6 (0, 0) ∗ 0 (1, 0) 1 −5/4 21/2 0 − A 4.lépéssel folytatva az eljárást, µ = 0, M = {1, 2, 3}, ∆ = 1, és a generáló elem a36 Végrehajtva a megfelelő átalakı́tásokat, a következő táblázathoz jutunk. x2 x5 x3 x7 x1 −1/2 −2 3/4 x4 2 −24 1 6 (1, 0) x6 0 0 1 0 (1, 0) 3/2 2 5/4 21/2 5/4 15/2 (3/4, 0) A kapott feladat célfüggvényegyütthatói rendre nemnegatı́vak, ı́gy az x̄1 = 3/4, x̄4 = 1, x̄6 = 1, x̄2 = x̄3 = x̄5 = x̄7 = 0 bázismegoldás egyben optimális megoldás is, amivel a tekintett feladatot megoldottuk. A jelen fejezetben ismertetésre kerülő utolsó eljárásnál,
amelyet 1976-ban R. G. Bland dolgozott ki, a célfüggvényegyüttható és a generáló elem kiválasztásának együttes stratégiája biztosı́tja az eljárás végességét. 54 R. G Bland algoritmusa 1.lépés Ha a tekintett lehetséges kanonikus alakú feladat célfüggvénye nem tartalmaz negatı́v együtthatót, akkor vége az eljárásnak, a feladat bázismegoldása optimális megoldás. Ellenkező esetben a 2lépés következik 2.lépés Vegyük a legkisebb indexű negatı́v célfüggvényegyütthatót, és jelölje ezt cj . Ha arj ≤ 0 (r = 1, , n), akkor vége az eljárásnak, a célfüggvény alulról nem korlátos a lehetséges megoldások halmazán. Ellenkező esetben a 3lépés következik 3.lépés Ha min{br /arj : arj > 0, 1 ≤ r ≤ n} = bk1 /ak1 j = = bks /aks j , akkor tekintsük rendre a k1 -edik, . , ks -edik egyenletekben szereplő xik1 , , xiks bázisváltozókat, és
legyen ikv = min{ikr : 1 ≤ r ≤ s}. Ezek után válasszuk akv j -t generáló elemnek, majd hajtsuk végre a 2.2 fejezet 2tételének bizonyı́tásában megadott átalakı́tásokat. Az előállı́tott lehetséges kanonikus alakú feladattal folytassuk az eljárást az 1lépésnél Az eljárás végességének igazolásától eltekintünk. Az algoritmus demonstrálására ismét a Beale-féle példát használjuk. A végrehajtás során a feladatok helyett az együtthatókat tartalmazó táblázatokkal dolgozunk. Ennek megfelelően az induló táblázat a következő: b.vált b(v) x1 x2 x3 x4 x5 x6 x7 x1 0 1 0 0 1/4 −8 −1 9 x2 0 0 1 0 1/2 −12 −1/2 x3 1 0 0 1 0 0 1 0 v=0 0 0 0 0 −3/4 20 −1/2 6 3 A legkisebb indexű negatı́v célfüggvényegyüttható c4 = −3/4 és ∆ = 0/(1/4) = 0/(1/2). Az első egyenletben szereplő bázisváltozó x1 , a második egyenlet
bázisváltozója x2 Így a tekintett bázisváltozók közül a legkisebb indexű x1 , és ı́gy a14 -et kell generáló elemnek választanunk. Végrehajtva a megfelelő átalakı́tásokat, az alábbi táblázathoz jutunk. b.vált b(v) x1 x2 x3 x4 x5 x6 x7 x4 0 4 0 0 1 −32 −4 36 x2 0 −2 1 0 0 4 3/2 −15 x3 1 0 0 1 0 0 1 0 v=1 0 3 0 0 0 −4 −7/2 33 ∗ A legkisebb indexű negatı́v célfüggvényegyüttható c5 = −4. ∆ = 0/4, és ı́gy a25 a generáló elem. Végrehajtva a transzformációt, a következő táblázatot kapjuk 55 b.vált b(v) x1 x2 x3 x4 x5 x4 0 −12 8 0 1 0 x5 0 −1/2 1/4 0 0 1 x3 1 0 0 1 0 0 1 0 v=2 0 1 1 0 0 0 −2 18 x6 ∗ 8 x7 −84 3/8 −15/4 A legkisebb indexű negatı́v célfüggvényegyüttható c6 = −2. ∆ = 0/8 = 0/(3/8) és a megfelelő bázisváltozók x4 és x5 . Így a választott
generáló elem a16 Végrehajtva az átalakı́tásokat a következő táblázat adódik. b.vált b(v) x1 x2 x3 x4 x5 x6 x7 x6 0 −3/2 1 0 1/8 0 1 −21/2 x5 0 ∗ 1/16 −1/8 0 −3/64 1 0 3/16 x3 1 3/2 −1 1 −1/8 0 0 21/2 v=3 0 −2 3 0 1/4 0 0 −3 Most cj = c1 = −2, ∆ = 0/(1/16), és ı́gy a generáló elem a21 . Végrehajtva a transzformációt, az alábbi együtthatókat kapjuk. b.vált b(v) x1 x2 x3 x4 x5 x6 x7 x6 0 0 −2 0 −1 24 1 −6 x1 0 1 −2 0 −3/4 16 0 3 x3 1 0 ∗ 2 1 1 −24 0 6 v=4 0 0 −1 0 −5/4 32 0 3 A fenti feladatban cj = c2 = −1, ∆ = 1/2, és ı́gy a generáló elem a32 . Végrehajtva a megfelelő átalakı́tásokat, a következő táblázathoz jutunk. b.vált b(v) x1 x2 x3 x4 x5 x6 x7 x6 1 0 0 1 0 0 1 0 x1 1 1 0 1 1/4 −8 0 9 x2 1/2 0 1 1/2 1/2 −12 0 3 v=5 1/2 0 0 1/2 −3/4
0 6 ∗ 20 Most cj = c4 = −3/4, ∆ = (1/2)/(1/2), és ı́gy akj = a34 . Végrehajtva a transzformációt a következő táblázat adódik 56 b.vált b(v) x1 x2 x3 x4 x5 x6 x7 x6 1 0 0 1 0 0 1 0 x1 3/4 1 0 −2 0 15/2 x4 1 0 2 1 1 −24 0 6 v=6 5/4 0 3/2 5/4 0 2 0 21/2 −1/2 3/4 A kapott táblázatban a célfüggvényegyütthatók rendre nemnegatı́vak, ı́gy az x̄1 = 3/4, x̄4 = 1, x̄6 = 1, x̄2 = x̄3 = x̄5 = x̄7 = 0 bázismegoldás egyben optimális megoldás is, amivel a tekintett feladatot megoldottuk. A fenti eljárással kapcsolatban vegyük észre, hogy az eljárás szimplex táblázatokkal is végrehajtható, csak a negatı́v cj kiválasztásánál figyelni kell az oszlopokhoz tartozó változók indexét. Ezzel a szimplex algoritmus és különböző változatainak tárgyalását befejeztük. A következő fejezetben visszatérünk az alap célkitűzéshez,
a standard feladatok megoldásához. Feladatok 1. Oldjuk meg a legnagyobb csökkentés módszerével az alábbi feladatot x1 +6x4 +8x5 −x6 +x7 = 4 x2 +2x4 +4x5 +2x7 = 4 x3 −x4 +x6 +x7 = 6 xi ≥ 0 (i = 1, . , 7) −2x4 −4x5 −x6 +3x7 =z(x) min 2. Épı́tsük fel a legnagyobb csökkentés módszerének lexikografikus változatát, és oldjuk meg az eljárással a következő feladatot. b.vált b(v) x1 x2 x3 x4 x5 x6 x7 x8 x1 0 1 0 0 2 −2 2 4 0 x2 1 0 1 0 −1 2 −1 1 0 x3 0 0 0 1 1 −1 1 3 1 v=0 0 0 0 0 −2 1 −2 2 −3 57 3. Oldjuk meg a legmeredekebb csökkentés módszerével a következő feladatot x4 x5 x6 x1 1 2 −1 2 x2 1 2 1 6 x3 2 3 3 8 −4 −5 −3 0 4. Oldjuk meg a Wolfe-féle eljárással az alábbi feladatot x4 x1 x5 x6 x7 −2 −9 1 9 0 x2 1 3 1 − 13 −2 0 x3 1 1 1 1 1 −2 −3 1 12 0 5. Alkalmazzuk a Bland-féle
módszert a következő feladat megoldására b.vált b(v) x1 x2 x3 x4 x5 x6 x7 x1 0 1 0 0 1 −2 −4 4 x2 0 0 1 0 2 −2 −2 1 x3 1 0 0 1 1 1 3 2 v=0 0 0 0 0 −1 0 −1 1 2.6 Szimplex módszer A 2.1 fejezetben megmutattuk, hogy tetszőleges lineáris programozási feladat megoldása visszavezethető egy alkalmas standard feladat megoldására. Ezt követően olyan eljárásokkal ismerkedtünk meg, amelyekkel speciális standard feladatot, nevezetesen a lehetséges kanonikus alakú feladatot lehet megoldani. Most a szimplex algoritmust felhasználva, olyan eljárást épı́tünk fel, amely alapján tetszőleges standard feladatról eldönthető, hogy létezik-e optimális megoldása, és ha létezik, akkor a szóban forgó algoritmus egy optimális megoldást is szolgáltat. 58 Az eljárás felépı́téséhez szükségünk lesz bizonyos összefüggésekre, fogalmakra. A
továbbiakban ezeket adjuk meg. E célból tekintsük az alábbi standard feladatot: Ax = b x ≥ 0, (b ≥ 0) – α + cx = z(x) min (2.61) A fenti feladatot illetően érvényes a következő állı́tás. 6.tétel Ha a (261) feladatban az xi1 , , xin változókhoz tartozó együtthatókból álló B mátrix reguláris és B−1 b ≥ 0, továbbá d a (ci1 , . , cin ) vektort jelöli, akkor a B−1 Ax = B−1 b , x ≥ 0, (B−1 b ≥ 0) – α + dB−1 b + (c − dB−1 A)x = z(x) min feladat lehetséges kanonikus alakú, és ekvivalens a (2.61) feladattal Bizonyı́tás. Elsőként megmutatjuk, hogy a fenti feladatban bármely 1 ≤ t ≤ n indexre az xit változó együtthatóiból álló oszlopvektor pontosan a t-edik egységvektor. Valóban, B−1 Ait = B−1 Bt = Et , ahol Ait az A mátrix it -edik oszlopvektorát, Bt a B mátrix t-edik oszlopvektorát és Et a t-edik egységvektort jelöli. Ez pontosan azt jelenti,
hogy a fenti egyenletrendszerben az xit együtthatóiból álló oszlopvektor megegyezik a t-edik egységvektorral. Ezek után vizsgáljuk az xit változó c0it együtthatóját a fenti célfüggvényben. c0it = cit − dB−1 Ait = cit − dB−1 Bt = cit − dEt = cit − cit = 0 . A fentiekből következik, hogy a tételben megadott feladat sor- és oszlopcserékkel, a változók átjelölésével (2.21) alakban ı́rható fel, azaz lehetséges kanonikus alakú Az ekvivalencia igazolásához jelölje LA a (2.61) feladat, LB−1 A a fenti feladat lehetséges megoldásainak halmazát Jelölje továbbá LBB−1 A a BB−1 Ax = BB−1 b, x ≥ 0 feltételrendszer által meghatározott lehetséges megoldások halmazát. Nyilvánvaló, hogy LA = LBB−1 A Másrészt tekintsük a fenti feladat s-edik (B−1 )s Ax = (B−1 )s b egyenletét, ahol (B−1 )s a B−1 mátrix s-edik sorvektora. Jelölje β1 , . , βn ezen sorvektor
komponenseit Akkor a tekintett egyenlet a következő: n X m n X X βi ( aij xj ) = βi bi , azaz i=1 j=1 n X i=1 i=1 m X βi ( aij xj − bi ) = 0 . j=1 Az utóbbi egyenletből nyilvánvaló, hogy a (2.61) feladat tetszőleges x̄ ∈ LA lehetséges megoldása kielégı́ti ezen egyenletet. Mivel az s indexre nem tettünk semmi kikötést, ezért x̄ a B−1 Ax = B−1 b egyenletrendszer minden egyenletét kielégı́ti, amiből x̄ ∈ LB−1 A , és ı́gy LA ⊆ LB−1 A következik. Teljesen hasonlóan belátható, hogy LB−1 A ⊆ 59 LBB−1 A . A kapott tartalmazásokból és az LA = LBB−1 A egyenlőségből LA = LB−1 A következik, amivel az ekvivalencia teljesülésének egyik feltételét igazoltuk. Befejezésül a két célfüggvénynek az LA halmazon történő egybeesését kell megmutatnunk. E célból legyen x̄ ∈ LA tetszőleges Akkor α + dB−1 b + (c − dB−1 A)x̄ = α + cx̄ + dB−1 (b − Ax̄)
= α + cx̄ . Ezzel a 6.tétel bizonyı́tását befejeztük Algebrából ismeretes, hogy egy egyenletrendszernek nem szükségképp létezik megoldása. Így a (261) feladat esetén is előfordulhat, hogy a feladat egyenletrendszerének nem létezik nemnegatı́v megoldása Egy ilyen megoldás létezésének, illetve nem létezésének eldöntéséhez fel fogjuk használni a (261) feladathoz konstruált következő feladatot: (2.62) Ev + Ax = b, x ≥ 0, v ≥ 0, (b ≥ 0) v1 + . + vn = w min A fenti feladatban szereplő v1 , . , vn változókat mesterséges változóknak, a feladat célfüggvényét pedig másodlagos célfüggvénynek nevezzük Abból a célból, hogy megkülönböztessük a többi változót a mesterséges változóktól, illetve a két célfüggvényt egymástól, használni fogjuk az x1 , . , xm változókra a természetes változók, a z célfüggvényre pedig az elsődleges
célfüggvény elnevezést. A (2.62) feladattal kapcsolatban vegyük észre, hogy a w célfüggvény egyenletéhez rendre hozzáadva minden egyes egyenlet −1-szeresét, egy lehetséges kanonikus alakú feladatot kapunk. Másrészt könnyen belátható, hogy az ı́gy előállı́tott célfüggvény a lehetséges megoldások halmazán megegyezik a w = v1 + . + vn függvénnyel Ez azt jelenti, hogy az előállı́tott alábbi feladat ekvivalens a (2.62) feladattal (2.63) Ev + Ax = b, x ≥ 0, v ≥ 0, (b ≥ 0) – m X n n X X − ( atj )xj = w − bt min j=1 t=1 t=1 A (2.61) és (263) feladatok között szoros kapcsolat van, amint azt a következő állı́tás mutatja. 4.segédtétel A (261) feladatnak akkor és csak akkor létezik lehetséges megoldása, ha a (2.63) feladat optimuma 0-val egyenlő Bizonyı́tás. Elsőként vegyük észre, hogy az állı́tás implicit módon magába foglalja azt is, hogy a (2.63)
feladatnak létezik optimális megoldása Így mindenekelőtt ezt kell megmutatnunk. Ehhez oldjuk meg a (263) feladatot lexikografikus szimplex algoritmussal. A 24 fejezet 5tétele szerint az eljárás véges lépésben véget ér Ez kétféleképp történhet. Vagy eljutunk egy optimális megoldáshoz, vagy azt kapjuk, hogy a célfüggvény alulról nem korlátos a lehetséges megoldások L halmazán. Mivel a (2.62) feladat célfüggvénye bármely lehetséges megoldáson nemnegatı́v értéket vesz fel, ezért az ekvivalencia miatt az átalakı́tott célfüggvény is nemnegatı́v L-en, és ı́gy az 60 L halmazon 0 alsó korlátja a feladat célfüggvényének. Ez azt jelenti, hogy az eljárás csak egyféleképp, az optimális megoldás elérésével fejeződhet be. Következésképp, a (2.63) feladatnak mindig létezik optimális megoldása, és az optimum értéke nemnegatı́v Ezzel megmutattuk, hogy az
állı́tás korrekt A feltétel elegendőségének igazolásához tegyük fel, hogy (v̄, x̄) a (2.63) feladat optimális megoldása, és w(v̄, x̄) = 0. Ekkor az ekvivalencia miatt v̄1 + + v̄n = 0 Másrészt v̄ ≥ 0, ezért a fenti egyenlőségből v̄t = 0 (t = 1, . , n) következik De ekkor E0 + Ax̄ = b, x̄ ≥ 0 teljesül, ami pontosan azt jelenti, hogy x̄ lehetséges megoldása a (2.61) feladatnak A szükségesség igazolásához tegyük fel, hogy x̄ lehetséges megoldása (2.61)-nek Ekkor x̄ ≥ 0 és Ax̄ = b teljesül. Most legyen v̄ = 0 Akkor Pn(v̄, x̄) lehetséges megoldása (2.63)-nak Másrészt az ekvivalencia miatt w(v̄, x̄) = t=1 v̄t = 0, és ı́gy w L-en való nemnegativitásával azt kapjuk, hogy (v̄, x̄) optimális megoldása (2.63)nak Ezzel a feltétel szükségességét, és egyben az állı́tást is igazoltuk Megemlı́tjük, hogy a fenti segédtételnek és a 2.1 fejezet
1segédtétele bizonyı́tásának felhasználásával egy olyan eljárás készı́thető, amellyel tetszőleges egyenletrendszerről eldönthető, hogy létezik-e megoldása, és ha igen, akkor az eljárás szolgáltat is egy megoldást. A 6.tétel és a 4segédtétel alapján a (261) feladat megoldására az alábbi eljárást épı́thetjük fel. Szimplex módszer 1.lépés Konstruáljuk meg a (261) feladathoz a megfelelő (263) feladatot, és ezt oldjuk meg a szimplex algoritmus valamelyik változatával. Ha az optimum értéke pozitı́v, akkor vége az eljárásnak, a (2.61) feladatnak nincs lehetséges megoldása Ellenkező esetben folytassuk az eljárást a 2.lépéssel 2.lépés Ha az 1lépés végrehajtása után kapott feladat bázisváltozói között nem szerepel mesterséges változó, akkor a 3.lépés következik Ellenkező esetben távolı́tsuk el a mesterséges változókat a
bázisváltozók közül a következők szerint. (i) Az eltávolı́tandó mesterséges változók közül vegyük az olyan legkisebb indexűt, amelynek egyenlete tartalmaz 0-tól különböző, természetes változóhoz tartozó együtthatót. Ha ilyen nincs, akkor folytassuk az eljárást az (ii) eljárásrésszel Ha létezik ilyen tulajdonságú mesterséges változó, akkor a kiválasztott egyenletben vegyük a 0-tól különböző, természetes változókhoz tartozó együtthatók közül a legkisebb indexűt. Ezzel, mint generáló elemmel hajtsuk végre a 22 fejezet 2tételénél megadott átalakı́tásokat. Ha az előállı́tott új feladat bázisváltozói között nincs mesterséges változó, akkor folytassuk az eljárást a 3.lépéssel Ellenkező esetben az algoritmus az (i) eljárásrész ismételt végrehajtásával folytatódik. (ii) Hagyjuk el az eltávolı́tandó mesterséges
változókat egyenleteikkel együtt a feltételrendszerből, majd folytassuk az eljárást a 3.lépéssel 3.lépés Hagyjuk el a feltételrendszerből a mesterséges változókat és együtthatóikat Az ı́gy kapott feltételrendszerhez vegyük hozzá az α + cx = z elsődleges célfüggvényt, majd a z célfüggvény egyenletéhez rendre adjuk hozzá a t-edik egyenlet 61 −cit -szeresét, ahol it a t-edik (t = 1, . , s) egyenletben szereplő bázisváltozó indexe és s a bázisváltozók száma. Az ı́gy előállı́tott, a (261) feladattal ekvivalens lehetséges kanonikus alakú feladatot oldjuk meg a szimplex algoritmus valamelyik változatával. Az eljárás helyességének igazolása Az 1.lépés helyessége következik a 4segédtételből A 2. és 3lépések végrehajtására csak akkor kerül sor, ha az 1lépésben megoldott feladat optimuma nem pozitı́v. A 4segédtétel bizonyı́tásából
tudjuk, hogy a szóban forgó optimum nemnegatı́v. Következésképp, a vizsgált eljárásrész akkor kerül végrehajtásra, ha az optimum értéke 0. Az eljárás helyességének igazolásához elsőként tegyük fel, hogy az 1.lépés után előálló feladat bázisváltozói között nincsen mesterséges változó. Jelölje xi1 , , xin a bázisváltozókat, és B a felsorolt változók (2.63)-beli együtthatóiból álló mátrixot Akkor a 4.tétel és az azt követő második megjegyzés alapján, a tekintett feladat feltételrendszere a következő: (2.64) B−1 Ev + B−1 Ax = B−1 b, x ≥ 0, v ≥ 0. Mivel ez egy lehetséges kanonikus alakú feladat feltételrendszere, ezért B−1 b ≥ 0. Másrészt vegyük észre, hogy mivel az xi1 , . , xin változók mindegyike természetes változó, ezért az xi1 , . , xin változók (261)-beli együtthatóiból álló mátrix is egyenlő
B-vel. De akkor B reguláris és B−1 b ≥ 0, ı́gy a 6tétel alapján a (261) feladat ekvivalens az alábbi lehetséges kanonikus alakú feladattal: (2.65) B−1 Ax = B−1 b , x ≥ 0, (B−1 b ≥ 0) , α + dB−1 b + (c − dB−1 A)x = z(x) min ahol d az xi1 , . , xin változókhoz tartozó, az α + cx = z célfüggvényben szereplő együtthatókból álló vektor. Most megmutatjuk, hogy az eljárás 3.lépésében előálló feladat megegyezik a (2.65) lehetséges kanonikus alakú feladattal Valóban, nyilvánvaló, hogy a (2.64) feltételrendszeréből elhagyva a mesterséges változókat oszlopaikkal együtt, a (2.65) feladat feltételrendszeréhez jutunk Másrészt a (2.65) feladat t-edik egyenlete (B−1 )t Ax = (B−1 )t b, ahol (B−1 )t a B−1 mátrix t-edik sorvektorát jelöli. Rendre hozzáadva a α + cx = z egyenlethez a t-edik egyenlet −cit -szeresét, a következő egyenletet kapjuk: α + cx − n X cit
(B−1 )t Ax = z − t=1 Mivel d = (ci1 , . , cin ) és az Pn n X cit (B−1 )t b. t=1 −1 )t t=1 cit (B = dB−1 , ezért a fenti egyenlet megegyezik α + (c − dB−1 A)x = z − dB−1 b egyenlettel, ami pontosan a (2.65) feladat célfüggvényének egyenlete Ezzel a két feladat egyenlőségét, és ı́gy a vizsgált eljárásrész helyességét is igazoltuk. 62 Az (i) és (ii) eljárásrészek helyességének igazolásához tegyük fel, hogy az 1.lépés utáni feladat bázisváltozói között van mesterséges változó. Legyen egy ilyen változó vk , és tegyük fel, hogy vk az i-edik egyenletben szerepel. Akkor az i-edik egyenlet a következőképp ı́rható fel: vk + a0i1 y1 + . + a0im ym = b0i , ahol a0it (t = 1, . , m), b0i az i-edik egyenletben szereplő együtthatókat, ys (s = 1, . , m) pedig az egyenlet változóit jelöli Mivel vk bázisváltozó, ezért a feladat 0 (v̄, x̄)
bázismegoldásában v̄k = bP i . Másrészt az optimum értéke 0, és (v̄, x̄) optimális n megoldás. Így 0 = w(v̄, x̄) = t=1 v̄t De v̄t ≥ 0 (t = 1, , n), ı́gy v̄t = 0 (t = 1, . , n), amiből b0i = 0 következik Ezzel azt kaptuk, hogy minden olyan egyenletnek, amely bázisváltozóként mesterséges változót tartalmaz, 0 a jobboldala. Vizsgáljuk ezek után az (i) eljárásrészt. Ehhez tegyük fel, hogy a bázisváltozóként szereplő mesterséges változók között van olyan, jelölje ezt vi , hogy a vi -t tartalmazó vi + a0k1 y1 + . + a0km ym = b0k egyenletben valamely 1 ≤ j ≤ m indexre a0kj 6= 0 és yj természetes változó. A mesterséges változó és az egyenletében lévő együttható kiválasztására az (i) eljárásrészben megadott stratégia csak az eljárás egyértelműsı́tését szolgálja. Így tegyük fel, hogy a kiválasztott változó vi , és a sorában
kiválasztott együttható a0kj . Most az a0kj együtthatót, amely lehet negatı́v is, generáló elemnek véve, hajtsuk végre a 2.2 fejezet 2tételénél megadott átalakı́tásokat Az előállı́tott feladatról egyszerűen belátható, hogy ekvivalens a vizsgált feladattal, lehetséges kanonikus alakú, továbbá az új feladat bázisváltozói között vi nem szerepel, helyette az yj természetes változó lesz bázisváltozó. A b0k = 0 egyenlőség felhasználásával az is belátható, hogy a kapott feladatra is érvényesek a 4.tételben megadott összefüggések Szintén a b0k = 0 miatt a célfüggvény értéke nem változik, ami azt jelenti, hogy a fenti transzformációval az adott optimális megoldásról egy másik optimális megoldásra térünk át. A vizsgált eljárásrész csak véges sokszor ismétlődhet, mivel végrehajtásával eggyel csökken a bázisváltozók között
szereplő mesterséges változók száma. Így az (i) lépés véges sokszori ismétlése után az eljárás az (ii) lépéssel folytatódik, vagy a 3.lépés kerül végrehajtásra. Ez utóbbi esetben, mivel az előállı́tott feladat lehetséges kanonikus alakú, és érvényesek rá a 4.tétel összefüggései, ezért erre a feladatra is teljesülnek a 3.lépés igazolásánál elmondottak Ebből már következik az (i) eljárásrész helyessége, ha ezt közvetlenül a 3.lépés követi Vizsgáljuk végül az (ii) eljárásrészt. Ehhez tegyük fel, hogy az eddig végrehajtott lépésekkel előállı́tott feladatban bázisváltozóként rendre olyan mesterséges változók szerepelnek, amelyek egyenletében csak a mesterséges változók együtthatói között vannak 0-tól különböző együtthatók. Legyenek ezek a változók az l1 -edik, ,ls -edik egyenletben. Ekkor a többi egyenlet
bázisváltozója rendre természetes változó, jelölje ezeket a változókat xi1 , . , xin−s Jelölje most B az aktuális bázisváltozók (263)beli együtthatóiból álló mátrixot Az előzőek alapján tudjuk, hogy a 4tétel az (i) eljárásrész végrehajtása esetén is érvényes. Így a 4tételnek megfelelően a tekintett feladat feltételrendszere a következő: 63 (2.66) B−1 Ev + B−1 Ax = B−1 b, x ≥ 0, v ≥ 0 (B−1 b ≥ 0) . Másrészt a 6.tétel bizonyı́tásából ismeretes, hogy egy egyenletrendszernek egy reguláris mátrixszal történő szorzása az egyenletrendszer nemnegatı́v megoldásainak halmazát nem változtatja meg. Így a (261) feladat egyenletrendszerét megszorozva balról a B−1 mátrixszal, az előálló alábbi feladat ekvivalens a (2.61) feladattal (2.67) B−1 Ax = B−1 b x ≥ 0, (B−1b ≥ 0) - , α + cx = z(x) min Most legyen 1 ≤ t ≤ s tetszőleges.
Mivel a (266) feladat egyenletrendszerének lt edik egyenletében csak a mesterséges változóknak lehet 0-tól különböző együtthatója, és az előzőek alapján az lt -edik egyenlet jobboldala 0-val egyenlő, ezért a (2.67) feladat lt -edik egyenlete 0 = 0 alakú. Hagyjuk el a (267) feladatból az l1 -edik, , ls -edik 0 = 0 tı́pusú egyenleteket. Akkor az előálló feladat sor- és oszlopcserékkel a következő formában ı́rható fel: (2.68) Ex(1) + Dx(2) = f , x(1) ≥ 0, x(2) ≥ 0, (f ≥ 0) – , α + cx = z min ahol x(1) komponensei a vizsgált fa előzőekben rögzı́tett xi1 , . , xin−s bázisváltozói, x(2) a többi természetes változóból álló vektor, E az egységmátrix, D az x(2) -ben szereplő változókhoz tartozó együtthatóból álló mátrix, és f az új jobbolbali vektor. Mivel a 0 = 0 tı́pusú egyenletek elhagyása a megoldások halmazát nem befolyásolja, ezért a
(2.68) feladat ekvivalens (267)-tel, és ı́gy a (261) feladattal is Másrészt vegyük észre, hogy a (2.66) feladat feltételrendszeréből elhagyva az l1 edik, , ls -edik egyenleteket, majd elhagyva a mesterséges változókat oszlopaikkal együtt, az előálló feltételrendszer sor- és oszlopcseréktől eltekintve, megegyezik a (2.68) feladat feltételrendszerével Ezek után a 3lépésnek megfelelően, hozzáadva a (2.68) feladat célfüggvényének egyenletéhez rendre a t-edik egyenlet −cit -szeresét (t = 1, . , n − s), lehetséges kanonikus alakú feladathoz jutunk A célfüggvény fenti átalakı́tásáról egyszerűen belátható, hogy ez nem változtatja meg a célfüggvényt a lehetséges megoldások halmazán. Ez pontosan azt jelenti, hogy az előállı́tott lehetséges kanonikus alakú feladat ekvivalens a (2.61) feladattal Ezzel a szimplex módszer helyességének igazolását befejeztük. Az
eljárás végessége az alkalmazott szimplex algoritmustól függ. Ha a szimplex algoritmus olyan változatát alkalmazzuk, amely véges lépésben véget ér, akkor nyilvánvalóan a szimplex módszer is véges lépésben véget ér. A módszer végrehajtásának bemutatására két feladatot fogunk megoldani. Az első feladat megoldása során rámutatunk olyan technikai fogásokra, amelyek megkönnyı́tik az eljárás végrehajtását, majd a második feladat megoldásánál már felhasználjuk ezeket. Az eljárásban a szimplex algoritmusnak a szimplex táblázatokkal dolgozó változatát használjuk. 6.példa 64 x1 −x2 +2x3 −x4 = 2 2x1 +x2 −3x3 +x4 = 6 x1 +x2 +x3 +x4 = 7 xi ≥ 0 (i = 1, . , 4) 2x1 +x2 −x3 −x4 = z(x) min (1) Felvéve a j-edik egyenletbe a vj mesterséges változót (j = 1, . , 3) és a w = v1 + v2 + v3 másodlagos célfüggvényt, a következő feladathoz jutunk: v1 +x1
−x2 +2x3 −x4 = 2 v2 +2x1 +x2 −3x3 +x4 = 6 v3 +x1 +x2 +x3 +x4 = 7 vj ≥ 0 (j = 1, . , 3), xi ≥ 0 (i = 1, , 4) v1 +v2 +v3 =w min (2) Most rendre hozzáadva az egyenletek −1-szeresét a célfüggvény egyenletéhez, az alábbi lehetséges kanonikus alakú feladatot kapjuk: v1 (3) +x1 −x2 +2x3 −x4 = 2 v2 +2x1 +x2 −3x3 +x4 = 6 v3 +x1 +x2 +x3 +x4 = 7 vj ≥ 0 (j = 1, . , 3), xi ≥ 0 (i = 1, , 4) −4x1 −x2 −x4 =w − 15 min A (3) feladathoz a következő szimplex táblázat tartozik: x1 x2 x3 x4 A kapott szimplex táblázattal kapcsolatban megjegyezzük, hogy ez a (2.63) felav1 1 −1 2 −1 2 1 −3 1 dat szerkezetének ismeretében az (1) fev2 2 6 v3 1 1 1 −4 −1 1 0 ladatból közvetlenül felı́rható. (Az xj vál- 7 −1 −15 tozó oszlopában xj együtthatói, valamint a célfüggvényben az együtthatók negatı́vjainak az összege szerepel. A táblázat jobboldalán az egyenletrendszer
jobboldala, és additı́v konstansként a jobboldalak negatı́vjainak az összege szerepel.) Most hajtsuk végre a szimplex algoritmust! Az eljárás során előálló szimplex táblázatok a következők: v1 x1 x2 x3 x4 ∗ −1 2 −1 1 2 x1 v1 x2 x3 x4 1 −1 2 −1 2 3 −7 3 2 2 −1 2 5 v2 2 1 −3 1 6 v2 −2 v3 1 1 1 1 7 v3 −1 65 ∗ −4 −1 0 −1 −15 4 −5 − 8 −5 −7 − v1 v2 x3 x4 x1 1 3 1 3 − 13 0 8 3 x1 x2 − 23 1 3 − 73 1 2 3 x2 v3 1 3 − 23 ∗ 11 3 0 11 3 x3 2 3 5 3 − 11 3 0 − 11 3 v1 v2 v3 x4 4 11 3 11 1 11 0 3 7 11 1 3 5 1 − 11 − 11 1 11 2 − 11 3 11 0 1 1 1 1 0 0 − Mivel az optimum értéke 0, ezért az eljárás 2.lépése következik Tekintettel arra, hogy a bázisváltozók között nincsen mesterséges változó, az (i) és (ii) eljárásrészek nem kerülnek végrehajtásra, hanem a
3.lépéssel folytatódik az eljárás Az utolsó szimplex táblázathoz az alábbi lehetséges kanonikus alakú feladat tartozik: x1 x2 (4) 4 3 1 + 11 v1 + 11 v2 + 11 v3 =3 5 1 7 − 11 v1 − 11 v2 + 11 v3 +x4 = 3 1 2 3 x3 + 11 v1 − 11 v2 + 11 v3 =1 vj ≥ 0 (j = 1, . , 3), xi ≥ 0 (i = 1, , 4) v1 +v2 +v3 =w min Elhagyva a feltételrendszerből a mesterséges változókat, és a kapott feltételrendszerhez hozzávéve az elsődleges célfüggvényt, a következő feladatot kapjuk: x1 x2 +x4 = 3 = 3 = 1 x3 xi ≥ 0 (i = 1, . , 4) – 2x1 +x2 −x3 −x4 = z(x) min 66 Most rendre az első egyenlet −2-szeresét, a második egyenlet −1-szeresét, a harmadik egyenlet 1-szeresét hozzáadva a célfüggvény egyenletéhez, a következő lehetséges kanonikus alakú feladatot kapjuk: x1 x2 +x4 = 3 = 3 = 1 x3 xi ≥ 0 (i = 1, . , 4) – −2x4 = z(x) − 8 min A feladat szimplex táblázata a következő: A
kapott szimplex táblázattal kapcsolatban megjegyezzük, x4 x1 0 3 hogy ez közvetlenül az utolsó szimplex táblázatból felı́rha- x2 1 3 tó, csak az elsődleges célfüggvény együtthatóit és konstansát x3 0 1 −2 −8 kell külön kiszámı́tani. Ezt a külön számı́tást elkerülhetjük azzal, hogy a (3) feladat szimplex táblázatához hozzáveszünk egy további sort, amely az elsődleges célfüggvény együtthatóit tartalmazza, és ezeken az együtthatókon is, mint célfüggvényegyütthatókon végrehajtjuk az eljárást. Akkor a szimplex algoritmus végén az elsődleges célfüggvény is a kı́vánt formában szerepel, és az utolsó szimplex táblázatból közvetlenül felı́rhatjuk azt a szimplex táblázatot, amely a természetes változókat és az elsődleges célfüggvényt tartalmazza. Most végrehajtva a szimplex algoritmust, a következő szimplex
táblázatokat kapjuk: x4 x2 x1 x2 0 ∗ 1 3 3 x3 0 1 −2 −8 x1 x4 0 1 3 3 x3 0 2 1 −2 Következésképp, a tekintett feladat optimális megoldása: x̄1 = 3, x̄2 = 0, x̄3 = 1, x̄4 = 3, az optimum értéke pedig 2. 7.példa x1 +2x2 +x3 +x4 x1 −x2 +2x3 +2x4 x1 +5x2 −x4 +x5 +x5 +x5 = = = −x7 = +x7 = 4 5 3 0 0 +x6 −x6 xi ≥ 0 (i = 1, . , 7) −x1 −2x2 +x3 +4x6 +6x7 =z(x) min 67 Az induló szimplex táblázat, amelyben már mindkét célfüggvény együtthatóit szerepeltetjük a következő: v1 v2 v3 v4 v5 (z) (w) x1 1 1 1 0 0 −1 −3 x2 2 −1 ∗ 5 0 0 −2 −6 x3 1 2 0 0 0 1 −3 x4 1 2 0 −1 0 0 −2 x5 1 1 1 0 0 0 −3 x6 0 0 0 1 −1 4 0 x7 0 4 0 5 0 3 −1 0 1 0 6 0 0 −12 − Végrehajtva (a másodlagos célfüggvény szerint) a szimplex algoritmust, a következő szimplex táblázatokat kapjuk: x1 v3 v1 3/5 −2/5 v2 6/5 1/5 x2 1/5 1/5 0 v4 0 0 v5 0 (z) −3/5 2/5 (w) −9/5 6/5 x3 ∗ 1 2
0 0 0 1 −3 x4 x5 1 3/5 2 6/5 0 1/5 −1 0 0 0 0 2/5 −2 −9/5 x6 0 0 0 1 −1 4 0 x7 0 14/5 0 28/5 0 3/5 −1 0 1 0 6 6/5 0 −42/5 x4 x5 1 3/5 0 0 0 1/5 ∗ − 1 0 0 0 −1 −1/5 1 0 x6 0 0 0 1 −1 4 0 x7 0 14/5 0 0 0 3/5 −1 0 1 0 6 −8/5 0 0 − x1 v3 x3 3/5 −2/5 1 v2 0 x2 1/5 1/5 0 v4 0 0 v5 0 (z) −6/5 4/5 0 (w) 0 v1 1 −2 0 0 0 −1 3 Az utolsó szimplex táblázatban a másodlagos célfüggvény együtthatói rendre nemnegatı́vak, ezért a bázismegoldás optimális megoldás. Az optimum értéke 0, ı́gy az eljárás a 2.lépéssel folytatódik A bázisváltozók között vannak mesterséges változók. Ezek közül v4 az olyan legkisebb indexű, amelynek sorában van 0-tól különböző, természetes változóhoz tartozó együttható. A kiválasztott sorban az első ilyen együttható x4 együtthatója. Ezt választva generáló elemként, és végrehajtva a 2.2 fejezet 2tételénél
megadott átalakı́tásokat, az alábbi szimplex táblázathoz jutunk: 68 x1 v3 x3 3/5 −2/5 1 v2 0 x2 1/5 1/5 0 x4 0 0 v5 0 (z) −6/5 4/5 (w) v1 1 −2 0 0 0 −1 v4 x5 1 3/5 0 0 0 1/5 −1 0 0 0 −1 −1/5 x6 1 0 0 −1 −∗ 1 3 x7 −1 14/5 0 0 0 3/5 1 0 1 0 7 −8/5 0 A másodlagos célfüggvény együtthatóit már nem kell kiszámı́tanunk, mivel a transzformáció során a célfüggvény értéke nem változik. A kapott szimplex táblázat bázisváltozói között még mindig van mesterséges változó. A v5 változó a legkisebb indexű, amelynek sora tartalmaz 0-tól különböző, természetes változóhoz tartozó együtthatót, az első ilyen, x6 együtthatója. Ezt választva generáló elemként, végrehajtva az előı́rt átalakı́tásokat, a következő szimplex táblázatot kapjuk: x1 v3 x3 3/5 −2/5 1 v2 0 x2 1/5 1/5 0 x4 0 0 x6 0 (z) −6/5 4/5 (w) v1 1 −2 0 0 0 −1 v4 x5 1 3/5 0 0
0 1/5 −1 0 0 0 −1 −1/5 v5 1 0 0 −1 −1 3 x7 0 14/5 0 0 0 3/5 0 0 −1 0 10 −8/5 0 A táblázat bázisváltozói között még mindig szerepel mesterséges változó. A v2 változó sorában azonban csak a v3 és v1 változók együtthatója 0-tól különböző. Így az eljárás az (ii) eljárásrésszel folytatódik, azaz el kell hagyni a második egyenletet (a táblázat második sorát). Az ı́gy előállı́tott szimplex táblázat a következő: x1 v3 x3 3/5 −2/5 x2 1/5 1/5 0 x4 0 0 x6 0 (z) −6/5 4/5 (w) v1 1 0 0 0 −1 v4 x5 1 3/5 0 1/5 −1 0 0 0 −1 −1/5 v5 1 0 −1 −1 3 x7 0 14/5 0 3/5 0 0 −1 0 10 −8/5 0 Most az eljárás 3.lépésének megfelelően hagyjuk el a mesterséges változókat oszlopaikkal együtt, és hagyjuk el a másodlagos célfüggvényt Mivel az elsődleges célfüggvény a kı́vánt alakban van előállı́tva, ezért a kapott szimplex táblázaton
végrehajthatjuk a szimplex algoritmust. A végrehajtás során az alábbi szimplex táblázatokat nyerjük: 69 x3 x2 x4 x6 x1 x5 3/5 3/5 ∗ 1/5 1/5 0 0 0 0 −6/5 −1/5 x7 0 14/5 0 3/5 0 0 −1 0 10 −8/5 x3 x1 x4 x6 x2 −3 5 0 0 6 x5 0 1 0 0 1 x7 0 0 0 −1 10 1 3 0 0 10/5 − Tehát a 7.példa optimális megoldása: x̄1 = 3, x̄3 = 1, x̄t = 0 (1 ≤ t ≤ 7, t 6= 1, t 6= 3), és az optimum értéke: z(x̄) = −10/5 = −2. A szimplex módszert a szimplex algoritmussal egyidejűleg, 1947-ben G. B Dantzig dolgozta ki. Az eljárással kapcsolatban megemlı́tjük, hogy számos operációkutatás kézikönyv más szóhasználatot is tartalmaz. Szokásos az általunk megismert szimplex algoritmusra az egyfázisú szimplex módszer, a szimplex módszerre pedig a kétfázisú szimplex módszer elnevezések használata. Feladatok 1. A 4segédtételnek és a 21 fejezet 1segédtétele bizonyı́tásának
felhasználásával épı́tsünk fel olyan eljárást, amely alapján tetszőleges egyenletrendszerről eldönthető, hogy az illető egyenletrendszernek létezik-e megoldása, és ha igen, akkor az algoritmus szolgáltasson is egy megoldást. Az elkészı́tett eljárás alapján döntsük el, hogy az alábbi egyenletrendszereknek létezik-e megoldása. (a) (b) x1 +x2 −2x3 +x4 = 2 x1 −2x2 −x3 +2x4 = 3 x1 +3x4 = 9 x2 +x3 +x4 = 5 2x1 +6x2 +x3 = 10 −x1 +4x2 −6x3 = 10 x1 +x2 +x3 = 0 2x1 +5x2 −2x3 = 5 70 2. Oldjuk meg az alábbi feladatokat szimplex módszerrel: (a) x1 −x2 +2x3 −x4 = 2 2x1 +x2 −3x3 +x4 = 6 x1 +x2 +x3 +x4 = 7 xi ≥ 0 (i = 1, . , 4) 2x1 +x2 −x3 −x4 = z min (b) x1 +2x2 +x3 = 4 x1 −x2 +2x3 = 5 x1 +5x2 =4 xi ≥ 0 (i = 1, . , 3) – −x1 −2x2 +x3 = z min (c) x1 +2x2 +3x3 +2x4 −x5 = 6 2x2 +4x3 −4x4 +2x5 = 6 x2 +x3 +x4 +x5 = 5 xi ≥ 0 (i = 1, . , 5) −x1 +2x2 +x3 +x4 −x5 = z min 3. Oldjuk
meg szimplex módszerrel az alábbi feladatokat úgy, hogy szimplex algoritmusként a módosı́tott szimplex algoritmust használjuk: 3x1 +2x2 x1 +2x2 (a) (b) +x3 +5x4 +2x5 = 15 −x3 +x5 = 13 x3 +x4 +x5 +x6 = 10 xi ≥ 0 (i = 1, . , 6) −x1 −2x2 −3x3 −4x4 −5x5 = z min 5x1 −4x2 +13x3 −2x4 +x5 = 20 x1 −x2 +5x3 −x4 +x5 = 8 xi ≥ 0 (i = 1, . , 5) x1 +6x2 −7x3 +x4 +5x5 = z min 71 4. A 21 fejezet eljárását felhasználva vezessük vissza az alábbi lineáris programozási feladatokat alkalmas standard feladatokra, és oldjuk meg a kapott feladatokat szimplex módszerrel: (a) (b) 2x1 + x2 ≥ 1 x1 +x2 ≤ 3 x1 −x2 ≥ −1 x1 ≥ 0, x2 ≥ 0 −x1 +x2 = z(x) min 2x1 −2x2 +x3 = 6 3x1 −5x2 +2x3 ≤ 15 x1 +x2 −x3 ≥ 3 −x1 +3x2 −x3 ≤ −1 xi ≥ 0 (i = 1, 2, 3) −x1 +2x2 −x3 = z(x) max 72 2.7 A lineáris programozás néhány gyakorlati alkalmazása A jelen fejezetben néhány olyan gyakorlati
problémát ismertetünk, amelyek optimumszámı́tási modellje lineáris programozási feladat. Az egyik legkorábbi probléma, amely ”diéta-modell” néven ismeretes, G. J Stiglertől származik, aki a feladatot és a megfelelő modellt 1945-ben tette közzé egy közgazdasági folyóiratban. A cikk befejező részében a szerző sajnálkozását fejezte ki amiatt, hogy nem áll rendelkezésre lineáris programozási feladat megoldására szolgáló eljárás, és ı́gy a modell gyakorlati alkalmazására nincs lehetőség. Az előzőekből már tudjuk, hogy a hiányolt eljárás 1947-ben elkészült, és azóta a diéta-modell számtalan területen alkalmazást nyert. Vizsgáljuk ezek után a Stigler által felvetett problémát Diéta-modell Ismeretes, hogy az élő szervezeteknek a táplálkozás során szüksége van bizonyos anyagokra (fehérje, szénhidrát, vitaminok stb.) Másrészt a
különböző táplálékok különböző arányokban tartalmazzák ezeket az anyagokat. A rendelkezésre álló táplálékokból készı́tsünk olyan összeállı́tást, amely előı́rt mennyiségben tartalmazza a szükséges anyagokat és minimális költségű. Vezessük be a következő jelöléseket. Jelölje n a szükséges anyagok számát, m a rendelkezésre álló táplálékok számát, aij az i-edik anyag mennyiségét a j-edik táplálék egységnyi mennyiségében (i = 1, . , n; j = 1, , m), bi az i-edik anyagból szükséges mennyiséget (i = 1, . , n), cj a j-edik táplálék egységnyi mennyiségének az árát (j = 1, . , m), xj a j-edik táplálékból felhasználásra kerülő mennyiséget (j = 1, . , m) A bevezetett jelölésekkel a vázolt probléma az alábbi optimumszámı́tási modellel ı́rható le: m X aij xj ≥ bi (i = 1, . , n) j=1 xj ≥ 0 (j = 1,
. , m) m X cj xj = z(x) min j=1 A fenti feladat i-edik egyenlőtlensége biztosı́tja, hogy az összeállı́tott eledel az i-edik anyagból legalább bi mennyiséget tartalmaz. 72 A modellhez kapcsolódva megemlı́tjük, hogy igen sikeresen alkalmazták különböző állatok takarmányozására, és számos élelmiszeripari alkalmazás (például húskészı́tmények előállı́tása) ismertes. Emberi étrend összeállı́tásával is kisérleteztek, de ez nem járt sikerrel. G B Dantzig az átlagos amerikai ember optimális étrendjét számı́tva, arra az eredményre jutott, hogy ezt akkor érik el, ha napi 17 liter ecetet vagy napi 14 csésze tejeskávét isznak. A furcsa eredmény minden bizonnyal annak köszönhető, hogy az emberi táplálkozás igen sokrétű, változatos, és ı́gy az ezt leı́ró modellek nem tükrözik megfelelően a valóságot. A táplálkozáson kivül a diéta-modell
alkalmazható olyan problémáknál is, amikor előı́rt összetételű anyagot kell előállı́tani adott keverékanyagokból minimális költséggel. Ez számos, további sikeres alkalmazást tett lehetővé a vegyiparban, a gyógyszergyártásban és a különböző ötvözetek előállı́tásánál. A következő, tárgyalásra kerülő modellhez az 1.fejezetben megfogalmazott probléma általánosı́tásával juthatunk el Termelés korlátozott erőforrásokból maximális nyereséggel Adott egy üzem, amely bizonyos termékeket állı́t elő, és a termelés során bizonyos erőforrásokat (anyagok, energia, munkaerő stb.) használ fel Határozzuk meg a maximális nyereséget eredményező termelési tervet, ha az erőforrások korlátozottak, és ismeretes az egyes termékeknek az erőforrásokra vonatkozó szükséglete. Vezessük be a következő jelöléseket. Jelölje n az
erőforrások számát, m a termékféleségek számát, aij a j-edik termékféleség egységnyi mennyiségégének gyártásához szükséges mennyiséget az i-edik erőforrásból (i = 1, . , n; j = 1, , m), bi az i-edik erőforrásból rendelkezésre álló mennyiséget (i = 1, . , n), cj a j-edik termékféleség egységnyi mennyiségének gyártásával keletkező nyereséget (j = 1, . , m), xj a j-edik termékféleségből gyártásra kerülő mennyiséget (j = 1, . , m) A bevezetett jelölésekkel a vázolt probléma az alábbi optimumszámı́tási modellel ı́rható le: m X aij xj ≤ bi (i = 1, . , n) j=1 xj ≥ 0 (j = 1, . , m) m X cj xj = z(x) max j=1 A fenti feladat i-edik egyenlőtlensége garantálja, hogy a termelés során az i-edik erőforrásból felhasznált mennyiségek összege nem haladja meg az i-edik erőforrásból rendelkezésre álló bi mennyiséget. 73 A
modellel kapcsolatban megemlı́tjük, hogy 1950 és 1960 között számos könyv és cikk tartalmazott az üzemi termelés optimalizálásával foglalkozó, különböző modelleket. Ezek közül az előzőekben ismertetett, amely megtalálható R Dorfman egy 1951-ben megjelent munkájában, az egyik legegyszerűbb változat. A következő, egyben a jelen fejezetet befejező modellel egy mezőgazdasági alkalmazást mutatunk be. Maximális nyereséget biztosı́tó vetésterv készı́tése előı́rt termelési minimumok mellett Adott egy mezőgazdasági egység, amely különböző hozamú földterületeken bizonyos mezőgazdasági termékeket termel. Az egyes termékféleségekre elő van ı́rva egy minimális termelendő mennyiség. Határozzunk meg egy olyan vetéstervet, amely maximális nyereséget biztosı́t. Vezessük be a következő jelöléseket. Jelölje n a különböző földterületek
számát, m a termékféleségek számát, ti az i-edik földterület nagyságát (i = 1, . , n), aij az i-edik földterület egységnyi részén a j-edik termékféleségből várható mennyiséget (i = 1, . , n; j = 1, , m), bj a j-edik termékféleségből előı́rt minimális mennyiséget (j = 1, . , m), cij a j-edik termékféleség egységnyi mennyiségének termelésével keletkező nyereséget az i-edik földterületen (i = 1, . , n; j = 1, , m), xij az i-edik földterületen a j-edik termékféleség termelésére beállı́tott terület nagyságát (i = 1, . , n; j = 1, , m) A bevezetett jelölésekkel a következő feltételeket tudjuk megfogalmazni. Egyrészt az i-edik földterületen a különböző termékféleségek termelésére beállı́tott területek P m j=1 xij összege nem haladhatja meg az i-edik földterület ti nagyságát. Következésképp, minden i indexre a m
X xij ≤ ti j=1 egyenlőtlenségnek kell teljesülni. Másrészt a j-edik termékféleségből tervezett összes P n i=1 aij xij mennyiség nem lehet kisebb, mint az előı́rt bj , ı́gy minden j indexre teljesülnie kell a n X aij xij ≥ bj i=1 egyenlőtlenségnek. Végül a várható nyereséget megkapjuk, ha földterületenként és termékféleségekként a tervezett aij xij mennyiségeket rendre megszorozzuk a cij egységárakkal és i-re, j-re összegzünk. Az elmondottak alapján a vázolt problémát a következő optimumszámı́tási modellel ı́rhatjuk le: 74 m X xij ≤ ti (i = 1, . , n) j=1 n X aij xij ≥ bj (j = 1, . , m) i=1 xij ≥ 0 (i = 1, . , n; j = 1, , m) m X n X aij xij cij = z(x) max j=1 i=1 Az ismertetett gyakorlati alkalmazások kapcsán hangsúlyoznunk kell, hogy a lineáris programozásnak számos, további érdekes alkalmazása ismeretes. Nyilvánvaló, hogy egy jegyzet
keretein belül csak bizonyos számú modellt lehet ismertetni. A fenti három feladat kiválasztásánál ezen modellek egyszerűsége, széleskörű alkalmazhatósága motivált bennünket. Feladatok 1. S Vajda 1961-ben a diéta-modell demonstrálására az alábbi, egyszerűsı́tett táplálkozási problémát adta meg. A napi étkezések során a következő táplálkozási értékeket kell elfogyasztani: 70gr fehérje, 3000 kalória, 800mg kalcium, 12mg vas . A rendelkezésre álló ételek: barnakenyér, sajt, vaj, pirı́tott bab és spenót, és ezekből 100gr rendre 3, 7, 7, 5, 2 dollárba kerül. Határozzunk meg egy minimális költségű összeállı́tást, ha a felsorolt élelmiszerekben a táplálkozási értékek a következők: fehérje gr kalória kalcium mg vas mg 100gr barnakenyér 8.3 246 17.2 2.01 100gr sajt 24.9 423 810 0.57 100gr vaj 0.4 793 14.8 0.16 6 93 61.6 2.05 5.1
26 595 4 100gr pirı́tott bab 100gr spenót Írjuk fel és oldjuk meg a megfelelő lineáris programozási feladatot. (A számı́tást egyszerűsı́ti, ha a második egyenlőtlenség mindkét oldalát osztjuk 100-zal, és a harmadik egyenlőtlenség mindkét oldalát osztjuk 10-zel.) 75 A diéta-modellt szemléltető, következő feladat G. B Dantzig 1963-ban megjelent könyvében található. Egy vállalkozó olyan ötvözetet akar gyártani, amely 30% ólmot, 30% cinket és 40% ónt tartalmaz. A piacon az alábbi táblázatban szereplő ötvözetek vásárolhatók, amelyek összetételét és árát szintén a táblázat tartalmazza. Milyen mennyiségeket kell a vállalkozónak venni az egyes ötvözetekből, hogy az előállı́tandó ötvözet egy fontjának (1 font= 409.5 gr) minimális legyen az anyagköltsége ötvözetek A B C D E F G H I ólom% 10 10 40 60 30 30 30 50 20
cink% 10 30 50 30 30 40 20 40 30 ón% 80 60 10 10 40 30 50 10 50 1 font ára $-ban 4.1 4.3 5.8 6 7.6 7.5 7.3 6.9 7.3 Írjuk fel a megfelelő lineáris programozási feladatot. 3. A következő demonstrációs feladatot R C Pfaffenberg és D A Walker egy 1976-os munkájából választottuk. Adott egy üzem, amely négyféle terméket gyárt, és a gyártásra fordı́tható gépidő, raktárterület és munkaerő korlátozott. Gépidőből legfeljebb 180 óra, raktárterületből legfeljebb 148m2 , munkaerőből pedig legfeljebb 40 munkaóra használható fel. Az egyes termékféleségek egységnyi mennyiségének gyártásához szükséges gépidőt, raktárterületet és munkaórát az alábbi táblázat tartalmazza. 1.termék 2.termék 3termék 4termék gépidő (óra) 2 6.3 1.8 6 raktárterület (m2 ) 1.5 2 4 5 munkaóra 0.8 0.6 0.9 0.4 Határozzunk meg egy olyan
termelési tervet, amely maximális árbevételt eredményez, ha az egyes termékféleségek egységnyi mennyiségének ára rendre 3, 5, 4, 4.5 dollár Írjuk fel és oldjuk meg a megfelelő lineáris programozási feladatot. 4. Az alábbi feladatot Farkas Vilmos, egy 1972-es példája alapján készı́tettük Adott egy mezőgazdasági üzem, amely 810 hektár termőterületen kenyérgabonát, takarmánygabonát, egynyári szálastakarmányt, nedvdús takarmányt és hibridkukoricát termel. A termőföld a kenyérgabona hozama szerint három termőhelyi 76 osztályra bomlik. Az egyes termőhelyi osztályok területét, az osztályokra vonatkozó átlagterméseket, továbbá az osztályokban termelt termények 1q-ra eső nyereségét a következő táblázat adja meg, amelyben a negatı́v nyereség a veszteséges termelést jelenti. Termőhelyi osztály Kenyérgabona Takarmánygabona Egynyári
szálastakarmány Nedvdús takarmány Hibrid kukorica Rendelkezésre álló terület 1 29q/ha 28q/ha 150q/ha 260q/ha 24q/ha 80Ft/q 30Ft/q -2Ft/q -5Ft/q 140Ft/q 184ha 2 26q/ha 24q/ha 135q/ha 210q/ha 20q/ha 60Ft/q 15Ft/q -3Ft/q -8Ft/q 100Ft/q 390ha 3 23q/ha 21q/ha 120q/ha 155q/ha 16q/ha 40Ft/q -10Ft/q -4Ft/q -14Ft/q 30Ft/q 236ha Határozzunk meg egy maximális nyereséget biztosı́tó vetéstervet, ha a kenyérgabonából legalább 6300q-át, egynyári szálastakarmányból legalább 9750q-át, nedvdús takarmányból legalább 39500q-át kell termelni. (A hibridkukoricából tetszőleges mennyiség termelhető.) Írjuk fel és oldjuk meg a megfelelő lineáris programozási feladatot 2.8 Konvex poliéderek A jelen fejezetben felelevenı́tjük a felhasználásra kerülő fogalmakat, majd ezt követően a lehetséges megoldások halmazának főbb tulajdonságait vizsgáljuk. Jelölje E n az n-dimenziós euklideszi
teret. A h1 , h2 ∈ E n pontokat összekötő szakaszon a λh1 + (1 − λ)h2 pontok halmazát értjük, ahol 0 ≤ λ ≤ 1. Speciálisan, a λ = 1/2 értékkel előállı́tott h1 /2 + h2 /2 pontot a h1 , h2 pontokat összekötő szakasz felezéspontjának nevezzük. Azt mondjuk, hogy a H ⊆ E n halmaz konvex, ha H bármely két pontjával együtt a pontokat összekötő szakaszt is tartalmazza. A H halmazt zártnak nevezzük, ha H bármely konvergens pontsorozatával együtt az illető pontsorozat határértékét is tartalmazza, azaz hn ∈ H (n = 1, 2, . ) és hn h fennállásából h ∈ H következik. Azt mondjuk, hogy a H halmazPkorlátos, ha van n olyan M valós szám, hogy H bármely u = (u1 , . , un ) elemére ( i=1 u2i )1/2 ≤ M teljesül. A H halmaz h elemét a H csúcspontjának nevezzük, ha h nem áll elő két különböző H-beli pontot összekötő szakasz felezéspontjaként. A h1 , , hk ∈ E
n pontok konvex lineáris kombinációján a λ1 h1 + . + λk hk kifejezést értjük, ahol Pk n 0 ≤ λt (t = 1, . , k) és i ∈ E (i = 1, . , m) vektorok által t=1 λt = 1. Az aP m generált K konvex kúpon a K = {u : u = i=1 ai vi , vi ≥ 0 (i = 1, . , m)} = {u : u = Av, v ≥ 0} halmazt értjük. Végül a H halmazt konvex poliédernek nevezzük, 78 ha H konvex, korlátos és zárt halmaz, továbbá H-nak véges sok csúcspontja van. Ezzel kapcsolatban megjegyezzük, hogy a konvex poliéder a 2-dimenziós konvex sokszög fogalmának általánosı́tása. A konvex poliéderek egy érdekes és fontos tulajdonságát adja meg a következő, bizonyı́tás nélkül közölt állı́tás, amely a konvex poliéderek főtétele néven ismeretes. 7.tétel Egy konvex poliéder bármely pontja előállı́tható a poliéder csúcspontjainak konvex lineáris kombinációjaként A továbbiakban a megadott fogalmak
és a lineáris programozási feladatok kapcsolatát vizsgáljuk. A standard feladatot illetően érvényes a következő állı́tás 5.segédtétel Egy standard feladat lehetséges megoldásainak a halmaza zárt és konvex halmaz. Bizonyı́tás. Tekintsük a következő Ax = b, x ≥ 0, (b ≥ 0) (2.81) α + cx = z(x) min standard feladatot, és jelölje a lehetséges megoldások halmazát L. Ha L = ∅, akkor az állı́tás nyilvánvaló. Ezek után tegyük fel, hogy L 6= ∅ Elsőként a zártságot igazoljuk. Ehhez tekintsünk egy x(k) ∈ L (k = 1, 2, ), x(k) x̄ konvergens sorozatot. Legyen 1 ≤ j ≤ m tetszőleges Akkor bármely k-ra (k) (k) x(k) ∈ L fennállásából x(k) ≥ 0, és ı́gy xj ≥ 0 következik, ahol xj az x(k) vektor (k) j-edik komponensét jelöli. Másrészt limk∞ x(k) = x̄, és ı́gy limk∞ xj = x̄j Mivel (k) az utóbbi xj (k = 1, 2, . ) numerikus sorozat elemei rendre nemnegatı́vak,
ezért a sorozat határértéke szintén nemnegatı́v, amivel x̄j ≥ 0 adódik. Mivel j tetszőleges volt, ezért ebből x̄ ≥ 0 következik. Legyen most 1 ≤ i ≤ n tetszőleges, és tekintsük a (2.81) feladat i-edik egyenletét Pm (k) Mivel bármely k-ra x(k) ∈ L, ezért j=1 aij xj = bi , és ı́gy bi ≤ m X (k) aij xj ≤ bi . j=1 (k) Másrészt limk∞ x(k) = x̄ alapján limk∞ xj = x̄j . Analı́zisből ismeretes, hogy vs v, ws w numerikus sorozatok esetén βvs + s βv + γw. Pγw (k) m Ezt felhasználva, azt kapjuk, hogy az rk = j=1 aij xj (k = 1, 2, . ) sorozat Pm konvergál, és limk∞ rk = j=1 aij x̄j . De akkor a rendőr-elv alapján m X (k) bi ≤ aij xj ≤ bi ↓ j=1 bi ≤ m X ↓ ↓ aij x̄j ≤ bi j=1 Pm adódik, és ı́gy j=1 aij x̄j = bi , azaz x̄ kielégı́ti az i-edik egyenletet. Mivel i tetszőleges volt, ezért ebből Ax̄ = b adódik. 79 Összegezve, azt kaptuk, hogy x̄ ≥ 0, Ax̄ =
b, azaz x̄ ∈ L. Következésképp L zárt. Most megmutatjuk, hogy L konvex. Legyen x1 , x2 ∈ L, 0 ≤ λ ≤ 1, és tekintsük az x1 , x2 pontokat összekötő szakasz x̄ = λx1 + (1 − λ)x2 pontját. Mivel x1 , x2 ∈ L, ezért x1 ≥ 0, x2 ≥ 0. Másrészt λ ≥ 0 és 1−λ ≥ 0 Így x̄ = λx1 +(1−λ)x2 ≥ 0 Ismét x1 , x2 ∈ L fennállását felhasználva, Ax1 = b és Ax2 = b. De akkor λAx1 = λb és (1 − λ)Ax2 = (1 − λ)b, amiből λAx1 + (1 − λ)Ax2 = A(λx1 + (1 − λ)x2 ) = λb + (1 − λ)b = b , azaz Ax̄ = b. Tehát x̄ ≥ 0, Ax̄ = b, és ı́gy x̄ ∈ L Következésképp L konvex, amivel az állı́tást igazoltuk. A lehetséges kanonikus alakú feladatok és a konvex poliéderek kapcsolatát részletesebben vizsgáljuk. Ehhez tekintsük a Ax = b, x ≥ 0, (b ≥ 0) (2.82) – α + cx = z(x) min lehetséges kanonikus alakú feladatot, ahol bármely 1 ≤ i, j ≤ n indexpárra ½ 1, ha i = j, aij = cj =
0. 0 különben, A vizsgálatokhoz kiterjesztjük a 2.2 fejezetben megadott bázismegoldás fogalmát A (2.82) feladat egy x̄ lehetséges megoldását bázismegoldásnak nevezzük, ha az x̄ pozitı́v komponenseihez tartozó A-beli oszlopvektorok lineárisan független vektorrendszert alkotnak. A kiterjesztett bázismegoldás fogalmát használva, érvényes a következő állı́tás. 8.tétel Ha a (282) feladat lehetséges megoldásainak L halmaza korlátos, akkor L olyan konvex poliéder, amelynek csúcspontjai pontosan a (2.82) feladat bázismegoldásai Bizonyı́tás. A 5segédtétel alapján L konvex és zárt halmaz Másrészt a feltételek szerint L korlátos. Így L konvex poliéder voltához azt kell megmutatnunk, hogy L csúcspontjainak a száma véges. Ehhez jelölje C az L csúcspontjainak halmazát és B a (2.82) feladat bázismegoldásainak halmazát Elsőként megmutatjuk, hogy C = B. A halmazok
egyenlőségét mindkét tartalmazás fennállásával igazoljuk A C ⊆ B tartalmazást indirekt bizonyı́tjuk. Ehhez tegyük fel, hogy x̄ ∈ C és x̄ ∈ / B. Jelölje x̄ pozitı́v komponenseit x̄i1 , , x̄ik Mivel x̄ ∈ / B, ezért az A mátrix ai1 , . , aik oszlopvektorai lineárisan függő vektorrendszert alkotnak. Így vannak olyan Pk di1 , . , dik konstansok, hogy t=1 dit ait = 0 és dit 6= 0 valamely 1 ≤ t ≤ k indexre Most legyen n dit , ha j = it valamely 1 ≤ t ≤ k indexre, dj = 0 különben. Akkor a kapott egyenletet felı́rhatjuk a következő alakban: Pm (i) j=1 dj aj = 0 80 ahol bármely 1 ≤ j ≤ m indexre x̄j = 0 fennállásából dj = 0 következik, és legalább egy dj 0-tól különböző. Most legyen ε > 0 tetszőleges Akkor (i) alapján (ii) m X εdj aj = 0 , j=1 − m X εdj aj = 0. j=1 Pm Másrészt x̄ ∈ C, ı́gy x̄ ∈ L, amiből j=1 x̄j aj = b következik. A kapott
egyenletet hozzáadva az (ii) alatti egyenletekhez, azt kapjuk, hogy (iii) m X (x̄j + εdj )aj = b , m X (x̄j − εdj )aj = b j=1 j=1 teljesül, ahol ε > 0 tetszőleges. Most válasszuk meg ε-t úgy, hogy x̄j + εdj ≥ 0, x̄j − εdj ≥ 0 (j = 1, . , m) teljesüljön. Ilyen ε létezik, például ½ ¾ x̄j ε0 = min : 1 ≤ j ≤ m, dj 6= 0 |dj | esetén a tekintett mennyiségek rendre nemnegatı́vak. Legyen ūj = x̄j + ε0 dj és v̄j = x̄j − ε0 dj (j = 1, . , m) Akkor ε0 választása miatt ū ≥ 0, v̄ ≥ 0 Másrészt (iii) alapján Aū = b, Av̄ = b. Következésképp ū, v̄ ∈ L A d vektor definı́ciójából adódóan van olyan 1 ≤ j ≤ m, hogy dj 6= 0. De akkor ūj 6= v̄j , és ı́gy ū 6= v̄ Végezetül vegyük észre, hogy x̄ = (ū + v̄)/2. Ez azt jelenti, hogy x̄ az ū 6= v̄ pontokat összekötő szakasz felezéspontja, ami ellentmond annak a feltételezésnek, hogy x̄ csúcspont.
Következésképp x̄ ∈ B, és ı́gy C ⊆ B A B ⊆ C tartalmazást is indirekt bizonyı́tjuk. Tegyük fel, hogy x̄ ∈ B és x̄ ∈ / C. Az utóbbi feltevés miatt van olyan ū 6= v̄, ū, v̄ ∈ L, hogy x̄ = (ū + v̄)/2. Mivel x̄, ū, v̄ nemnegatı́v vektorok, ezért x̄ fenti előállı́tásából adódik, hogy bármely 1 ≤ j ≤ m indexre x̄j = 0 fennállásából ūj = v̄j = 0 következik. Jelölje x̄i1 , , x̄ik az x̄ pozitı́v komponenseit és aj az A mátrix j-edik oszlopvektorát. Akkor b = Ax̄ = b = Aū = b = Av̄ = m X j=1 m X j=1 m X x̄j aj = ūj aj = v̄j aj = k X t=1 k X t=1 k X x̄it ait, ūit ait, v̄it ait. t=1 j=1 Viszont ı́gy a második és harmadik egyenlet jobboldalán szereplő kifejezések egyenlők b-vel, de akkor egymással is, amivel azt kapjuk, hogy k X (ūit − v̄it )ait = 0. t=1 De x̄ ∈ B, ı́gy az x̄ pozitı́v komponenseihez tartozó ai1 , . , aik oszlopvektorok
lineárisan független vektorrendszert alkotnak. Vegyük észre, hogy a kapott kifejezésben pontosan ezzel a vektorrendszerrel állı́tjuk elő a 0-vektort A lineáris függetlenség 81 miatt a 0-vektornak csak a triviális előállı́tása létezik, ı́gy ūit − v̄it = 0 (t = 1, . , k) De akkor ū = v̄, ami ellentmondás. Következésképp B ⊆ C A bizonyı́tott tartalmazásokból B = C következik. Vizsgáljuk most B elemeinek a számát. Ehhez elsőként megmutatjuk, hogy ū 6= v̄, ū, v̄ ∈ B esetén az ū pozitı́v komponenseihez tartozó A-beli oszlopvektorok rendszere különbözik a v̄ pozitı́v komponenseihez tartozó vektorrendszertől, ha a különböző indexű vektorokat különbözőknek tekintjük. Valóban, tegyük fel az ellenkezőjét, azaz tegyük fel, hogy Pk mind az ū, mind a v̄ vektorhoz az ai1 , . , aik vektorrendszer tartozik Akkor t=1 ūit ait = b, Pk Pk t=1 v̄it ait = b,
amiből t=1 (ūit − v̄it )ait = 0. Mivel ū, v̄ ∈ B, ezért ai1 , , aik lineárisan független vektorrendszer. De akkor a 0-vektor ezen vektorokkal csak a triviális módon állı́tható elő, azaz ūit = v̄it (t = 1, . , k), ami ellentmond az ū 6= v̄ feltevésnek. Következésképp, ū 6= v̄, ū, v̄ ∈ B esetén ū-hoz és v̄-hoz indexeikben különböző lineárisan független vektorrendszerek tartoznak. Másrészt az A mátrixból kiválasztható lineárisan független páronként különböző ¡ ¢ ¡m¢ Pnés indexeikben Pn vektorrendszerek száma nem nagyobb, mint k=1 m . Következésképp, |B| ≤ k=1 k , azaz |B| k véges. Viszont ı́gy C = B alapján C is véges, amivel adódik, hogy L konvex poliéder Ezzel a 8.tétel igazolását befejeztük 82 kapcsolatban megjegyezzük, hogy a bizonyı́tás során A 8.tétel ¡m¢ Pn bizonyı́tásával használt konstans igen durva felső korlát.
Egyrészt ha {j1 , , jr } ⊂ k=1 k {i1 , . , ik }, akkor az {aj1 , , ajr } és {ai1 , , aik } vektorrendszerek közül elegendő lenne venni a nagyobb elemszámút (ld. 5feladat), másrészt az oszlopvektorok egy ai1 , . , aik lineárisan független vektorrendszeréhez Pk nem minden esetben léteznek olyan x̄it > 0, (t = 1, . k) konstansok, amelyekre t=1 ait x̄it = b teljesül Az igazolt tételt illetően természetesen vetődik fel a kérdés, hogy mit állı́thatunk a (2.82) feladat lehetséges megoldásainak L halmazáról általában, azaz L korlátosságának kikötése nélkül Erre a kérdésre ad választ a következő állı́tás 9.tétel A (282) feladat lehetséges megoldásainak halmazára a következő állı́tások érvényesek: (1) L zárt és konvex halmaz, (2) L-nek véges sok csúcspontja van, (3) ha létezik a feladatnak optimális megoldása, akkor a célfüggvény felveszi a
minimumát L valamely csúcspontjában. Bizonyı́tás. (1) következik az 5segédtételből A (2) állı́tás érvényessége adódik a 8.tétel bizonyı́tásából (3) igazolásához tegyük fel, hogy létezik a feladatnak optimális megoldása Akkor végrehajtva a (282) feladaton a lexikografikus szimplex algoritmust, véges lépésben megkapunk egy optimális megoldást Ez az eljárás utolsó feladatának triviális megoldása, de akkor a 2.3 fejezet 4tétele alapján a bázisváltozókhoz tartozó A-beli oszlopvektorokból álló mátrix reguláris. Ez viszont azt eredményezi, hogy a tekintett megoldás pozitı́v komponenseihez tartozó A-beli oszlopvektorok lineárisan független vektorrendszert alkotnak, ı́gy ez a megoldás kiterjesztett értelemben is bázismegoldás. De akkor ez a bázismegoldás a 8tétel bizonyı́tása alapján egyben csúcspontja is L-nek, amivel az állı́tást igazoltuk.
Végezetül, a fejezet befejezéseként megemlı́tjük, hogy a fentiekben igazolt összefüggések lehetővé teszik a szimplex algoritmus egy geometriai interpretációját. Az eljárás az L halmaz egy csúcspontjából indul, és minden egyes lépés végrehajtásával áttérünk egy szomszédos csúcspontra. Így az eljárás egy, az L éleiből álló utat jelöl ki. Speciálisan, ha ez az út kör, akkor lép fel a ciklizáció Feladatok 1. Adott a sı́kon három, nem egy egyenesre eső pont Igazoljuk, hogy a tekintett pontok összes lehetséges konvex lineáris kombinációinak halmaza megegyezik a három pont által meghatározott háromszöggel. 83 2. Ábrázolva az egyes feltételeket kielégı́tő ponthalmazokat, határozzuk meg rendre a lehetséges megoldások halmazát az alábbi feltételrendszerekre vonatkozóan −x +y ≤ 4 x +y ≤ 8 2x −y ≤ 4 2x−3y ≤ 0 0 ≤ x, 0 ≤ y (a) (b)
−x +y ≤ 3 y ≤5 −x−3y ≤ −6 0 ≤ x, 0 ≤ y (c) x −y ≤ −2 −y ≤ −4 x+10y ≤ 10 0 ≤ x, 0 ≤ y 3. Igazoljuk, hogy az Ax ≤ b, x ≥ 0 feltételeket kielégı́tő vektorok halmaza zárt és konvex. 4. Határozzuk meg a következő feladatok összes lehetséges bázismegoldásait: x1 (a) x2 +x3 −2x4 = 5 x1 −x3 +x4 = 7 (b) xi ≥ 0 (i = 1, . , 4) – −x3 −x4 = z min +2x3 −3x4 = 3 x2 +3x3 −x4 = 4 xi ≥ 0 (i = 1, . 4) −x3 −2x4 = z min 5. Igazoljuk, hogy amennyiben {j1 , , jr } ⊂ {i1 , , ik } és ū, v̄ a (282) feladat olyan bázismegoldásai, hogy ū pozitı́v komponensei ūj1 , . , ūjr , v̄ pozitı́v komponensei v̄i1 , , v̄ik , akkor ū = v̄ 6. Ha x(1) , x(2) a (282) feladat optimális megoldásai, akkor szokásos alternatı́v optimális megoldásokról beszélni. Igazoljuk, hogy amennyiben x(1) , , x(k) alternatı́v optimális megoldásai a (2.82) feladatnak, akkor ezen
megoldások bármely konvex lineáris kombinációja is optimális megoldás. 7. Tegyük fel, hogy a (282) feladat lehetséges megoldásainak halmaza korlátos A szimplex algoritmus használata nélkül, a 7. és 8tételeket felhasználva, igazoljuk, hogy a célfüggvény felveszi a minimumát L valamely csúcspontjában. 8. Igazoljuk, hogy az ai ∈ E n (i = 1, , m) vektorok által generált K konvex kúpra érvényesek a következő állı́tások: (1) K konvex halmaz, (2) 0 ∈ K, (3) ha a ∈ K, akkor tetszőleges λ ≥ 0-ra λa ∈ K, (4) bármely 1 ≤ i ≤ m indexre ai ∈ K. 2.9 Dualitás Tetszőleges lineáris programozási feladathoz hozzárendelhető egy másik lineáris programozási feladat, az illető feladat duálisa. A hozzárendelés rendelkezik az alábbi tulajdonságokkal: 84 (1) a duális feladatban is ugyanazon paraméterek szerepelnek, mint az induló feladatban, (2) a duális feladat duálisa
megegyezik az induló feladattal. A közös adathalmazon definiálható két lineáris programozási feladatot, és ezek szoros kapcsolatát Neumann János vetette fel 1947-ben. A későbbiekben Neumann felvetéseiből kiindulva D. Gale, H W Kuhn és A W Tucker dolgozták ki a dualitás elméletét, és igazolták a dualitási tételt. A bizonyı́tásban alapvető szerepet játszott Farkas Gyula, egy 1902-ben publikált eredménye, amely Farkas-féle lemma néven vált ismertté. A továbbiakban csak speciális esetre tárgyaljuk a feladatpárt. Nevezetesen, tekintsük az alábbi feladatot, amelyet primál feladatnak nevezünk Ax ≤ b, x ≥ 0 – cx = z(x) max (2.91) A tekintett feladathoz tartozó duál feladaton a következő problémát értjük: yA ≥ c, y ≥ 0 – yb = w(y) min (2.92) Fontosnak tartjuk megjegyezni, hogy a fenti feladatokban a b és c vektorokra egyelőre semmiféle kikötést nem teszünk.
Vizsgáljuk ezek után a két feladat kapcsolatát. Egy gyenge, de viszonylag könnyen igazolható összefüggést ad meg az alábbi állı́tás, amelyet szokásos a dualitási tétel gyenge alakjának nevezni. 10.tétel Ha x̄ lehetséges megoldása a primál feladatnak és ȳ lehetséges megoldása a duál feladatnak, akkor z(x̄) ≤ w(ȳ). Bizonyı́tás. Jelölje LP a primál és LD a duál feladat lehetséges megoldásainak halmazát. Mivel x̄ ∈ LP , ezért m X ait x̄t ≤ bi (i = 1, . , n) t=1 Másrészt ȳ ∈ LD , ı́gy ȳi ≥ 0 (i = 1, . , n) De akkor m X ait x̄t ȳi ≤ bi ȳi (i = 1, . , n) t=1 Most összegezve az egyenlőtlenségek bal- és jobboldalain szereplő mennyiségeket, n X m X i=1 t=1 ait x̄t ȳi ≤ n X bi ȳi = w(ȳ). i=1 Vizsgáljuk ezek után a baloldali összeget. Ha az ait x̄t ȳi elemet egy n × mes mátrix (i, t) indexű elemének tekintjük, akkor a kifejezés ezen mátrix
elemeinek összege, mégpedig először soronként összegzünk, majd a sorösszegeket adjuk össze. 85 Nyilván ugyanezt az összeget kapjuk akkor, ha először oszloponként összegzünk, majd az oszlopösszegeket adjuk össze. Így n X m X ait x̄t ȳi = i=1 t=1 m X n X ait x̄t ȳi = t=1 i=1 m X t=1 x̄t n X ait ȳi . i=1 Most vegyük észre, hogy a kapott kifejezésben x̄t együtthatója a duális feladat t-edik Pn egyenlőtlenségének baloldala. Mivel ȳ ∈ LD , ı́gy i=1 ait ȳi ≥ ct (t = 1, . , m) Másrészt x̄ ∈ LP , amiből x̄t ≥ 0 (t = 1, . , m) következik De akkor x̄t n X ait ȳi ≥ ct x̄t (t = 1, . , m) i=1 Ismét öszegezve a bal- és jobboldalakat, m X t=1 x̄t n X i=1 ait ȳi ≥ m X ct x̄t = z(x̄). t=1 Ezzel azt kaptuk, hogy a vizsgált összeg nem kisebb, mint z(x̄), és ı́gy z(x̄) ≤ w(ȳ), amivel adódik az állı́tás. 1.következmény Ha a primál feladat
célfüggvénye felülről nem korlátos a lehetséges megoldások halmazán, akkor a duál feladatnak nincsen lehetséges megoldása Bizonyı́tás. Az állı́tást indirekt bizonyı́tjuk Ha ȳ lehetséges megoldása lenne a duális feladatnak, akkor a 10.tétel alapján tetszőleges x̄ ∈ LP -re z(x̄) ≤ w(ȳ) teljesülne De akkor w(ȳ) felső korlátja lenne a z(x̄) (x̄ ∈ LP ) értékeknek, ami ellentmondás Teljesen hasonlóan adódik a következő állı́tás. 2.következmény Ha a duál feladat célfüggvénye alulról nem korlátos a lehetséges megoldások halmazán, akkor a primál feladatnak nincsen lehetséges megoldása A 10.tételnél erősebb állı́tás is érvényes a feladatpárra Ezt az állı́tást a már emlı́tett Farkas-féle lemma felhasználásával fogjuk igazolni. 86 6.segédtétel (Farkas-féle lemma) Az yA = c egyenletrendszernek akkor és csak akkor létezik
nemnegatı́v ȳ megoldása, ha cx̄ ≥ 0 teljesül bármely olyan x̄ vektorra, amelyre Ax̄ ≥ 0. Bizonyı́tás. Az elegendőség igazolásához tegyük fel, hogy ȳA = c, ȳ ≥ 0 Legyen x̄ tetszőleges olyan vektor, amelyre Ax̄ ≥ 0. Akkor ȳ nemnegativitása miatt ȳAx̄ ≥ 0 Másrészt az ȳA = c egyenlet mindkét oldalát szorozva jobbról x̄-sal, azt kapjuk, hogy ȳAx̄ = cx̄. Így cx̄ ≥ 0, amivel a feltétel elegendőségét igazoltuk A szükségesség igazolásához tegyük fel, hogy bármely x̄ vektorra (i) Ax̄ ≥ 0 fennállásából cx̄ ≥ 0 következik. Megmutatjuk, hogy ez esetben van olyan ȳ ≥ 0 vektor, amelyre ȳA = c teljesül. Az állı́tást indirekt bizonyı́tjuk. Ehhez tegyük fel, hogy nem létezik olyan ȳ ≥ 0, amelyre ȳA = c. Ez pontosan azt jelenti, hogy c nem eleme az A mátrix a(1) , , a(n) sorvektorai által generált K = {u : u = vA, v ≥ 0} konvex kúpnak. Most a
bizonyı́táshoz felhasználjuk azt a geometriából ismert tényt, hogy c ∈ / K esetén létezik K-nak olyan u0 eleme, amelyre c és u0 távolsága minimális, azaz | c − u0 |= min | c − u | > 0 . u∈K Megmutatjuk, hogy a K konvex kúp tetszőleges u elemére (ii) (c − u0 )(u − u0 ) ≤ 0 teljesül. (Ez azt jelenti, hogy a c−u0 és u−u0 vektorok tompaszöget vagy derékszöget zárnak be.) Az utóbbi állı́tást is indirekt bizonyı́tjuk Ha (ii) nem teljesül, akkor van olyan ū ∈ K, amelyre (iii) (c − u0 )(ū − u0 ) > 0 . Tekintsük az u0 és ū pontokat összekötő szakasz egy tetszőleges u(λ) = λū + (1 − λ)u0 (0 < λ < 1) pontját. Az előzőek alapján (2.8 fejezet 8feladat) tudjuk, hogy u(λ) ∈ K Képezzük a c (λ) és u pontok távolságának négyzetét. Akkor | c − u(λ) |2 =| c − λū − (1 − λ)u0 |2 =| (c − u0 ) − λ(ū − u0 ) |2 = | c − u0 |2 −2λ(c −
u0 )(ū − u0 ) + λ2 | ū − u0 |2 . Vizsgáljuk most az alábbi f (λ) függvényt: f (λ) = −2λ(c − u0 )(ū − u0 ) + λ2 | ū − u0 |2 . Véve f (λ) deriváltját, 87 f 0 (λ) = −2(c − u0 )(ū − u0 ) + 2λ | ū − u0 |2 , f 0 (0) = −2(c − u0 )(ū − u0 ) . Mivel (iii) alapján (c − u0 )(ū − u0 ) > 0, ezért f 0 (0) < 0. Másrészt f 0 (λ) folytonos, ı́gy van olyan ε > 0, hogy | λ |< ε esetén f 0 (λ) < 0. De akkor f (λ) a [0, ε) intervallumban szigorúan monoton csökkenő. Viszont f (0) = 0, ı́gy f (λ) < 0, ha 0 < λ < ε Ezzel | c − u(λ) |2 =| c − u0 |2 +f (λ) alapján azt kapjuk, hogy 0 < λ < ε esetén | c − u(λ) |2 <| c − u0 |2 . De u(λ) ∈ K, ı́gy a kapott egyenlőtlenség teljesülése ellentmond u0 definı́ciójának. Következésképp ellentmondáshoz jutottunk, amivel igazoltuk (ii) fennállását tetszőleges u ∈ K vektorra Mivel 0 ∈ K
és 2u0 ∈ K, ezért (ii) alapján azt kapjuk, hogy (c − u0 )u0 ≥ 0 és (c − u0 )u0 ≤ 0, amivel (iv) (c − u0 )u0 = 0 adódik. A kapott egyenlőség és (ii) alapján tetszőleges u ∈ K vektorra 0 ≥ (c − u0 )(u − u0 ) = (c − u0 )u − (c − u0 )u0 = (c − u0 )u , azaz (u0 − c)u ≥ 0 . Most megmutatjuk, hogy az (u0 − c) vektorra nem teljesül (i). Ehhez elsőként vegyük észre, hogy az A mátrix minden a(i) (i = 1, . , n) sorvektora eleme K-nak Mivel a kapott egyenlőtlenség minden u ∈ K-ra érvényes, ezért adódik, hogy a(i) (u0 − c) ≥ 0 (i = 1, . , n) , amivel azt kapjuk, hogy A(u0 − c) ≥ 0. Másrészt (iv) felhasználásával c(u0 − c) = c(u0 − c) + (c − u0 )u0 = (u0 − c)(c − u0 ) = − | u0 − c |2 < 0 . Így A(u0 −c) ≥ 0 és c(u0 −c) < 0, amivel ellentmondáshoz jutottunk. Következésképp létezik olyan ȳ ≥ 0, amelyre ȳA = c teljesül, amivel a 6.segédtételt
igazoltuk A Farkas-féle lemmával kapcsolatban megjegyezzük, hogy nyilvánvaló módon érvényben marad, ha A helyébe −A-t és egyidejűleg c helyébe −c-t helyettesı́tünk. Ekkor az állı́tás a következő formában mondható ki: 88 Az yA = c egyenletrendszernek akkor és csak akkor létezik nemnegatı́v ȳ megoldása, ha cx̄ ≤ 0 teljesül bármely olyan x̄ vektorra, amelyre Ax̄ ≤ 0. Ebben a formában használjuk fel a Farkas-féle lemmát az alábbi , erős dualitási tétel néven ismert állı́tás igazolására. 11.tétel Ha a primál, duál feladatok közül valamelyiknek létezik optimális megoldása, akkor mindkét feladatnak létezik optimális megoldása és az optimumértékek megegyeznek. Bizonyı́tás. Tegyük fel, hogy a (291) primál feladatnak létezik optimális megoldása. Jelöljön egy optimális megoldást x0 Megmutatjuk, hogy ekkor a (292) feladatnak is létezik
optimális megoldása és az optimumértékek megegyeznek. Ennek igazolásához tekintsük az alábbi egyenlőtlenségrendszert: Ax −Ex −tb −t ≤ 0 ≤ 0 ≤ 0 ahol E megfelelő méretű egységmátrixot jelöl. Vezessük be a következő jelöléseket: A −b Ā = −E 0 , c̄ = ( c, −cx0 ) . 0 −1 µ ¶ x̄ Meg fogjuk mutatni, hogy bármely vektorra t̄ (i) µ ¶ x̄ Ā ≤0 t̄ µ ¶ x̄ fennállásából c̄ ≤ 0 következik. t̄ Ekkor a 6.segédtétel alapján van olyan s̄ ≥ 0, hogy s̄Ā = c̄ Irjuk fel s̄-t s̄ = (ȳ, ū, v̄) alakban, ahol ȳ, ū, v̄ komponenseinek a száma megfelel az Ā blokkméreteinek. (ȳ-nak annyi komponense van, mint b-nek, v̄ pedig egyetlen komponensből áll.) Akkor A −b (ȳ, ū, v̄)Ā = (ȳ, ū, v̄) −E 0 = c̄ = (c, −cx0 ) , 0 −1 amiből ȳA − ūE = c , −ȳb − v̄ = −cx0 , ahol v̄ a v̄ vektor egyetlen komponensét jelöli.
Mivel ū ≥ 0, ezért az első egyenlőtlenségből ȳA ≥ c adódik. De ȳ ≥ 0, ı́gy azt kapjuk, hogy ȳ lehetséges megoldása a duál feladatnak. Másrészt v̄ ≥ 0, azaz v̄ ≥ 0, ı́gy a második egyenlőtlenségből ȳb ≤ cx0 . De a 10tétel alapján tudjuk, hogy cx0 ≤ ȳb, ı́gy cx0 = ȳb. Ebből ismét a 10tétel alapján következik, hogy a duál feladat ȳ lehetséges 89 megoldása egyben optimális megoldás is. Következésképp mindkét feladatnak létezik optimális megoldása és cx0 = ȳb alapján az optimumértékek egyenlők. Ezek után igazolnunk µ ¶kell még az (i) alatti állı́tás érvényességét. Ehhez tekintsünk x̄ egy tetszőleges olyan vektort, amelyre t̄ µ ¶ x̄ Ā ≤0 t̄ (ii) µ ¶ x̄ teljesül. Megmutatjuk, hogy ekkor c̄ ≤ 0. Ehhez vegyük észre, hogy (ii) alapján t̄ t̄ ≥ 0. A t̄ értékétől függően két esetet különböztetünk meg
(1) Tegyük fel, hogy t̄ > 0. Akkor (ii) fennállásából Ax̄− t̄b ≤ 0, és ı́gy Ax̄/t̄ ≤ b következik. Szintén (ii) alapján x̄ ≥ 0, ı́gy x̄/t̄ lehetséges megoldása a (291) primál feladatnak. Mivel x0 optimális megoldása (291)-nek, ezért cx̄/t̄ ≤ cx0 , azaz cx̄ − cx0 t̄ ≤ 0 . µ ¶ x̄ Az utóbbi egyenlőtlenség pontosan azt jelenti, hogy c̄ ≤ 0, amivel a t̄ > 0 esetre t̄ igazoltuk az állı́tást. (2) Tegyük fel, hogy t̄ = 0. Tekintsük az x0 + x̄ vektort Akkor (ii) alapján Ax̄ − bt̄ ≤ 0, azaz Ax̄ ≤ 0. Másrészt x0 a (291) feladat optimális megoldása, ı́gy Ax0 ≤ b. De akkor A(x0 + x̄) ≤ b Mivel mindkét vektor nemnegatı́v, ezért x0 + x̄ ≥ 0. Következésképp x0 + x̄ lehetséges megoldása a (291) feladatnak De x0 optimális megoldás, ı́gy c(x0 + x̄) = cx0 + cx̄ ≤ cx0 . µ A¶ kapott egyenlőtlenségből cx̄ ≤ 0 következik, de akkor cx̄ − t̄cx0
≤ 0, azaz x̄ c̄ ≤ 0, amivel a t̄ = 0 esetre is igazoltuk az állı́tást. t̄ Ezzel a 11.tételt az egyik irányban igazoltuk A megfordı́tás analóg módon bizonyı́tható A 11.tétellel kapcsolatban fontosnak tartjuk megjegyezni a következőket: (a) A Farkas-féle lemma ekvivalens az erős dualitási tétellel, azaz a 6.segédtétel megadható a 11.tétel következményeként (Ennek megmutatására itt most nem térünk ki.) (b) Léteznek az erős dualitási tételnek olyan bizonyı́tásai is, amelyek nem használják fel a 6.segédtétel állı́tását (c) Amint azt a fejezet elején emlı́tettük, tetszőleges lineáris programozási feladathoz definiálható az illető feladat duálisa. Ilyen általános esetben is érvényes az erős dualitási tétel. 90 A primál-duál feladatpár kapcsolatát felhasználva 1954-ben C. E Lemke kidolgozott egy eljárást, a duális szimplex algoritmust, amellyel
megoldhatók az alábbi tı́pusú feladatok. Ey + Ax = b, x ≥ 0, y ≥ 0, (c ≥ 0) cx = z min (2.93) A fenti feladattal kapcsolatban vegyük észre, hogy most a jobboldali b vektorra nincs előı́rva nemnegativitás, hanem a célfüggvényegyütthatók c vektoráról kötjük ki ezt a tulajdonságot. Duális szimplex algoritmus 1.lépés Ha a tekintett feladat egyenleteinek jobboldala rendre nemnegatı́v, akkor vége az eljárásnak, a feladat bázismegoldása optimális megoldás. Ellenkező esetben a 2.lépés következik 2.lépés Vegyük a negatı́v bt -k minimumát, és jelölje bk a minimummal megegyező bt -k közül a legkisebb indexűt Ha aks ≥ 0 (s = 1, , m), akkor vége az eljárásnak, a tekintett feladatnak nincsen lehetséges megoldása. Ellenkező esetben a 3.lépés következik 3.lépés Ha min{cs /−aks : aks < 0, 1 ≤ s ≤ m} = cj1 /−akj1 = = cjr /−akjr , akkor válasszuk az akjt (t = 1,
. , r) elemek közül a legkisebb oszlopindexűt generáló elemnek, majd hajtsuk végre a 2.2 fejezet 2tételének bizonyı́tásában megadott átalakı́tásokat. Az előállı́tott új feladattal folytassuk az eljárást az 1lépésnél Az algoritmust az alábbi feladat megoldásával demonstráljuk. 8.példa y1 +x1 −2x2 −3x3 −x4 = −2 y2 −x1 +2x2 +x3 −x4 = 3 y3 +x1 +x2 −x3 −2x4 = −2 yj ≥ 0 (j = 1, . , 3), xi ≥ 0 (i = 1, , 4) 2x1 +x2 +3x3 +x4 =z min Az eljárást a feladathoz tartozó szimplex táblázaton fogjuk végrehajtani. Az induló szimplex táblázat a következő: y1 x1 x2 1 ∗ x4 A jobboldalon két érték negatı́v, b1 és − 2 −3 −1 −2 y2 −1 2 y3 1 1 x3 1 −1 b3 . Mindkét érték −2, és b1 közülük a 3 −1 −2 −2 minimális indexű. Mivel az első sor há- 3 1 1 rom negatı́v együtthatót tartalmaz, ezért 2 0 min{cs / − a1s : a1s < 0, 1
≤ s ≤ 4} = min{1/2, 3/3, 1/1} = 1/2. Következésképp a12 lesz a generáló elem. Végrehajtva az előı́rt átalakı́tásokat, a következő szimplex táblázathoz jutunk. 91 x1 y1 x3 x4 x2 − 12 − 12 3 2 1 2 y2 0 1 −2 −2 y3 3 2 5 2 1 2 1 2 − 52 −∗ 52 −3 3 2 1 2 1 A jobboldalon még mindig szerepel ne- 1 gatı́v mennyiség, mégpedig a harmadik sorban. Képezve a harmadik sorra a minimumot, a következő értékeket kapjuk: −1 min{cs / − a3s : a3s < 0, 1 ≤ s ≤ 4} = min{3/5, 1/5} = 1/5. Így a34 lesz a generáló elem. Végrehajtva a megfelelő átalakı́tásokat, a következő szimplex táblázathoz jutunk x1 y1 x3 y3 A kapott táblázatban minden jobboldali x2 − 15 − 25 1 − 65 − 35 14 5 0 y2 x4 3 5 − 15 3 5 1 1 1 5 − 45 − 25 1 5 2 5 17 5 6 5 − 85 érték nemnegatı́v, ı́gy a feladat bázismegoldása egyben optimális megoldás. Tehát x̄ = (0, 25 , 0, 65
), ȳ = (0, 17 5 , 0) optimális megoldása a feladatnak, az opti- mum értéke pedig z(x̄, ȳ) = 8/5 Az eljárás helyességének igazolása A 2.2 fejezet 2tételének bizonyı́tásában megadott átalakı́tásokról a tétel igazolása során beláttuk, hogy a kiindulási feladattal ekvivalens feladatot eredményeznek Következésképp, az eljárás a (2.93) feladattal ekvivalens feladatok sorozatát állı́tja elő. Szintén az emlı́tett tétel bizonyı́tásából következik, hogy az átalakı́tás utáni feladat sor- és oszlopcserékkel, a változók átjelölésével felı́rható (2.93) alakban, eltekintve az új c vektor nemnegativitásától Másrészt a generáló elem választásának definı́cióját felhasználva, egyszerű esetvizsgálattal belátható, hogy az átalakı́tás a c vektor nemnegativitását nem változtatja meg, azaz az előállı́tott feladatsorozat
célfüggvényegyütthatói rendre nemnegatı́vak (ld. 3feladat) Így, ha valamely lépésben minden egyes jobboldal nemnegatı́v, akkor ezen lépéshez tartozó feladat a (2.93) feladattal ekvivalens lehetséges kanonikus alakú feladat De akkor az 1.tétel alapján a feladat bázismegoldása optimális megoldás Ezek után már csak azt kell igazolnunk, hogy amennyiben bk < 0 és aks ≥ 0 (s = 1, . , m), akkor a feladatnak nincs lehetséges megoldása Ez viszont nyilvánvaló, ugyanis ebben az esetben a k-adik egyenlet baloldali együtthatói rendre nemnegatı́vak, az egyenlet jobboldala pedig negatı́v, ı́gy ennek az egyenletnek nincs nemnegatı́v megoldása Az eljárás helyességének fenti igazolásában megelőző bizonyı́tásokra támaszkodtunk. Most megmutatjuk, hogy a duális szimplex algoritmus úgy is interpretálható, mint a feladat duálisán végrehajtott szimplex algoritmus Az eljárás ilyen
megközelı́tése nagyban megkönnyı́ti a végesség problematikájának kezelését. A vázoltak érdekében konstruáljuk meg a (2.93) feladathoz a következő feladatot Ax ≤ b, x ≥ 0 (2.94) – −cx = z(x) max 92 A 2.1 fejezet vizsgálatai alapján tudjuk, hogy a (293) és (294) feladatoknak egyidejűleg létezik optimális megoldása, és az optimális megoldások közvetlenül származtathatók egymásból. Másrészt vegyük észre, hogy (294) egy primál feladat Ezen feladat duálisa: yA ≥ −c, y ≥ 0 – yb = w(y) min (2.95) Megszorozva a feltételrendszer egyenlőtlenségeit rendre −1-gyel, a (2.95) feladattal ekvivalens alábbi feladathoz jutunk. −yA ≤ c, y ≥ 0 – yb = w(y) min (2.96) Most konstruáljuk meg (2.96)-hoz a következő feladatot: Ex − yA = c, x ≥ 0, y ≥ 0 yb = w min (2.97) A 2.1 fejezet alapján tudjuk, hogy a (296) és (297) feladatoknak egyidejűleg létezik optimális
megoldása, és az optimális megoldások közvetlenül származtathatók egymásból. Másrészt vegyük észre, hogy a c ≥ 0 feltétel mellett (297) egy lehetséges kanonikus alakú feladat. Vizsgáljuk most a (2.93) és (297) feladatok szimplex táblázatait, x y A y x b c −AT c b ahol AT az A mátrix transzponáltját jelöli. A két szimplex táblázat ugyanazon változókat és ugyanazon adatokat tartalmazza, csak elrendezésbeli és előjelbeli az eltérés. Egyszerű számolással belátható, hogy aij -t választva generáló elemnek, és mindkét szimplex táblázaton végrehajtva a szimplex algoritmusnak megfelelő átalakı́tásokat, az előálló szimplex táblázatok is rendelkeznek ezzel a tulajdonsággal. Ez viszont azt jelenti, hogy (a) végrehajtva a (2.93) feladaton a duális szimplex algoritmus egy transzformációs lépését, ez megfelel egy, a (297) feladaton végrehajtott
transzformációs lépésnek, és az előálló szimplex táblázatok közvetlenül felı́rhatók egymásból. (b) végrehajtva a szimplex algoritmus egy transzformációs lépését a (2.97) feladaton, ez megfelel egy, a (293) feladaton végrehajtott transzformációs lépésnek, és az előálló szimplex táblázatok közvetlenül felı́rhatók egymásból. A fentiek alapján vegyük észre a következőket. A célfüggvényegyütthatók nemnegativitása biztosı́tja, hogy a (2.97) feladat lehetséges kanonikus alakú Így, végrehajtva (2.97)-en a szimplex algoritmust, az eljárás (297)-tel ekvialens, lehetséges kanonikus alakú feladatokon fut végig Másrészt (b) alapján a (297) feladat szimplex táblázatán végrehajtásra kerülő műveletek átfogalmazhatók (2.93) szimplex 93 táblázatára, és ezen átfogalmazással egy, a (2.93) feladaton végrehajtott eljáráshoz jutunk. Viszonylag
egyszerűen belátható, hogy ez az átfogalmazott eljárás pontosan a duális szimplex algoritmust eredményezi. A feladatpár szimultán megoldásának bemutatására tekintsük az alábbi primálduál feladatpárt. y1 +2y2 ≥ 0 y1 −y2 ≥ −1 −2y1 +y2 ≥ −2 yj ≥ 0 (j = 1, 2) −2y1 −4y2 = w min x1 +x2 −2x3 ≤ −2 2x1 −x2 +x3 ≤ −4 xi ≥ 0 (i = 1, 2, 3) −x2 −2x3 = z max Írjuk fel a feladatokhoz tartozó (2.93) és (297) tı́pusú feladatokat (I) (II) x1 y1 +x1 +x2 −2x3 = −2 y2 +2x1 −x2 +x3 = −4 x ≥ 0, y ≥ 0 – x2 +2x3 = z min −y1 −2y2 = 0 x2 −y1 +y2 = 1 x3 +2y1 −y2 = 2 x ≥ 0, y ≥ 0 −2y1 −4y2 = w min Mivel c ≥ 0, ezért az (I) feladatra alkalmazhatjuk a duális szimplex algoritmust. A feladatokhoz a következő szimplex táblázatok tartoznak: y1 y2 x1 1 2 0 x2 1 −∗ 1 1 x3 −2 1 2 −2 −4 0 x1 x2 x3 y1 −1 −1 2 −2 y2 −2 ∗ 1 −1 −4 0 1 2 0 A duális szimplex
algoritmus szerint az (I) feladathoz tartozó táblázatban a22 lesz a generáló elem. Figyeljük meg, hogy a (II) feladat lehetséges kanonikus alakú, és a szimplex algoritmus szerint generáló elemet választva, szintén a22 adódik generáló elemnek. Most mindkét feladaton végrehajtva a transzformációs lépést, az alábbi szimplex táblázatokat kapjuk: y1 x2 x1 3 −2 2 y2 1 −1 1 x3 −∗ 1 −1 3 −6 4 −4 x1 y2 x3 y1 −3 −1 ∗ 1 −6 x2 2 1 1 4 2 1 3 4 Az első táblázatban a duális szimplex algoritmus szerint a13 , mı́g a második szimplex táblázatban a szimplex algoritmus szerint szintén a13 lesz a generáló elem. (A második táblázatban az A mátrix transzponáltja szerepel, ı́gy a kijelölt elem indexe valóban (1,3).) Mindkét táblázaton végrehajtva a transzformációs lépést, a következő szimplex táblázatokat kapjuk: 94 x3 x2 x1 −3 −5 11 y2 −1 −2 4 y1 −1
−1 3 6 10 −22 x1 y2 y1 x3 3 1 1 6 x2 5 2 1 10 11 4 3 22 Az előállı́tott táblázatokban mind a célfüggvényegyütthatók, mind a jobboldalak nemnegatı́vak, ı́gy a duális szimplex algoritmus szerint az első táblázathoz tartozó x̄2 = 10, x̄3 = 6, x̄1 = ȳ1 = ȳ2 = 0 bázismegoldás az (I) feladat optimális megoldása, ugyanakkor a szimplex algoritmus szerint a második táblázathoz tartozó x∗1 = 11, y1∗ = 3, y2∗ = 4, x∗2 = x∗3 = 0 bázismegoldás pedig a (II) feladat optimális megoldása. (Figyeljük meg, hogy a kapott megoldások leolvashatók bármelyik táblázatból.) Másrészt a 21 fejezet alapján azt is tudjuk, hogy x̄ = (0, 10, 6) a primál és y∗ = (3, 4) a duál feladat optimális megoldásai. A fenti példa igen szemléletesen mutatja, hogy a szimplex táblázatok rendre ugyanazon adatokat tartalmazzák, ı́gy a (II) feladat optimális megoldását is megkapjuk, ha az (I)
feladaton végrehajtjuk a duális szimplex algoritmust. A duális szimplex algoritmus végessége Mivel az eljárás úgy tekinthető, mint a megfelelő duális feladaton (esetünkben a (2.97) feladat) végrehajtott szimplex algoritmus, ezért ennél az eljárásnál is felléphet a ciklizáció. Nyilvánvalóan, ha a duális feladatra a szimplex algoritmusnak egy olyan változatát alkalmazzuk, amely véges, akkor az ezen eljárásra épülő duális szimplex algoritmus is véges lesz. Így az ismertetett technikák (lexikografikus, Wolfe-féle, Blandféle változatok) közül bármelyiket alkalmazva a duális feladatra, a megfelelő duális szimplex algoritmus véges lesz. A fejezet befejezéseként célszerű hangsúlyozni, hogy a duális szimplex algoritmus nem egy további változata a szimplex algoritmusnak. Amı́g az előző fejezetekben megismert változatok közös tulajdonsága, hogy alkalmazhatóságuk
feltétele ugyanaz (a feladat lehetséges kanonikus alakú), addig a duális szimplex algoritmust más feltételek mellett alkalmazhatjuk. Most a primál-duál feladatpár vonatkozásában mindkét algoritmusra összegezzük az alkalmazhatóság feltételét. Ha a (2.91) feladatban b ≥ 0, akkor az y1 , , yn különbségváltozók bevezetésével és egyenlőségekre való áttéréssel előállı́tott feladat lehetséges kanonikus alakú, és ı́gy megoldható szimplex algoritmussal. A szimplex algoritmusnak megfelel a (2.92) feladathoz konstruált (297) tı́pusú feladaton végrehajtható duális szimplex algoritmus. Mivel a két algoritmus szimplex táblázatai között csak elrendezésbeli és előjelbeli különbségek vannak, ezért a szimplex algoritmus végén kapott táblázatból leolvasható (2.97) optimális megoldás is úgy, hogy a táblázat felső sorában szereplő yt változók értéke
rendre az oszlopukban lévő célfüggvényegyüttható, a többi változó értéke pedig 0. A kapott optimális megoldásokból a 21 fejezetben megismertek alapján meghatározhatók a (2.91) és (292) feladatok optimális megoldásai 95 Ha a (2.91) feladatban c ≤ 0, akkor áttérve minimum feladatra, és bevezetve az y1 , . , yn különbségváltozókat, valamint áttérve egyenlőségekre, egy (293) tı́pusú feladatot kapunk. (A célfüggvényben c helyett −c szerepel) Mivel ebben a feladatban a célfüggvényegyütthatók nemnegatı́vak, ezért alkalmazhatjuk a duális szimplex algoritmust. Ennek megfelel a (292) feladathoz konstruált (297) tı́pusú feladaton (a jobboldali vektor −c) végrehajtható a szimplex algoritmus. Mivel a két algoritmus szimplex táblázatai között csak elrendezésbeli és előjelbeli különbségek vannak, ezért a duális szimplex algoritmus végén kapott
táblázatból leolvasható (2.97) optimális megoldás is úgy, hogy a táblázat felső sorában szereplő yt változók értéke rendre az oszlopukban lévő célfüggvényegyüttható, a többi változó értéke pedig 0. A kapott optimális megoldásokból a 21 fejezetben megismertek alapján meghatározhatók a (291) és (2.92) feladatok optimális megoldásai Természetesen a második esethez tartozó feladatok, alkalmas standard feladatra történő visszavezetés után, megoldhatók szimplex módszerrel is. Ennél nyilván egyszerűbb a duális szimplex algoritmussal történő megoldás, ami alapvető eszköz lesz a következő fejezetben, az egészértékű programozási feladatok vizsgálatánál. Feladatok 1. Az alábbi primál feladathoz konstruáljuk meg a duális feladatot Rendre ábrázoljuk az egyes egyenlőtlenségeket kielégı́tő ponthalmazokat, és ezek segı́tségével
határozzuk meg mindkét feladat lehetséges megoldásainak halmazát. Ezek ismeretében határozzuk meg az optimális megoldásokat, és vessük össze az optimumértékeket x1 +x2 ≤ 5 x1 −x2 ≤ 2 x1 , x2 ≥ 0 2x1 +x2 = z max 2. Határozzuk meg az alábbi primál feladat lehetséges megoldásainak halmazát, és igazoljuk, hogy a célfüggvény felülről nem korlátos ezen a halmazon. A 10tétel 1.következményének demonstrálására konstruáljuk meg a feladathoz tartozó duális feladatot, és határozzuk meg ezen feladat lehetséges megoldásainak halmazát. −x1 +x2 ≤ 3 x1 −x2 ≤ 0 x1 , x2 ≥ 0 x1 +x2 = z max 96 3. A 22 fejezet 2tétele bizonyı́tásának analógiájára igazoljuk, hogy amennyiben a (2.93) feladatban bi < 0 és min{cs / − ais : ais < 0, 1 ≤ s ≤ m} = cj /aij , akkor a −aij elemet generáló elemnek választva és végrehajtva a 2.tételnél megadott átalakı́tásokat,
az előálló új feladat minden célfüggvényegyütthatója ismét nemnegatı́v. 4. Oldjuk meg duális szimplex algoritmus alkalmazásával a következő feladatokat: y1 +x2 −6x3 = −2 y2 −x2 −2x3 = −1 x ≥ 0, y ≥ 0 5x1 +21x3 = z min (a) −x1 −x1 x1 +x2 −x3 ≥ 2 2x1 −x2 +x3 ≥ 4 xi ≥ 0, (i = 1, 2, 3) – 3x1 +x2 +x3 = z min (b) y1 (c) y2 y3 +x1 −x2 −2x3 +x4 = −2 −2x1 +x2 +3x3 −x4 = 0 −x1 −2x2 −x3 +2x4 = −4 xi ≥ 0, (i = 1, 2, 3) , y1 ≥ 0, y2 ≥ 0, 2x1 +3x2 +x3 +2x4 = z min 2.10 Egészértékű programozás A gyakorlati élet számos problémája olyan optimumszámı́tási modellel ı́rható le, amelyekben a változók egy része, esetleg minden változó csak egész értékeket vehet fel. Az utóbbi esetben szokásos egészértékű programozásról beszélni A továbbiakban ennek csak egy speciális esetével, a lineáris modellekkel foglalkozunk. Ezen belül elsőként az
alábbi tı́pusú feladatokat vizsgáljuk. (2.101) Ax ≤ b, x ≥ 0 & x egész α + cx = z(x) min és feltételezzük, hogy (1) A, b, c, α rendre egészek, (2) b ≥ 0, (3) a lehetséges megoldások L∗ halmaza korlátos. A feltételekkel kapcsolatban fontosnak tartjuk megjegyezni a következőket: 97 (a) Az (1) feltétel teljesülése elérhető akkor is, ha a vizsgált feladat együtthatói racionálisak. Ez esetben a nevezők abszolútértékeinek legkisebb közös többszörösével megszorozva minden egyenlőtlenséget, a lehetséges megoldások halmaza nem változik, továbbá ugyanezen konstanssal megszorozva a célfüggvény egyenletét, a két célfüggvénynek ugyanazon pontok lesznek a minimumhelyei. Így a racionális együtthatókat tartalmazó feladat az optimális megoldás létezését és meghatározását illetően visszavezethető a (2.101) feladatra Pm (b) Az L∗ halmaz korlátossága
biztosı́tható egy j=1 xj ≤ M tı́pusú feltétellel, ami a gyakorlati problémák zöménél teljesül, azaz létezik ilyen M konstans, és viszonylag könnyen meghatározható. A továbbiak egyszerűsı́tésének érdekében feltesszük, hogy L∗ korlátossága egy ilyen feltétellel van biztosı́tva. (c) A (3) feltételből következik, hogy L∗ véges. Másrészt a 0 vektor lehetséges megoldása a feladatnak. Így az adott feltételek mellett a (2101) feladatnak mindig létezik optimális megoldása. Az egészértékű probléma szemléltetéséhez tekintsük a következő feladatot: −x1 +3x2 ≤ 6 x1 +2x2 ≤ 7 x1 −x2 ≤ 3 x1 +x2 ≤ 8 x1 , x2 ≥ 0 , x1 és x2 egész −2x1 −x2 = z min Ábrázolva a 2-dimenziós térben az egyes egyenlőtlenségeket kielégı́tő pontokból álló félsı́kokat, és véve ezek közös részét a nemnegatı́v koordinátájú pontokat tartalmazó
térnegyedben, megkapjuk azon pontok L halmazát, amelyek a feladat minden egyenlőtlenségét kielégı́tik. 98 (Az ábrán a félsı́kok sorszámozása az egyenlőtlenségek sorrendjét követi.) Ezen L halx2 maz egész koordinátájú pontjai és csak ezek a pontok elégı́tik ki a feladat feltételrendszerét. Így L∗ az ábrán karikák- ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ kal megjelölt 13 pontból áll. Ezek kö◦ zül a (4, 1) ponthoz tartozik a legkisebb célfüggvényérték, ı́gy ez a pont ◦◦◦◦ x1 a feladat optimális megoldása, az optimum értéke pedig −9. A példához kapcsolódva vegyük észre, hogy a megoldás során először L-et határoztuk meg , majd vettük L egész koordinátájú pontjait, és ı́gy jutottunk az L∗ halmazhoz. Ez nyilvánvalóan általános esetben is érvényes Következésképp, célszerűnek tűnik (2.101)-hez megkonstruálni az alábbi
feladatot, amelyet szokásos a (2.101)-hez tartozó folytonos feladatnak nevezni Ax ≤ b, x ≥ 0 (2.102) – α + cx = z(x) min Pm Jelölje ezen feladat lehetséges megoldásainak halmazát L. Akkor a j=1 xj ≤ M feltétel miatt L korlátos, továbbá 0 ∈ L, ı́gy a (2.102) feladatnak az adott feltételek mellett mindig létezik optimális megoldása. Másrészt nyilvánváló, hogy (i) L∗ ⊆ L, (ii) ha a (2.102) feladat x̄ optimális megoldása egész, akkor x̄ optimális megoldása a (2.101) feladatnak is Visszatérve a vizsgált problémához, a megfelelő folytonos feladat optimális megoldása (13/3, 4/3), ı́gy (ii)-t nem alkalmazhatjuk. Azonban, ha kerekı́tjük a koordinátákat, akkor megkapjuk az egészértékű feladat optimális megoldását Ennek kapcsán felvetődik a következő kérdés: a folytonos feladat megoldásával és a kapott optimális megoldás kerekı́tésével megkaphatjuk-e a (2.101)
feladat optimális megoldását? A kérdésre tagadó a válasz. Mind az optimumértékek, mind az optimális megoldások távolságát illetően bármilyen rögzı́tett eltéréshez konstruálható alkalmas feladatpár Ezt egy példával szemléltetjük Egyszerűen belátható (ld 3feladat), hogy tetszőleges k ≥ 3 egészre, véve a −(k 2 +1)x1 +kx2 ≤ 0 (k 2 − 1)x1 −kx2 ≤ 0 x1 +x2 ≤ 2k + 1 xi ≥ 0 & xi egész (i = 1, 2) −x1 −x2 = z(x) min ∗ feladatot, L = {(0, 0), (1, k)}, és ı́gy az optimális megoldás (1, k), az optimum értéke pedig −(k + 1). Másrészt a folytonos feladat egy optimális megoldása a következő: 99 (2 − 1/(k + 1), 2k − k/(k + 1)). Az optimum értéke ez esetben: −2k − 1 De akkor az optimumértékek eltérése k, a két optimális megoldás távolsága pedig nem kisebb, mint k − 1. A vizsgált példa igen szemléletesen mutatja, hogy a folytonos feladat
optimális megoldásából olyan egyszerű eszközökkel, mint a kerekı́tés, nem határozható meg az egészértékű feladat optimális megoldása. Eredményesnek bizonyult viszont a folytonos feladatok következő felhasználása. Ha a folytonos feladat x̄ optimális megoldása nem egész, akkor bővı́tsük a feladat feltételrendszerét egy további olyan feltétellel, amelyet x̄ nem elégı́t ki, de L∗ minden pontja kielégı́t. Így egész megoldást nem veszı́tünk el, és az új folytonos feladatra áttérve, egy iterációs eljáráshoz jutunk. A vázolt technikát az elsőként vizsgált példán mutatjuk be. A folytonos feladat optimális megoldása: (13/3, 4/3). További feltételként vegyük fel az x1 ≤ 4 feltételt x2 (Az ábrán a megfelelő félsı́k határoló egyenesét szaggatott vonallal jelöltük.) Az új feltételt a (13/3, 4/3) pont nem ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦
elégı́ti ki, de L∗ minden egyes pontjára ◦ teljesül ez a feltétel. Most megoldva a kibővitett folytonos feladatot, az opti- ◦◦◦◦ x1 mális megoldás: (4, 3/2), ami még mindig nem egész. Tovább bővı́tve feltételrendszex2 rünket az x1 + x2 ≤ 5 feltétellel, azt kapjuk, hogy az előállı́tott folytonos feladat optimális megoldása: (4, 1), ◦ ◦ ◦ ◦ ◦ ◦ ◦ ◦ ami nyilvánvalóan optimális megoldása ◦ lesz a kiindulási egészértékű feladatnak. A megfelelő optimumérték: −9 ◦◦◦◦ x1 Lényegében az eljárás során a lehetséges megoldások L halmazából lemetszünk olyan darabokat, amelyek nem tartalmaznak egész koordinátájú pontokat. Ebből adódóan a vázolt technikát szokásos metszési módszernek vagy metsző sı́kok módszerének, a metszéseket realizáló feltételeket pedig metszeteknek nevezni. Az első véges metszési eljárást
R. E Gomory publikálta 1958-ban Ezt követően számos különböző metszési eljárás került kidolgozásra. A továbbiakban két ilyen algoritmussal fogunk megismerkedni. Elsőként Gomory 1958-as eljárásának egy egyszerűsı́tett változatát ismertetjük. Ennek kapcsán használni fogjuk az alábbi fogalmakat és jelöléseket A d valós szám egész részén a d-nél nem nagyobb egész számok maximumát értjük, amit [d]-vel jelölünk. Például [5/4] = 1, [−5/4] = −2 100 A d szám törtrészének a d − [d] mennyiséget nevezzük, amelyet t(d)-vel fogunk jelölni. Például t(5/4) = 1/4, t(−5/4) = 3/4 A törtrész definı́ciójából következik, hogy bármely d-re 0 ≤ t(d) < 1 teljesül. Végezetül tetszőleges d1 x1 + + dm xm ≤ f egyenlőtlenségre, az illető egyenlőtlenség Gomory-féle metszetének nevezzük a t(d1 )x1 + . + t(dm )xm ≥ t(f ) egyenlőtlenséget. A
bevezetett metszet fogalom alkalmasságának vizsgálatához tekintsük a (2.102) feladatot. A 21 fejezet alapján tudjuk, hogy az optimális megoldás létezését és meghatározását illetően (2102) visszavezethető az alábbi feladatra: Ey + Ax = b, x ≥ 0, y ≥ 0 α + cx = z min (2.103) Nyilvánvaló, hogy az adott feltételek mellett mindkét feladatnak létezik optimális megoldása. Ezen kı́vül igen fontos még a következő észrevétel, amely egyszerűen adódik az (1) feltételből: (4) Ha (ỹ, x̃) lehetséges megoldása a (2.103) feladatnak és x̃ egész, akkor ỹ is egész. Oldjuk meg ezek után a (2.103) feladatot szimplex algoritmussal, és tegyük fel, hogy a kapott (ȳ, x̄) optimális megoldás nem egész. Akkor (4) alapján van olyan xi bázisváltozó, hogy x̄i nem egész. Tekintsük a bázisváltozó (5) xi + ās1 v1 + . + āsm vm = b̄s S egyenletét, ahol vt ∈ {x1 , . , xm } {y1 ,
, yn } (t = 1, , m) Elhagyva az egyenletből a nemnegatı́v xi változót, az alábbi egyenlőtlenséghez jutunk: ās1 v1 + . + āsm vm ≤ b̄s Vegyük ennek az egyenlőtlenségnek a Gomory-féle metszetét: (6) t(ās1) v1 + . + t(āsm )vm ≥ t(b̄s ) Megmutatjuk, hogy a (6) alatti egyenlőtlenség lemetszi a (2.103) feladat lehetséges megoldásainak halmazából az (ȳ, x̄) optimális megoldást, de nem metsz le egyetlen egész megoldást sem. Valóban, mivel (ȳ, x̄) bázismegoldás, ezért az (5) alatti egyenletben szereplő v1 , . , vm változók értéke a bázismegoldásban rendre 0-val egyenlő Így (6) baloldala az (ȳ, x̄) pontban 0. Másrészt x̄i = b̄s , és feltevésünk szerint x̄i nem egész Így t(b̄s ) > 0, amivel adódik, hogy (ȳ, x̄) nem elégı́ti ki a (6) alatti egyenlőtlenséget. Most legyen (y∗ , x∗ ) a (2.103) feladat egy tetszőleges egész lehetséges megoldása Akkor
(y∗ , x∗ )-ra teljesül az (5) egyenlet. Az egyenlet együtthatóit egész rész plusz törtrész alakba ı́rva, a következő egyenlőséghez jutunk: m X ∗ xi + ([āsj ] + t(āsj )) vj∗ = [b̄s ] + t(b̄s ) . j=1 101 A kapott egyenlőségből rendezéssel adódik, hogy x∗i + m m X X ∗ [āsj ]vj − [b̄s ] = t(b̄s ) − t(āsj )vj∗ . j=1 j=1 Az egyenlőség baloldalán rendre egész mennyiségek szerepelnek, ı́gy a baloldal értéke egész. Az egyenlőség jobboldalán lévő mennyiség értéke 0 ≤ vj∗ és 0 ≤ t(āsj ) (j = 1, . , m) alapján nem nagyobb, mint t(b̄s ), ami definı́ció szerint kisebb, mint 1. Így azt kapjuk, hogy a jobboldal értéke 1-nél kisebb egész Ebből adódik, hogy a jobboldal értéke nem pozitı́v, és ı́gy ∗ t(b̄s ) ≤ t(ās1 )v1∗ + . + t(āsm )vm , azaz (y∗ , x∗ ) kielégı́ti a (6) alatti egyenlőtlenséget. Az előzőekben elmondottakra
épül a következő, bizonyı́tás nélkül ismertetésre kerülő eljárás. R. E Gomory algoritmusa Előkészı́tő rész. Tekintsük a (2101)-hez tartozó (2102) folytonos feladatot, és konstruáljuk meg ehhez a megfelelő (2.103) lehetséges kanonikus alakú feladatot Ezt oldjuk meg a szimplex algoritmus valamely változatával. Ha az (ȳ, x̄) optimális megoldásból képezett x̄ vektor egész, akkor vége az eljárásnak, x̄ optimális megoldása a (2.101) feladatnak Ellenkező esetben legyen r = 1, és térjünk rá az iterációs eljárásrészre. Iterációs rész (r. iteráció) Vegyük az első olyan egyenletet, amelyben valamely xi ∈ {x1 , . , xm } a bázisváltozó és az egyenlet jobboldala nem egész Legyen ez (r) (r) (r) az egyenlet: xi + as1 v1 + . + asm vm = bs , amelyből xi elhagyásával képezzünk (r) (r) (r) egyenlőtlenséget, és vegyük ennek a t(as1 )v1 + . + t(asm )vm ≥
t(bs ) Gomory-féle metszetét. Szorozzuk ezen egyenlőtlenség mindkét oldalát −1-gyel, és bevezetve az ur különbségváltozót, vegyük az (r) (r) ur − t(as1 )v1 − . − t(a(r) sm )vm = −t(bs ) egyenletet. A kapott egyenlettel bővı́tsük a feladat feltételrendszerét, továbbá kössük ki, hogy 0 ≤ ur . Az ı́gy előállı́tott új feladatot oldjuk meg duális szimplex algoritmussal Ha az optimális megoldásból képezett x̄(r) vektor egész, akkor vége az eljárásnak, x̄(r) a (2.101) feladat optimális megoldása Ellenkező esetben növeljük r értékét 1-gyel, és a bővı́tett feladatot tekintve aktuális feladatnak, térjünk rá a következő iterációs lépés végrehajtására. Az eljárás demonstrálására megoldjuk az előzőekben vizsgált példát. A feladathoz konstruálható (2.103) tı́pusú feladat szimplex táblázata, és a szimplex algoritmus
végrehajtása során nyert táblázatok a következők: 102 y1 y2 y3 y4 x1 −1 1 ∗ 1 1 −2 x2 3 2 −1 1 −1 6 7 3 8 0 y1 y2 x1 y4 y3 1 −1 1 −1 2 x2 2 ∗ 3 −1 2 −3 9 4 3 5 6 y1 x2 x1 y4 y3 y2 5/3 −2/3 −1/3 1/3 2/3 1/3 −1/3 −2/3 1 1 19/3 4/3 13/3 7/3 10 Tehát a tekintett feladat optimális megoldása: (ȳ, x̄) = (19/3, 0, 0, 7/3, 13/3, 4/3), és ı́gy az induló folytonos feladat optimális megoldása: x̄ = (13/3, 4/3). Az utolsó feladat első olyan egyenlete, amelyben x̄i nem egész a következő: 1 1 4 x2 − y3 + y2 = . 3 3 3 Az eljárásnak megfelelően képezve a Gomory-féle metszetet, az alábbi egyenlőtlenséget kapjuk: 2 1 1 y3 + y2 ≥ 3 3 3 Ezt megszorozva −1-gyel, bevezetve az u1 különbségváltozót, és az előálló egyenlettel bővı́tve a feltételrendszert, olyan feladathoz jutunk, amelynek célfüggvényegyütthatói rendre nemnegatı́vak, és amelyben y1 , x2 , x1 , y4 ,
u1 bázisváltozók. Így ez a feladat megoldható duális szimplex algoritmussal. Az induló feladat, és az eljárás során előálló feladatok szimplex táblázatai a következők: (7) y1 x2 x1 y4 u1 y3 5/3 −1/3 2/3 −1/3 −∗ 2/3 1 y2 −2/3 19/3 1/3 4/3 1/3 13/3 −2/3 7/3 −1/3 −1/3 1 10 u1 y2 5/2 −3/2 11/2 −1/2 1/2 3/2 0 1 4 −1/2 −1/2 5/2 −3/2 1/2 1/2 3/2 1/2 19/2 y1 x2 x1 y4 y3 (1) (1) (1) (1) (1) A feladat optimális megoldása: y1 = 11/2, y2 = 0, y3 = 1/2, y4 = 5/2, x1 = 4, (1) (1) (1) x2 = 3/2, u1 = 0. Az első olyan egyenlet, amelyben xi nem egész, a feladat második egyenlete. Véve a hozzátartozó Gomory-féle metszetet, és a megfelelő egyenlettel bővı́tve a feladatot, majd végrehajtva a duális szimplex algoritmust, a következő szimplex táblázatokat kapjuk: y1 x2 x1 y4 y3 u2 u1 y2 5/2 −3/2 11/2 −1/2 1/2 3/2 0 1 4 −1/2 −1/2 5/2 −3/2 1/2 1/2 −1/2 −∗ 1/2 −1/2 3/2 1/2 19/2 y1 x2
x1 y4 y3 y2 103 u1 4 −1 1 0 −2 1 1 u2 −3 1 0 −1 1 −2 1 7 1 4 3 0 1 9 Az optimális megoldás egész, ı́gy x(2) = (4, 1) optimális megoldása az egészértékű feladatnak. Bár vége az eljárásnak, de a példához kapcsolódva, vizsgáljuk meg, hogy a (7) alatti metszet milyen félsı́kot határoz meg az eredeti feladatra vonatkoztatva. A legelső szimplex táblázatból: y2 + x1 + 2x2 = 7 és y3 + x1 − x2 = 3. Ezekből az egyenletekből kifejezve az y2 és y3 változókat, és behelyettesı́tve (7) baloldalába, a grafikus megoldás során már használt, x1 ≤ 4 egyenlőtlenséget kapjuk. Hasonló technikával kifejezve az eljárás második metszetét x1 , x2 függvényeként, az x1 + x2 ≤ 5 egyenlőtlenség adódik. Az ismertetett eljárással kapcsolatban fontosnak tartjuk megemlı́teni a következőket: A megadott változat nem véges minden esetben, de ugyanezen metszési technikát
alkalmazva, továbbá lexikografikus szimplex algoritmust és lexikografikus duális szimplex algoritmust használva, felépı́thető egy véges változata az eljárásnak. A véges változat iterációs ¡ ¢ lépésszámát illetően, amı́g a szimplex algoritmusról tudjuk, hogy legfeljebb m+n lépést kell végrehajtani az optimális megoldás eléréséig, adn dig az egészértékű esetben nem adható meg ilyen, a feladat méreteitől függő felső korlát. Ezt elsőként R G Jeroslow és K O Kortanek igazolták 1969-ben Egy évvel később D. S Rubin megadott egy olyan feladatosztályt, amely kétváltozós és egyetlen egyenlőtlenségből álló feladatokat tartalmaz, és tetszőleges n természetes számhoz létezik az osztálynak olyan feladata, hogy az illető feladaton végrehajtott Gomory-féle eljárás iterációs lépéseinek a száma nem kisebb, mint n. A nagy lépésszám mellett az
eljárás egy másik hátránya, hogy minden egyes lépésben nő a feladat mérete. Ez a növekedés bizonyos korlátok között tartható, nevezetesen a felvett új feltételekből egyesek a későbbiek során elhagyhatók. Az eljárás másik, különösen számı́tástechnikai szempontból jelentős hátránya, hogy valós számábrázolással dolgozva, az eljárás során előálló együtthatókat kerekı́tési hibák terhelik. Ezért annak eldöntése, hogy valamely együttható egész vagy nem egész, igen komplikált, további vizsgálatokat igénylő feladat. A kerekı́téssel kapcsolatos problémák nem jelentkeznek akkor, ha minden lépésben 1 vagy −1 a generáló elem, ugyanis ebben az esetben az eljárás során végig minden együttható egész. Lényegében ez volt a motivációja annak a duális eljárásnak, amelyet szintén R. E Gomory dolgozott ki 1960-ban A továbbiakban ennek
egy egyszerűsı́tett változatával fogunk megismerkedni. E célból tekintsük a következő feladatot: (2.104) Ey + Ax = b, x ≥ 0, y ≥ 0, x, y egész – , α + cx = z min ahol feltételezzük, hogy (1) A, b, c, α rendre egészek, (2) c ≥ 0. 104 Nyilvánvaló, hogy amennyiben a b vektor komponensei rendre nemnegatı́vak, akkor a bázismegoldás optimális megoldás. Most tegyük fel, hogy bk < 0 valamely 1 ≤ k ≤ n indexre. Tekintsük a feladat k-adik egyenletét: yk + ak1 x1 + . + akm xm = bk Képezzük az egyenletből az alábbi egyenlőtlenséget: (10) ha k1 λ i x1 + . + ha km λ · i xm bk ≤ λ ¸ , ahol λ = max{−akj : akj < 0, 1 ≤ j ≤ m}, feltéve, hogy λ létezik. A λ mennyiség definı́ciójából következik, hogy a (10) alatti egyenlőtlenségben minden negatı́v együttható −1-gyel egyenlő. Így bevezetve egy különbségváltozót, és a kapott egyenlettel
bővı́tve a feladat feltételrendszerét, ha ebben a sorban választunk a duális szimplex algoritmus szerint generáló elemet, akkor a generáló elem −1 lesz. Vizsgáljuk most a (10) alatti egyenlőtlenséget. Megmutatjuk, hogy tetszőleges ∗ (y , x∗ ) egész lehetséges megoldásra teljesül a (10) egyenlőtlenség. Valóban, mivel (y∗ , x∗ ) lehetséges megoldás, ezért yk∗ + ak1 x∗1 + . + akm x∗m = bk Viszont ı́gy tetszőleges λ > 0 egészre, yk∗ akm ∗ ak1 ∗ bk + x1 + . + xm = , de akkor λ λ λ λ µ· ¸ ¶ · ¸ m ³h X 1 1 akj i akj ´ ∗ bk bk ∗ + t( ) yk + + t( ) xj = + t( ) , λ λ λ λ λ λ j=1 amiből rendezéssel adódik, hogy · ¸ · ¸ m m X 1 ∗ X h akj i ∗ bk bk 1 akj ∗ yk + xj − = t( ) − t( )yk∗ − t( )xj . λ λ λ λ λ λ j=1 j=1 A kapott kifejezés baloldala egész, a jobboldalon pedig az 1-nél kisebb t(bk /λ) menynyiségből vonunk ki nemnegatı́v számokat, ı́gy a
jobboldal értéke kisebb, mint 1. De akkor a baloldal értéke nem nagyobb, mint 0, ı́gy · ¸ · ¸ m 1 ∗ X h akj i ∗ bk yk + xj − ≤0. λ λ λ j=1 Mivel λ > 0, yk∗ ≥ 0, ezért [1/λ]yk∗ ≥ 0. Így a baloldalról elhagyva az [1/λ]yk∗ mennyiséget, az egyenlőtlenség érvényben marad, és azt kapjuk, hogy · ¸ m h X akj i ∗ bk xj ≤ , λ λ j=1 azaz az (y∗ , x∗ ) egész lehetséges megoldás kielégı́ti a (10) alatti egyenlőtlenséget tetszőleges pozitı́v egész λ-ra. A fentieken alapul a (2.104) feladat megoldására szolgáló, az irodalomban ”dual all-integer algorithm” néven ismert, alábbi eljárás. 105 Eljárás 1.lépés Ha a tekintett feladat egyenleteinek jobboldalai rendre nemnegatı́vak, akkor vége az eljárásnak, a feladat bázismegoldása optimális megoldás. Ellenkező esetben a 2.lépés következik 2.lépés Vegyük az első olyan egyenletet, amelynek jobboldalán
negatı́v érték áll Jelölje ezt az egyenletet vi + ak1 w1 + . + akm wm = bk Ha aks ≥ 0 (s = 1, . , m), akkor vége az eljárásnak, a tekintett feladatnak nincsen lehetséges megoldása Ellenkező esetben képezzük az egyenletből a következő egyenlőtlenséget: · ¸ ha i ha i bk k1 km w1 + . + wm ≤ , λ λ λ ahol λ = max{−akj : akj < 0, 1 ≤ j ≤ m}. Egy nemnegatı́v különbségváltozó bevezetésével az egyenlőtlenségről térjünk át egyenlőségre, és a kapott egyenlettel bővı́tsük a feladat feltételrendszerét. Képezzük a ½ ¾ ha i cj kj min : < 0, 1 ≤ j ≤ m −[akj /λ] λ mennyiséget. Legyen −cs /[aks /λ] a minimummal megegyező legkisebb j indexű hányados. Válasszuk az új egyenlet sorában az [aks /λ] együtthatót generáló elemnek, majd hajtsuk végre a 2.2 fejezet 2tételének bizonyı́tásában megadott átalakı́tásokat Az előállı́tott új
feladattal folytassuk az eljárást az 1.lépésnél Az algoritmust az alábbi feladat megoldásával demonstráljuk. 9.példa +x1 +2x2 −x3 = 1 y2 +x1 −2x2 −3x3 = −2 yj ≥ 0 (j = 1, 2), xi ≥ 0 (i = 1, 2, 3) 2x1 +x2 +2x3 =z min y1 Az eljárást a feladatokhoz tartozó szimplex táblázatokon fogjuk végrehajtani. Az induló szimplex táblázat a következő: x1 x2 x3 y1 1 2 −1 y2 1 A második egyenlet jobboldala negatı́v. 1 −2 −3 −2 λ = max{−a2j : a2j < 0, 1 ≤ j ≤ 3} = 3 Így az egyenletből képezett egyenlőtlenség: 2 1 [1/3] x1 + [−2/3] x2 + [−3/3] x3 ≤ [−2/3] 2 0 Most bevezetve a v1 nemnegatı́v különbségváltozót, a következő egyenletet kapjuk: v1 − x2 − x3 = −1 . Ezzel bővı́tve a feltételrendszert, az új feladat szimplex táblázata a következő: 106 Nyilvánvaló, hogy az új szimplex táblázat köz- x1 x2 x3 y1 1 2 −1 y2 1 −2 −3 −2 ból
az [akj /λ] (j = 1, . , m), [bk /λ] értékek v1 0 −∗ 1 −1 −1 képzésével. Most a harmadik egyenletben ge- 2 1 2 1 0 vetlenül felı́rható az eredeti szimplex táblázat- neráló elemet választva, a32 lesz a következő generáló elem. Végrehajtva a transzformációt az alábbi szimplex táblázathoz jutunk x1 v1 x3 Most az első egyenletnek negatı́v a jobboldala. 2 −3 −1 Képezve a λ értékét, λ = 3, és bevezetve v2 -t, y1 1 y2 1 −2 −1 x2 0 −1 1 0 a megfelelő új egyenlet a következő: 1 v2 − x3 = −1. 1 −1 1 Ezzel bővı́tve a feladat feltételrendszerét,az 2 új feladathoz az alábbi szimplex táblázat tartozik: x1 v1 x3 2 −3 −1 y1 1 y2 1 −2 −1 x2 0 −1 1 0 0 ∗ 2 1 1 x1 v1 v2 y1 1 2 y2 v2 Most a negyedik egyenletben kell generáló ele- 0 met választanunk. Mivel csak egyetlen nega- 1 tı́v együttható van a negyedik sorban,
ezér a43 − 1 −1 lesz a generáló elem. Végrehajtva a megfelelő −1 átalakı́tásokat, az alábbi szimplex táblázatot −3 2 A kapott táblázatban minden jobboldali érték 1 −2 −1 1 nemnegatı́v, ı́gy a feladat bázismegoldása egy- x2 0 −1 1 0 ben optimális megoldás is. De akkor x3 0 0 −1 1 ȳ1 = 2, ȳ2 = 1, x̄1 = 0, x̄2 = 0, x̄3 = 1 2 1 1 −2 optimális megoldása a kiindulási feladatnak. kapjuk: Az eljárással kapcsolatban fontosnak tartjuk megjegyezni a következőket: Az ismertetett változat nem véges minden esetben, de ezzel a metszet fogalommal és lexikografikus technikával felépı́thető az eljárásnak egy véges változata. Sajnálatos módon, hasonlóan a másik metszési módszerhez, a lépésszám ezen eljárásra sem korlátozható a feladat méreteinek függvényében, amint ezt J. J Finkelstein 1970ben igazolta A fejezet befejezéseként
megemlı́tjük, hogy a metszési eljárások kialakulásával majdnem egyidejűleg, 1960-ban A. H Land és A G Doig egy más megoldási technikát dolgoztak ki az egészértékű feladatok megoldására, amely a ”korlátozás és szétválasztás módszere” néven ismeretes. Ezen kivül, tekintettel az egészértékű 107 probléma nehéz kezelhetőségére, már a kezdeti időszakban megkezdődtek a speciális szerkezetű feladatok vizsgálatai, azzal a céllal, hogy ezen speciális modellek tulajdonságait kihasználva, az illető feladat megoldására hatékony eljárásokat nyerjenek. Ehhez nagyban hozzájárult az is, hogy bizonyos speciális modelleknek nagyon jelentős a gyakorlati alkalmazása. Ezt igen meggyőzően mutatja egy 1960-as, az USA-ban végzett felmérés, amely szerint a lineáris programozási modellek alkalmazásai közül 85% volt a szállı́tási és hozzárendelési modellek
részaránya. A következő két fejezetben mi is megismerkedünk ezekkel a modellekkel, és a hozzájuk kapcsolódó eljárásokkal. Feladatok 1. Oldjuk meg az egyenlőtlenségek által meghatározott félsı́kok ábrázolásával és L∗ meghatározásával az alábbi feladatot: 2x1 +3x2 ≤ 7 x1 −x2 ≤ 3 x1 −2x2 ≤ 2 x1 −10x2 ≤ 1 x1 +x2 ≤ 13 x1 , x2 ≥ 0 & x1 , x2 egész −8x1 +4x2 = z min 2. Tekintsük a fejezetben megismert alábbi feladatot −(k 2 +1)x1 +kx2 ≤ 0 (k 2 − 1)x1 −kx2 ≤ 0 x1 +x2 ≤ 2k + 1 xi ≥ 0 & xi egész (i = 1, 2) −x1 −x2 = z(x) min A k = 4 esetben ábrázoljuk grafikusan L-t és L∗ -ot, majd határozzuk meg mindkét feladat (a diszkrét és a megfelelő folytonos) optimális megoldását. 3. Tekintsük a fenti feladatot tetszőleges k ≥ 3 rögzı́tett egészre Igazoljuk, hogy L∗ = {(0, 0), (1, k)}. Ezt követően tekintsük a feladathoz tartozó folytonos feladatot,
és igazoljuk, hogy ezen feladat egy optimális megoldása: x̄1 = 2 − 1/(k + 1), x̄2 = 2k − k/(k + 1). 108 4. Oldjuk meg Gomory módszerével az alábbi feladatokat: x1 −x2 +x3 ≤ 2 x1 +x2 −2x3 ≤ 2 −2x1 −2x2 +x3 ≤ 1 x1 +x2 +x3 ≤ 12 xi ≥ 0 és xi egész (i = 1, 2, 3) −3x1 +5x2 −4x3 = z min (a) x1 +x2 +x3 ≤ 6 x1 −2x2 +2x3 ≤ 5 −2x1 +x2 −x3 ≤ 2 −x1 +3x2 +2x3 ≤ 20 xi ≥ 0 és xi egész (i = 1, 2, 3) −2x1 −3x2 +x3 = z min (b) 5. Oldjuk meg az egész együtthatós eljárással a következő feladatokat x1 +x4 −4x5 −x6 = −7 x2 −x4 −2x5 +x6 = −4 x3 −3x4 −x5 −2x6 = −5 xi ≥ 0 (i = 1, . , 6) 2x4 +5x5 +2x6 =z(x) min x1 −x4 +2x5 −2x6 = −4 x2 −x4 −2x5 +3x6 = −6 x3 −2x4 +2x5 −3x6 = −4 xi ≥ 0 (i = 1, . , 6) 3x4 +2x5 +4x6 =z(x) min 2.11 Hozzárendelési feladat megoldása magyar módszerrel A tárgyalásra kerülő modellnek számtalan gyakorlati alkalmazása van, ezek
közül az egyik legismertebb, a következő probléma. Adott bizonyos számú dolgozó és ugyanennyi munka. Az egyes dolgozók a munkákat különböző költségekkel tudják végrehajtani. Osszuk szét a dolgozók között az összes munkát úgy, hogy minden dolgozó pontosan egy munkát kapjon, és a munkavégzés összköltsége minimális legyen. 109 Vezessük be a következő jelöléseket. Jelölje n a dolgozók számát, cij a j-edik munka elvégzésének költségét, ha azt az i-edik dolgozó hajtja végre (i = 1, . , n; j = 1, , n) Tetszőleges 1 ≤ i, j ≤ n indexpárra legyen n 1, ha az i-edik dolgozó hajtja végre a j-edik munkát, xij = 0 különben. A bevezetett jelölésekkel a probléma az alábbi, hozzárendelési feladat néven ismert optimumszámı́tási modellel ı́rható le n X xit = 1 (i = 1, . , n) t=1 n X (2.111) xtj = 1 (j = 1, . , n) t=1 xij ∈ {0, 1} (i = 1, .
, n; j = 1, , n) – n X n X cij xij = z min i=1 j=1 Pn biztosı́tják, hogy Valóban, a t=1 xit = 1, xit ∈ {0, 1} (t = 1, . , n) feltételek Pn az i-edik dolgozó pontosan egy munkát fog végrehajtani, a t=1 xtj = 1, xtj ∈ {0, 1} (t = 1, . , n) feltételek pedig azt eredményezik, hogy a j-edik munka pontosan egy dolgozó részére lesz kiadva. Ebből már következik, hogy minden munka kiosztásra kerül, és minden dolgozó pontosan munkát fog végrehajtani. A teljes munkavégzés Pegy n Pn költsége cij definı́ciója alapján: i=1 j=1 cij xij . Mielőtt rátérnénk a (2.111) feladat vizsgálatára, megadunk egy további olyan problémát, amely hozzárendelési feladathoz vezet. A ”házasságkötési játék” néven ismert alábbi feladatot P. R Halmos és H Vaughon publikálta 1950-ben Telepesek egy 10 legényemberből álló kolóniája kiegészül 10 potenciális menyaszszonnyal. Rövid udvarlás
után a fiatalemberek elhatározzák, hogy haladéktalanul megházasodnak. Minden egyes menyasszonyjelölt kap egy névsort, amelyen a 10 fiatalember neve szerepel, és ezen kell pontoznia a férjjelölteket, a számára leginkább megfelelőt 10 ponttal, a következő választottját 9 ponttal, és ı́gy tovább. Tegyük fel, hogy bármely rögzı́tett párválasztásnál az egész telep boldogsága a menyaszszonyjelöltek által adott pontszámok összegével arányos. Határozzunk meg egy olyan párválasztást, amely az egész telep számára maximális boldogságot eredményez. Nyilvánvaló, hogy a fenti probléma egy hozzárendelési feladattal ı́rható le, amelyben az i-edik menyasszonyjelöltnek a j-edik fiatalemberre adott pontszáma −cij . 110 Vizsgáljuk ezek után a (2.111) feladatot Vegyük észre, hogy a tekintett feladat lehetséges megoldásai olyan 0 és 1 elemekből álló mátrixok, amelyeknek
minden sora és minden oszlopa pontosan egy darab 1-est tartalmaz. Igaz ennek a megfordı́tása is, azaz minden ilyen mátrix lehetséges megoldása (2.111)-nek Másrészt könnyen belátható, hogy az ilyen tulajdonságú mátrixok száma n!. Ez viszont azt jelenti, hogy a (2.111) feladat lehetséges megoldásainak halmaza egy nemüres, véges halmaz, ı́gy a feladatnak mindig létezik optimális megoldása Az elmondottakból az is következik, hogy rögzı́tett n mellett a különböző célfüggvényű hozzárendelési feladatokhoz egy közös lehetséges megoldás halmaz tartozik, mégpedig a fenti tulajdonsággal rendelkező mátrixok halmaza. Így a (2111) feladatot egyértelműen meghatározza a (cij ) mátrix, amelyet költségmátrixnak nevezünk. Ez a meghatározottság lehetővé teszi, hogy tetszőleges Dn×n mátrixra, a D költségmátrixú hozzárendelési feladatot H(D)-vel jelöljük. A lehetséges
megoldások halmazának az előzőekben adott leı́rását felhasználva, megkaphatjuk a feladat optimális megoldását úgy, hogy valamilyen eljárással előállı́tjuk a fenti tulajdonságú mátrixok mindegyikét, majd kiszámı́tjuk a mátrixokhoz tartozó célfüggvényértékeket és vesszük ezek minimumát. Ennek az eljárásnak a bemutatására tekintsük a 3 4 2 H 6 5 1 hozzárendelési feladatot. 7 4 3 A lehetséges megoldások halmaza a következő mátrixokból áll: 1 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 A fenti mátrixokhoz tartozó célfüggvényértékek rendre: 11, 8, 13, 12, 12, 14. Így a feladat optimális megoldása: 1 0 0 X̄ = 0 0 1 , az optimum értéke pedig z(X̄) = 8. 0 1 0 Nyilvánvaló, hogy
nagyobb feladatok esetén ez az eljárás gyakorlatilag nem használható, ugyanis nagyon nagy lesz az előállı́tandó mátrixok száma. Például, ha n = 6, akkor a megadott tulajdonságú mátrixok száma: 6! = 720. Ezért a (2111) feladat megoldására egy másik, a fenti algoritmusnál lényegesen hatékonyabb eljárással fogunk megismerkedni, amely magyar módszer néven ismeretes. Az eljárást H. W Kuhn publikálta 1955-ben, és az algoritmus felépı́tésénél egy magyar matematikus, Egerváry Jenő eredményét használta fel. Egerváry Jenő a mátrixok bizonyos tulajdonságú független elemeinek maximális számát jellemezte a 111 mátrixok fedővonalainak felhasználásával, és ezt az eredményt 1931-ben a Matematikai és Fizikai Lapokban közölte. 22 évvel később, H W Kuhn tudomást szerzett ezen eredményről, és erre épı́tve kidolgozott egy eljárást a hozzárendelési feladat
megoldására. Mivel a kidolgozott eljárás Egerváry Jenő tételére épül, ezért Kuhn az algoritmusnak a magyar módszer nevet adta. Az 1955-ös publikáció után a magyar módszer igen ismertté vált, és különböző formákban került tárgyalásra Mi a továbbiakban E. G Golstejn és D B Jugyin 1969-es könyvére épı́tve tárgyaljuk az eljárást. Mielőtt erre rátérnénk, szükségesek bizonyos előkészületek Legyenek Cn×m és Dn×m tetszőleges valós mátrixok. Azt mondjuk, hogy C ekvivalens D-vel, ha vannak olyan α1 , . , αn ; β1 , , βm valós számok, hogy bármely 1 ≤ i ≤ n, 1 ≤ j ≤ m indexpárra cij = dij + αi + βj teljesül. A bevezetett relációra a továbbiakban a C ∼ D jelölést fogjuk használni. Nyilvánvaló, hogy az azonos tı́pusú valós mátrixok halmazán ez a reláció reflexı́v, tranzitı́v és szimmetrikus, azaz ekvivalenciareláció. A
hozzárendelési feladat és a fenti reláció kapcsolatát mutatja a következő állı́tás. 7.segédtétel Ha C, D n × n-es valós mátrixok és C ∼ D, akkor a H(C) és H(D) hozzárendelési feladatok optimális megoldásai megegyeznek. Bizonyı́tás. Mivel a lehetséges megoldások halmaza közös, és mindkét feladatnak létezik optimális megoldása, ezért az állı́tás korrekt. Ezek után jelölje H(C) és H(D) célfüggvényét rendre zC és zD . Megmutatjuk, hogy van olyan γ konstans, amelyre zC (X̄) = zD (X̄) + γ teljesül tetszőleges X̄ lehetséges megoldásra. Valóban, mivel C ∼ D, ezért vannak olyan α1 , . , αn ; β1 , , βn konstansok, hogy cij = dij + αi + βj teljesül bármely 1 ≤ i ≤ n, 1 ≤ j ≤ n indexpárra. De akkor zC (X̄) = n X n X cij x̄ij = i=1 j=1 n X n X dij x̄ij + i=1 j=1 Mivel X̄ lehetséges megoldás, ezért n X n X (dij + αi + βj )x̄ij = i=1 j=1 n X n X
n X n X αi x̄ij + βj x̄ij . i=1 j=1 j=1 i=1 Pn Pn j=1 x̄ij = 1 és i=1 x̄ij = 1. zC (X̄) = zD (X̄) + n X i=1 αi + n X De akkor βj . j=1 Pn Pn Most legyen γ = i=1 αi + j=1 βj . Akkor a zC (X̄) = zD (X̄) + γ egyenlethez jutunk, amely teljesül bármely X̄ lehetséges megoldásra. Ez pontosan azt jelenti, hogy a lehetséges megoldások halmazán a két célfüggvény csak egy additı́v konstansban tér el egymástól, amiből nyilvánvalóan következik az állı́tás. A továbbiakban alapvető szerepe lesz a következő definı́ciónak: Adott mátrix 0 elemeinek egy rendszerét független 0-rendszernek nevezzük, ha a mátrix minden sora és minden oszlopa legfeljebb egy elemét tartalmazza a rendszernek. Valamely független 0-rendszer elemeit a továbbiakban 0∗ -gal fogjuk jelölni. 112 Tekintsük a következő független 0-rendszereket: 0∗ 4 3 0 1 2 3 0 1 2 2 0 0 4 2 0∗
4 0 0 3 4 0 0 1 2 0 0 1 ∗ 3 0 0 4 0∗ 3 2 0 1 2 4 0∗ 2 0∗ 0 1 ∗ 3 0 0 4 0∗ 3 2 0 1 2 4 0∗ 2 0 0∗ 1 3 0∗ 0 2 A fenti példák mutatják, hogy adott mátrixban több különböző független 0-rendszer is kijelölhető, és maximális elemszámú független 0-rendszerből is több lehet. A 0∗ -okon kivül használni fogjuk még a következő elnevezéseket, illetve jelöléseket. Egy mátrix valamely sorát (oszlopát) kötött sornak (oszlopnak) nevezzük, ha mellette (felette) egy ”+” jel áll. A mátrix valamely elemét szabad elemnek nevezzük, ha nincs semmiféle jellel ellátva, és sem a sora, sem az oszlopa nincsen lekötve. Speciálisan, ha az illető elem 0, akkor szabad 0-ról beszélünk. Végül használni fogjuk a C ≥ 0 jelölést, ha a C mátrix minden eleme nemnegatı́v. Ezek után rátérhetünk a H(Cn×n ) hozzárendelési
feladat magyar módszerrel történő megoldására. Az eljárás során előállı́tunk egy olyan C(0) , C(1) , , C(k) (k < n) mátrixsorozatot, amelyre teljesülnek a következők: (1) C ∼ C(0) , (2) C(t) ∼ C(t+1) (t = 0, . , k − 1), (3) C(t) ≥ 0 (t = 0, . , k), (4) C(k) -ban ki van jelölve egy n-elemű független 0-rendszer. Tegyük fel, hogy rendelkezünk egy, a fentieket kielégı́tő C(0) , C(1) , . , C(k) mátrixsorozattal. Definiáljuk az X̄ mátrixot a következőképpen: ½ (k) ∗ x̄ij = 1, ha cij = 0 , 0 különben. Megmutatjuk, hogy X̄ optimális megoldása H(C)-nek. Valóban, X̄ lehetséges megoldás, mivel C(k) -ban minden sor és minden oszlop legfeljebb egy 0∗ -ot tartalmaz, továbbá a 0∗ -ok száma n. Másrészt jelölje zk a H(C(k) ) feladat célfüggvényét Akkor (3) alapján zk (X̃) ≥ 0 teljesül tetszőleges X̃ lehetséges megoldásra. Most vegyük észre, hogy X̄
definı́ciójából zk (X̄) = 0 következik. De ekkor zk (X̃) ≥ zk (X̄) teljesül tetszőleges X̃ lehetséges megoldásra, azaz X̄ optimális megoldása H(C(k) )-nak. Végül (1) és (2), valamint az ekvivalencia tranzitivitása alapján C ∼ C(k) . Ebből viszont már a 7.segédtétellel azt kapjuk, hogy X̄ optimális megoldása H(C)-nek, amivel az X̄-ra vonatkozó állı́tást igazoltuk. Kérdés ezek után, hogy miként lehet egy, a fentieket kielégı́tő C(0) , . , C(k) mátrixsorozatot előállı́tani. Erre szolgál a következő iterációs eljárás Magyar módszer 113 Előkészı́tő rész. A C mátrix i-edik sorából rendre vonjuk ki az i-edik sor elemeinek a minimumát (i = 1, , n), az előálló mátrixot jelölje C̄ A C̄ mátrix j-edik oszlopának elemeiből rendre vonjuk ki az illető oszlop elemeinek a minimumát (j = 1, . , n), és a kapott mátrixot jelölje C(0) Jelöljünk
ki C(0) -ban egy független 0-rendszert oszlopfolytonosan, azaz oszloponként haladva, a tekintett oszlopból választható 0-k közül mindig a legkisebb sorindexű 0-t vegyük fel a független 0-rendszerbe. Ezek után legyen r értéke 0, és folytassuk az eljárást az iterációs eljárásrésszel. Iterációs rész (r.iteráció) 1.lépés Ha a C(r) -ben kijelölt független 0-rendszer elemeinek a száma n, akkor vége az eljárásnak. Ellenkező esetben kössük le C(r) -ben a 0∗ -okat tartalmazó oszlopokat, és folytassuk az eljárást a 2lépéssel 2.lépés Keressünk sorfolytonosan szabad 0-t Ha nincs szabad 0, akkor az 5lépés következik. Ha találunk szabad 0-t, akkor vizsgáljuk meg az illető 0 sorát Ha ez a sor nem tartalmaz 0∗ -ot, akkor a 4.lépés következik, ellenkező esetben a 3lépéssel folytatjuk az eljárást. 3.lépés A tekintett szabad 0-t lássuk el ”,”-vel, kössük le a
sorát, és szüntessük meg a sorában lévő 0∗ oszlopának lekötését, majd folytassuk az eljárást a 2.lépéssel 4.lépés A tekintett szabad 0-t lássuk el ”,”-vel, és ebből a 00 -ből kiindulva, képezzünk láncot a következők szerint: minden láncbeli 00 -re az oszlopában lévő 0∗ -gal folytatódik a lánc, és minden láncbeli 0∗ -ra a sorában lévő 00 -vel folytatódik a lánc, feltéve, hogy vannak ilyen elemek. Ellenkező esetben a láncképzés véget ér Ezek után (r+1) legyen C(r+1) a jelölések nélküli aktuális C(r) mátrix, és lássuk el ” ∗ ”-gal a cij (r) (r) (r) (r) elemet, ha cij = 0∗ és cij nem szerepel a láncban, vagy cij = 00 és cij eleme a láncnak. Ezek után növeljük r értékét 1-gyel, és folytassuk az eljárást a következő iterációs lépéssel. 5.lépés Képezzük a szabad elemek minimumát, majd ezt a minimumot vonjuk ki az
összes szabad elemből és adjuk hozzá a kétszer kötött (soruk és oszlopuk is le van kötve) elemekhez. Ezt követően az átalakı́tott mátrixot tekintve aktuális C(r) mátrixnak, folytassuk az eljárást a 2.lépéssel Az előzőek alapján az eljárás helyességének igazolásához elegendő megmutatnunk, hogy az eljárás révén előállı́tható egy olyan C(0) , . , C(k) mátrixsorozat, amely rendelkezik az (1)-(4) alatti tulajdonságokkal. Mielőtt erre rátérnénk, részletesen végrehajtjuk az algoritmust egy konkrét feladaton. E célból tekintsük a H(C) hozzárendelési feladatot, ahol 4 3 C = 3 2 2 5 2 3 4 1 114 3 4 4 3 3 2 3 4 2 4 3 4 3 4 3 A sorminimumok a következők: 2, 2, 3, 2, 1. Ezeket rendre kivonva az első,, ötödik sor elemeiből, az alábbi C̄ mátrixhoz jutunk. 2 1 C̄ = 0 0 1 3 0 0 2 0 1 2 1 1 2 1 2 0
2 2 0 1 1 0 3 A C̄ mátrix oszlopaira képezve a minimumokat, a következő értékeket kapjuk: 0, 0, 1, 0, 0. Rendre kivonva ezeket a megfelelő oszlopok elemeiből (most csak a harmadik oszlop elemeiből kell kivonnunk 1-et), az alábbi C(0) mátrixot kapjuk C(0) 2 1 = 0 0 1 3 0 0 2 0 0 1 0 0 1 0 1 1 0 3 1 2 0 2 2 Most jelöljünk ki C(0) -ban egy független 0-rendszert oszlopfolytonosan. Az első oszlop (0) első 0 eleme c31 . Vegyük fel ezt az elemet a független 0-rendszerbe, azaz lássuk el ” ∗ ”-gal, majd térjünk át a második oszlop 0 elemeinek a vizsgálatára. Ebben az (0) oszlopban az első 0 elem c22 . Ennek a sora nem tartalmaz 0∗ elemet, ı́gy bővı́thetjük (0) vele a rendszert, és áttérünk a harmadik oszlopra. Itt az első 0 elem c13 , amellyel (0) szintén bővı́thető a független 0-rendszer. A negyedik oszlop első 0 eleme c14 , amelynek a sora tartalmaz 0∗
-ot, ı́gy ezzel nem bővı́thető a rendszer. A negyedik oszlop második (0) 0 eleme c44 , amivel ismét bővı́thető a független 0-rendszer. Végül az utolsó oszlop (0) első 0 eleme c35 . A harmadik sor már tartalmaz 0∗ -ot, ı́gy ezzel az elemmel nem bővı́thetünk. Mivel az utolsó oszlop több 0 elemet nem tartalmaz, ezért a független 0-rendszer kijelölését, és egyben az eljárás előkészı́tő részét is befejeztük. A kijelölt független 0-rendszer a következő: C(0) 2 1 = 0∗ 0 1 3 0∗ 0 2 0 0∗ 1 0 0 1 0 1 1 0∗ 3 1 2 0 2 2 Térjünk rá ezek után az iterációs rész végrehajtására. Mivel a független 0-rendszer elemeinek a száma 4, ezért kössük le a 0∗ -okat tartalmazó oszlopokat. C(0) + 2 1 = 0∗ 0 1 + +∗ 3 0 0∗ 1 0 0 2 0 0 1 115 + 0 1 1 0∗ 3 1 2 0 2 2 (0) Sorfolytonosan szabad 0-t
keresve, c35 az első szabad 0. A harmadik sor tartalmaz (0) 0∗ -ot, ı́gy a harmadik lépés szerint c35 -t ellátjuk ”,”-vel, a harmadik sort lekötjük, majd a sorban lévő 0∗ oszlopát (első oszlop) feloldjuk. A kapott mátrix a következő: C(0) 2 1 = 0∗ 0 1 + + + 0∗ 1 0 0 1 0 1 1 0∗ 3 3 0∗ 0 2 0 1 2 00 + 2 2 (0) Ezt követően a 2.lépéssel, sorfolytonos 0 kereséssel folytatjuk az eljárást Most c41 az (0) első szabad 0. A negyedik sor tartalmaz 0∗ -ot, ezért a 3lépés alapján c41 -t ellátjuk ”,”-vel, a negyedik sort lekötjük, és a negyedik oszlopot feloldjuk. + + C(0) 2 1 = 0∗ 0 0 1 3 0∗ 0 2 0 0∗ 1 0 0 1 (0) 0 1 1 0∗ 3 1 2 00 + 2 + 2 (0) Ismét rátérve a 2.lépésre, c14 az első szabad 0 Az első sor tartalmaz 0∗ -ot, ezért c14 -t ”,”-vel látjuk el, az első sort lekötjük, és a
harmadik oszlopot feloldjuk. 116 C(0) 2 1 = 0∗ 0 0 1 + 3 0∗ 0∗ 1 0 0 2 0 0 1 00 1 1 0∗ 3 1 + 2 00 + 2 + 2 Újra a 2.lépéssel folytatva az eljárást, azt kapjuk, hogy nincs szabad 0 Ekkor az 5lépés következik. Abból a célból, hogy az 5lépés végrehajtását megkönnyı́tsük, fedjük le a kötött sorokat és oszlopokat. C(0) 2 1 = 0∗ 0 0 1 + 3 0∗ 0∗ 1 0 0 2 0 0 1 00 1 1 0∗ 3 + 1 2 00 + 2 + 2 Így a le nem fedett elemek lesznek pontosan a szabad elemek. Ezek minimuma 1 Ezt a minimumot kivonva a szabad elemekből és hozzáadva a kétszer fedett elemekhez, a következő mátrixhoz jutunk. C(0) 2 0 = 0∗ 0 0 0 + 4 0∗ 0∗ 0 1 0 3 0 0 0 00 0 1 0∗ 2 1 + 1 00 + 2 + 1 (0) Most ismét a 2.lépéssel kell folytatnunk az eljárást Sorfolytonosan c21 az első szabad (0) (0) 0. Mivel c21 sora
tartalmaz 0∗ -ot, ezért c21 -t ellátjuk ”,”-vel, a sorát lekötjük, a második oszlopot feloldjuk. C(0) 2 0 0 = 0∗ 0 0 0 4 0∗ 1 3 0 0∗ 0 0 0 0 (0) 00 0 1 0∗ 2 1 1 00 2 1 + + + + (0) Újra szabad 0-t keresve, c51 lesz az első szabad 0. Mivel c51 sora nem tartalmaz 0∗ -ot, (0) ezért a 4.lépéssel folytatódik az eljárás c51 -t ellátjuk ”,”-vel, és ez lesz a lánc kezdő (0) eleme. A lánc következő eleme az első oszlopban lévő 0∗ , azaz c31 Ezt az elemet a (0) láncban a harmadik sorban elhelyezkedő 00 , azaz c35 követi. Mivel az ötödik oszlop (0) nem tartalmaz 0∗ -ot, ezért c35 -val a lánc véget ér. 117 C(0) 2 0 0 = 0∗ 0 0 00 4 0∗ 1 3 0 0∗ 0 0 0 0 00 0 1 0∗ 2 1 1 00 2 1 + + + + Ezek után törölve a jelöléseket, és ” ∗ ”-gal ellátva a láncon kivüli 0∗ -oknak megfelelő (0) (0)
(0) elemeket (c13 , c22 , c44 ), valamint ”∗”-gal ellátva a láncbeli 00 -knek megfelelő elemeket (0) (0) (c35 , c51 ), az alábbi C(1) mátrixot kapjuk. C(1) 2 0 = 0 0 0∗ 4 0∗ 1 3 0 0∗ 0 0 0 0 0 0 1 0∗ 2 1 1 0∗ 2 1 Mivel C(1) -ben egy 5-elemű független 0-rendszer van kijelölve, ezért az eljárás véget ér. Az előzőek alapján tudjuk, hogy ebben az esetben egy optimális megoldás az alábbi X̄ mátrix: 0 0 X̄ = 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 A végrehajtott eljárással kapcsolódva, fontosnak tartjuk megjegyezni a következőket. A szükséges iterációk k száma C-től függően a 0, 1, . , n − 1 értékek bármelyike lehet. Például konstruálható olyan 5×5-ös C mátrix (a 3feladatban egy ilyen mátrixot adunk meg), amelyre alkalmazva az eljárást, C(0) , C(1) , C(2) , C(3) , C(4) az előálló
mátrixsorozat. A láncképzés során előfordulhat, hogy a lánc egyetlen 00 elemből, a kezdő elemből áll. Ilyenkor elfajuló láncról beszélünk, amely úgy interpretálható, hogy a benne szereplő 00 -vel közvetlenül bővı́thető az előzőekben előállı́tott független 0-rendszer Az algoritmus fenti végrehajtásában az egyes lépéseket szándékosan túlrészleteztük. A C(0) ismételt kiı́rása nélkül kijelölhető C(0) -ban a független 0-rendszer, leköthetők az oszlopok, és végrehajthatók a sorkötések valamint az oszlopfeloldások. Ez utóbbit a ”+” jel bekarikázásával jelöljük. A mátrix ismételt kiı́rása csak az 5lépés végrehajtása után szükséges. Az elmondottaknak megfelelően végrehajtva az eljárást, az alábbi mátrixokhoz jutunk: 118 4 3 3 2 2 5 2 3 4 1 3 4 4 3 3 2 3 4 2 4 3 4 3 4 3 2 1
0 0 1 3 0 0 2 0 1 2 1 1 2 0 1 1 0 3 1 1 00 2 1 + + + + 1 2 0 2 2 + ° + + ° ° + 0∗ 1 0 0 1 00 1 1 0∗ 3 2 1 ∗ 0 0 0 1 3 0∗ 0 2 0 1 + 2 00 + 2 + 2 ° + 2 00 ∗ 0 0 0 00 4 0∗ 1 3 0 0∗ 0 0 0 0 00 0 1 0∗ 2 2 0 0 0 0∗ 4 0∗ 1 3 0 0∗ 0 0 0 0 0 0 1 0∗ 2 1 1 0∗ 2 1 Ezek után rátérhetünk az eljárás helyességének az igazolására. Megmutatjuk, hogy az algoritmus egy olyan C(0) , . , C(k) (k < n) mátrixsorozatot állı́t elő, amely rendelkezik az (1) − (4) alatti tulajdonságokkal. Vizsgáljuk elsőként az eljárás előkészı́tő részét. Ha az i-edik sor elemeinek a minimumát αi -vel jelöljük (i = 1, , n), akkor nyilvánvaló, hogy cij = c̄ij + αi teljesül bármely (i, j) indexpárra. Hasonlóan, a C̄ mátrix j-edik oszlopának minimumát βj
-vel (0) (0) jelölve (j = 1, . , n), c̄ij = cij + βj De akkor cij = cij + αi + βj teljesül bármely (i, j) indexpárra, és ı́gy C ∼ C(0) . Másrészt vegyük észre, hogy mivel a sorokból és oszlopokból mindig az illető sorok és oszlopok elemeinek minimumát vonjuk ki, ezért C(0) ≥ 0. Szintén a minimumok kivonása miatt C(0) minden sora és minden oszlopa tartalmaz legalább egy 0-t. Ebből következik, hogy az oszlopfolytonosan kijelölhető független 0-rendszer legalább egy elemet tartalmaz. Ezzel az előkészı́tő rész helyességét igazoltuk. Tekintsük ezek után az iterációs eljárásrészt. Tegyük fel, hogy adott egy olyan C mátrix, amelyre C ∼ C(r) , C(r) ≥ 0, és C(r) -ben ki van tüntetve egy m-elemű független 0-rendszer, ahol 1 ≤ m < n. (r) Elsőként megmutatjuk, hogy a tekintett eljárásrész véges lépésben véget ér. Valóban, vegyük észre, hogy a 2 − 3
lépéskombináció legfeljebb m-szer hajtódik végre, ugyanis minden egyes végrehajtásnál lekötünk egy sort és feloldunk egy oszlopot. Mivel a kötött oszlopok száma m, ezért ezt a lépéskombinációt m-szer végrehajtva, minden egyes 0∗ kötött sorban lesz, ı́gy az eljárás vagy a 4.lépéssel, vagy az 5lépéssel folytatódik. Az 5lépés szintén legfeljebb m-szer kerül végrehajtásra Erre a lépésre akkor kerül sor, ha nem találunk szabad 0-t. Mivel a kötött sorok száma legfeljebb m(< n), ezért az aktuális C(r) -ben van kötetlen sor. Egy ilyen sor 00 -t nem tartalmazhat, és 0∗ -ból is legfeljebb egyet, ami kötött oszlopban van Másrészt a kötött oszlopok száma legfeljebb m, ı́gy a sor tartalmaz legalább n − m szabad elemet, azaz léteznek szabad elemek. Mivel nincs szabad 0, és C(r) elemei nemnegatı́vak, ezért a 119 szabad elemek rendre pozitı́vak. Ezek minimumát
kivonva minden szabad elemből, az átalakı́tás utáni mátrix legalább egy szabad 0-t tartalmaz, mégpedig ott, ahol a szabad elemek felveszik a minimumukat. A kapott szabad 0-val vagy a 4lépéssel, vagy a 3.lépéssel folytatódik az eljárás Az utóbbi esetben a szabad 0 sorát lekötjük, és a sorában lévő 0∗ oszlopát feloldjuk, amiből már következik az 5.lépésre vonatkozó állı́tás, és az eljárásrész végessége is. Most megmutatjuk, hogy az 5.lépésre teljesülnek a következők: (i) az átalakı́tás során a 0∗ , 00 elemek nem változnak, 0 0 0 (ii) az átalakı́tással előállı́tott C (r) mátrixra C (r) ≥ 0 és C (r) ∼ C(r) teljesül. Az (i) állı́tás következik abból, hogy minden egyes 0∗ pontosan egyszer van lekötve vagy a sorában vagy az oszlopában, továbbá minden egyes 00 elemnek a sora kötött, az oszlopa pedig szabad. 0 Az (ii) állı́tásban C (r)
nemnegativitása abból adódik, hogy az átalakı́tás során a szabad elemek pozitı́v θ minimumát vonjuk ki a szabad elemekből és adjuk hozzá 0 a kétszeresen kötött elemekhez. Végül a C (r) ∼ C(r) fennállásának igazolásához vegyük észre, hogy az 5.lépés átalakı́tása az eredményt illetően megegyezik a következő művelettel: a nem kötött sorok elemeiből rendre vonjunk ki θ-t, a kötött oszlopok elemeihez rendre adjunk hozzá θ-t. Valóban, az utóbbi átalakı́tás során a kétszeresen kötött elemekhez hozzáadódik θ, az egyszeresen kötött elemek nem változnak, a szabad elemek csökkennek θ-val, azaz a két átalakı́tás ugyanazt a mátrixot eredményezi. 0 Másrészt a második átalakı́tásról nyilvánvaló, hogy a végrehajtásával előálló C (r) mátrix ekvivalens C(r) -rel. Vizsgáljuk ezek után az eljárás 4.lépését Mivel minden oszlop
legfeljebb egy 0∗ -ot, és minden sor legfeljebb egy 00 -t tartalmaz, ezért a láncképző algoritmus egyértelműen meghatározza a láncot. Jelölje (i1 , λ1 ), (i2 , λ1 ), (i2 , λ2 ), a láncbeli elemek indexpárjainak a sorozatát a láncképzésnek megfelelő sorrendben Megmutatjuk, hogy a lánc nem metszi önmagát, azaz a fenti indexpársorozat elemei páronként különbözőek. Ehhez igazoljuk a következőket: (a) a fenti sorozatban a láncbeli 00 elemekhez tartozó indexpárok páronként különbözők, (b) a láncképzés során minden láncbeli 0∗ elemet követ egy 00 elem a láncban. Az (a) állı́tás igazolásához a mátrix minden egyes 00 eleméhez rendeljük hozzá azt az időpontot, amikor az illető 0-t az eljárás során elláttuk ”,”-vel. Így minden 00 -höz hozzárendeltünk egy időpontot, és különböző 00 -khöz különböző időpont tartozik. Most tekintsünk a
láncban két egymást követő 00 ele0∗ 00 σ0 met. Jelölje az első elemhez rendelt időpontot σ és a második 00 -höz rendelt időpontot σ 0 . Vegyük észre, hogy az első 00 oszlopában van egy 0∗ , ı́gy ez az oszlop az iterációs eljárásrész kezdetekor le van kötve. Ezt a kötést a 3.lépés alapján akkor szüntetjük meg, 0 . 0 σ amikor a 0∗ sorában ellátunk egy szabad 0-t ”,”-vel. Mivel minden sor legfeljebb egy 00 elemet tartalmaz, ı́gy 120 ez az időpont σ 0 . De ez azt jelenti, hogy a tekintett 0∗ oszlopában lévő bármely 0 elem a σ 0 időpontban válhat szabad 0-vá, következésképp ”,”-vel történő megjelölésére csak egy későbbi időpontban kerülhet sor, azaz σ > σ 0 . Ezzel viszont azt kapjuk, hogy a fenti indexpársorozatban a 00 -khöz rendelt időpontok egy szigorúan monoton csökkenő sorozatot alkotnak, amiből már következik az állı́tás. A
(b) állı́tás igazolásához tekintsük a lánc egy tetszőleges 0∗ elemét. A láncképző algoritmus szerint a 0∗ oszlopában egy láncbeli 00 0∗ előzi meg a 0∗ -ot. Másrészt a 0∗ oszlopa az iterációs eljárás kezdetén le van kötve Így ebbe az oszlopba csak úgy kerülhetett 00 , hogy a 0∗ sorában egy szabad 0-t el. 00 láttunk ”,”-vel és a 0∗ oszlopát feloldottuk. De akkor a láncképző algoritmus szerint ez a 00 a lánc következő eleme, amivel az állı́tást igazoltuk. Most megmutatjuk, hogy az (i1 , λ1 ), (i2 , λ1 ), . sorozatban a láncbeli 0∗ -okhoz tartozó indexek különbözők. Valóban, ha két ilyen indexpár megegyezne, akkor (b) alapján az illető 0∗ -okat követi egy-egy 00 , és a láncképzés egyértelműsége miatt ezen 00 -khöz tartozó indexpárok is megegyeznének, ami ellentmond (a)-nak. Következésképp, a vizsgált indexpárok is páronként
különbözők. Mivel az eljárás során a 0-kat legfeljebb egy jellel láttuk el, ezért a fentiekből már következik, hogy az (i1 , λ1 ), (i2 , λ1 ), . indexpárok páronként különbözők, azaz a lánc nem metszi önmagát. Vizsgáljuk végül a láncon kivüli 0∗ -okból és a láncbeli 00 -kből álló 0-rendszert. Megmutatjuk, hogy ez olyan független 0-rendszer, amelynek elemszáma m + 1. Valóban, a láncon kivüli 0∗ -ok független 0-rendszert alkotnak, mert a 0∗ -ok független 0-rendszert jelöltek, és egy ilyen rendszer minden részrendszere is független 0-rendszer. Most tekintsük a láncbeli 00 elemeket Mivel minden sor legfeljebb egy 00 -t tartalmaz, ezért minden sorban legfeljebb egy eleme van a tekintett rendszernek. Megmutatjuk, hogy ez az oszlopokra is teljesül. Tegyük fel, hogy valamely oszlop két láncbeli 00 elemet tartalmaz. Akkor ezek közül valamelyik 00 kezdő vagy közbülső eleme
a láncnak, ezért a vizsgált oszlop tartalmaz egy láncbeli 0∗ -ot is. De akkor a láncképző algoritmus szerint a másik 00 -t is ez a 0∗ követné a láncban, és ı́gy a lánc metszené önmagát, ami ellentmondás. Következésképp, minden oszlop legfeljebb egy láncbeli 00 -t tartalmaz, és ı́gy a láncbeli 00 -k független 0-rendszert alkotnak. Ezek után az új 0-rendszer függetlenségéhez csak azt kell igazolnunk, hogy (i) láncbeli 00 sorában nincs láncon kivüli 0∗ , (ii) láncbeli 00 oszlopában nincs láncon kivüli 0∗ . Az (i) állı́tás igazolásához tegyük fel, hogy valamely láncbeli 00 elem sora tartalmaz láncon kivüli 0∗ -ot. Ekkor a tekintett 00 nem lehet a lánc kezdő eleme, ugyanis csak akkor indı́thatunk 00 -ből láncot, ha a sora nem tartalmaz 0∗ elemet Így a vizsgált 00 közbülső vagy befejező eleme a láncnak. De ekkor a láncban van egy elem előtte, mégpedig egy
0∗ . A láncképző algoritmus alapján ez a 0∗ is a tekintett 00 sorában helyezkedne el, és ı́gy ez a sor két 0∗ -ot tartalmazna, ami ellentmondás. Következésképp, láncbeli 00 sora nem tartalmazhat láncon kivüli 0∗ -ot. 121 Hasonlóan látható be az (ii) állı́tás is. Ehhez tegyük fel, hogy valamely láncbeli 00 oszlopa tartalmaz láncon kivüli 0∗ -ot. Ekkor a tekintett 00 elem nem lehet a lánc befejező eleme, ugyanis a láncképző algoritmus szerint az oszlopban lévő 0∗ -gal folytatódna a lánc. Így a tekintett 00 a lánc kezdő vagy közbülső eleme De akkor a láncképző algoritmus szerint ez az oszlop tartalmaz egy láncbeli 0∗ -ot is. Ezzel azt kapjuk, hogy az oszlopban két 0∗ van, ami ellentmondás. Következésképp, láncbeli 00 oszlopa nem tartalmaz láncon kivüli 0∗ -ot. Most felhasználva, hogy mind a láncon kivüli 0∗ -ok, mind a láncbeli 00 -k független
0-rendszert alkotnak, (i) és (ii) alapján egyszerűen adódik, hogy a láncon kivüli 0∗ -ok és a láncbeli 00 -k együttesen egy független 0-rendszert alkotnak. Hátra van még annak igazolása, hogy az új független 0-rendszer elemeinek a száma m+1. Tudjuk, hogy a lánc nem metszi önmagát Másrészt a lánc 00 -vel kezdődik és (b) alapján 00 -vel végződik. Ez pontosan azt jelenti, hogy a láncban szereplő 00 -k száma eggyel több, mint a láncbeli 0∗ -ok száma, amivel adódik az elemszámokra vonatkozó állı́tás. Összegezve az eddigieket, megmutattuk, hogy az iterációs eljárásrésszel a C(r) ből közvetlenül, vagy közbülső mátrixok felhasználásával előállı́tott C(r+1) mátrixra teljesülnek a következők: (i) C(r) ∼ C(r+1) , (ii) C(r+1) ≥ 0, (iii) C(r+1) -ben ki van jelölve egy (m+1)-elemű független 0-rendszer. Ekkor C(r+1) -re teljesül (2) és (3). Másrészt, mivel
minden iteráció során eggyel nő a független 0-rendszer elemeinek a száma, ezért az iterációk száma legfeljebb n − 1. Ebből már következik az iterációs eljárásrész és egyben az egész eljárás helyessége. Tiltott hozzárendelések kezelése Előfordulnak olyan gyakorlati problémák, amelyek hozzárendelési feladathoz vezetnek, de bizonyos hozzárendelések nincsenek megengedve. Ilyenkor tiltott hozzárendelésekről beszélünk Nyilvánvaló, hogy ezeknek a feladatoknak nem okvetlen létezik lehetséges megoldása. A következőkben megmutatjuk, hogy a tiltásos feladatok mindig visszavezethetők egy alkalmas hozzárendelési feladat megoldására Tekintsük a Cn×n költségmátrixú hozzárendelési feladatot az xit jt = 0 (t = 1, . , r) tiltásokkal, és jelölje ezt a feladatot T H(C) Legyen D olyan n × n-es mátrix, amelyre C ∼ D. Akkor érvényes a következő állı́tás
8.segédtétel A T H(C) és T H(D) feladatoknak egyidejűleg létezik optimális megoldása, és az optimális megoldások megegyeznek. Bizonyı́tás. Mivel a feltételrendszerek azonosak, ezért a lehetséges megoldások halmaza közös Ha ez a halmaz üres, akkor egyik feladatnak sincs lehetséges megoldása, ellenkező esetben mindkét feladatnak létezik optimális megoldása. Másrészt a 122 7.segédtételnél igazolt zC (X̄) = zD (X̄) + γ egyenlőség ezeknél a feladatoknál is érvényes tetszőleges X̄ lehetséges megoldásra. Így, ha X̄ optimális megoldása az egyik feladatnak, akkor optimális megoldása a másik feladatnak is, amivel adódik az állı́tás. A 8.segédtétel alapján elegendő olyan T H(C) feladatok megoldására szorı́tkozni, amelyekre C ≥ 0 teljesül. Tegyük fel, hogy C egy ilyen mátrixot jelöl Legyen M =1+ n X n X cij , i=1 j=1 és képezzük az A n × n-es mátrixot a
következők szerint: ½ M, ha van olyan 1 ≤ t ≤ r, hogy (i, j) = (it , jt ), aij = cij különben. A T H(C) és H(A) feladatok kapcsolatát adja meg a következő állı́tás. 9.segédtétel A T H(C) feladatnak akkor és csak akkor létezik optimális megoldása, ha a H(A) hozzárendelési feladat optimuma kisebb, mint M , és ebben az esetben H(A) optimális megoldása egyben optimális megoldása a T H(C) feladatnak is. Bizonyı́tás. Jelölje T H(C) és H(A) lehetséges megoldásainak halmazát rendre LT és L. Nyilvánvaló, hogy LT ⊆ L Elsőként megmutatjuk, hogy tetszőleges X̄ ∈ L lehetséges megoldásra (i) zA (X̄) ≥ M teljesül, ha X̄ ∈ L − LT , (ii) zA (X̄) = zC (X̄) < M teljesül, ha X̄ ∈ LT . Valóban, ha X̄ ∈ L − LT , akkor van olyan 1 ≤ t ≤ r index, hogy x̄it jt = 1. Viszont ı́gy az A mátrix nemnegativitása alapján M = ait jt x̄it jt ≤ n X n X aij x̄ij = zA (X̄) , i=1 j=1
amivel adódik az (i) állı́tás. Az (ii) állı́tás igazolásához tegyük fel, hogy X̄ ∈ LT Ekkor x̄it jt = 0 (t = 1, . , r), és ı́gy zC (X̄) = n X n X cij x̄ij = i=1 j=1 n X n X aij x̄ij = zA (X̄) . i=1 j=1 Másrészt C nemnegativitása miatt n X n X cij x̄ij ≤ i=1 j=1 n X n X cij . i=1 j=1 Így M definı́cióját is felhasználva, azt kapjuk, hogy zA (X̄) = zC (X̄) ≤ n X n X i=1 j=1 123 cij < M , amivel az (ii) állı́tást is igazoltuk. Ezek után rátérünk a segédtétel állı́tásának igazolására. A feltétel szükségességének igazolásához tegyük fel, hogy a T H(C) feladatnak létezik optimális megoldása. Jelöljön X̄ egy optimális megoldást Akkor (ii) alapján zA (X̄) = zC (X̄) < M . Másrészt LT ⊆ L, ı́gy min zA (X) ≤ zA (X̄) < M , X∈L azaz H(A) optimuma kisebb, mint M . Az elegendőség igazolásához tegyük fel, hogy a H(A) feladat
optimuma kisebb, mint M . Jelöljön X̄ egy optimális megoldást zA (X̄) < M fennállásából (i) alapján X̄ ∈ LT következik. Mivel X̄ optimális megoldása H(A)-nak, ezért zA (X̄) ≤ zA (X) , ha X ∈ L . De akkor LT ⊆ L miatt zA (X̄) ≤ zA (X) , ha X ∈ LT . Másrészt (ii) alapján zA (X̄) = zC (X̄) , zA (X̃) = zC (X̃) (X̃ ∈ LT ) . A fenti egyenlőségeket és egyenlőtlenségeket felhasználva, azt kapjuk, hogy tetszőleges X̃ ∈ LT megoldásra zC (X̄) ≤ zC (X̃), azaz X̄ optimális megoldása a T H(C) feladatnak, amivel a 9.segédtételt igazoltuk A fentiekből következik, hogy tetszőleges T H(C) feladatot meg tudunk oldani az alábbi algoritmus alapján. Eljárás 1.lépés Ha a C mátrix nem tartalmaz negatı́v elemeket, akkor a 2lépés következik. Ellenkező esetben vegyük C legkisebb elemét, és ezt vonjuk ki a mátrix minden egyes eleméből. Ezek után az előállı́tott mátrixot
tekintve aktuális költségmátrixnak, folytassuk az eljárást a 2.lépéssel Pn Pn 2.lépés Legyen M = 1+ i=1 j=1 cij , és képezzük az A mátrixot az előzőekben megadott definı́ció szerint. Ezt követően oldjuk meg a H(A) hozzárendelési feladatot magyar módszerrel. Ha az optimum értéke nem kisebb, mint M , akkor a T H(C) feladatnak nincs lehetséges megoldása. Ellenkező esetben H(A) optimális megoldása egyben optimális megoldása a T H(C) feladatnak is. Az eljárás illusztrálására tekintsük az −2 2 C= 3 4 alábbi T H(C) feladatot: 3 1 2 −1 3 4 1 0 2 −1 3 5 124 ahol a tiltott hozzárendelések a következők: x13 = x22 = x33 = 0. A legkisebb elem C-ben −2, ezt rendre kivonva C minden eleméből, a következő nemnegatı́v mátrixhoz jutunk: 0 5 3 4 4 1 5 6 C= 5 3 2 4 6 1 5 7 Pn Pn Most képezve az 1 + i=1 j=1 cij értéket , eredményként M = 62
adódik. Ezt rendre beı́rva a c13 , c22 , c33 elemek helyére, és az előálló A mátrixhoz tartozó H(A) hozzárendelési feladatot megoldva magyar módszerrel, az alábbi mátrixsorozathoz jutunk: 0 5 62 4 0 4 62 5 6 0 5 3 62 4 2 6 1 5 7 5 Következésképp, a H(A) mátrix: + ° + + ∗ 5 62 4 0 5 61 3 58 1 2 0 58 0∗ 1 2 0∗ 58 00 + 0 59 1 5 00 3 5 0 4 6 hozzárendelési feladat egy optimális 0∗ 5 0 58 2 0 5 0∗ megoldás a 61 3 0∗ 1 58 0∗ 3 5 következő 1 0 0 0 0 0 1 0 X̄ = 0 0 0 1 0 1 0 0 A megfelelő célfüggvényérték zA (X̄) = 10. Mivel az optimum értéke kisebb, mint 62, ezért X̄ optimális megoldása a tekintett T H(C) feladatnak is. Ezzel a hozzárendelési feladat megoldására szolgáló magyar módszer tárgyalását befejeztük. Amint azt a demonstrációs példák is
mutatják, egy igen hatékony eljárást sikerült H. W Kuhnnak kidolgoznia Kuhn érdemeit csak növeli, hogy egy évvel a magyar módszer megjelenése után kiderült, hogy az általa alkalmazott technika felhasználható egy általánosabb feladattı́pus, a szállı́tási feladat megoldására is. Ezzel a következő fejezetben fogunk megismerkedni. Feladatok 1. Határozzuk meg az alábbi mátrixban 0-rendszert. 3 1 0 0 0 1 2 1 0 4 2 1 125 kijelölhető összes lehetséges független 2 2 3 0 2. Oldjuk meg magyar módszerrel az alábbi költségmátrixú hozzárendelési feladatokat: 5 6 5 8 9 1 2 4 8 4 5 4 5 4 5 4 3 7 8 4 2 1 2 3 6 1 3 5 5 3 6 3 4 4 3 4 5 7 1 2 7 3 4 5 5 6 6 5 3 8 6 2 3 6 4 5 6 3. Hajtsuk végre a magyar módszert a H(C) hozzárendelési feladaton, ahol 1 3 C = 2 3 6 1 4 3 4 4 1 5 4 5 6 1 3 6 3
5 1 1 1 1 1 4. Oldjuk meg az alábbi költségmátrixú tiltásos hozzárendelési feladatokat, ahol a tiltásokat az egyes költségmátrixok alatt adtuk meg. 2 1 −1 3 1 3 x12 x32 x46 x54 2 4 2 1 4 2 1 2 1 2 4 1 = x14 = x34 = x51 = x56 3 1 2 1 −1 2 3 −1 1 1 2 1 2 1 3 0 −1 1 2 2 1 −1 4 −1 = x23 = x45 = x52 = x63 =0 =0 =0 =0 x13 x25 x41 x51 1 2 3 −1 1 2 2 2 1 3 1 1 −1 1 0 0 1 2 = x16 = x31 = x44 = x64 = x24 = x34 = x46 = x66 126 1 2 0 3 3 1 1 3 −1 −1 2 1 −1 3 0 0 0 =0 =0 =0 =0 x11 x22 x33 x44 1 −1 2 1 1 = x12 = x23 = x34 = x45 0 0 2 −1 −1 −1 1 0 2 2 2 2 2 1 1 = x13 = 0 = x24 = 0 = x35 = 0 =0 2.12 Szállı́tási feladat megoldása magyar módszerrel 1941-ben F. L Hitchcock vetette fel az azóta szállı́tási feladat néven ismert következő problémát.
Adottak bizonyos feladóhelyek, amelyeken azonos anyagféleség áll rendelkezésre különböző mennyiségekben. Adottak továbbá bizonyos felvevőhelyek, amelyeken ezen anyagféleségre van szükség előı́rt mennyiségekben. Szállı́tsuk el a feladóhelyeken lévő anyagot a kı́vánt mennyiségben a felvevőhelyekre úgy, hogy a szállı́tással kapcsolatos költségek összege minimális legyen. Vezessük be a következő jelöléseket. Jelölje n a feladóhelyek számát, ai az i-edik feladóhelyen lévő anyag mennyiségét (i = 1, . , n), m a felvevőhelyek számát, bj a j-edik felvevőhelyen szükséges anyagmennyiséget (j = 1, . , m), cij egységnyi anyagmennyiségnek a szállı́tási költségét, ha a szállı́tás az i-edik feladóhelyről a j-edik felvevőhelyre történik (i = 1, . , n; j = 1, , m), xij az i-edik feladóhelyről a j-edik felvevőhelyre szállı́tandó
anyagmennyiséget (i = 1, . , n; j = 1, , m) A bevezetett jelölésekkel a probléma az alábbi optimumszámı́tási modellel ı́rható le: m X xis = ai (i = 1, . , n) xsj = bj (j = 1, . , m) s=1 (2.121) n X s=1 xij ≥ 0 (i = 1, . , n ; j = 1, , m) n X m X cij xij = z(X) min i=1 j=1 Pm Valóban, a P s=1 xis = ai feltétel biztosı́tja, hogy az i-edik feladóhelyről elszállı́tjuk az n anyagot, a s=1 xsj = bj feltétel pedig biztosı́tja, hogy a j-edik felvevőhely megkapja 126 a szükséges anyagmennyiséget. Mivel ezt minden 1 ≤ i ≤ n, 1 ≤ j ≤ m indexpárra megköveteljük, ezért a szállı́tás az előı́rás szerint történik Vizsgáljuk ezek után a költségeket. Feltételezve, hogy a költségek a szállı́tott anyag mennyiségével egyenesen arányosak, az i-edik feladóhelyről xij mennyiségű anyagnak a j-edik felvevőhelyre történő szállı́tása során a költség: cij
xij . Így a teljes szállı́tás költsége Pn Pm i=1 j=1 cij xij . Érdekes módon, annak ellenére, hogy F. L Hitchcock egy eljárást is megadott a feladat megoldására, 1949-ig nem sok haladás történt a szállı́tási feladat alkalmazását, hatékony megoldását illetően. Ekkor T C Koopmans, aki a második világháború alatt egy szállı́tásokat szervező bizottság tagjaként tevékenykedett, és munkája során alkalmazta a modellt, felhı́vta a figyelmet a szállı́tási feladat hasznosságára, és közzétette tapasztalait. Koopmans cikke fordulópontot jelentett Kifejlesztésre kerültek a feladat sajátosságait kihasználó, igen hatékony eljárások Az első teljeskörű eljárást G. B Dantzig közölte 1951-ben, amely disztribuciós módszer néven ismeretes Ez lényegében a szimplex algoritmusnak egy olyan hatékony változata, amely a szállı́tási feladat speciális
struktúrájára, tulajdonságaira épül. Ezt követően kibővült az alkalmazások köre, megkezdődött a modell általánosı́tásainak és speciális eseteinek a vizsgálata. Ennek egyik eredményével, a H W Kuhn által kidolgozott magyar módszerrel ismerkedtünk meg az előző fejezetben. Lényegében Kuhn gondolatmenete továbbfejlesztésének tekinthető L. R Ford és D R Fulkerson 1956-ban publikált, a szállı́tási feladat megoldására szolgáló eljárása. Tekintettel az emlı́tett kapcsolatra, ez az eljárás is magyar módszer néven ismeretes. A továbbiakban ezzel az algoritmussal fogunk megismerkedni. Mielőtt erre rátérnénk, megadjuk a (2121) feladat néhány sajátosságát. Elsőként megvizsgáljuk, hogy a tekintett feladatnak milyen feltételek mellett létezik optimális megoldása. Erre vonatkozóan érvényes a következő állı́tás 10.segédtétel A (2121) Pmakkor és csak
akkor létezik optimális Pnfeladatnak megoldása, ha a ≥ 0, b ≥ 0 és i=1 ai = j=1 bj . Bizonyı́tás. A feltétel szükségességének igazolásához tegyük fel, hogy X̄ a (2.121) Pm x̄ feladat egy optimális megoldása. Akkor a = i s=1 is ≥ 0 (i = 1, . , n) és bj = Pn s=1 x̄sj ≥ 0 (j = 1, . , m) teljesül, azaz a ≥ 0 és b ≥ 0 Másrészt n X i=1 ai = n X m X i=1 j=1 x̄ij = m X n X j=1 i=1 x̄ij = m X bj , j=1 amivel a szükségességet igazoltuk. Pn Az elegendőség bizonyı́tásához tegyük fel, hogy a ≥ 0, b ≥ 0 és i=1 ai = Pn Pm a összeg értékétől függően két esetet különböztetünk meg. b . A i=1 i j=1 j Pm Pn Pn (1) Ha i=1 ai = 0, akkor i=1 ai = j=1 bj , a ≥ 0, b ≥ 0 alapján ai = 0 (i = 1, . , n), bj = 0 (j = 1, , m) Nyilvánvaló, hogy ebben az esetben (2121)nek egyetlen lehetséges megoldása van, az x̄ij = 0 (i = 1, , n; j = 1, m), ami optimális megoldás is.
127 (2) Ha Pn i=1 ai > 0, akkor képezzük az X̄ mátrixot az alábbi módon: ai bj x̄ij = Pn t=1 at (i = 1, . , n ; j = 1, , m) A feltételekből következik, hogy X̄ ≥ 0. Most legyen 1 ≤ i ≤ n tetszőleges Akkor m X x̄is = s=1 m X ab Pni s s=1 t=1 m X ai at = Pn t=1 at bs = ai . s=1 Hasonlóan, tetszőleges 1 ≤ j ≤ m indexre n X x̄sj = s=1 n X a b Pns j s=1 t=1 at bj = Pn t=1 n X at as = bj . s=1 Következésképp, X̄ kielégı́ti (2.121) egyenletrendszerét, ami X̄ nemnegativitásával azt eredményezi, hogy X̄ lehetséges megoldása a feladatnak Ezek után megmutatjuk, hogy a lehetséges megoldások L halmaza korlátos és zárt halmaz. L zártsága következik a 28 fejezet 5segédtételéből A korlátosság igazolásához tekintsünk egy tetszőleges X̄ ∈ L lehetséges megoldást Mivel X̄ ≥ 0, ezért Ãm !2 m X X x̄2is ≤ x̄is = a2i (i = 1, . , n) s=1 s=1
Összegezve az egyenlőtlenségek bal- és jobboldalait, azt kapjuk, hogy n X m X x̄2ij ≤ i=1 j=1 n X a2i , i=1 amiből már következikPaz LP halmaz korlátossága. n m Mivel a z(X) = i=1 j=1 cij xij függvény folytonos az nm-dimenziós térben, ezért azt kaptuk, hogy egy korlátos, zárt, nemüres halmazon keressük egy folytonos függvény minimumát. Ismeretes, hogy egy korlátos, zárt, nemüres halmazon egy folytonos függvény felveszi a szélsőértékeit, ı́gy a (2.121) feladatnak létezik optimális megoldása, amivel az elegendőséget, és egyben a 10.segédtételt is igazoltuk A továbbiakban a fejezet befejező részéig, hivatkozásP nélkül mindig Pmfeltételezzük, n hogy a vizsgált szállı́tási feladatokra a ≥ 0, b ≥ 0 és i=1 ai = j=1 bj teljesül. Az utóbbi egyenlőség azt a nyilvánvaló tényt fejezi ki, hogy a készletek elszállı́tásával akkor és csak akkor lehet
kielégı́teni a szükségleteket, ha a készletek összege megegyezik a szükségletek Pn összegével, Pm azaz a készletek és a szükségletek egyensúlyban vannak. Ezért a a = i=1 i j=1 bj egyenlőséget szokásos egyensúlyi feltételnek is nevezni. Ezzel kapcsolatban rögtön felvetődik, hogy a gyakorlati problémák zöménél nincsen meg ez az egyensúly. A fejezet végén kitérünk az ilyen feladatok vizsgálatára is, és megmutatjuk, hogy ezek megoldása mindig visszavezethető egy alkalmas (2.121) tı́pusú, az egyensúlyi feltételt kielégı́tő feladat megoldására. 128 A (2.121) feladattal kapcsolatban vegyük észre, hogy az a = (a1 , , an ), b = (b1 , . , bm ) vektorok egyértelműen meghatározzák a lehetséges megoldások halmazát Így rögzı́tett a, b mellett az egyes szállı́tási feladatok csak célfüggvényükben különböznek egymástól, amelyeket viszont
meghatároznak a költségmátrixok. Ez azt eredményezi, hogy az (a, b, C) hármas egyértelműen meghatározza a (2.121) feladatot Ezt felhasználva, a tekintett feladatra S(a, b, C) formában hivatkozunk A mátrixok előző fejezetben bevezetett ekvivalenciája a szállı́tási feladatoknál is hasznosnak bizonyult. Ezt mutatja a következő állı́tás 11.segédtétel Ha C, D n×m-es valós mátrixok, és C ∼ D, akkor az S(a, b, C) és S(a, b, D) szállı́tási feladatok optimális megoldásai megegyeznek. Bizonyı́tás. Az állı́tás korrekt, mivel a lehetséges megoldások halmaza közös, és a 10.segédtétel alapján mindkét feladatnak létezik optimális megoldása Vizsgáljuk ezek után az S(a, b, C) és S(a, b, D) feladatok célfüggvényeit, amelyeket jelöljön rendre zC és zD . Az ekvivalencia miatt vannak olyan α1 , , αn ; β1 , , βm konstansok, hogy cij = dij + αi + βj teljesül bármely 1
≤ i ≤ n, 1 ≤ j ≤ m indexpárra. Most legyen X̄ tetszőleges lehetséges megoldás. Akkor zC (X̄) = n X m X n X m X cij x̄ij = i=1 j=1 n X m X dij x̄ij + i=1 j=1 (dij + αi + βj ) x̄ij = i=1 j=1 n X m X αi x̄ij + n X m X i=1 j=1 zD (X̄) + n X αi i=1 zD (X̄) + m X x̄ij + j=1 n X m X βj j=1 α i ai + i=1 βj x̄ij = i=1 j=1 m X n X x̄ij = i=1 βj bj . j=1 Ez azt jelenti, hogy a lehetséges megoldások halmazán a két célfüggvény csak egy additı́v konstansban tér el egymástól, amiből már következik az állı́tás. Mielőtt rátérnénk a magyar módszer tárgyalására, egy további kikötést teszünk. Nevezetesen feltételezzük, hogy az a és b vektorok komponensei rendre egészek. Gyakorlati szempontból ez nem olyan nagy megszorı́tás, ugyanis alkalmas egységet választva, elérhető, hogy mind a készletek mennyiségei, mind a szükségletek menynyiségei rendre
egészek legyenek. Amint az a továbbiak során kiderül, ebben az esetben van a feladatnak egész optimális megoldása, és az eljárás egy ilyen optimális megoldást szolgáltat. 129 Ezek után rátérünk az S(a, b, C) szállı́tási feladat magyar módszerrel történő megoldására. Az eljárás során előállı́tunk egy olyan (0) (C ,X (0) (1) ), (C ,X (1) (k) ), . , (C (k) ,X ) (k ≤ n X ai ) i=1 mátrixpársorozatot, amelyre teljesülnek a következők: (1) C ∼ C(0) , (2) C(t) ∼ C(t+1) (t = 0, . , k − 1) , (3) C(t) ≥ 0 (t = 0, . , k) , (4) X(t) ≥ 0 és X(t) egész (t = 0, . , k), (5) bármely 0 ≤ t ≤ k indexre m X (t) xis ≤ ai (i = 1, . , n), s=1 n X (t) xsj ≤ bj (j = 1, . , m), s=1 (t) (6) bármely 1 ≤ i ≤ n, 1 ≤ j ≤ m, 0 ≤ t ≤ k indexhármasra xij > 0 fennállásából (t) cij = 0 következik, (7) 0 ≤ ∆t+1 < ∆t , ahol ∆t = Pn i=1 ai −
Pn i=1 Pm j=1 (t) xij és 0 ≤ t < k, (8) ∆k = 0. Most tételezzük fel, hogy rendelkezünk egy, a fenti tulajdonságokkal rendelkező (C , X(0) ), . , (C(k) , X(k) ) mátrixpársorozattal Megmutatjuk, hogy ekkor X(k) optimális megoldása az S(a, b, C) feladatnak (0) Valóban ∆t definı́ciója, valamint (4), (5) és (8) alapján X(k) lehetséges megoldása S(a, b, C(k) )-nak. Jelölje S(a, b, C(k) ) célfüggvényét zk Akkor (6) felhasználásával azt kapjuk, hogy zk (X(k) ) = 0. Másrészt (3) miatt tetszőleges X̄ lehetséges megoldásra zk (X̄) ≥ 0 teljesül. Ez pontosan azt jelenti, hogy X(k) optimális megoldása S(a, b, C(k) )-nak. Az (1), (2) tulajdonságok és az ekvivalencia tranzitivitása alapján C ∼ C(k) . Ebből viszont a 11segédtétellel azt kapjuk, hogy X(k) optimális megoldása S(a, b, C)-nek, amivel az X(k) -ra vonatkozó állı́tást igazoltuk. Kérdés ezek után, hogy miként lehet egy, az
(1) − (8) alatti tulajdonságokat kielégı́tő mátrixpársorozatot előállı́tani. Erre szolgál a következő iterációs eljárás, amelyben a kötött sor, kötött oszlop, szabad elem fogalmakat az előző fejezetnek megfelelően használjuk. 130 Magyar módszer Előkészı́tő rész. A C mátrix i-edik sorából rendre vonjuk ki az i-edik sor elemeinek a minimumát (i = 1, , n), az előálló mátrixot jelölje C̄ A C̄ mátrix jedik oszlopának elemeiből rendre vonjuk ki az illető oszlop elemeinek a minimumát (j = 1, . , n), és az előálló mátrixot jelölje C(0) Ezek után képezzük oszlopfolytonosan az X(0) mátrix elemeit a következők szerint: ½ (0) (0) x11 = min{a1 , b1 }, ha c11 = 0, 0 különben, ½ (0) xi1 = min{ai , b1 − 0 Pi−1 s=1 (0) xs1 }, (0) ha ci1 = 0, különben, (i = 2, . , n) Ha az első, . , (j − 1)-edik oszlop elemeit már meghatároztuk, akkor a j-edik
oszlop elemei a következők: ½ Pj−1 (0) (0) (0) min{a − 1 s=1 x1s , bj }, ha c1j = 0, x1j = 0 különben, ½ (0) xij = min{ai − 0 Pj−1 s=1 (0) xis , bj − Pi−1 s=1 (0) xsj }, (0) ha cij = 0, különben, (i = 2, . , n) Ezek után legyen r = 0, és az előállı́tott (C(0) , X(0) ) mátrixpárral folytassuk az eljárást az iterációs eljárásrésszel. Iterációs rész (r-edik iteráció). Pn Pm (r) Pn 1.lépés Képezzük a ∆r = i=1 ai − i=1 j=1 xij mennyiséget Ha ∆r = 0, akkor vége az eljárásnak, X(r) a feladat optimális megoldása. Ellenkező esetben kössük Pn (r) le rendre a C(r) mátrix j-edik oszlopát, ha δj = bj − s=1 xsj = 0, ahol j = 1, . , m, majd folytassuk az eljárást a 2.lépéssel 2.lépés Keressünk sorfolytonosan szabad 0-t az aktuális C(r) mátrixban Ha nincs szabad 0, akkor az 5.lépés következik Ellenkező esetben jelölje i a szabad 0 Pm (r) sorindexét.
Vizsgáljuk meg az X(r) mátrix i-edik sorát Ha δ̄i = ai − s=1 xis = 0, akkor a 3.lépés következik, különben pedig a 4lépéssel folytatódik az eljárás 3.lépés Lássuk el ”,”-vel a tekintett szabad 0-t, kössük le a sorát, majd vizsgáljuk végig ennek a sornak az elemeit a következők szerint. Minden egyes 1 ≤ s ≤ m indexre, (r) (r) ha cis = 0 és xis > 0, továbbá C(r) -ben az s-edik oszlop le van kötve, akkor oldjuk (r) fel ezt az oszlopot, és lássuk el ” ∗ ”-gal cis -t. Ezt követően folytassuk az eljárást a 2.lépéssel 131 4.lépés Lássuk el ”,”-vel a tekintett szabad 0-t, és ebből a 00 -ből kiindulva képezzünk láncot az aktuális C(r) -ben a következő szabályok alapján: láncbeli 00 esetén a lánc a 00 oszlopában levő 0∗ -gal folytatódik, láncbeli 0∗ esetén pedig a lánc az illető 0∗ sorában lévő 00 -vel folytatódik, feltéve, hogy ilyen
elemek léteznek, ellenkező esetben vége a láncképzésnek. Jelölje a lánc kezdő és befejező elemének indexpárját (i1 , λ1 ), (iv , λv ), és a láncbeli elemek indexpárjainak halmazát Γr . Legyen ½ δ̄i1 , ha | Γr |= 1, ρ= (r) (r) ∗ min{xij : (i, j) ∈ Γr & cij = 0 } különben. Határozzuk meg a Θ = min{δ̄i1 , δλv , ρ} minimumot, majd képezzük az X(r+1) mátrixot a következő módon: (r) ha (i, j) ∈ / Γr , xij , (r+1) (r) 0 xij = xij + Θ, ha (i, j) ∈ Γr & c(r) ij = 0 , (r) (r) xij − Θ, ha (i, j) ∈ Γr & cij = 0∗ . Legyen C(r+1) a jelölések nélküli aktuális C(r) mátrix. Növeljük r értékét 1-gyel, és folytassuk az eljárást a következő iterációs lépéssel. 5.lépés Képezzük az aktuális C(r) mátrixban a szabad elemek minimumát Ezt a minimumot vonjuk ki minden egyes szabad elemből, és adjuk hozzá a kétszer (sorukban és
oszlopukban is) kötött elemekhez. Ezt követően az átalakı́tott mátrixot tekintve aktuális C(r) mátrixnak, folytassuk az eljárást a 2.lépéssel Az eljárás helyeségének igazolásához azt kell megmutatnunk, hogy az eljárással olyan (C(0) , X(0) ), . ,(C(k) , X(k) ) mátrixpársorozat állı́tható elő, amely rendelkezik az (1) − (8) alatti tulajdonságokkal. Mielőtt ezt megtennénk, részletesen végrehajtjuk az eljárást egy konkrét feladaton. E célból tekintsük az S(a, b, C) szállı́tási feladatot, ahol 3 a = 5 , 4 b = ( 2, 4, 2, 2, 2) , 2 C = 4 1 3 5 3 4 3 4 1 2 6 2 1 . 2 Kivonva C soraiból a sorminimumokat, majd az előálló mátrix oszlopaiból az oszlopminimumokat, a következő C(0) mátrixhoz jutunk: 1 0 1 0 1 C(0) = 3 2 0 1 0 . 0 0 1 5 1 Most C(0) alapján megkonstruáljuk az X(0) mátrixot. 132 (0) (0) (0) (0) x11 = x21 = 0, mivel
c11 6= 0, c21 6= 0, (0) (0) (0) (0) x31 = min{a3 , b1 } = 2, ugyanis c31 = 0 és x11 = x21 = 0, (0) (0) (0) x12 = min{a1 , b2 } = 3, mert c12 = 0 és x11 = 0, (0) (0) x22 = 0, mivel c22 6= 0, (0) (0) (0) (0) x32 = min{a3 − x31 , b2 − x12 } = 1, mert c32 = 0. Folytatva az eljárást, egyértelműen adódik X(0) , és X(0) meghatározásával az eljárás előkészı́tő része befejeződik. Mivel az iterációs eljárásrészben mindig mátrixpárral dolgozunk, ezért a továbbiakban a (C(0) , X(0) ) párt adjuk meg. Képezve a ∆0 kifejezés értékét ∆0 = 2, ı́gy oszloplekötésekkel folytatódik az eljárás. Oszloponként megvizsgálva a szükségletek Pn (0) és a szállı́tandó mennyiségek δj = bj − s=1 xsj eltérést (j = 1, . , 5), azt kapjuk, hogy δ1 = δ2 = δ3 = δ5 = 0, ı́gy lekötjük C(0) -ban az első, második, harmadik és ötödik oszlopokat. C(0) + + + 1 0 3 2 0 0 1 0 1
+ 0 1 5 1 0 1 X(0) 0 3 0 0 2 1 0 2 0 0 3 2 5 0 4 0 0 0 2 4 2 2 2 A 0 eltérés úgy interpretálható, hogy ezekre az oszlopokra teljesül a szállı́tás. Ezek (0) után a 2.lépéssel, sorfolytonos szabad 0 kereséssel folytatódik az eljárás c14 az első szabad 0. Megvizsgálva X(0) első sorára a készlet és a szállı́tandó mennyiségek δ̄1 = P5 (0) a1 − s=1 x1s eltérését, δ̄1 = 3−3 = 0, azaz X(0) első sorára teljesül a szállı́tás. Ekkor (0) a 2.lépés szerint a 3lépés végrehajtása következik Ellátjuk c14 -t ”,”-vel, lekötjük C(0) (0) (0) első sorát, és megvizsgáljuk ennek a sornak az elemeit. c12 = 0, x12 > 0 és C(0) (0) második oszlopa le van kötve, ezért ezt az oszlopot feloldjuk és ” ∗ ”-gal látjuk el c12 -t. Mivel ebben a sorban több elemre nem teljesül a feltétel, ezért a 3.lépés végrehajtása befejeződik, és a
2.lépéssel folytatódik az eljárás Sorfolytonosan szabad 0-t keresve, (0) c32 az első szabad 0. Mivel δ̄3 > 0 (az X(0) harmadik sorára nem teljesül a szállı́tás), (0) ezért a 4.lépés, a láncképzés következik c32 -t ellátva ”,”-vel, és láncot képezve, a lánc (0) (0) (0) elemei a képzés sorrendjében: c32 , c12 , c14 , és ı́gy Γ0 = {(3, 2), (1, 2), (1, 4)}. C(0) + ° + + 1 3 0 0∗ 2 00 1 00 0 1 1 5 + 1 + 0 1 X(0) 0 3 0 0 2 1 0 2 0 0 0 0 0 3 2 5 0 4 2 2 2 2 4 Most X(0) és a lánc alapján elkészı́tjük X(1) -et. Vegyük észre, hogy nem elfajuló lánc (0) esetén ρ a láncbeli 0∗ -oknak megfelelő xij elemek minimumát jelöli, ami esetünkben 133 (0) x12 = 3. Másrészt venni kell a lánc kezdő elemének sorindexét, ez 3, és X(0) -ban a harmadik sorra vonatkozó δ̄3 = 1 eltérést. Továbbá venni kell a lánc befejező elemének
oszlopindexét, ez 4, és X(0) -ban a negyedik oszlopra vonatkozó δ4 = 2 eltérést. Így Θ = min{δ̄3 , δ4 , ρ} = min{1, 2, 3} = 1 . Definı́ció szerint X(0) csak a Γ0 -hoz tartozó indexpárokra változik, mégpedig a 0∗ (0) (0) oknak megfelelő indexű xij elemek Θ-val csökkennek, a 00 -knek megfelelő xij -k Θval nőnek. Ezek szerint meghatározva X(1) -et, majd C(0) -ból a jelölések törlésével előállı́tva C(1) -et, a következő (C(1) , X(1) ) mátrixpárhoz jutunk. + + + + 0 2 0 1 0 3 0 0 2 0 2 5 C(1) 2 2 0 0 0 4 2 4 2 2 2 Mivel ∆1 = 1, ezért ismét oszloplekötésekkel folytatódik az eljárás. δ1 = δ2 = δ3 = (1) δ5 = 0, ı́gy lekötjük az első három, valamint az ötödik oszlopot. Sorfolytonosan c14 (1) az első szabad 0. Mivel δ̄1 = 0, ezért a 3lépés szerint c14 -et ellátjuk ”,”-vel, a sorát (1) lekötjük, majd C(1) második oszlopát feloldjuk és c12 -et
ellátjuk ”∗”-gal. Több elemet nem lehet ebben a sorban ” ∗ ”-gal ellátni, ı́gy a második lépés következik. Az aktuális állapotot az alábbi mátrixpár ı́rja le: 1 0 3 2 0 0 C(1) 1 0 1 1 0 1 X(1) 0 1 5 + ° + + 1 3 0 0∗ 2 0 1 0 1 + 1 + 0 1 00 1 5 0 0 2 2 X(1) 2 0 1 0 3 0 2 0 2 5 2 0 0 0 4 4 2 2 2 (1) Sorfolytonosan szabad 0-t keresve, c32 lesz az első szabad 0. Mivel δ̄3 = 0, ezért a (1) 3.lépés szerint ellátjuk ”,”-vel c32 -et, lekötjük a harmadik sort, majd az első oszlopot (1) feloldjuk és ” ∗ ”-gal látjuk el c31 -et. Ebben a sorban több elemet nem lehet ” ∗ ”-gal ellátni, ı́gy ismét a 2.lépés következik Az eddigi műveletek eredményét a következő mátrixpár tartalmazza: ° + ° + + + 0 2 0 1 0 3 0 0 2 0 2 5 C(1) 2 2 0 0 0 4 2 4 2 2 2 Rátérve a 2.lépésre és szabad 0-t keresve, azt kapjuk, hogy nincs
szabad 0, ı́gy az 5.lépéssel folytatódik az eljárás A szabad elemek minimuma 1 Ezt kivonva minden szabad elemből és hozzáadva minden kétszer kötött elemhez, majd az előálló mátrixot tekintve aktuális C(1) mátrixnak, a következő mátrixpárt kapjuk: 1 3 0∗ 0∗ 2 00 1 00 0 1 1 5 1 + 0 1 + 134 X(1) ° + C(1) 1 2 0∗ 0∗ 1 00 X(1) + ° + + 2 00 0 0 2 5 2 + 0 2 + 0 0 2 2 0 2 0 2 0 1 0 0 0 3 2 5 0 4 2 4 2 2 2 (1) Ismét szabad 0-t keresve, c24 lesz az első szabad 0. Mivel δ̄2 > 0, ezért az eljárás (1) láncképzéssel folytatódik. Lássuk el c24 -et ”,”-vel A C(1) negyedik oszlopában nincs (1) 0∗ , ı́gy a lánc elfajuló, csak c24 -et tartalmazza. ° + C(1) 1 2 0∗ ° + + 0∗ 1 00 X(1) + 2 00 0 00 2 5 2 + 0 2 + 0 0 2 2 0 2 0 2 0 1 0 0 0 3 2 5 0 4 2 4 2 2 2 Ekkor δ̄2 = ρ = 1, δ4 = 1, és
ı́gy Θ = 1. A lánc alapján az X(1) mátrixnak csak a (2, 4) indexű eleme változik, mégpedig nő 1-gyel, és az ı́gy képzett mátrix lesz X(2) ). Az aktuális C(1) -ből a jelölések törlésével előállı́tva C(2) -t, az alábbi (C(2) , X(2) ) mátrixpár adódik: X(2) C(2) 1 2 0 0 1 0 2 0 2 0 0 5 2 0 2 0 0 2 2 0 2 0 2 0 1 1 0 0 3 2 5 0 4 2 4 2 2 2 Képezve ∆2 -t, azt kapjuk, hogy ∆2 = 0. Ezzel az eljárás véget ér, a tekintett feladat optimális megoldása az X(2) mátrix. A végrehajtott eljárással kapcsolatban megjegyezzük a következőket. A 3lépés során előfordulhat, hogy egyetlen 0-t sem tudunk ” ∗ ”-gal ellátni, de előfordulhat az is, hogy egyidejűleg ugyanabban a sorban több 0-t is ellátunk ” ∗ ”-gal. Itt is, a hozzárendelési feladathoz hasonlóan, az egyes lépéseket a mátrixpárok ismételt kiı́rásával szándékosan
túlrészleteztük. A tekintett feladat megoldása végrehajtható az alábbi mátrixpárok felhasználásával: 135 C 2 4 1 3 5 3 C(0) + ° + + 1 0∗ 1 00 3 2 0 1 0 00 1 5 0 3 0 0 0 0 2 0 2 1 0 0 C̄ 4 3 4 1 2 6 2 1 2 1 2 3 4 0 2 3 2 3 0 1 5 1 0 1 3 5 4 + 1 + 0 1 0 2 0 X(0) Θ=1 2 4 2 2 2 C(1) ° + ° + + C0(1) + 1 0∗ 1 00 1 + 1 3 2 0 1 0 2 0∗ 00 1 5 1 + 0∗ 0 2 0 1 0 0 0 2 0 2 2 2 0 0 0 X(1) + 0∗ 1 00 2 00 0 00 2 5 Θ=1 C(2) + 2 + 1 0 2 0 2 0 2 1 0 0 0 2 + 0 0 2 5 2 0 2 0 1 0 0 0 2 1 2 2 2 0 0 0 X(2) Ezek után rátérünk az eljárás helyességének bizonyı́tására. Megmutatjuk, hogy az algoritmus egy olyan (C(0) , X(0) ), . ,(C(k) , X(k) ) mátrixpársorozatot állı́t elő, amelyre teljesülnek az (1) − (8) alatti tulajdonságok Elsőként vizsgáljuk az eljárás
előkészı́tő részét. C ∼ C(0) és C(0) ≥ 0 teljesülése ugyanúgy igazolható, mint a hozzárendelési feladatnál Másrészt vegyük észre, hogy X(0) konstrukciójából következik (4), (5) és (6) érvényessége, amivel adódik az előkészı́tő rész helyessége. Ezek után tekintsük az iterációs eljárásrészt. Tegyük fel, hogy adott egy olyan (C(r) , X(r) ) mátrixpár, amelyre teljesülnek a (3) − (6) alatti tulajdonságok, továbbá ∆r > 0 és C ∼ C(r) . Először megmutatjuk, hogy az 5.lépésre teljesülnek a következők: (i) az átalakı́tás során a 0∗ , 00 elemek nem változnak, (ii) az előállı́tott C0(r) mátrixra C0(r) ≥ 0 és C0(r) ∼ C(r) . Az (i) állı́tás következik abból, hogy minden egyes 00 és minden egyes 0∗ egyszeresen kötött, mégpedig a soruk van lekötve. Az (ii) állı́tás ugyanúgy igazolható, ahogy azt a szállı́tási
feladatnál tettük. 136 Most megmutatjuk, hogy az iterációs eljárásrész véges lépésben véget ér. Ehhez vegyük észre, hogy (5) alapján δ̄i ≥ 0 (i = 1, . , n) és δj ≥ 0 (j = 1, , m) teljesül Ha az iterációs eljárásrész során C(r) minden sorát lekötnénk, akkor abból δ̄i = 0 (i = 1, . , n) következne, ugyanis az i-edik sort csak akkor kötjük le, ha δ̄i = 0 Másrészt à ! n n X m n m n X X X X X (r) (r) ∆r = ai − xij = ai − xis = δ̄i . i=1 i=1 j=1 i=1 s=1 i=1 Így a δ̄i = 0 (i = 1, . , n) feltevésből ∆r = 0 következne, ami ellentmondás Következésképp, az iterációs eljárásrész végrehajtása során az aktuális C(r) -ben mindig van kötetlen sor. Vizsgáljuk ezek után a 2-3 lépéskombinációt. Minden ilyen lépéssel eggyel nő a kötött sorok száma, ı́gy ez a lépéskombináció legfeljebb n − 1-szer hajtható végre. Ez azt jelenti,
hogy véges sok lépés után az eljárás a 2-5 lépéskombinációval vagy a 4.lépéssel folytatódik Az 5.lépés végrehajtására akkor kerül sor, ha nem találunk szabad 0-t Megmutatjuk, hogy ekkor léteznek szabad elemek az aktuális C(r) -ben Az előzőekből tudjuk, hogy ebben az esetben az aktuális C(r) -nek van kötetlen sora. Ebben a sorban 00 és 0∗ nem szerepelhet, mivel a 3.lépés alapján ezek csak kötött sorokban fordulhatnak elő Másrészt a kötött oszlopok száma kisebb, mint m, ugyanis ellenkező esetben a δj = 0 (j = 1, . , m) feltevésből a fentiekhez hasonlóan a ∆r = 0 ellentmondáshoz jutnánk Tehát a tekintett sor tartalmaz szabad elemet, amivel a szabad elemek létezését igazoltuk. Mivel nem találtunk szabad 0-t, és az aktuális C(r) elemei nemnegatı́vak, ezért a szabad elemek rendre pozitı́vak. Ezek minimumát kivonva minden egyes szabad elemből, az átalakı́tás utáni
mátrix legalább egy szabad 0-t tartalmaz Az előállı́tott szabad 0-k közül a sorfolytonosan első 0-val folytatva az eljárást, vagy a 4.lépés, vagy a 3.lépés végrehajtása következik Az utóbbi esetben eggyel nő a kötött sorok száma az aktuális C(r) -ben, amiből következik, hogy az 5.lépés is véges sokszor kerülhet végrehajtásra. A fentiek alapján az iterációs eljárásrész véges sok lépés után a 4.lépéssel folytatódik, amivel adódik az iterációs eljárásrész végessége Vizsgáljuk ezek után az eljárás 4.lépését Ugyanúgy, mint a hozzárendelési feladatnál, a láncot illetően beláthatók a következők: (a) a láncképző algoritmus egyértelműen meghatározza a láncot, (b) a lánc nem metszi önmagát, azaz a láncképzés sorrendjének megfelelő láncbeli indexpárok (i1 , λ1 ),(i1 , λ2 ), . sorozata véges, és páronként
különböző elemekből áll, (c) a képezett láncban minden 0∗ -t követ egy 00 . A 4.lépés során előállı́tott Θ-ról megmutatjuk, hogy pozitı́v egész Ehhez legyen (r) a láncbeli indexpárok sorozata (i1 , λ1 ), . , (iv , λv ) Mivel a lánc kezdő eleme ci1 λ1 , Pm (r) ezért δ̄i1 > 0. Másrészt δ̄i1 = ai1 − s=1 xi1 s , ahol ai1 egész, és az X(r) -re tett (r) feltevés szerint xi1 s (s = 1, . , m) is egész, következésképp δ̄i1 pozitı́v egész Tudjuk (r) (c) alapján, hogy a lánc 00 -vel végződik, és a befejező elem civ λv . Tekintsük C(r) λv -edik oszlopát. Mivel ez az oszlop tartalmaz 00 -t, ezért a láncképzés időpontjában 137 nincs lekötve. Másrészt ez az oszlop nem tartalmaz 0∗ -ot, ı́gy az iterációs eljárásrész Pn (r) kezdetekor sem volt kötött, amiből δλv > 0 következik. De δλv = bλv − s=1 xsλv , (r) ahol bλv és xsλv (s = 1, .
, m) rendre egészek, és ı́gy δλv pozitı́v egész Ha a lánc elfajuló, akkor Θ = min{δ̄i1 , δλv }, és ı́gy Θ pozitı́v egész. Most tegyük fel, hogy a (r) (r) lánc nem elfajuló. Akkor ρ = min{xij : (i, j) ∈ Γr & cij = 0∗ } A 3lépés szerint (r) (r) cij -t csak akkor látjuk el ” ∗ ”-gal, ha xij > 0. Így a fenti minimumban szereplő mennyiségek rendre pozitı́v egészek, de akkor ρ is pozitı́v egész, amiből az előzőek alapján adódik, hogy Θ pozitı́v egész. Ezek után igazoljuk, hogy az előállı́tott (C(r+1) , X(r+1) ) mátrixpárra teljesülnek az előı́rt tulajdonságok. C(r+1) ≥ 0 és C(r) ∼ C(r+1) fennállása következik az 5.lépés vizsgálata során tett észrevételekből, ı́gy (2) és (3) teljesül. Most igazoljuk (4) érvényességét. Feltevésünk szerint X(r) ≥ 0 és X(r) elemei egészek. X(r+1) -et úgy képezzük X(r) -ből, hogy bizonyos
elemekhez hozzáadjuk Θ-t, más elemekből kivonunk Θ-t. Mivel Θ pozitı́v egész, ezért az előálló X(r+1) mátrix minden egyes eleme is egész. Másrészt azok az elemek, amelyek nem változnak, továbbá amelyek Θ hozzáadásával lettek képezve, nyilvánvalóan nemnegatı́vak. Most (r+1) (r) legyen (i, j) olyan indexpár, amelyre xij = xij − Θ. Akkor X(r+1) definı́ciója sze(r) (r) rint (i, j) ∈ Γr és cij = 0∗ . De akkor Θ definı́ciójából Θ ≤ xij következik, és ı́gy (r+1) xij ≥ 0. Következésképp, X(r+1) ≥ 0 és X(r+1) elemei egészek, amivel beláttuk (4) érvényességét. Az (5) tulajdonság igazolásához elsőként vegyük észre, hogy az i1 -edik sor és a λv -edik oszlop kivételével az aktuális C(r) mátrix minden sora és minden oszlopa vagy két láncbeli elemet tartalmaz, egy 00 -t és egy 0∗ -ot, vagy egyetlen láncbeli elemet sem tartalmaz. Valóban tekintsük egy,
az i1 -edik sortól különböző sort, és tegyük fel, hogy tartalmaz láncbeli elemet. Ha ez az elem 00 , akkor ez a 00 nem lehet a lánc kezdő eleme, ı́gy a sorában van egy 0∗ , amely megelőzi a láncban. Ha a tekintett elem 0∗ , akkor ezt a sorában követi egy láncbeli 00 . Következésképp, ha a sor tartalmaz láncbeli elemet, akkor legalább kettőt tartalmaz, mégpedig egy 0∗ -ot és egy 00 -t. Másrészt a sor kettőnél több láncbeli elemet nem tartalmazhat, mivel egy sorban legfeljebb egy 00 lehet, és kettőnél több láncbeli elem esetén két láncbeli 0∗ lenne a sorban, de akkor a láncképző algoritmus szerint a lánc metszené önmagát, ami ellentmond (b)-nek. Most tekintsük egy, a λv -edik oszloptól különböző oszlopot, és tegyük fel, hogy tartalmaz láncbeli elemet. Ha ez 00 , akkor ez nem lehet a lánc befejező eleme, de akkor az oszlopában a lánc egy 0∗ -gal folytatódik.
Ha a tekintett elem 0∗ , akkor a láncképző algoritmus szerint van egy 00 is az oszlopban, ami megelőzi a láncban ezt a 0∗ -ot. Következésképp, ha az oszlop tartalmaz láncbeli elemet, akkor legalább kettőt tartalmaz, mégpedig egy 00 -t és egy 0∗ -ot. Másrészt kettőnél több láncbeli elem nem lehet az oszlopban, mivel minden oszlop legfeljebb egy 0∗ -ot tartalmaz, ezért kettőnél több láncbeli elem esetén két láncbeli 00 lenne az oszlopban, de akkor a lánc metszené önmagát, ami ellentmond (b)-nek. 138 Vizsgáljuk az aktuális C(r) i1 -edik sorát és λv -edik oszlopát. Mivel minden sor legfeljebb egy 00 -t tartalmaz és δ̄i1 > 0, ezért az i1 -edik sorban egyetlen eleme van a (r) láncnak, mégpedig ci1 λ1 . Hasonlóan, mivel δλv > 0, ezért a λv -edik oszlopban nincsen (r) 0∗ , ı́gy az oszlop egyetlen láncbeli elemet tartalmaz, civ λv -t. Ezek után tekintsük az X(r) mátrix
i-edik sorát és j-edik oszlopát. Az X(r+1) és a Θ definı́ciója, valamint a lánc fenti tulajdonsága alapján nyilvánvalóak a következők: Pm (r+1) Pm (r) Ha i = i1 , akkor s=1 xis = Θ + s=1 xis ≤ ai . (r) (r+1) Ha i 6= i1 és C(r) i-edik sora nem tartalmaz láncbeli elemet, akkor xis = xis Pm (r+1) (s = 1, . , m), és ı́gy s=1 xis ≤ ai . Pm (r+1) Ha i 6= i1 és C(r) i-edik sora tartalmaz láncbeli elemet, akkor s=1 xis = Pm (r) Θ − Θ + s=1 xis ≤ ai . Pn Pn (r+1) (r) Ha j = λv , akkor s=1 xsj = Θ + s=1 xsj ≤ bj . (r+1) Ha j 6= λv és C(r) j-edik oszlopa nem tartalmaz láncbeli elemet, akkor xsj = Pn (r) (r+1) xsj (s = 1, . , n), és ı́gy s=1 xsj ≤ bj . Pn (r+1) Ha j 6= λv és C(r) j-edik oszlopa tartalmaz láncbeli elemet, akkor s=1 xsj = Pn (r) Θ − Θ + s=1 xsj ≤ bj . A fentiek pontosan azt jelentik, hogy m X (r+1) xis n X ≤ ai (i = 1, . , n), s=1 (r+1) xsj ≤ bj (j = 1, . , m), s=1 azaz X(r+1)
rendelkezik az (5) alatti tulajdonsággal. A (6) tulajdonság igazolásához legyen (i, j) tetszőleges olyan indexpár, amelyre (r+1) > 0. Ha (i, j) ∈ Γr , akkor nyilvánvaló, hogy cij = 0. Most tegyük fel, hogy (r+1) xij (r) (r+1) (i, j) ∈ / Γr . Akkor xij = xij , és ı́gy a (C(r) , X(r) ) párra vonatkozó feltevésünk (r) alapján az iterációs eljárásrész kezdetén cij = 0. Másrészt az eljárásrész során a (r) költségmátrixok rendre nemnegatı́vak, ı́gy cij értéke legfeljebb növekedhet. Az 5lépés (r) szerint cij értéke csak akkor nő, ha mind a sora, mind az oszlopa le van kötve. De ez (r) a 3.lépés alapján nem következhet be, ugyanis a cij sorának lekötésével egyidejűleg (r) (r+1) az oszlopát fel kellene oldani. Következésképp, 0 = cij = cij tulajdonságot igazoltuk. , amivel a kérdéses Összegezve az eddigieket, azt kaptuk, hogy amennyiben (C(r) , X(r) ) olyan
mátrixpár, amelyre ∆r > 0, C ∼ C(r) és rendelkezik a (3)−(6) alatti tulajdonságokkal, akkor végrehajtva a (C(r) , X(r) ) mátrixpáron az eljárás iterációs részét, egy olyan (C(r+1) , X(r+1) ) mátrixpárhoz jutunk, amely szintén rendelkezik a (3) − (6) alatti tulajdonságokkal, továbbá C(r) ∼ C(r+1) . 139 Másrészt (5) alapján 0 ≤ ∆r+1 , továbbá X(r+1) konstrukciójából n X m X (r+1) xij =Θ+ i=1 j=1 n X m X (r) xij i=1 j=1 következik, és ı́gy ∆r+1 − ∆r = Θ. Mivel Θ pozitı́v egész, ezért 0 ≤ ∆r+1 < ∆r , azaz (7) is teljesül. Következésképp, kiindulva a (C(0) , X(0) ) mátrixpárból, és r-szer végrehajtva az iterációs eljárásrészt, az előálló (C(0) , X(0) ), . , (C(r) , X(r) ) mátrixpársorozatra teljesülnek az (1) − (7) alatti állı́tások A lépésszámot illetően vegyük észre a következőket. Mivel X(t) (0 ≤ Ptn ≤ r)
egész, továbbá az a és b vektorok is egészek, ezért ∆t egész. Másrészt ∆0 ≤ i=1 ai Így n X a i ≥ ∆0 > ∆1 > . > ∆r i=1 nemnegatı́v egészeknek egy szigorúan monoton csökkenő sorozata. EzP azt eredményezi, n hogy folytatva az eljárást, a ∆t -k sorozata szükségképp legfeljebb i=1 ai lépésben Pn eléri a 0-t. Így van olyan k ≤ i=1 ai , amelyre ∆k = 0 teljesül, amivel adódik (8) érvényessége. Ezzel igazoltuk az iterációs eljárásrész, és egyben az egész eljárás helyességét. Az ismertetett módszerrel kapcsolatban megemlı́tjük a következőt. Vegyük észre, hogy (4) alapján az optimális megoldás egész. Következésképp, egész a és b vektorok esetén a szállı́tási feladatnak létezik egész optimális megoldása. Ez egy igen érdekes tulajdonsága a feladatnak, ha figyelembe vesszük, hogy a modellben csak a nemnegativitási feltételt
kötöttük ki X-re. Ennek az egzisztenciális állı́tásnak a magyar módszer egy konstruktı́v bizonyı́tása. Ezzel a (2.121) modell tárgyalását befejeztük, a fejezet hátralévő részében néhány további szállı́tási modellt vizsgálunk. Nyitott szállı́tási feladat Amint azt az egyensúlyi feltétel tárgyalásakor megemlı́tettük, sok gyakorlati problémánál nem teljesül az egyensúlyi feltétel. Ilyenkor nyitott szállı́tási feladatról szokásos beszélni. Pn Pm Tegyük fel, hogy i=1 ai < j=1 bj , azaz a készletek összege kevesebb, mint a szükségletek összege. Ekkor csak azt tűzhetjük ki célul, hogy a szükségletek figyelembevételével az összes készletet el kell szállı́tani, mégpedig minimális szállı́tási költséggel. A problémát leı́ró optimumszámı́tási modell a következő: 140 m X xis = ai (i = 1, . , n) xsj ≤ bj (j = 1, . , m)
s=1 (2.122) n X s=1 xij ≥ 0 (i = 1, . , n ; j = 1, , m) n X m X cij xij = z(X) min i=1 j=1 Konstruáljuk meg a (2.122) feladathoz azP S(ā, b̄, C̄) szállı́tási feladatot, ahol Pm n b̄ = b, āi = ai (i = 1, . , n), ān+1 = j=1 bj − i=1 ai és ½ cij , ha 1 ≤ i ≤ n; 1 ≤ j ≤ m, c̄ij = 0, ha i = n + 1; 1 ≤ j ≤ m. Vegyük észre , hogy az S(ā, b̄, C̄) feladat (2.122)-ből történő előállı́tásánál az egyenlőtlenségekben rendre felvettünk egy további Pm nemnegatı́v változót és áttértünk egyenlőségekre, továbbá a feltételrendszer a s=1 xn+1,s = ān+1 egyenlettel bővült. Az utóbbi egyenletről egyszerűen belátható, hogy nem független a többi egyenlettől, ı́gy elhagyása nem változtatja meg a lehetséges megoldások halmazát. De akkor a 21 fejezet 2.segédtétele alapján az S(ā, b̄, C̄) és a (2122) feladatoknak egyidejűleg létezik optimális megoldása,
és ezek közvetlenül egymásból. Mivel az adott Pm Pn+1 származtathatók feltételek mellett (ā ≥ 0, b̄ ≥ 0, i=1 āi = j=1 b̄j ) az S(ā, b̄, C̄) feladatnak létezik optimális megoldása, ezért a (2.122) feladatnak is létezik optimális megoldása, és ezt a 2.segédtétel alapján megkapjuk, ha az S(ā, b̄, C̄) feladat X̄ optimális megoldásából az X̄ mátrix utolsó sorát elhagyjuk. Pn Pm A fenti visszavezetés úgy interpretálható, hogy ān+1 = j=1 bj − i=1 ai anyagmennyiséggel felveszünk egy fiktı́v feladóhelyet, és ı́gy teremtjük meg az egyensúlyt. A megoldásban a fiktı́v feladóhelyekről kielégı́tett szükségletek kielégı́tetlenek maradnak, azaz ezek a szállı́tások nem realizálódnak. Pn Pm Nyilvánvalóan teljesen hasonlóan kezelhető a i=1 ai > j=1 bj eset is. Ekkor Pm Pn egy fiktı́v felvevőhelyet kell létesı́teni b̄m+1 = i=1 ai − j=1 bj
anyagszükséglettel. Tiltott szállı́tások kezelése A (2.121) modellnél feltételeztük, hogy bármely feladóhelyről bármely felvevőhelyre lehet szállı́tani Előfordulhat, hogy bizonyos viszonylatokban nem lehetséges a szállı́tás, ilyenkor tiltott szállı́tásokról szokásos beszélni. Nyilvánvaló, hogy ebben az esetben nem mindig létezik optimális megoldás. A továbbiakban megmutatjuk, hogy 141 a tiltásos feladatok megoldása mindig visszavezethető egy alkalmas (2.121) tı́pusú feladat megoldására. E célból tekintsük az S(a, b, C) szállı́tási feladatot az xit jt (t = 1, . , r) tiltásokkal, és jelölje ezt a feladatot T S(a, b, C). Akkor ugyanúgy, mint ahogy azt a hozzárendelési feladatnál tettük, belátható a következő állı́tás. 12.segédtétel Ha C ∼ D, akkor a T S(a, b, C) és T S(a, b, D) feladatoknak egyidejűleg létezik optimális megoldása, és az
optimális megoldások megegyeznek. A fenti segédtétel alapján elegendő olyan T S(a, b, C) feladatok megoldására szorı́tkozni, amelyekre C ≥ 0 teljesül. Tegyük fel, hogy T S(a, b, C) ilyenPfeladan tot jelöl. Legyen c = max {cij : 1 ≤ i ≤ n; 1 ≤ j ≤ m} és M = 1 + c i=1 ai , továbbá ½ M, ha van olyan 1 ≤ t ≤ r, hogy (i, j) = (it , jt ), pij = cij különben. Ekkor érvényes a következő állı́tás: 13.segédtétel A T S(a, b, C) feladatnak akkor és csak akkor létezik optimális megoldása, ha az S(a, b, P) feladat optimuma kisebb, mint M , és ebben az esetben S(a, b, P) optimális megoldás egyben optimális megoldása a T S(a, b, C) feladatnak is. Bizonyı́tás. Az állı́tás korrekt, mivel az adott feltételek mellett az S(a, b, P) szállı́tási feladatnak létezik optimális megoldása. A feltétel szükségességének igazolásához tegyük fel, hogy a T S(a, b, C) feladatnak létezik
optimális megoldása. Jelöljön X̄ egy optimális megoldást Ekkor x̄it jt = 0 (t = 1, . , r), és ı́gy n X m n X m X X zP (X̄) = pij x̄ij = cij x̄ij < M . i=1 j=1 i=1 j=1 Másrészt X̄ lehetséges megoldása S(a, b, P)-nek is, amiből következik, hogy az utóbbi szállı́tási feladat optimuma kisebb, mint M , amivel a feltétel szükségességét igazoltuk. Az elegendőség bizonyı́tásához tegyük fel, hogy S(a, b, P) optimuma kisebb, mint M . Az előzőek alapján tudjuk, hogy a feladatnak létezik egész optimális megoldása Jelölje X̄ az S(a, b, P) feladat egy egész optimális megoldását. Ekkor zP (X̄) < M Ebből x̄it jt = 0 (t = 1, . , r) következik, ugyanis ellenkező esetben P nemnegativitása miatt zP (X̄) ≥ M ellentmondáshoz jutnánk. De akkor X̄ lehetséges megoldása a T S(a, b, C) feladatnak. Most megmutatjuk, hogy X̄ optimális megoldása T S(a, b, C)nak Ehhez jelölje X̃ T S(a,
b, C)-nek egy tetszőleges lehetséges megoldását Mivel x̄it jt = 0 és x̃it jt = 0 (t = 1, . , r), ezért zC (X̄) = zC (X̃) = n X m X cij x̄ij = n X m X i=1 j=1 i=1 j=1 n X m X n X m X i=1 j=1 cij x̃ij = i=1 j=1 142 pij x̄ij = zP (X̄) , pij x̃ij = zP (X̄) . De feltevésünk szerint X̄ optimális megoldása S(a, b, P)-nek, ı́gy zP (X̄) ≤ zP (X̃), amiből a fenti egyenlőségek alapján zC (X̄) ≤ zC (X̃) következik. Ez pontosan azt jelenti, hogy X̄ optimális megoldása a T S(a, b, C) feladatnak, amivel az elegendőséget és egyben az állı́tást is igazoltuk. A megelőző két segédtétel alapján egyszerűen felépı́thető egy olyan eljárás, amelylyel tetszőleges T S(a, b, C) feladat megoldható. A eljárás tényleges felépı́tését a gyakorlatokra hagyjuk Korlátos szállı́tási feladat Bizonyos értelemben a tiltásos modell általánosı́tásának tekinthető a korlátos
szállı́tási feladat, amelyben minden egyes szállı́tási viszonylatra előı́runk egy korlátot. A probléma optimumszámı́tási modellje a következő: m X xis = ai (i = 1, . , n) s=1 n X (2.123) xsj = bj (j = 1, . , m) s=1 0 ≤ xij ≤ dij (i = 1, . , n ; j = 1, , m) n X m X cij xij = z(X) min i=1 j=1 Sajnos a fenti modell kezelése nem olyan egyszerű, mint a tiltásos feladaté. Megoldásához szükséges az ismertetett magyar módszer bizonyos változtatása. A következőkben megadjuk azokat az eltéréseket, amelyekben a két eljárás különbözik egymástól, és ezek alapján a konkrét eljárás felépı́tését a gyakorlatokra hagyjuk. Az eljárás helyességének igazolásától eltekintünk. Mielőtt megadnánk az eltéréseket, bevezetjük a következő fogalmat. Adott (r) (r) (C , X(r) ) párra, a cij elemet X-teljesnek nevezzük, ha xij = dij . Nézzük ezek után
lépésenként a korlátos feladat megoldására szolgáló eljárás eltéréseit a (2.121) feladat megoldására szolgáló eljárástól (r) Előkészı́tő rész. Csak az X(0) kialakı́tásában van eltérés, nevezetesen a minimumokban a dij értékeket is figyelembe kell venni Az általános definı́cióban ez azt jelenti, hogy ½ Pi−1 (0) Pj−1 (0) (0) (0) xij = min{ai − s=1 xis , bj − s=1 xsj , dij }, ha cij = 0, 0 különben. Iterációs rész 1.lépés Nincs változás 143 2.lépés Csupán annyi változás van, hogy sorfolytonosan szabad és nem X-teljes 0-t keresünk. 3.lépés Nincs változás 4.lépés Csak Θ definı́ciója változik, nevezetesen a Θ definı́cióját képező minimum egy további taggal bővül, azaz Θ = min{δ̄i1 , δλv , ρ, ρ0 } , ahol (r) (r) ρ0 = min{dij − xij : (i, j) ∈ Γr & cij = 00 } . Mivel az 5.lépésben sok a változás, ezért a teljes
5lépést megadjuk 5.lépés Ha minden szabad elem kisebb vagy egyenlő, mint 0, továbbá minden kétszeresen kötött elem nemnegatı́v, akkor vége az eljárásnak, a feladatnak nincs lehetséges megoldása. Ellenkező esetben jelölje h1 a pozitı́v szabad elemek minimumát, h2 a negatı́v kétszeresen kötött elemek minimumát, és legyen h = min{h1 , −h2 }. (Ha a h1 , h2 közül valamelyik nem létezik, akkor h a másik taggal egyenlő.) Ezek után vonjuk ki h-t az összes szabad elemből, adjuk hozzá a kétszer kötött elemekhez, és az olyan esetekben, amikor egy kétszer kötött negatı́v elem h hozzáadásával 0-vá válik, akkor oldjuk fel az illető elem oszlopát és az előálló 0-t lássuk el ” ∗ ”-gal. Ezt követően folytassuk az eljárást a 2.lépéssel Az eljárás végrehajtását a következő példán szemléltetjük: C C(0) C̄ 1 4 2 5 0 2 1 4 1 1 3 2
1 3 2 3 1 2 1 6 D 1 1 1 2 3 2 1 1 1 3 3 0 1 1 3 0 4 0 2 + + 0 3 1 4 −1 2 00 4 1 0 3 0 0 −1 2 0 2 1 0 2 1 0 −1 2 3 0 0 0 0 1 0 2 h = h1 = 1 0 0 1 0 4 2 4 2 X(0) C(1) −1 00 1 3 0 0 ° + ° + 4 −1 2 0 4 −2 2 −1 3 0∗ + 00 −1 2 0∗ + 00 0∗ 2 0∗ + 2 1 0 −1 2 00 0 −2 1 0 2 0 3 0 2 0 h1 = 1 1 0 2 0 1 0 2 h2 = −1 0 1 0 0 1 1 0 h=1 2 −1 00 X(1) 0 2 −1 C(2) + X(2) 144 C(3) + + −2 2 0 0 0 0 3 0 0 1 1 1 + + ° + −1 3 −2 2 2 0 0 0∗ 0 0 −2 1 2 0 1 0 2 0 ° + ° + 3 −2 ∗ 0 + 1 1 0∗ −3 00 −4 h = h1 = 2 1 0∗ −1 −4 00 −5 2 0∗ + 00 + h = h1 = 1 X(3) C(4) −3 1 0∗ 00 0∗ −1 −5 00 −5 1 −3 ∗ 1 0 + 00 + 0 h = h1 = 1 −5 1 0 0 −5 0 0 0 −1 3 1
0 0 1 1 2 1 1 0 2 0 X(4) Tehát a tekintett feladatnak létezik optimális megoldása, mégpedig egy optimális megoldás az X(4) mátrix. Feladatok 1. Oldjuk meg magyar módszerrel az alábbi a, b, C adatokkal az S(a, b, C) szállı́tási feladatot. (Megemlı́tjük, hogy ez az első publikált szállı́tási feladat 1941-ben F. L Hitchcock közölte a témakört ismertető cikkében, mint demonstrációs példát) 10 5 6 7 25 a = 25 b = ( 15, 20, 30, 35 ) C = 8 2 7 6 9 3 4 8 50 2. Adott három homokbánya A1 , A2 , A3 , amelyeken rendre 120, 80, 150 teherautó homok vár elszállı́tásra. Másrészt adott öt épı́tőipari vállalat, B1 , B2 , B3 , B4 , B5 , amelyeknél rendre 65, 71, 79, 67, 68 teherautó homokot várnak. Szállı́tsuk a bányákból 145 a vállalatokhoz minimális szállı́tási költséggel a homokot, ha az egy teherautó fuvarra eső szállı́tási
költség az Ai bányából a Bj vállalathoz (i − j)2 + (i − j) + 2. Konstruáljuk meg a problémához a megfelelő feladatot, és oldjuk meg. 3. Egy harcászati alkalmazást adott meg 1954-ben J A Joseph Ennek egy békés változata a következő probléma. Adott a légierőknek négy bázisa B1 , B2 , B3 , B4 , továbbá három repülőtér, ahová segélyszállı́tmányokat kell eljuttatni a bázisokról. Mindegyik bázisról elérhető mindegyik repülőtér A szükséges repülési magasságtól, valamint a fogadó repülőtértől függően különböző az egy gépen szállı́tható segély mennyisége az egyes bázis-repülőtér viszonylatokra. Ezeket a mennyiségeket az T1 T2 B1 8 6 B2 6 6 B3 10 8 B4 8 6 szállı́tási tervet, amely Konstruáljuk meg T3 alábbi táblázatban adjuk meg, ahol cij egy géppel 5 az i-edik bázisról a j-edik repülőtérre szállı́tható 6 segély
mennyisége tonnában. Egy-egy bázis napi 4 150 felszállást képes kiszolgálni, és minden repülőtér 4 napi 200 gépet tud fogadni. Készı́tsünk olyan mellett maximális mennyiségű segély szállı́tható. a problémát leı́ró optimumszámı́tási feladatot, és oldjuk meg. 4. Oldjuk meg magyar módszerrel az S(a1 , b1 , C1 ) és S(a2 , b2 , C2 ) szállı́tási feladatokat, ahol 7 a1 = 6 8 b1 = ( 5, 2 3 a2 = 4 5 3, 5, 5 3) 2 3 C1 = 3 3 2 2 b2 = ( 5, 4, 3, 2 ) 2 2 C2 = 2 2 2 3 4 5 5 3 4 4 1 4 2 4 3 2 4 5 4 2 5 6 6 5. Oldjuk meg az S(a1 , b1 , C1 ) és S(a2 , b2 , C2 ) nyitott szállı́tási feladatokat, ahol 5 a1 = 7 5 6 5 a2 = 6 5 b1 = ( 4, 4, 4, 4, 4, 4 ) 4 C1 = 3 6 b2 = ( 3, 5, 3, 5, 146 3) 7 5 C2 = 3 5 3 4 5 2 3 4 5 5 3 7 3 4 3 4 6 3 6 5 7 5 3 4 2 4 5 4
4 6 2 7 2 6. A 8segédtétel bizonyı́tását követve igazoljuk a 12segédtételt 7. A 12 és 13segédtételek felhasználásával épı́tsünk fel egy, a T S(a, b, C) feladat megoldására szolgáló eljárást. 8. Oldjuk meg az alábbi tiltásos szállı́tási feladat feladatokat: 3 4 4 2 3 3 (a) 4 3 5 5 3 2 6 6 4 5 5 5 5 5 5 2 7 1 6 5 2 3 1 5 3 5 2 1 6 2 4 6 7 3 5 4 3 3 2 x11 = x22 = 0 x33 = x34 = 0 2 4 3 4 4 4 3 4 3 (c) 6 7 4 7 5 (b) 5 6 5 1 5 5 7 5 3 4 4 6 9 6 x11 = x21 = x22 = 0 x32 = x33 = x43 = 0 x44 = 0 6 4 7 8 x13 = x21 = x23 = 0 x32 = x34 = x43 = 0 x44 = x45 = 0 9. A megadott eltérések alapján a magyar módszerből épı́tsük fel a korlátos szállı́tási feladat megoldására szolgáló eljárást. 10. Oldjuk meg az alábbi korlátos szállı́tási feladatokat 5 3 C= 4 3 4 3 5 2 3 4 4 4 4 3 7 7 7 6
6 9 3 5 5 5 5 0 2 D= 2 2 5 6 5 7 148 2 0 2 2 2 2 0 2 2 2 2 0 2 2 2 2 3 2 C̄ = 3 3 4 4 2 4 5 4 3 2 1 4 7 4 6 2 4 7 1 5 3 4 5 4 5 5 2 3 D̄ = 0 2 3 1 3 3 3 0 3 3 2 2 3 1 2 1 2 2 5 3. NEMLINEÁRIS PROGRAMOZÁS Az 1.fejezetben, a modellek osztályozása során meghatároztuk a cı́mben szereplő témakört Nevezetesen, nemlineáris programozási feladaton olyan problémát értünk, amelyben lineáris feltételrendszer mellett keressük egy nemlineáris z(x) célfüggvény szélsőértékeit. A feladathoz, illetve annak speciális változataihoz kapcsolódó vizsgálatok száma igen nagy A jelen keretek között csak három modellt és három kapcsolódó eljárást ismertetünk. Ezek különböző megoldási technikára épülnek. Az első esetben a nemlineáris probléma egyszerűen visszavezethető egy alkalmas lineáris
programozási feladatra A második eljárásunk lényegében egy numerikus közelı́tő megoldása a nemlineáris problémának, végül a harmadik, hatókörét illetően legáltalánosabb eljárás során, fokozatos közelı́téssel jutunk el az optimális megoldáshoz. A különböző megoldási technikák ellenére, a három eljárás közös tulajdonsága, hogy mindháromban alapvető szerepet játszik a lineáris programozás 3.1 Hiperbolikus programozási feladat A nemlineáris programozási feladatok egy speciális osztályát képezik az olyan problémák, amelyek célfüggvénye felı́rható két lineáris függvény hányadosaként. Ilyen esetben hiperbolikus programozási feladatról beszélünk. A következőkben ezen feladattı́pust vizsgáljuk, és megadunk egy olyan algoritmust, amellyel bizonyos feltételek teljesülése esetén a hiperbolikus programozási feladat egyszerűen
megoldható. Az első általános eljárást a hiperbolikus programozási feladat megoldására Martos Béla magyar matematikus publikálta 1960-ban. Mi egy másik, technikailag egyszerűbben kezelhető algoritmust fogunk megismerni, amelyet A. Charnes és W W Cooper dolgozott ki 1962-ben Tekintsük az alábbi hiperbolikus programozási feladatot: (3.11) Ax ≤ b, x ≥ 0, (b ≥ 0) 149 cx + α = z(x) max dx + β amelyről a továbbiakban hivatkozás nélkül mindig feltételezzük a következőket: (i) a feladat lehetséges megoldásainak L1 halmaza korlátos, (ii) tetszőleges x̄ ∈ L1 lehetséges megoldásra dx̄ + β > 0 teljesül. Vegyük észre, hogy az (i) és (ii) feltételek biztosı́tják, hogy a (3.11) feladatnak létezik optimális megoldása. Valóban, a 28 fejezet 5segédtételének bizonyı́tásában alkalmazott gondolatmenettel belátható, hogy L1 zárt halmaz (ld 28 fejezet 3feladat) Másrészt 0 ∈
L1 , és (i) alapján L1 korlátos. Így L1 korlátos, zárt és nemüres halmaz Végül az (ii) feltételből következik, hogy z(x) folytonos L1 -en. De akkor z(x) felveszi a maximumát L1 -en, azaz létezik a feladatnak optimális megoldása. Ezek után konstruáljuk meg a (3.11) feladathoz az alábbi lineáris programozási feladatot: (3.12) Ay − bt ≤ 0, (b ≥ 0), dy + βt = 1, y ≥ 0, t ≥ 0, cy + αt = w(y, t) max Jelölje (3.12) lehetséges megoldásainak halmazát L2 Meg fogjuk mutatni, hogy az adott feltételek mellett érvényesek a következő állı́tások: (a) L2 korlátos, (b) megadható olyan ϕ : L1 L2 kölcsönösen egyértelmű leképezés, amelyre L1 ϕ = L2 teljesül, azaz az L1 halmaz ϕ melletti képe pontosan L2 , (c) tetszőleges x̄ ∈ L1 lehetséges megoldásra z(x̄) = w(x̄ϕ), ahol x̄ϕ az x̄ vektor ϕ melletti képét jelöli. Joggal vetődik fel a kérdés, hogy a fenti
állı́tások mennyivel visznek közelebb bennünket a probléma megoldásához. Így mielőtt igazolnánk ezen állı́tásokat, bebizonyı́tjuk az alábbi tételt, amely választ ad a felvetett kérdésre 12.tétel A (311) feladat optimális megoldásának ϕ melletti képe optimális megoldása a (3.12) feladatnak és fordı́tva, a (312) feladat optimális megoldásának ϕ melletti őse optimális megoldása a (3.11) feladatnak Bizonyı́tás. Az állı́tás korrekt, ugyanis egyrészt tudjuk, hogy (311)-nek létezik optimális megoldása. Másrészt (a) alapján L2 korlátos és (b) miatt L2 nem üres Ismét a 2.8 fejezet 5segédtételének bizonyı́tásánál alkalmazott gondolatmenettel belátható, hogy L2 zárt halmaz. Így L2 korlátos, zárt és nemüres halmaz Végül (312) célfüggvénye lineáris függvény, ı́gy folytonos L2 -n. De akkor w felveszi a maximumát L2 -n, azaz létezik a (3.12)
feladatnak is optimális megoldása Ezek után legyen x̄ optimális megoldása a (3.11) feladatnak Ekkor (b) alapján x̄ϕ lehetséges megoldása (3.12)-nek Megmutatjuk, hogy x̄ϕ optimális megoldás is Az állı́tást indirekt bizonyı́tjuk. Ehhez tegyük fel, hogy x̄ϕ nem optimális megoldása 150 (3.12)-nek Akkor van olyan (ỹ, t̃) ∈ L2 , hogy w(ỹ, t̃) > w(x̄ϕ) Ez esetben (b) alapján van olyan x̃ ∈ L1 , amelyre x̃ϕ = (ỹ, t̃). De (c) alapján z(x̃) = w(x̃ϕ) = w(ỹ, t̃) és z(x̄) = w(x̄ϕ). Így w(ỹ, t̃) > w(x̄ϕ) fennállásából z(x̃) > z(x̄) következik, ami ellentmond annak a feltevésünknek, hogy x̄ optimális megoldása a (3.11) feladatnak Következésképp x̄ϕ optimális megoldása (3.12)-nek, amivel az állı́tás egyik részét igazoltuk. A megfordı́tás teljesen hasonló módon bizonyı́tható. Következmény. A (311) feladat optimális megoldását megkapjuk, ha
megoldjuk a megfelelő (3.12) lineáris programozási feladatot, és a kapott optimális megoldásnak képezzük a ϕ melletti ősét. A fenti következmény lényegében azt az eljárást is megadja, amellyel a (3.11) feladat optimális megoldása meghatározható Ahhoz, hogy ez az eljárás végrehajtható legyen, még a ϕ függvényt kell megadnunk. Ezt az (a), (b), (c) igazolásával egyidejűleg tesszük meg. A felsorolt állı́tások bizonyı́tásához szükségünk lesz az L2 halmaz következő, fontos tulajdonságára. 13.tétel A (312) feladat tetszőleges (ȳ, t̄) lehetséges megoldására t̄ > 0 teljesül Bizonyı́tás. Az állı́tást indirekt bizonyı́tjuk Ehhez tegyük fel, hogy t̄ > 0 nem teljesül, azaz t̄ ≤ 0. Mivel (ȳ, t̄) ∈ L2 , ezért t̄ ≥ 0, ı́gy t̄ = 0 Viszont ez esetben ȳ 6= 0, mivel dȳ + β t̄ = 1. Jelölje az ȳ vektor egy 0-tól különböző komponensét ȳi
Szintén (ȳ, t̄) ∈ L2 alapján Aȳ − bt̄ ≤ 0, de t̄ = 0, ı́gy Aȳ ≤ 0. Legyen most x̄ ∈ L1 tetszőleges, és tekintsük az x̄ + λȳ vektort, ahol λ ≥ 0 tetszőleges valós szám. Ekkor x̄ ≥ 0, ȳ ≥ 0, λ ≥ 0 fennállásából x̄ + λȳ ≥ 0 következik. Másrészt Aȳ ≤ 0 és λ ≥ 0, ı́gy Aλȳ ≤ 0 De x̄ ∈ L1 , és ı́gy Ax̄ ≤ b A kapott két egyenlőtlenségből A(x̄ + λȳ) ≤ b adódik. De akkor x̄ + λȳ ∈ L1 teljesül tetszőleges λ ≥ 0 valós számra. Vizsgáljuk most az x̄ + λȳ vektor i-edik komponensét. A tekintett komponens: x̄i + λȳi . Vegyük észre, hogy ȳi > 0 miatt, ez a komponens tart végtelenhez, ha λ ∞. Ez azt jelenti, hogy L1 elemeire vonatkozóan ez a komponens nem korlátos, ami ellentmond annak, hogy az L1 halmaz korlátos. Következésképp ellentmondáshoz jutottunk, ı́gy t̄ > 0, amivel a 13.tételt igazoltuk Ezek után csak az (a), (b)
és (c) állı́tások igazolását kell elvégeznünk. Elsőként megadjuk a ϕ leképezést. Tetszőleges x̄ ∈ L1 vektorra legyen µ ¶ x̄ 1 ϕ : x̄ , . dx̄ + β dx̄ + β Az (ii) feltétel miatt ϕ tetszőleges x̄ ∈ L1 esetén értelmezve van. Egyszerűen belátható (ld. 2feladat), hogy különböző vektorok képe különböző, azaz ϕ kölcsönösen egyértelmű. Most legyen (ȳ, t̄) ∈ L2 tetszőleges. A 13tétel alapján ekkor t̄ > 0 Így képezhetjük az x̄ = ȳ/t̄ vektort. Megmutatjuk, hogy x̄ ∈ L1 és x̄ϕ = (ȳ, t̄) Valóban, (ȳ, t̄) ∈ L2 , ı́gy Aȳ − bt̄ ≤ 0, amiből t̄ > 0 miatt Aȳ/t̄ ≤ b, és ı́gy Ax̄ ≤ b következik. Másrészt ȳ ≥ 0, t̄ > 0, de akkor ȳ/t̄ = x̄ ≥ 0 Következésképp x̄ ∈ L1 . Most véve x̄ ϕ meletti képét, 151 µ ¶ µ ¶ ȳ/t̄ 1 ȳ t̄ x̄ϕ = , = , = (ȳ, t̄) dȳ/t̄ + β dȳ/t̄ + β dȳ + β t̄ dȳ + β t̄
ugyanis (ȳ, t̄) ∈ L2 miatt dȳ + β t̄ = 1. Ezzel megmutattuk, hogy ϕ az L1 halmaznak az L2 halmazra való kölcsönösen egyértelmű leképezése, amivel (b)-t igazoltuk. Az (a) állı́tás bizonyı́tásához tekintsük a ϕ függvényt komponensenként, azaz legyen xi 1 ϕm+1 : x (i = 1, . , m), . dx + β dx + β Mivel tetszőleges x̄ ∈ L1 lehetséges megoldásra dx̄ + β > 0, ezért ezek a függvények rendre folytonosak az L1 halmazon, amelyről tudjuk, hogy egy korlátos, nemüres, zárt halmaz. De akkor ezek a függvények rendre felveszik minimumukat és maximumukat L1 -en. Így léteznek olyan hi , Hi (i = 1, , m) , h, H konstansok, hogy tetszőleges x̄ ∈ L1 lehetséges megoldásra x̄i 1 hi ≤ h≤ ≤ Hi (i = 1, . , m); ≤H . dx̄ + β dx̄ + β Másrészt tetszőleges (ȳ, t̄) ∈ L2 lehetséges megoldásra x̄ = ȳ/t̄ ∈ L1 , és x̄ ϕ melletti képe (ȳ, t̄). Így ϕi : x hi ≤ ȳi ≤ Hi
(i = 1, . , m), h ≤ t̄ ≤ H , amiből már következik az L2 halmaz korlátossága. Végül (c) igazolásához legyen x̄ ∈ L1 tetszőleges, és jelölje x̄ ϕ meletti képét (ȳ, t̄). Akkor z(x̄) = cx̄ + α x̄ 1 =c +α = cȳ + αt̄ = w(ȳ, t̄) = w(x̄ϕ) . dx̄ + β dx̄ + β dx̄ + β Ezzel az (a), (b), (c) állı́tások mindegyikét igazoltuk, és ϕ megadásával az eljárást is teljessé tettük. A következőkben egy példa megoldásával mutatjuk be az eljárás gyakorlati végrehajtását. Ehhez tekintsük a következő hiperbolikus programozási feladatot: x1 + x2 ≤ 6 x1 ≤4 −x1 + x2 ≤ 4 x1 ≥ 0, x2 ≥ 0 – x1 + 2x2 − 5 = z max 3x1 + x2 + 2 Vegyük észre, hogy a tekintett feladat kielégı́ti a feltételeket. Az x1 + x2 ≤ 6 egyenlőtlenség biztosı́tja, hogy a lehetséges megoldások L1 halmaza korlátos. Másrészt nemnegatı́v x1 , x2 esetén 3x1 + x2 + 2 ≥ 2, ı́gy
tetszőleges x̄ = (x̄1 , x̄2 ) lehetséges 152 megoldásra dx̄ + β = 3x̄1 + x̄2 + 2 ≥ 2 > 0. Tehát az (i) és (ii) feltételek mindegyike teljesül, ı́gy alkalmazhatjuk az előzőekben megismerteket A megfelelő lineáris programozási feladat a következő: y1 + y2 − 6t ≤ 0 y1 − 4t ≤ 0 −y1 + y2 − 4t ≤ 0 3y1 + y2 + 2t = 1 y1 ≥ 0, y2 ≥ 0, t ≥ 0 y1 + 2y2 − 5t = w max Rendre hozzáadva az egyenlőtlenségek baloldalához az u1 , u2 , u3 nemnegatı́v változókat, és megszorozva a célfüggvényt −1-gyel, a következő standard feladatot kapjuk: y1 +y2 −6t +u1 =0 y1 −4t +u2 =0 −y1 +y2 −4t +u3 = 0 3y1 +y2 +2t =1 y1 ≥ 0, y2 ≥ 0, t ≥ 0, ui ≥ 0 (i = 1, 2, 3) – −y1 −2y2 +5t = w̄ min Vegyük észre, hogy a kapott standard feladatban az u1 , u2 , u3 változók használhatók, mint bázisváltozók. Így a szimplex módszerhez szükséges mesterséges változók számát egyre
redukálhatjuk a negyedik egyenletben felvett v nemnegatı́v mesterséges változó felvételével. Ez esetben a másodlagos célfüggvény v = s alakú, és ennek a minimumát keressük. Mivel v bázisváltozó, ezért a negyedik egyenlet −1szeresét kell hozzáadnunk a másodlagos célfüggvényt meghatározó fenti egyenlethez Az új célfüggvényegyenlet a következő: −3y1 − y2 − 2t = s(y, t, u) − 1 Ezt tekintve a másodlagos célfüggvény egyenletének, az alábbi induló szimplex táblázatot kapjuk: y1 y2 t u1 1 1 −6 0 u2 1 0 −4 0 u3 −1 1 −4 0 ∗ 1 v 3 1 2 (w̄) −1 −2 +5 0 (s) −3 −1 −2 −1 Vegyük észre, hogy a táblázat harmadik oszlopában választva generáló elemet, az átalakı́tás utáni feladat bázismegoldásán a másodlagos célfüggvény 0 értéket vesz fel. Így a szimplex algoritmustól eltérően ebben az oszlopban választva
generáló elemet, 153 a43 adódik, és végrehajtva a megfelelő átalakı́tásokat, az alábbi szimplex táblázatot kapjuk. y1 y2 v u1 10 4 3 3 u2 7 2 2 2 u3 5 3 2 2 t 3/2 1/2 1/2 1/2 (w̄) −17/2 −9/2 −5/2 −5/2 1 0 (s) 0 0 A kapott táblázatban a másodlagos célfüggvény értékét megadó konstans 0, ı́gy létezik lehetséges megoldása a tekintett standard feladatnak. A szimplex módszernek megfelelően elhagyva a másodlagos célfüggvényt valamint a mesterséges változót oszlopával együtt, a tekintett standard feladattal ekvivalens lehetséges kanonikus alakú feladathoz jutunk. Ezen feladat szimplex táblázata és a rajta végrehajtott szimplex algoritmus során előálló szimplex táblázatok a következők: y1 y2 u2 y2 u1 10 4 3 u1 −10/7 8/7 ∗ 1/7 u2 7∗ 2 2 y1 1/7 2/7 2/7 u3 5 3 2 u3 −5/7 11/7 4/7 t 3/2 1/2 1/2 t −3/14 1/14 1/14 (w̄)
−17/2 −9/2 −5/2 (w̄) u2 u1 y2 −10/8 7/8 1/8 y1 4/8 17/14 −29/14 −1/14 u3 u1 y2 1 −1/2 1/2 −2/8 2/8 y1 −2/5 3/10 1/10 u3 ∗ 10/8 −11/8 3/8 u2 4/5 −11/10 3/10 t −1/8 −1/16 1/16 t 1/10 −1/5 1/10 −11/8 29/16 3/16 (w̄) 11/10 3/10 6/10 (w̄) A tekintett lineáris programozási feladat optimális megoldása: ȳ1 = 1/10, ȳ2 = 1/2, t̄ = 1/10. Ebből a hiperbolikus programozási feladatra az x̄ = ȳ (1/10, 1/2) = = (1, 5) t̄ 1/10 optimális megoldás adódik a z(x̄) = 6/10 optimumértékkel. 154 Feladatok Igazoljuk, hogy az alábbi feltételrendszerrel meghatározott lehetséges 1. megoldások halmaza zárt. Ay − bt ≤ 0 , (b ≥ 0) dy + βt = 1 , y ≥ 0 , t ≥ 0 2. Igazoljuk, hogy amennyiben x̄ 6= x̃ olyan vektorok, amelyekre dx̄ + β 6= 0 és dx̃ + β 6= 0 teljesül, akkor érvényes a következő: x̄ x̃ 6= dx̄ + β dx̃ + β vagy 1 1 6= . dx̄ + β dx̃ + β 3.
Oldjuk meg az alábbi hiperbolikus programozási feladatokat (A megoldás előtt ellenőrizzük, hogy teljesülnek-e az (i) és (ii) feltételek.) (1) (2) x1 + x2 ≤ 4 x1 − x2 ≤ 2 x1 ≥ 0, x2 ≥ 0 – 2x1 + x2 − 2 = z max x1 + x2 + 1 x1 + x2 + x3 ≤ 12 2x1 − x2 + x3 ≤ 10 −3x1 + 5x2 + 2x3 ≤ 8 −2x1 − x2 + 4x3 ≤ 4 xi ≤ 0 (i = 1, 2, 3) – 2x1 − x2 + 2x3 − 2 = z max x1 + 2x2 + x3 + 2 155 3.2 Konvex programozási feladat Mindenekelőtt emlékeztetünk a konvex függvény definı́ciójára. Azt mondjuk, hogy egy f (x) m-változós függvény az m-dimenziós tér egy L konvex halmazán konvex, ha tetszőleges x̄,ȳ ∈ L vektorokra és 0 ≤ λ ≤ 1 konstansra f (λx̄ + (1 − λ)ȳ) ≤ λf (x̄) + (1 − λ)f (ȳ) teljesül. Ha egy nemlineáris programozási feladat z(x) célfüggvénye a lehetséges megoldások halmazán konvex, és z(x)-nek a minimumát keressük, akkor konvex programozási
feladatról beszélünk. A probléma megoldására számos eljárás ismeretes. A következőkben a konvex programozásnak csak egy speciális esetével foglalkozunk, nevezetesen olyan feladatokat Pm vizsgálunk, amelyek z(x) célfüggvénye felı́rható j=1 fj (xj ) alakban, ahol az fj (xj ) egyváltozós függvények rendre konvex függvények a megfelelő intervallumokban. Ilyen függvények esetén szokásos szétválasztható változójú konvex függvényről beszélni. Ezek után tekintsük a következő feladatot: (3.21) Ax ≤ b, x ≥ 0, (b ≥ 0) m X fj (xj ) = z(x) min j=1 amelyről a továbbiakban hivatkozás nélkül mindig feltételezzük a következőket: (i) a feladat lehetséges megoldásainak L halmaza korlátos, (ii) a z(x) függvény folytonos L-en. 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 mindig
létezik optimális megoldása. A következőkben megmutatjuk, hogy megadható a (3.21) 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 (321) feladathoz megkonstruálunk egy olyan (3.22) Du ≤ d, u ≥ 0, (d ≥ 0) α + cu = w(u) min lineáris programozási feladatot, hogy teljesülnek a következők: (1) a (3.22) feladat lehetséges megoldásainak L0 halmaza korlátos, (2) megadható olyan ϕ : L L0 leképezés, hogy (a) tetszőleges ū ∈ L0 vektorhoz meghatározható olyan ũ ∈ Lϕ, amelyre w(ũ) ≤ w(ū) teljesül, (b) tetszőleges x̄ ∈ L lehetséges megoldásra z(x̄) ∼ w(x̄ϕ). 155 A bevezetett feladatpárra vonatkozóan érvényes a következő állı́tás. 14.tétel Ha a (321) feladathoz
megkonstruálunk egy olyan (322) 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 | z(x0 ) − min z(x) |< ε . x∈L Bizonyı́tás. Elsőként megmutatjuk, hogy (322)-nek van olyan optimális megoldása, amely eleme az Lϕ halmaznak Ezen állı́tás korrekt, ugyanis (1) alapján L0 korlátos, de akkor hasonlóan az előző fejezetekben tárgyaltakhoz belátható, hogy létezik (3.22)-nek optimális megoldása Jelöljön ū egy optimális megoldást Ekkor a (2) állı́tás (a) részéből adódik, hogy van olyan ũ ∈ Lϕ, amelyre w(ũ) ≤ w(ū) teljesül. De akkor ũ is optimális megoldás, amivel a kitűzött állı́tást igazoltuk. Ezek után legyen x0 az ũ optimális megoldás egy ϕ melletti őse. Megmutatjuk, hogy x0 -ra teljesül a tételben kimondott
állı́tás. Mivel tetszőleges x̄ ∈ L lehetséges megoldásra | z(x̄) − w(x̄ϕ) |< ε/2, ezért (3) z(x̄) − ε/2 < w(x̄ϕ) < z(x̄) + ε/2 . Másrészt ũ optimális megoldás, ı́gy tetszőleges ū ∈ L0 vektorra w(ũ) ≤ w(ū) teljesül. De ũ = x0 ϕ, ı́gy az utóbbi egyenlőtlenségből azt kapjuk, hogy tetszőleges x̄ ∈ L-re (4) w(x0 ϕ) ≤ w(x̄ϕ) . Most (3) és (4) alapján adódik, hogy z(x0 ) − ε/2 < w(x0 ϕ) < z(x̄) + ε/2 teljesül tetszőleges x̄ ∈ L vektorra. De akkor z(x0 ) − z(x̄) < ε tetszőleges x̄ ∈ L-re, és ı́gy z(x0 ) − min z(x) < ε . x∈L Mivel x0 ∈ L, ezért a fenti kifejezés baloldala nemnegatı́v, de akkor megegyezik saját abszolút értékével. Így | z(x0 ) − min z(x) |< ε , x∈L amivel igazoltuk a 14.tételt Következmény. Ha rögzı́tett ε > 0 mellett a (321) feladathoz megkonstruálunk egy olyan (3.22) feladatot, hogy a
feladatpárra teljesülnek az (1), (2) álı́tások, és a (2) állı́tás (b) részében megadott közelı́tés ε/2 pontosságú, akkor megadható (3.21) 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 ε. 156 Kérdés ezek után, hogy miként lehet (3.21)-hez olyan (322) tı́pusú 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ő (3.22) 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 szükségesek bizonyos előkészületek. Mivel a (3.21) feladat lehetséges megoldásainak L halmaza korlátos, ezért léteznek olyan h1 , . , hm konstansok, hogy tetszőleges
x̄ ∈ L lehetséges megoldásra 0 ≤ x̄j ≤ hj (j = 1, . , m) teljesül valóban léteznek, ugyanis a PmIlyen2 értékek 2 korlátosság miatt van olyan M , hogy j=1 x̄j ≤ M , ha x̄ ∈ L. De akkor hj = M (j = 1, . , m) máris alkalmas konstansok Sajnos a hj (j = 1, . , m) értékek létezésén kivül szükségünk van konkrét ilyen 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. 1feladat), ez azonban igen számı́tásigényes, és nehezen hajtható végre A továbbiakban nem térünk ki a hj (j = 1, . , m) konstansok meghatározási technikájára Feltételezzük, hogy ezek valamilyen módszerrel meghatározhatók 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, , kj értékekre a (hjs−1 , fj (hjs−1 )), (hjs , fj (hjs )) pontokat összekötő szakaszok mjs = fj (hjs ) − fj (hjs−1 ) hjs − hjs−1 iránytangenseit. Ekkor a Γj (uj1 , . , ujkj ) = fj (0) + kj X mjs ujs s=1 függvényt fj (xj ) húrpoligonjának nevezzük a [0, hj ] intervallumon. Γj -t ú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, x̄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: Pkj (5) s=1 ūjs = x̄j , (6) 0
≤ ūjs ≤ hjs − hjs−1 (s = 1, . , kj ) , (7) tetszőleges 1 ≤ s ≤ kj indexre, ha ūjs > 0, akkor ūjt = hjt − hjt−1 (t = 1, . , s − 1) 157 Másrészt Γj definı́ciójából következik, hogy az ı́gy meghatározott ūjs (s = 1, . , kj ) értékekre Γj (ūj1 , . , ūjkj ) pontosan a függvényértékeket összekötő szakaszok által meghatározott függvény értéke az x̄j pontban. Feltételezésünk szerint fj (xj ) konvex függvény [0, hj ]-n. Ebből a Γj húrpoligonban szereplő mjs (s = 1, , kj ) iránytangensekre következik, hogy (8) mj1 ≤ mj2 ≤ . ≤ mjkj , amely tulajdonságot a későbbiek során fel fogunk használni. Végül vizsgáljuk a húrpoligon és az fj (xj ) függvény eltérését a [0, hj ] intervallumon. 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. 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 ū, v̄ ∈ [0, hj ] pontpárra, ha | ū − v̄ |< δ, akkor | fj (ū) − fj (v̄) |< ε. Ez viszont azt eredményezi, hogy véve egy olyan beosztást, amelyre hjs − hjs−1 < δ (s = 1, . , 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őleges 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. A továbbiakban ennek a
részleteivel nem foglalkozunk, a tárgyalásra kerülő feladatokban a megfelelő beosztások viszonylag könnyen meghatározhatók. A fenti előkészı́tés után a (3.21) feladat rögzı́tett ε > 0 hibahatár melletti megoldására a következő eljárást épı́thetjük fel. Eljárás 1.lépés A feladat változóira rendre határozzuk meg a hj (j = 1, , m) felső korlátokat. 2.lépés Minden j-re (j = 1, , m) vegyük fel a [0, hj ] intervallum egy olyan beosztását, hogy a beosztáshoz tartozó húrpoligon és az fj (xj ) függvény eltérése kisebb legyen, mint ε/2m, majd határozzuk meg rendre a Γj (uj1 , . , ujkj ) (j = 1, , m) húrpoligonokat. 3.lépés A (321) feladat Ax ≤ b egyenlőtlenségrendszerében minden j-re Pkj (j = 1, . , m) helyettesı́tsük az xj változót a s=1 ujs kifejezéssel. Az ı́gy előálló feltételrendszert egészı́tsük ki a 0 ≤ ujs ≤ hjs − hjs−1 (s
= 1, . , kj ; j = 1, , m) feltételekkel. Ezt követően vegyük fel célfüggvényként a 158 w(u) = m X Γj (uj1 , . , ujkj ) j=1 függvényt. 4.lépés A 3lépésben előállı́tott (322) tı́pusú lineáris programozási feladatot oldPkj juk meg, és a kapott ū optimális megoldásból képezzük az x̄j = s=1 ūjs értékeket (j = 1, . , m) és az x̄ = (x̄1 , , x̄m ) vektort Az előállı́tott x̄ vektor a (321) feladat optimális megoldásának egy numerikus közelı́tése. Az eljárás helyességének igazolásához a 14.tétel alapján elegendő azt bizonyı́tanunk, hogy az eljárás során megkonstruált (322) tı́pusú feladat és a (321) feladatot illetően teljesülnek az (1) és (2) állı́tások, és a 4.lépésben képezett x̄ az ū optimális megoldás ϕ melletti őse. Az (1) állı́tás, azaz L0 korlátossága, nyilvánvalóan következik a 0 ≤ ujs ≤ hjs −
hjs−1 (s = 1, . , kj ; j = 1, , m) feltételekből A (2) állı́tás igazolásához elsőként definiáljuk a ϕ leképezést. Tetszőleges x̄ = (x̄1 , . , x̄m ) ∈ L vektorra legyen (x̄1 , . , x̄m )ϕ = (ū11 , , ū1k1 , ū21 , , ū2k2 , , ūm1 , , ūmkm ) , ahol ūj1 , . , ūjkj az x̄j értéknek az előzőekben ismertetett, az (5), (6), (7) állı́tásokat kielégı́tő felbontása (j = 1, . , m) Mivel x̄j ilyen felbontása egyértelmű, ezért ϕ olyan leképezés, amelynek értelmezési tartománya L. Másrészt ū komponensei (6) alapján kielégı́tik a 0 ≤ ujs ≤ hjs − hjs−1 (s = 1, . , jk ; j = 1, , m) Pkj feltételeket, továbbá Ax̄ = b és x̄j = s=1 ūjs miatt ū kielégı́ti a megkonstruált (3.22) tı́pusú feladat másik feltételcsoportját is Ez pontosan azt jelenti, hogy ū lehetséges megoldása a lineáris programozási feladatnak, azaz ū ∈ L0 .
Következésképp, ϕ értékkészlete része L0 -nek, és ı́gy ϕ a megadott tı́pusú leképezés. Most vegyük észre, hogy tetszőleges ū ∈ L0 vektor esetén, ha ū-ra teljesül (7) minden 1 ≤ j ≤ m indexre, akkor ū ∈ Lϕ. Valóban, egyszerűen belátható, hogy ebben az esetben képezve az k1 km X X x̄ = (x̄1 , . , x̄m ) = ( ū1s , . , ūms ) s=1 s=1 vektort, x̄ lehetséges megoldása (3.21)-nek, és x̄ϕ = ū, ami egyidejűleg azt is mutatja, hogy a 4.lépésben képezett x̄ vektor az ū optimális megoldás ϕ melletti őse Ezek után rátérünk az (a) állı́tás igazolására. Ehhez legyen ū ∈ L0 tetszőleges Ha ū-ra teljesül (7) minden 1 ≤ j ≤ m indexre, akkor a fentiek alapján ū ∈ Lϕ, és ı́gy a ū = ũ előállı́tással adódik a megfelelő ũ vektor. 159 Ha ū-ra vonatkozóan van olyan 1 ≤ j ≤ m index, amelyre nem teljesül (7), akkor jelölje j1 , . , jw
az összes ilyen Pkitulajdonságú indexeket. Legyen i ∈0 {j1 , , jw } tetszőleges, és képezzük a qi = s=1 ūis mennyiséget. Mivel ū ∈ L , ezért 0 ≤ ūis ≤ his − his−1 (s = 1, . , ki ), ı́gy 0 ≤ qi ≤ hki = hi Most jelölje a 0 és qi pontokat összekötő szakasz [his−1 , his ]-be eső részének hosszát ũis (s = 1, . , ki ), azaz vegyük qi -nek az (5), (6), (7) állı́tásokat kielégı́tő felbontását. Hajtsuk végre a fentieket minden i ∈ {j1 , . , jw } indexre, továbbá a j ∈ / {j1 , . , jw } indexekre legyen ũjs = ūjs (s = 1, . , kj ) Megmutatatjuk, hogy az előállı́tott ũ vektorra ũ ∈ L0 teljesül. Ehhez elsőként vizsgáljuk a konstruált (3.22) feladat 0 ≤ ujs ≤ hjs − hjs−1 (s = 1, . , kj ; j = 1, , m) feltételeinek teljesülését. Ha j ∈ / {j1 , . , jw }, akkor ũjs = ūjs (s = 1, , kj ), és ı́gy az ũj1 , . , ũjkj értékekre
teljesülnek a megfelelő feltételek Ha j ∈ {j1 , , jw }, akkor az ũj1 , . , ũjkj értékekre érvényes (6), és ı́gy kielégı́tik a fenti feltételeket is A konstruált (3.22) feladat másik feltételcsoportjának, az Ax ≤ b feltételrendszerből xj Pkj nek a s=1 ujs kifejezéssel történő helyettesı́tésével nyert feltételeknek a teljesülése Pkj Pkj nyilvánvaló, ugyanis minden j-re s=1 ũjs = s=1 = ūjs , ı́gy ha ū-ra teljesültek ezek a feltételek, akkor ũ is kielégı́ti ezeket a feltételeket. Következésképp ũ kielégı́ti a lineáris programozási feladat minden feltételét, ı́gy ũ ∈ L0 . Másrészt vegyük észre, hogy ũ definı́ciójából következik, hogy ũ-ra vonatkozóan minden 1 ≤ j ≤ m indexre érvényes (7). Ekkor viszont az előzőek szerint ũ ∈ Lϕ Ezek után már csak azt kell igazolnunk, hogy w(ũ) ≤ w(ū). Mivel w(u11 , . , umkm ) = m X Γj
(uj1 , . , ujkj ) , j=1 ezért a fenti egyenlőtlenség fennállásához elegendő megmutatnunk, hogy minden 1 ≤ j ≤ m indexre teljesül az alábbi egyenlőtlenség: (9) Γj (ũj1 , . , ũjkj ) ≤ Γj (ūj1 , , ūjkj ) Ha j ∈ / {j1 , . , jw }, akkor ũjs = ūjs (s = 1, , kj ), és ı́gy (9) érvényessége nyilvánvaló. Most tegyük fel, hogy j ∈ {j1 , , jw } Mivel Γj (uj1 , , ujkj ) = Pkj fj (0) + s=1 mjs ujs , ezért (9) fennállásához elegendő megmutatni, hogy (10) kj X mjs ũjs ≤ s=1 kj X mjs ūjs . s=1 Ennek igazolásához legyen ds = ũjs − ūjs (s = 1, . , kj ) Vegyük észre, hogy mivel Pkj Pkj Pkj s=1 ūjs , ezért s=1 ds = 0. Jelölje s0 a legnagyobb olyan 1 ≤ s ≤ kj s=1 ũjs = indexet, amelyre ũjs > 0 teljesül. Ekkor mivel az ũj1 , , ũjkj értékekre teljesül (7), ezért ũjs = hjs − hjs−1 , ha 1 ≤ s < s0 . Következésképp ds ≥ 0, ha 1 ≤ s <
s0 Másrészt s0 definı́ciójából következik, hogy ũjs = 0, ha s0 < s ≤ kj . Így ds ≤ 0, ha s0 < s ≤ k j . 160 Ezek után legyen ½ r= s0 , ha ds0 ≥ 0, s0 − 1 , ha ds0 < 0. Így azt kapjuk, hogy ds ≥ 0, ha 1 ≤ s ≤ r, és ds ≤ 0, ha r + 1 ≤ s ≤ kj . Másrészt Pkj s=1 ds = 0, amiből r X kj X ds = − s=1 ds s=r+1 . Most legyen 1 ≤ s ≤ r tetszőleges. Akkor ds ≥ 0 és (8) alapján mjs ≤ mjr Így mjs ds ≤ mjr ds (s = 1, . , r) Összegezve az egyenlőtlenségek bal- és jobboldalait, azt kapjuk, hogy r X (11) mjs ds ≤ s=1 r X mjr ds . s=1 Másrészt, ha r + 1 ≤ s ≤ kj , akkor ds ≤ 0, és ismét (8) alapján mjr+1 ≤ mjs . De akkor mjr+1 ds ≥ mjs ds (s = r + 1, . , kj ) Összegezve az egyenlőtlenségek bal- és jobboldalait, kj X (12) mjs ds ≤ s=r+1 kj X mjr+1 ds . s=r+1 De akkor (11) és (12) alapján kj X mjs ds = s=1 Másrészt r X mjs ds + s=1 Pr s=1
ds = − kj X mjs ds ≤ s=r+1 Pkj s=r+1 kj X r X mjr ds + s=1 kj X mjr+1 ds . s=r+1 ds , ı́gy a fenti egyenlőtlenségből azt kapjuk, hogy mjs ds ≤ (mjr − mjr+1 ) s=1 r X ds . s=1 Pkj A kapott egyenlőtlenség jobboldala (8) alapján nem pozitı́v, ı́gy s=1 mjs ds ≤ 0, azaz Pkj s=1 mjs (ũjs − ūjs ) ≤ 0, amiből következik (10), és egyben w(ũ) ≤ w(ū) érvényessége is. Ezzel igazoltuk a (a) állı́tást A (2) állı́tás (b) részének igazolásához legyen x̄ ∈ L tetszőleges, és jelölje x̄ ϕ melPkj letti képét ū. Akkor tetszőleges 1 ≤ j ≤ m indexre x̄j = s=1 ūjs , és az ūj1 , . , ūjkj értékekre teljesül (6) és (7). De akkor Γj (ūj1 , , ūjkj ) és fj (x̄j ) eltérése kisebb, mint ε/2m. Így 161 | z(x̄) − w(x̄ϕ) |=| m X m X ¡ ¢ fj (x̄j ) − Γj (ūj1 , . , ūjkj ) |≤ j=1 | fj (x̄j ) − Γj (ūj1 , . , ūjkj ) |< ε/2 j=1 Ezzel
igazoltuk a (b) állı́tást is, speciálisan azt is megmutattuk, hogy az eljárás konstrukciójában a konvex függvény és a lineáris függvény eltérése kisebb, mint ε/2. Az eljárással kapcsolatban megjegyezzük, hogy a közelı́tés pontosságának növelése általában a lineáris feladat méreteinek növekedését eredményezi. A hibahatár és a méret közti kapcsolat miatt, annak érdekében, hogy a megoldandó lineáris programozási feladatok viszonylag kisméretűek legyenek, mind a demonstrációs feladat, mind a fejezet végén megadott feladatok hibahatára viszonylag nagy. Az eljárás illusztrálására tekintsük a következő konvex programozási feladatot: 2x1 +x2 +x3 ≤ 4 x2 −x3 ≤ 2 3x1 +x3 ≤ 3 xi ≥ 0 (i = 1, 2, 3) 2x21 − 3x1 + x22 − 5x2 + x23 = z(x) min Legyen az előı́rt hibahatár ε = 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) érvényessége. 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 z(x) = f1 (x1 ) + f2 (x2 ) + f3 (x3 ), 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 x̄1 ≤ 1 és 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 x̄2 ≤ 3 adódik. Következésképp h1 = 1, h2 = 3, 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 x̄ 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 öszekötő egyenes egyenlete: y = c(2x̄ + δ)x − cx̄(x̄ + δ) . 162 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̄ + δ) Véve ∆(x) deriváltját, ∆0 (x) = −2cx + 2cx̄ + cδ, amelynek egyetlen 0-helye van, az x = x̄ + δ/2 pont. Mivel ∆00 (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 cδ 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 ekvidisztáns 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: 7 1 m11 = − , m12 = −1, m13 = , 3 3 7 5 3 1 1 9 m21 = − , m22 = − , m23 = − , m24 = − , m25 = − , m26 = , 2 2 2 2 2 2 m31 = 3 5 7 9 11 1 , m32 = , m33 = , m34 = , m35 = , m36 = , 2 2 2 2 2 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 (ld. 2feladat),
ı́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ó. Most megkonstruálva a lineáris programozási feladatot, az alábbi feladathoz jutunk: 2u11 +2u12 +2u13 +u21 +u22 +u23 +u24 +u25 +u26 +u31 +u32 +u33 +u34 +u35 +u36 ≤ 4 +u21 +u22 +u23 +u24 +u25 +u26 −u31 −u32 −u33 −u34 −u35 −u36 ≤ 2 3u11 +3u12 +3u13 +u31 +u32 +u33 +u34 +u35 +u36 ≤ 3 0 ≤ u1j ≤ 1/3 (j = 1, 2, 3); 0 ≤ uit ≤ 1/2 (t = 1, . , 6; i = 2, 3) – 7 1 9 7 5 3 1 1 1 − u11 − u12 + u13 − u21 − u22 − u23 − u24 − u25 + u26 + u31 + 3 3 2 2 2 2 2 2 2 3 5 7 9 11 + u32 + u33 + u34 + u35 + u36 = w(u) min 2 2 2 2 2 Megoldva az előállı́tott lineáris programozási feladatot, azt kapjuk, hogy egy optimális megoldás a következő: 163 ū11 = 1/3, ū12 = 1/3, ū21 = ū22 = ū23 = ū24 = 1/2, ūjs = 0 a kimaradó indexekre. A w(ū) optimumérték: -64/9. Az
ū optimális megoldásra teljesül (7) minden 1 ≤ j ≤ m indexre, ı́gy az x̄1 = 3 X ū1s = s=1 x̄2 = 6 X 2 , 3 ū2s = 2 , s=1 x̄3 = 6 X ū3s = 0 , s=1 komponensekből álló x̄ 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 1 1 5 | z(x∗ ) − w(ū) |=| − + |= , 4 9 36 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 −hjs−1 (1 ≤ s ≤ kj ; 1 ≤ j ≤ m) 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 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. 164 Feladatok 1. J B J Fourier 1823-ban lineáris egyenlőtlenségrendszerek megoldásainak vizsgálatához javasolta a következő eljárást. Tüntessük ki a feladat valamely változóját. A nem kitüntetett változók közül válasszunk ki egyet, és ezt fejezzük ki minden egyes egyenlőtlenségből. Ezek után a kapott
egyenlőtlenségek baloldalaiból és jobboldalaiból képezzünk új egyenlőtlenségeket úgy, hogy minden baloldalt párosı́tunk minden jobboldallal. Az új egyenlőtlenségrendszer a választott változót már nem tartalmazza. Folytatva az eljárást további nem kitüntetett változókkal, véges sok lépés után az előálló egyenlőtlenségrendszer már csak a kitüntetett változót tartalmazza. Most ezt is kifejezve minden egyenlőtlenségből, a változóra vonatkozó felső korlátok minimuma lesz a változó korlátja. Nyilvánvaló, hogy a fenti eljárás m-szer történő végrehajtásával előállı́thatók az előzőekben használt h1 , . , hm konstansok Határozzuk meg Fourier módszerével az alábbi egyenlőtlenségrendszerre vonatkozóan a változók felső korlátait: x1 + 2x2 + x3 ≤ 6 x1 − x2 + x3 ≤ 2 2x1 − x3 ≤ 4 2. Igazoljuk, hogy az y = cx2 (c > 0) parabolához
felvéve egy ekvidisztáns beosztást, a beosztáshoz tartozó húrpoligon iránytangensei számtani sorozatot alkotnak. 3. Oldjuk meg az alábbi konvex programozási feladatokat az előı́rt hibahatárok mellett: (a) (b) x2 ≤ 8 x1 +x2 ≤ 10 2x1 +x2 ≤ 16 ε = 2.01 x1 ≥ 0, x2 ≥ 0 – x21 − 7x1 + (x2 − 3)2 = z(x) min x1 +x2 ≤ 4 x1 −x2 ≤ 2 ε = 0.51 x1 ≥ 0, x2 ≥ 0 – x1 + (x2 − 3)2 = z(x) min 3.3 Gradiens módszer 166 A jelen fejezetben egy általános módszerrel ismerkedünk meg, amely gradiens módszer vagy más terminológiában hatékony irányok módszere néven ismeretes. A tekintett nemlineáris problémáról első közelı́tésben csak a legszükségesebb tulajdonságokat tételezzük fel. A következő problémát fogjuk vizsgálni: Ax ≤ b, x ≥ 0, (b ≥ 0) , f (x) = z max (3.31) ahol feltételezzük, hogy (i) a lehetséges megoldások L halmaza korlátos, (ii) az f (x) függvény
minden változója szerint differenciálható egy L-et tartalmazó S nyı́lt halmazon és a parciális deriváltak folytonosak L-en. Az eljárás tárgyalásához szükségesek bizonyos előkészületek. Ezek során mindig, hivatkozás nélkül feltételezzük, hogy f (x) a (3.31) feladat célfüggvényét jelöli, és teljesülnek az (i), (ii) feltételek. Elsőként bizonyı́tás nélkül megadjuk az alábbi, analı́zisből ismert Lagrange-féle középérték tételt, amelyre a továbbiakban többször hivatkozunk. 15.tétel Ha g(x) folytonos az [a, b] intervallumon és differenciálható (a, b)-ben, akkor van olyan a < ξ < b, hogy f (b) − f (a) = f 0 (ξ)(b − a). Használni fogjuk a gradiens következő fogalmát. Az f (x) m-változós függvény gradiensén a ¶ µ ∂f ∂f |x , . , |x ∂x1 ∂xm vektorfüggvényt értjük, amelyet gradf (x)-szel jelölünk. 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 igen fontos tulajdonságát adja meg. 16.tétel Ha valamely h m-dimenziós vektorra és x̄ ∈ S pontra gradf (x̄) · h > 0, akkor van olyan δ > 0, hogy tetszőleges 0 < t < δ esetén f (x̄ + th) > f (x̄). Bizonyı́tás. Mivel x̄ ∈ S és S nyı́lt halmaz, ezért van olyan δ1 > 0, hogy 0 ≤ t ≤ δ1 esetén x̄ + th ∈ S. Legyen g(t) = f (x̄ + th) Akkor g(t) a [0, δ1 ] intervallumon kielégı́ti a 15.tétel feltételét, és bármely 0 < t ≤ δ1 érték esetén is teljesül ez a feltétel a [0, t] intervallumra. Így tetszőleges 0 < t ≤ δ1 értékhez van olyan 0 < ξt < t, hogy f (x̄ + th) − f (x̄) = g(t) − g(0) = tg 0 (ξt ) . Vizsgáljuk most g 0 (ξt )-t. m X ∂f |x̄+ξt h ·hs = gradf (x̄ + ξt h) · h . g (ξt ) = ∂xs s=1 0 Így a fentiek alapján 167 f (x̄ + th) −
f (x̄) = tgradf (x̄ + ξt h) · h . Az f (x)-re vonatkozó feltevés szerint a parciális deriváltak folytonosak, ezért gradf (x̄ + ξt h) · h = g 0 (ξt ) folytonos függvénye ξt -nek. De akkor ξt 0 esetén g 0 (ξt ) g 0 (0) = gradf (x̄) · h. A tétel feltétele alapján gradf (x̄) · h > 0, ı́gy g 0 (ξt ) folytonosságából következik, hogy van olyan 0 < δ2 < δ1 , amelyre g 0 (ξ) > 0, ha 0 < ξ < δ2 . Most megmutatjuk, hogy δ2 -re érvényes a tétel állı́tása. Ehhez legyen 0 < t < δ2 tetszőleges. Akkor van olyan 0 < ξ < t, amelyre f (x̄ + th) − f (x̄) = tg 0 (ξ) . Másrészt ξ < t miatt 0 < ξ < δ2 , de akkor g 0 (ξ) > 0, és ı́gy f (x̄ + th) − f (x̄) > 0, amivel igazoltuk az állı́tást. Ezek után tekintsük ismét a (3.31) feladatot Legyen x̄ ∈ L és h tetszőleges mdimenziós vektor Azt mondjuk, hogy a h vektor az x̄-hoz tartozó lehetséges
hatékony irány, ha x̄ + h ∈ L és gradf (x̄) · h > 0. Ha az x̄ ponthoz nem tartozik lehetséges hatékony irány, akkor x̄-t stacionárius pontnak nevezzük. A lehetséges hatékony irányhoz a 16.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 16.tétel alapján létezik olyan δ > 0, hogy 0 < t < δ esetén f (x̄+th) > f (x̄) Így x̄-ból az x̄ + th (0 ≤ t ≤ 1) szakaszon elmozdulva, növelhetjük a célfüggvény értékét. Az elmondottak alapján a (3.31) feladat megoldására kezdeményezhetjük a következő iterációs eljárást. Eljárás 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. iteráció) Ha x(r)
stacionárius 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 f (x(r) + λr h(r) ) > f (x(r) ). Legyen x(r+1) = x(r) + λr h(r) Növeljük r értékét 1-gyel, és folytassuk az eljárást a következő iterációs lépéssel. A megadott 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: 168 (1) Hogyan lehet eldönteni egy x̄ ∈ L vektorról, hogy stacionárius 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 f (x̄ + λ̄h̄) > f (x̄) teljesül? 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 N. Frank és P Wolfe 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) 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. 17.tétel Az x̄ ∈ L lehetséges megoldáshoz akkor és csak akkor tartozik lehetséges hatékony irány, ha az Ax ≤ b, x ≥ 0, (b ≥ 0) , gradf (x̄)(x − x̄) = w max lineáris programozási feladat optimuma pozitı́v, és ebben az esetben az x̃ optimális megoldással képezett x̃ − x̄ = h vektor x̄-hoz tartozó lehetséges hatékony irány. Bizonyı́tás. Elsőként megmutatjuk, hogy az állı́tás korrekt Ehhez vegyük észre, hogy a feltételrendszer változatlan, ı́gy a fenti feladat lehetséges megoldásainak halmaza szintén L, amely korlátos, zárt, nemüres halmaz. Másrészt w(x) lineáris függvény, ı́gy folytonos L-en, de akkor felveszi a maximumát L-en, azaz a feladatnak létezik optimális megoldása. A szükségesség igazolásához tegyük fel, hogy x̄-hoz tartozik lehetséges hatékony irány. Jelöljön
h̄ egy ilyen lehetséges hatékony irányt Legyen x∗ = x̄ + h̄ Mivel h̄ x̄-hoz tartozó lehetséges hatékony irány, ezért x̄ + h̄ ∈ L, azaz x∗ ∈ L. Másrészt gradf (x̄) · h̄ > 0, ı́gy gradf (x̄) · (x∗ − x̄) > 0. Ezzel azt kaptuk, hogy x∗ ∈ L és w(x∗ ) > 0. De akkor a lineáris programozási feladat optimuma is pozitı́v, amivel igazoltuk a feltétel szükségességét. Az elegendőség igazolásához tegyük fel, hogy a lineáris programozási feladat optimuma pozitı́v, és jelöljön x∗ egy optimális megoldást. Legyen h̄ = x∗ − x̄ Akkor x̄ + h̄ = x∗ ∈ L és gradf (x̄)(x∗ − x̄) > 0, azaz gradf (x̄) · h̄ > 0. Ez pontosan azt jelenti, hogy h̄ x̄-hoz tartozó lehetséges hatékony irány, amivel a feltétel elegendőségét, és egyben a tételt is igazoltuk. 169 Most vizsgáljuk a (3) problémát. Ehhez tegyük fel, hogy x̄ ∈ L és h̄ az x̄ vektorhoz
tartozó lehetséges hatékony irány Akkor x̄ ∈ S és gradf (x̄) · h̄ > 0, ı́gy a 16.tétel alapján van olyan δ > 0, hogy 0 < t < δ esetén f (x̄ + th̄) > f (x̄) Másrészt L konvexitása miatt x̄ + th̄ ∈ L (0 ≤ t ≤ 1). Így véve a g(t) = f (x̄ + th̄) függvényt, a (3) probléma visszavezethető a g(t) függvénynek a [0, 1] intervallumra vonatkozó függvénymenet vizsgálatára, és egy maximumhely meghatározására. Mivel erre az analı́zisből ismertek módszerek, ezért a továbbiakban (3) megoldásával nem foglalkozunk. Miután sikerült megoldást találnunk az (1), (2), (3) problémákra, felépı́thetjük az alábbi konkrét eljárást. N. Frank és P Wolfe eljárása Előkészı́tő rész. Határozzunk meg egy x(0) lehetséges megoldást (x(0) lehet a 0 vektor is), és legyen r = 0. Iterációs rész (r-edik iteráció). Vegyük fel a (331) feladat
feltételrendszeréhez a gradf (x(r) )(x − x(r) ) = wr (x) max lineáris célfüggvényt. A kapott lineáris programozási feladat i-edik egyenlőtlenségének baloldalához hozzáadva az ui nemnegatı́v változót (i = 1, . , n), térjünk át egyenlőségekre, majd −1-gyel megszorozva a célfüggvényt, térjünk át minimum feladatra. Az ı́gy előállı́tott lehetséges kanonikus alakú feladatot oldjuk meg a szimplex algoritmus valamely változatával. Ha az optimum értéke nemnegatı́v, akkor vége az eljárásnak Ellenkező esetben jelölje (x̄(r) , ū(r) ) az utolsó feladat bázismegoldását, amely egyben optimális megoldás is. Képezzük a h(r) = x̄(r) − x(r) vektort. Vegyük a g(t) = f (x(r) + th(r) ) függvényt, és határozzuk meg g(t)-nek egy, a [0, 1] intervallumra vonatkozó maximumhelyét, amelyet jelöljünk λr -rel. Legyen x(r+1) = x(r) + λr h(r) Növeljük r értékét 1-gyel, és
folytassuk az eljárást a következő iterációs lépéssel. Az eljárással kapcsolatban természetesen vetődik fel a kérdés, hogy mit állı́thatunk az előállı́tott pontsorozatról. A 16tétel és a λr (r = 0, 1, ) konstansok definı́ciójából adódik, hogy az előállı́tott x(0) , x(1) ,. pontsorozatra teljesülnek az alábbiak: (4) f (x(r) ) < f (x(r+1) ) (r = 0, 1, . ) , (5) f (x(r) + th(r) ) ≤ f (x(r+1) ) (0 ≤ t ≤ 1; r = 0, 1, . ) A fenti tulajdonságokból még nem következik a pontsorozat konvergenciája. Ahhoz, hogy ezt biztosı́tsuk, további megszorı́tásokat kell tenni az f (x) célfüggvényre Ha f (x) szigorúan konkáv L-en, akkor ez egy elegendő feltétele a konvergenciának. A továbbiakban egy ilyen konvergenciatételt fogunk igazolni. A bizonyı́táshoz szükségesek a következő előkészületek. 170 Elsőként emlékeztetünk a konkáv függvény
definı́ciójára. Azt mondjuk, hogy az f (x) m-változós függvény konkáv az L konvex halmazon, ha tetszőleges x̄, ȳ ∈ L vektorokra és 0 ≤ λ ≤ 1 konstansra f (λx̄ + (1 − λ)ȳ) ≥ λf (x̄) + (1 − λ)f (ȳ) teljesül. Speciálisan, az f (x) függvényt szigorúan konkáv függvénynek nevezzük, ha tetszőleges x̄, ȳ ∈ L pontokra és 0 < λ < 1 konstansra a fenti egyenlőtlenségben a baloldal nagyobb, mint a jobboldal. A konkáv függvények egy érdekes, és a későbbiekben felhasználásra kerülő tulajdonságát adja meg a következő állı́tás. 14.segédtétel Ha az f (x) konkáv L-en, akkor tetszőleges x̄, ȳ ∈ L-re f (ȳ) − f (x̄) ≤ gradf (x̄)(ȳ − x̄) . Bizonyı́tás. Mivel f (x) konkáv L-en, ezért a t = 1 − λ helyettesı́téssel azt kapjuk, hogy tetszőleges 0 ≤ t ≤ 1-re (1 − t)f (x̄) + tf (ȳ) ≤ f ((1 − t)x̄ + tȳ) teljesül. A kapott kifejezést
átrendezve, t(f (ȳ) − f (x̄)) ≤ f (x̄ + t(ȳ − x̄)) − f (x̄) . Mivel x̄, ȳ ∈ L és f (x) a (3.31) feladat célfüggvényét jelöli, ezért L konvexitása miatt x̄ + t(ȳ − x̄) ∈ L, ha 0 ≤ t ≤ 1. De akkor a g(t) = f (x̄ + t(ȳ − x̄)) függvény értelmezett a [0, 1] intervallumon és teljesül rá a 15.tétel feltétele Így rögzı́tett t-hez van olyan 0 < ξ < t, hogy t(f (ȳ) − f (x̄)) ≤ f (x̄ + t(ȳ − x̄)) − f (x̄) = g(t) − g(0) = tg 0 (ξ) , azaz f (ȳ) − f (x̄) ≤ g 0 (ξ) = gradf (x̄ + ξ(ȳ − x̄))(ȳ − x̄) . Most véve egy tk +0 sorozatot, minden tk -hoz van olyan ξk , hogy (6) f (ȳ) − f (x̄) ≤ gradf (x̄ + ξk (ȳ − x̄))(ȳ − x̄)) (k = 1, 2, . ) Másrészt tk > ξk > 0, ı́gy ξk +0. Az előzőekből tudjuk, hogy az adott feltételek mellett g 0 (t) folytonos a [0, 1] intervallumon. De akkor ξk +0 esetén g 0 (ξk ) g(0), azaz gradf (x̄ + ξk
(ȳ − x̄))(ȳ − x̄) gradf (x̄)(ȳ − x̄) . Most vegyük észre, hogy a (6) egyenlőtlenség jobboldalán egy konvergens sorozat elemei szerepelnek, és minden elemre érvényes az egyenlőtlenség. Ismeretes, hogy ebben az esetben a sorozat határértékére is teljesül az egyenlőtlenség, azaz f (ȳ) − f (x̄) ≤ gradf (x̄)(ȳ − x̄) , 171 amivel az állı́tást igazoltuk. Ezek után rátérhetünk a konvergencia vizsgálatára. Az eljárással előállı́tható pontsorozatot illetően érvényes a következő állı́tás. 18.tétel Ha f (x) szigorúan konkáv 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. Bizonyı́tás. Az állı́tás igazolása három lépésre tagozódik, amelyek azt mutatják, hogy az
f (x)-re vonatkozó feltételek mit eredményeznek. Ennek megfelelően az alábbi állı́tásokban rendre kiı́rjuk az f (x) célfüggvényre vonatkozó feltételeket. (a) Ha az eljárás minden határon túl folytatódik, akkor az x(r) (r = 0, 1, . ) pontsorozatból kiválasztható egy olyan konvergens részsorozat, amely stacionárius ponthoz konvergál. (b) Ha f (x) konkáv L-en, akkor L bármely stacionárius pontja egyben optimális megoldás is. (c) Ha f (x) szigorúan konkáv L-en, és az eljárás vég nélkül folytatódik, akkor az x(r) (r = 0, 1, . ) pontsorozatnak csak egy torlódási pontja van Nyilvánvaló, hogy a fenti három állı́tásból következik a konvergenciára vonatkozó tétel helyessége. Így elegendő ezen állı́tások igazolására szorı́tkoznunk Az (a) állı́tás igazolásához tegyük fel, hogy az eljárás vég nélkül folytatódik, és az előálló pontsorozatot
jelölje x(r) (r = 0, 1, . ) A pontsorozatra vonatkozó (4) állı́tásból következik, hogy a függvényértékek (r) f (x ) (r = 0, 1, . ) sorozata szigorúan növekedő sorozat Másrészt L korlátos, zárt, nemüres halmaz és f (x) folytonos L-en. Így f (x) felveszi a maximumát L-en, ami az f (x(r) ) (r = 0, 1, . ) függvényértékek felső korlátja De akkor f (x(r) ) (r = 0, 1, ) korlátos monoton sorozat, és mint ilyen, konvergens. Az eljárás szerint bármely r ≥ 0 indexre x(r+1) = x(r) + λr (x̄(r) − x(r) ), ahol x̄(r) az Ax + Eu = b, x ≥ 0, u ≥ 0, (b ≥ 0) , −gradf (x(r) )(x − x(r) ) = w̃r min lehetséges kanonikus alakú feladat (x̄(r) , ū(r) ) optimális megoldásából (amely egyben bázismegoldás is) képezett vektor. Vizsgáljuk a fenti feladat lehetséges megoldásainak L0 halmazát. (x̃, ũ) ∈ L0 esetén x̃ ∈ L, ı́gy L korlátossága miatt van olyan Pm Tetszőleges M , hogy s=1
x̃2s ≤ M 2 . Másrészt bármely 1 ≤ i ≤ n indexre ũi ≤ bi − a(i) x̃ ≤ max{bi − a(i) x : x ∈ L} , ahol a(i) az A matrix i-edik sorvektorát jelöli. Mivel L korlátos, ezért a jobboldalon szereplő maximum létezik, de akkor ũi ≤ hi teljesül valamely alkalmas hi konstansra. Következésképp L0 korlátos Ebből viszont a 28 fejezet 8tétele alapján azt 172 kapjuk, hogy L0 -nek véges sok csúcspontja van, és a csúcspontok megegyeznek a feladat bázismegoldásaival. Jelölje az utóbbiakat (ȳ(s) , ū(s) ) (s = 1, , k) Ekkor x̄(r) definı́ciója szerint x̄(r) ∈ {ȳ(1) , . , ȳ(k) } (r = 0, 1, ) Most képezve a Pj = {r : r ∈ {0, 1, . } & x̄(r) = ȳ(j) } (j = 1, . , k) halmazokat, a természetes számok egy osztályozását kapjuk. Mivel az osztályok száma véges, ezért lesz legalább egy olyan osztály, amely végtelen sok elemet tartalmaz. Az általánosság megszorı́tása
nélkül feltételezhetjük, hogy P1 egy ilyen osztály, és az egyszerűbb jelölés érdekében legyen (ȳ, ū) = (ȳ(1) , ū(1) ). Tekintsük most az x(r) (r ∈ P1 ) pontokat. Mivel L korlátos, ezért a tekintett pontokból kiválasztható egy olyan x(rs ) (s = 0, 1, . ) konvergens pontsorozat, amelyre rs < rt , ha s < t Legyen lims∞ x(rs ) = q Mivel x(rs ) ∈ L (s = 0, 1, ) és L zárt, ezért q ∈ L. Vizsgáljuk az f (x(rs ) (s = 0, 1, ) függvényértékek sorozatát Mivel ez az f (x(r) ) (r = 0, 1, . ) konvergens sorozat egy részsorozata, ezért konvergens, és lims∞ f (x(rs ) ) = limr∞ f (x(r) ) Másrészt f (x) folytonos L-en, ı́gy lims∞ f (x(rs ) ) = f (lims∞ x(rs ) ) = f (q). Ezek után megmutatjuk, hogy q stacionárius pont. Ehhez legyen s tetszőleges természetes szám. A P1 halmaz definı́ciója szerint az Ax + Eu = b, x ≥ 0, u ≥ 0, (b ≥ 0) , −gradf (x(rs ) )(x − x(rs ) ) = w̃rs min
feladat optimális megoldása: (ȳ, ū). Ez azt eredményezi, hogy tetszőleges x̄ ∈ L vektorra és ı́gy gradf (x(rs ) )(x̄ − x(rs ) ) ≤ gradf (x(rs ) )(ȳ − x(rs ) ) , 0 ≤ gradf (x(rs ) )(ȳ − x̄) . Mivel a parciális deriváltak folytonosak L-en, ezért gradf (x(rs ) )(ȳ − x̄) folytonos függvénye x(rs ) -nek. Így ha s ∞, akkor gradf (x(rs ) )(ȳ − x̄) gradf (q)(ȳ − x̄) Másrészt a fentiek alapján a gradf (x(rs ) )(ȳ − x̄) (s = 0, 1, . ) értékek rendre nemnegatı́vak, ı́gy a határérték is nemnegatı́v, amivel adódik, hogy tetszőleges x̄ ∈ L-re (7) 0 ≤ gradf (q)(ȳ − x̄) . Legyen ismét s tetszőleges természetes szám. Akkor (4) és az x(rs ) (s = 0, 1, ) sorozat definı́ciója alapján f (x(rs ) ) < f (x(rs +1) ) ≤ f (x(rs+1 ) ) . Másrészt (5) szerint tetszőleges 0 ≤ t ≤ 1 esetén f (x(rs ) + t(ȳ − x(rs ) )) ≤ f (x(rs ) + λrs (ȳ − x(rs ) )) = f (x(rs +1)
) . A fenti két egyenlőtlenségből azt kapjuk, hogy tetszőleges 0 < t ≤ 1 értékre f (x(rs ) + t(ȳ − x(rs ) )) ≤ f (x(rs+1 ) ), és ı́gy f (x(rs ) + t(ȳ − x(rs ) )) − f (x(rs+1 ) ) ≤0 t 173 tetszőleges 0 < t ≤ 1 esetén. Most ha t +0, akkor a fenti egyenlőtlenség baloldala gradf (q)(ȳ − q)-hoz konvergál, ı́gy (8) gradf (q)(ȳ − q) ≤ 0 . Ezek után legyen ismét x̄ ∈ L tetszőleges. Akkor (8) alapján gradf (q)(ȳ − q) = gradf (q)(ȳ − x̄) + gradf (q)(x̄ − q) ≤ 0 . Másrészt (7) szerint 0 ≤ gradf (q)(ȳ − x̄), ı́gy a fenti egyenlőtlenségből azt kapjuk, hogy gradf (q)(x̄ − q̄) ≤ 0 . Mivel x̄ ∈ L tetszőleges, ezért a kapott egyenlőtlenségből a 17.tétel alapján adódik, hogy q-hoz nem tartozik lehetséges hatékony irány. Így q stacionárius pont, amivel igazoltuk az (a) állı́tást. A (b) állı́tást indirekt igazoljuk. Ehhez tegyük fel, hogy q ∈
L stacionárius pont és q nem optimális megoldás. Akkor van olyan x̃ ∈ L, hogy f (x̃) > f (q), azaz 0 < f (x̃) − f (q). Mivel f (x) konkáv L-en, ezért a 14segédtétel alapján f (x̃) − f (q) ≤ gradf (q)(x̃ − q) . De akkor gradf (q)(x̃ − q) > 0. Másrészt q stacionárius pont, ı́gy nem tartozik hozzá lehetséges hatékony irány. Ez a 17tétel szerint pontosan akkor érvényes, ha a lineáris programozási feladat gradf (q)(x − q) célfüggvénye nem pozitı́v L-en, ami ellentmond gradf (q)(x̃ − q) > 0 fennállásának. Így ellentmondáshoz jutottunk Következésképp q optimális megoldás, amivel igazoltuk (b)-t. A (c) állı́tást is indirekt bizonyı́tjuk. Ehhez tegyük fel, hogy az x(r) (r = 0, 1, ) sorozatnak az előzőekben meghatározott q torlódási pontján kivül egy további p torlódási pontja is van. Ekkor az előzőek szerint lim f (x(rs ) ) = lim f (x(r) ) = f (q) ,
s∞ r∞ és q a feladat egy optimális megoldása. Másrészt mivel p is torlódási pont, ezért az x(r) 0 (r = 0, 1, . ) sorozatból kiválasztható egy olyan p-hez konvergáló x(rs ) (s = 0, 1, ) részsorozat, amelyre rs0 < rt0 , ha s < t. Mivel L zárt, ezért p ∈ L, és f (x) folytonossága 0 0 miatt lims∞ f (x(rs ) ) = f (p). De x(rs ) (s = 0, 1, ) az x(r) (r = 0, 1, ) sorozat 0 egy részsorozata, ı́gy lims∞ f (x(rs ) ) = limr∞ f (x(r) ). Viszont ı́gy 0 lim f (x(rs ) ) = lim f (x(r) ) = f (p) . s∞ r∞ Ezzel azt kaptuk, hogy f (p) = f (q), azaz p is optimális megoldás. 174 Most felhasználva, hogy (c) feltétele szerint f (x) szigorúan konkáv L-en, tetszőleges 0 < λ < 1 értékre az f (λp + (1 − λ)q) > λf (p) + (1 − λ)f (q) egyenlőtlenségnek kell fennállnia. Most vegyük észre, hogy f (p) = f (q) miatt az egyenlőtlenség jobboldalán az optimum értéke áll, a baloldali
argumentum pedig L konvexitása miatt lehetséges megoldás. Így a fenti egyenlőtlenség teljesülése ellentmond annak, hogy q optimális megoldás, amivel igazoltuk a (c) állı́tást, és egyben a tételt is. 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. Az f (x) függvény konkáv volta miatt a 14.segédtétel alapján tetszőleges x̄ lehetséges megoldásra f (x̄) − f (x(r) ) ≤ gradf (x(r) )(x̄ − x(r) ) teljesül. 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 felvett célfüggvényértéke szerepel Így ezen érték nem nagyobb, mint a lineáris programozási feladat optimuma, azaz tetszőleges x̄ ∈ L-re f
(x̄) − f (x(r) ) ≤ max wr (x) . x∈L Speciálisan, ha x̄ a (3.31) feladat optimális megoldása, akkor a baloldal nemnegatı́v, és ı́gy | max f (x) − f (x(r) ) |≤ max wr (x) . x∈L x∈L Következésképp, ha az r-edik lépésben a lineáris programozási feladat optimuma ε, akkor f (x(r) ) ε pontossággal közelı́ti a nemlineáris feladat optimumát. Az eljáráshoz kapcsolódó másik megjegyzésünk a következő. A konvergenciára vonatkozó tétel csak konkáv vagy szigorúan konkáv f (x) esetén biztosı́tja az optimum közelı́tését. Ha ezt kikötjük a (331) feladatnál, és a célfüggvényt −1-gyel megszorozva áttérünk minimum feladatra, akkor egy konvex programozási feladatot kapunk. Így az eljárás alkalmazható az előző fejezet általános feladatának megoldására. Azt, hogy ennek ellenére maximum feladatot tűztünk ki, és erre fogalmaztuk meg az eljárást,
egyszerűen az indokolta, hogy szokásos az algoritmust az úgynevezett kvadratikus programozási feladathoz kapcsolni. Ezen egy olyan nemlineáris programozási feladatot értünk, amelyben f (x) = cx − xAx, ahol A pozitı́v definit mátrix, és f (x) maximumát keressük. A megadott kvadratikus célfüggvényről belátható, hogy szigorúan konkáv, ı́gy ezen feladattı́pusra is alkalmazható az eljárás. 175 A fejezet befejezéseként az algoritmus demonstrálására tekintsük a következő feladatot: x1 + x2 ≤ 5 x2 ≤ 3 x1 ≤4 x1 ≥ 0, x2 ≥ 0 −x21 + 10x1 − x22 + 12x2 = z max Vizsgáljuk elsőként a feltételek teljesülését. A második és harmadik egyenlőtlenségekből nyilvánvaló, hogy L korlátos Az f (x1 , x2 ) fü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 (ii) is. Végül
egyszerű számolással belátható (ld 1feladat), hogy f (x1 , x2 ) az egész térben szigorúan konkáv. Következésképp valamennyi feltétel teljesül. Legyen x(0) = (0, 0). Akkor gradf (x(0) ) = (10, 12), és gradf (x(0) )(x − x(0) ) = w0 (x). Így a megoldandó lineáris programozási feladat a következő: x1 + x2 ≤ 5 x2 ≤ 3 x1 ≤4 x1 ≥ 0, x2 ≥ 0 10x1 + 12x2 = w0 (x) max Felvéve az u1 , u2 , u3 nemnegatı́v változókat és áttérve egyenlőségekre, továbbá −1-gyel megszorozva a célfüggvényt és minimumot keresve, az előálló lehetséges kanonikus alakú feladat és a végrehajtott szimplex algoritmus szimplex táblázatai a következők: u1 u2 u3 x1 x2 1 1 1∗ 0 0 1 −10 −12 5 3 4 0 u1 x2 u3 x1 1∗ 0 1 −10 u2 −1 1 0 12 2 3 4 36 x1 x2 u3 u1 1 0 −1 10 u2 −1 1 1 2 2 3 2 56 Az optimum értéke negatı́v, de akkor a maximum feladat optimuma pozitı́v. Az optimális megoldás:
x̄(0) = (2, 3). Így h(0) = x̄(0) − x(0) = (2, 3) az x(0) vektorhoz tartozó lehetséges hatékony irány. Most vizsgáljuk a g(t) = f (x(0) + th(0) ) = −13t2 + 56t 176 függvényt a [0, 1] intervallumon. Mivel g 0 (t) = −26t + 56 > 0, ha t ∈ [0, 1], ezért a g(t) függvény szigorúan monoton növekvő [0, 1]-en, és ı́gy ezen az intervallumon a t = 1 pontban veszi fel a maximumát, azaz λ0 = 1. Most képezve az x(1) pontot: x(1) = x(0) + λ0 h(0) = (2, 3) Rátérve a következő iterációs lépésre, gradf (x(1) ) = (6, 6), és az új célfüggvény: w1 (x) = gradf (x(1) )(x − x(1) ) = 6x1 + 6x2 − 30 . A megoldandó feladat és a végrehajtot szimplex algoritmus szimplex táblázatai a következők: u1 u2 u3 x1 1 0 1∗ −6 x2 1 1 0 −6 5 3 4 −30 u1 u2 x1 u3 −1 0 1 6 x2 1∗ 1 0 −6 1 3 4 −6 x2 u2 x1 u3 −1 1 1 0 u1 1 −1 0 6 1 2 4 0 Mivel az optimum értéke 0, ezért vége az eljárásnak. A
célfüggvény konkávitása miatt az utolsó x(1) = (2, 3) pont a tekintett feladat optimális megoldása. Feladatok 1. Igazoljuk, hogy a −x21 + 10x1 − x22 + 12x2 = z(x) függvény szigorúan konkáv a 2-dimenziós térben. 2. Lássuk be, hogy amennyiben az L konvex halmazon f (x) konkáv és g(x) szigorúan konkáv, akkor f (x) + g(x) is szigorúan konkáv L-en. 3. Mutassuk meg, hogy −xAx szigorúan konkáv függvény, ha A pozitı́v definit mátrix. 4. Az előző két feladat állı́tását felhasználva igazoljuk, hogy cx − xAx szigorúan konkáv, ha A pozitı́v definit mátrix. 177 5. Alkalmazzuk a Frank-Wolfe féle eljárást az alábbi feladatok megoldására úgy, hogy mindkét esetben x(0) = (0, 0): x1 + x2 ≤ 4 x1 − x2 ≤ 2 x1 ≥ 0, x2 ≥ 0 x1 − 1 1 2 x1 + 2x2 − x22 = z max 36 8 x1 + x2 ≤ 5 −3x1 + x2 ≤ 1 x1 − x2 ≤ 3 x1 ≥ 0, x2 ≥ 0 4x1 − x21 + 9x2 − x22 = z max 178
Tartalomjegyzék Előszó . 1 1. Bevezetés 3 1.1 Az optimumszámı́tási modellek 3 1.2 A modellalkotás elemei 4 1.3 Az optimumszámı́tási modellekkel megadott matematikai feladatok megoldására szolgáló eljárások 5 1.4 Az operációkutatás feladata, az optimumszámı́tási modellek osztályozása 6 2. Lineáris programozás 8 2.1 A lineáris programozás általános feladata, standard feladat 8 2.2 Szimplex algoritmus 15 2.3 Módosı́tott szimplex algoritmus 27 2.4 Lexikografikus szimplex algoritmus 41 2.5 A szimplex algoritmus néhány további változata 49 2.6 Szimplex módszer 58 2.7 A lineáris programozás néhány gyakorlati alkalmazása 72 2.8 Konvex poliéderek 78 2.9 Dualitás 84 2.10 Egészértékű programozás 97 2.11 Hozzárendelési feladat megoldása magyar módszerrel 109 2.12 Szállı́tási feladat megoldása magyar módszerrel 126 3. Nemlineáris programozás 148 3.1
Hiperbolikus programozási feladat 148 3.2 Konvex programozási feladat 155 3.3 Gradiens módszer 166 Tartalomjegyzék . 178 179