Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

OPERÁCIÓKUTATÁS Kalmár János, 2012 Tartalom A nulla-egy LP megoldása Hátizsák feladat.

Hasonló előadás


Az előadások a következő témára: "OPERÁCIÓKUTATÁS Kalmár János, 2012 Tartalom A nulla-egy LP megoldása Hátizsák feladat."— Előadás másolata:

1 OPERÁCIÓKUTATÁS Kalmár János, 2012 Tartalom A nulla-egy LP megoldása Hátizsák feladat

2 A nulla-egy LP megoldása A  x  b, x  0 (1) c T  x  max (2)  A Z feletti (egész) mátrix, b és c Z feletti vektorok, x bináris (0-1) vektor. Megoldása leszámlálási algoritmussal, tehát az összes lehetséges x (2 n darabszámú) megoldást számba veszi, úgy választja ki az optimumot. A gyakorlatban a vizsgált esetek számát természetesen ésszerűen korlátozzák.

3 A nulla-egy LP megoldása 1. Tétel: Legyen S részhalmaza az {1,2,…,n} indexhalmaznak. A  j x j   j  S (3) lineáris egyenlőtlenségnek akkor és csak akkor nincs 0-1 megoldása, ha  min(0,  j ) >  j  S (4) teljesül. Bizonyítás:  j x j a minimumát akkor veszi fel, amikor x j = 0, ha  j > 0, és x j = 1, ha  j < 0

4 A nulla-egy LP megoldása 2. Tétel: Ha a  min(0,  j ) +  j0  >  j, j 0  S (5) feltétel teljesül valamely j 0 indexre, akkor annak szükséges feltétele, hogy (3)-nak legyen 0-1 lehetséges megoldása az, hogy x j0 = 1 legyen, ha  j0 < 0, illetve x j0 = 0 legyen, ha  j0 > 0. Ha  j0 = 0, akkor az 1. Tétel miatt nincs megoldás.

5 A nulla-egy LP megoldása Algoritmus: x j változókat két halmazra osztjuk: ha j  S, akkor x S j kötött változó (értékét rögzítjük 0-ra vagy 1-re), a többi x j, j  S szabad (meghatározandó) változó. Ennek megfelelően az (1) feltételek aktualizálva:  a i,j  x j  b i -  a i,j  x S j (6) illetve ismerve a (2) célfgv. egy z alsó korlátját kiegészítjük (1)-et az alábbi feltétellel, hogy a rosszabb eredményeket kizárhassuk: c T  x  z

6 A nulla-egy LP megoldása 3. Tétel: Az alábbi algoritmus véges lépésben véget ér: Inicializálás: Legyen S={0}, tehát minden változó szabad, és legyen z =  c j, ahol c j < 0 Folytassuk a ciklusnál.

7 A nulla-egy LP megoldása Algoritmus Ciklus: az S-ben kötött változók alapján számítsuk újra (1) feltételeket. Ha nincs több szabad x j változó, akkor lépjünk tovább az célfgv ellenőrzésre. Egyébként a 2. tétel (5) feltételét alkalmazva keressünk olyan szabad x j változót, melynek (0-1) rögzítése szükséges valamelyik (1)-beli feltétel kielégítéséhez; ha találtunk ilyet, egészítsük ki S sort jobbról j-vel, húzzuk alá j-t, és kezdjük elölről a ciklust. Ha nem találtunk ilyen szabad változót, akkor tetszőleges x j szabad változóval egészítsük ki S sort jobbról j-vel (aláhúzás nélkül), és lépjünk vissza a ciklus elejére.

8 A nulla-egy LP megoldása Algoritmus Célfgv ellenőrzés: ha az S-beli megoldás (2) célfgvénye z-nél tovább nem javítható (ld. 1. Tétel) menjünk tovább az alternatíva keresésre. Egyébként módosítsuk z-t, tároljuk a hozzá tartozó lehetséges megoldást és menjünk tovább az alternatíva keresésre.

9 A nulla-egy LP megoldása Algoritmus Alternatíva keresése: válasszuk ki S sorban utolsó nem aláhúzott j elemét – ha nincs ilyen, akkor az eddig tárolt legjobb megoldás az optimális megoldás. Ha még nem találtunk legjobb megoldást, akkor (1)-nek nincs megoldása. Ha találtunk utolsó nem aláhúzott j elemet, akkor húzzuk alá, a hozzá tartozó kötött x j változó értékét változtassuk meg (0-ról 1-re, vagy viszont), töröljük a tőle jobbra álló elemeket S-ből, és ugorjunk vissza a ciklusra.

10 A nulla-egy LP megoldása Mintapélda: -x 1 + 3x 2 – 5x 3 – x 4 + 4x 5  -2 2x 1 - 6x 2 + 3x 3 + 2x 4 - 2x 5  0 x 2 – 2x 3 + x 4 + x 5  -1 -5x 1 - 7x 2 – 10x 3 – 3x 4 - x 5  max Inicializálás: Legyen S={0}, és z = -26 így a célfüggvényből származtatott kiegészítő feltétel -5x 1 - 7x 2 – 10x 3 – 3x 4 - x 5  -26

11 A nulla-egy LP megoldása Mintapélda: A 3. feltételre elvégzett 2. tétel szerinti teszt alapján x 3 = 1 szükséges ahhoz, hogy legyen lehetséges megoldás, ezért S = {3}. x 3 rögzítése után a 2. feltétel 2x 1 - 6x 2 + 2x 4 - 2x 5  -3 és a 2. tétel szerinti teszt alapján x 2 = 1 szükséges ahhoz, hogy legyen lehetséges megoldás, ezért S = {3, 2}.

12 A nulla-egy LP megoldása Mintapélda: A 3. feltétel most x 4 + x 5  0 Az erre elvégzett 2. tétel szerinti teszt alapján x 4 = x 5 = 0 szükséges ahhoz, hogy legyen lehetséges megoldás, ezért S = {3,2,-4,-5}. (a tárolt sorszám előjele mutatja a hozzá tartozó változó értékét: j>0  x j = 1, j<0  x j = 0) Mivel egyik teszt sem pozitív, ezért az egyetlen szabad változót x 1 = 0-n rögzítem, ezért az új S={3,2,-4,-5,-1}

13 A nulla-egy LP megoldása Mintapélda: S={3,2,-4,-5,-1} már egy lehetséges megoldás, melynek célfgvénye -17, ezért a kiegészítő feltételt szigoríthatjuk: -5x 1 - 7x 2 – 10x 3 – 3x 4 - x 5  -17 Most S-ben az utolsó nem aláhúzott elem -1, ezért (alternatívaként) áttérünk az S={3,2,-4,-5,1} megoldásra, ami a kiegészítő feltételt már nem elégíti ki, ezért marad optimális megoldásnak x 1 = x 4 = x 5 = 0, x 2 = x 3 = 1

14 A hátizsákfeladat megoldása A megoldandó feladat a T  x  b, x  0 (3) c T  x  max (4)  a és c Z feletti (pozitív egészelemű) n dimenziós vektorok, x n dimenziós bináris (0-1) vektor, és b pozitív egész szám. A paraméterek jelentése: a j a j-dik tárgy súlya, c j a j-dik tárgy értéke b a hátizsák (súly)kapacitása x j = 1 jelenti azt, hogy a j-dik tárgy bekerült a zsákba, x j = 0, ha nem.

15 A hátizsákfeladat megoldása A gyorsabb megoldás érdekében rendezzük a tárgyakat c j / a j (egységnyi súlyra eső érték) szerint csökkenő sorba; a ‘brutal force’ (nyers erő) módszer (sorban egymás után tesszük be a tárgyakat a hátizsákba, amíg be nem telik) ezen sorrend mellett gyakran azonnal az optimumhoz vezet. A feladatot dinamikus programozással oldjuk meg, amihez rekurzív összefüggést keresünk. Jelölje P r (d) a következő feladatot a T  x  d, x  0 (5) c T  x  max (6) 

16 A hátizsákfeladat megoldása ahol a és c Z feletti (egészelemű) pozitív r (<=n) dimenziós vektorok, x r dimenziós bináris (0-1) vektor, és d pozitív egész szám. Jelölje a P r (d) feladat megoldását f r (d), akkor a (3)-(4) feladat optimális megoldása nyílván f n (b). Ha az optimális megoldásban x r = 0, akkor f r (d) = f r-1 (d), viszont x r = 1 esetén f r (d) = f r-1 (d - a r ) + c r, ezért végeredményben az f r (d) = max(f r-1 (d), f r-1 (d - a r ) + c r ) képlet adja a keresett rekurziót.

17 A hátizsákfeladat megoldása Mintapélda: x 1 + 2  x 2 + 5  x 3 + 6  x 4 <= 7 7  x 1 + 10  x 2 + 24  x 3 + 25  x 4  max  Az ismeretlenek már eleve a fajlagos érték szerint csökkenő sorrendben vannak, ezért megkezdhetjük az f r (d) függvény kiszámítását: f r (d) d=0d=1d=2d=3d=4d=5d=6d=7 f0f0 00000000 f1f1 07777777 f2f2 071010+7 f3f3 071010+7 2424+724+10 f4f4 071010+7 2424+724+10

18 A hátizsákfeladat megoldása A táblázatból kiolvasható, hogy az optimális megoldásban x 1 = 0, x 2 = 1, x 3 = 1 és x 4 = 0. Ha a j-dik tárgyból nem 1, hanem t j példány áll rendelkezésre (x j <= t j ), akkor úgy vezetjük vissza a feladatot a bináris megoldásra, hogy a tárgyak közé a j-diket t j különböző példányban visszük be. Különböző optimalizálási feladatok megoldó programjai találhatók a neten az alábbi címen: http://www.inf.u-szeged.hu/~csendes/galeria/


Letölteni ppt "OPERÁCIÓKUTATÁS Kalmár János, 2012 Tartalom A nulla-egy LP megoldása Hátizsák feladat."

Hasonló előadás


Google Hirdetések