adamik réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf ·...

32
Eötvös Loránd Tudományegyetem Természettudományi Kar Áruszállítási feladat optimalizálása egészértékű programozási modellekkel Adamik Réka BSc szakdolgozat Témavezető: Bérczi-Kovács Erika Adjunktus Operációkutatási Tanszék Budapest, 2017

Upload: others

Post on 03-Nov-2019

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

Eötvös Loránd Tudományegyetem

Természettudományi Kar

Áruszállítási feladat optimalizálása egészértékű

programozási modellekkel

Adamik Réka

BSc szakdolgozat

Témavezető:

Bérczi-Kovács Erika

Adjunktus

Operációkutatási Tanszék

Budapest, 2017

Page 2: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

Köszönetnyilvánítás

Ezúton szeretnék köszönetet mondani témavezetőmnek, Bérczi-Kovács Erikának, a ren-

geteg támogatásért, biztatásért és motiváló hozzáállásáért. Köszönet illeti, amiért mindig

bizalommal fordulhattam hozzá kérdéseimmel. Nélküle nem jöhetett volna létre ez a dol-

gozat.

Hálával tartozom családomnak, akik tanulmányaim alatt végig támogattak és nyugodt

hátteret biztosítottak számomra.

Végül, de nem utolsó sorban szeretném megköszönni a barátaimnak és páromnak a sok

támogatást, amit az elmúlt években kaptam tőlük és a biztatást a szakdolgozatom meg-

írása alatt.

2

Page 3: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

Tartalomjegyzék

1. Bevezetés 5

1.1. Alapfogalmak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2. Utazó ügynök probléma - TSP 9

3. Különböző egészértékű programozási modellek vizsgálata az aszimmet-

rikus utazó ügynök problémára 10

3.1. A 8 modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.1.1. Hagyományos modell - C . . . . . . . . . . . . . . . . . . . . . . . . 11

3.1.2. Szekvenciális modell - S . . . . . . . . . . . . . . . . . . . . . . . . 11

3.1.3. Folyamalapú modell 1 árura - F1 . . . . . . . . . . . . . . . . . . . 12

3.1.4. Folyamalapú modell 2 árura - F2 . . . . . . . . . . . . . . . . . . . 13

3.1.5. Folyamalapú modell több árura - F3 . . . . . . . . . . . . . . . . . 13

3.1.6. Időalapú modell - T1 . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.1.7. Időalapú modell - T2 . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.1.8. Időalapú modell - T3 . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.2. A modellek összegzése . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.3. Az LP formulák összehasonlítása . . . . . . . . . . . . . . . . . . . . . . . 16

4. Áruszállítási feladat optimalizálása 19

4.1. Alkatrész kiszállítási feladat megfogalmazása, pontosítása . . . . . . . . . . 19

4.2. Matematikai kapcsolatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.3. A modellalkotás . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.3.1. Két kör esete fix körméretekkel . . . . . . . . . . . . . . . . . . . . 22

4.3.2. Független körméret esete . . . . . . . . . . . . . . . . . . . . . . . . 24

4.3.3. Több kör esete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

4.3.4. Időkorlát megadása . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5. Futási eredmények 27

6. Összefoglalás 28

3

Page 4: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

7. Függelék 29

8. Hivatkozások 32

4

Page 5: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

1. Bevezetés

A szakdolgozatom célja, hogy egy olyan problémát, ami a nagyvállalatok életében folya-

matosan fent áll, átvezessek a matematika és a programozás világába és ott egy minél

pontosabb, minél könnyebben megvalósítható megoldást találjak.

Ez a probléma nem más, mint az utazó ügynök probléma (TSP-Traveling Salesman

Problem) egy változata, ennek finomításával jutottam a későbbiekben ismertetett megol-

dáshoz.

A feladat egy konkrét, valós probléma, ami egy alkatrészekkel kereskedő vállalat életé-

ben van jelen. Rengeteg partnerük van, többségében szerelőműhelyek és részükre szállíta-

nak alkatrészeket. Jelenleg egy megszokáson alapuló algoritmusuk van azzal kapcsolatban,

hogy a rendelkezésükre álló 10 darab furgon mely utakon induljon el a kiszállításnál, hogy

a lehető legolcsóbban bejárják a partnereiket és leszállítsák a megrendelt alkatrészeket.

Azt a problémát fogom vizsgálni, hogy milyen algoritmus lehet a segítségükre, hogy az épp

aktuális adatok alapján ki tudják számolni a legrövidebb vagy legolcsóbb utat megadott

kritériumok mellett.

Az első fejezetben néhány, a témához kapcsolódó tételt, definíciót és összefüggést te-

kintünk át. A második fejezetben mutatom be az utazó ügynök problémát valamint annak

két válfaját. Ezt követően a harmadik fejezetben 8 megoldási modellt mutatok be a TSP

feladat aszimmetrikus változatára, majd azok összehasonlítását ismertetem. A negyedik

fejezetben konkretizálom a megoldásra váró feladatot. Részletesen bemutatom a problé-

mát, megfogalmazom, hogy milyen kapcsolódási pontjai vannak a matematikához, majd

a modellalkotás lépéseit vizsgáljuk. Ezt követően az ötödik fejezetben futási eredménye-

ket és kimutatásokat mutatok be a megoldással kapcsolatban. A hatodik fejezetben pedig

ismertetem végső eredményem és a konklúziót.

5

Page 6: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

1.1. Alapfogalmak

Mindenekelőtt szükség van olyan fogalmak definiálására, amik elengedhetetlenek a felada-

tok bemutatásánál és megértésénél. Először a gráfelmélet néhány definícióját ismertetem,

melyek az utazó ügynök probléma nélkülözhetetlen alapjai.

1. Definíció. (Gráf egy útja) Útnak nevezzük a gráf egymáshoz csatlakozó éleinek olyan

sorozatát, amely egyetlen ponton sem megy át egynél többször.

2. Definíció. (Gráf egy köre) Körnek nevezzük a gráf egymáshoz csatlakozó éleinek olyan

sorozatát, amely a kezdőpontjába tér vissza és benne minden él csak egyszer szerepel,

valamint minden belső pontot maximum egyszer érint.

3. Definíció. (Hamilton-út) Egy utat Hamilton-útnak nevezünk, ha a gráf összes pontját

érinti.

4. Definíció. (Hamilton-kör) Egy G gráfban Hamilton-körnek nevezünk egy kört, ha a

gráf összes pontját érinti.

A Hamilton-kör a nevét Sir William Rowan Hamiltonról kapta.1972-ben Richard Karp

bebizonyította, hogy a probléma NP-nehéz, azaz nem várható polinom idejű algoritmus

a megoldására.([4], [7]) A következőkben szükséges és elégséges feltételeket mutatok be a

Hamilton kör létezésével kapcsolatban.

1. Tétel. (Szükséges feltétel Hamilton-út létezésére)([6]) Ha egy Hamilton-utat tartalma-

zó gráfból k csúcsot kitörlünk (a belőle kiinduló élekkel együtt), akkor a maradék gráfnak

legfeljebb k + 1 komponense van.

A következőkben 3 olyan tételt ismerhetünk meg, melyek elégséges feltételt adnak

Hamilton-kör létezésére egy gráfban.

2. Tétel. (Ore-tétel)([6]) Legyen G = (V,E) egy egyszerű gráf, melyben teljesül a kö-

vetkező feltétel: bármely két x, y ∈ V pontra, melyekre d(x) + d(y) < n, teljesül, hogy

(x, y) ∈ E. Ekkor G-ben létezik Hamilton-kör.

6

Page 7: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

Bizonyítás: Tegyük fel indirekt, hogy a gráf kielégíti a feltételt, de nincsen benne Hamilton-

kör. Ez az ellenpélda gráfunk legyen G′. Húzzunk be G′-be további éleket úgy, hogy az új

gráf is ellenpélda legyen (továbbra sincs benne Hamilton-kör). Így kapunk egy G gráfot,

ami továbbra is ellenpélda, hisz új élek behúzásával "rossz pontpárt" nem lehet létrehoz-

ni, de ha még egy élet akárhogyan behúzunk, akkor már tartalmaz a gráf Hamilton-kört.

Biztosan van két olyan pont, hogy x, y /∈ E(G), hiszen egy n csúcsú teljes gráfban van

Hamilton-kör. Ekkor viszont a G ∪ {x, y} gráfban van Hamilton-kör, tehát G-ben van

Hamilton-út. Legyenek a P Hamilton-út csúcsai: v1, v2, ..., vn, és v1 = x és vn = y. Ha x

szomszédos a P út valamely vi+1 pontjával, akkor y nem lehet összekötve vi-vel, mert ez

esetben (v1, v2, ..., vi, vn, vn−1, ..., vi+1, v1) egy Hamilton-kör lenne. Így tehát y nem lehet

összekötve legalább d(x) darab ponttal, ezért

d(y) ≤ n− 1− d(x)

d(y) + d(x) ≤ n− 1

ami viszont ellentmondás, hiszen d(y) + d(x) ≥ n volt feltéve.

3. Tétel. (Dirac-tétel)([6]) Ha egy n(> 2) csúcsú egyszerű gráfban minden pont foka

legalább n/2, akkor a gráfban van Hamilton-kör (azaz olyan kör, amely minden ponton

átmegy).

Bizonyítás: A Dirac-tétel feltétele teljesíti az Ore-tétel feltételeit, így abból következik.

4. Tétel. (Pósa-tétel)([6]) Legyenek G n csúcsú egyszerű gráf fokszámai nagyság szerint

d1 ≤ d2 ≤ ... ≤ dn. Ha minden k < n2-re dk ≥ k+1 teljesül, akkor G-ben van Hamilton-kör.

Az eddig megismert fogalmakkal már le tudjuk írni, valamint meg tudjuk érteni az

utazó ügynök problémát és annak különböző megoldási modelljeit. Ahhoz azonban, hogy

a formulák jóságát és egymáshoz viszonyított erősségét vizsgáljuk, szükség van a következő

fogalmak megismerésére.

5. Definíció. (Egészértékű programozási feladat) Amennyiben egy optimalizálási problé-

ma minden változójáról megköveteljük, hogy egészértékű legyen, akkor egészértékű progra-

mozási feladatról beszélünk. Alapfeladat:

max cx,

7

Page 8: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

Ax ≤ b

x ∈ Zn, A ∈ Zn×n, b ∈ Zn

6. Definíció. (IP feladat LP relaxációja) Az előző definícióban szereplő IP feladat LP-

relaxáltja:

max cx

Ax ≤ b

x ∈ Rn, A ∈ Rn×n, b ∈ Rn

7. Definíció. (Poliéder, politóp) Lineáris egyenlőtlenség-rendszer megoldáshalmaza. A

korlátos poliédert politópnak nevezzük.

8. Definíció. (Fourier-Motzkin elimináció) Az elimináció egy véges, bár exponenciális

futásidejű eljárás a lineáris egyenlőtlenség-rendszerek megoldására. A módszer alapgondo-

lata, hogy egy n változós esetet előbb n-1 változós , majd ennek a lépésnek megismétléseivel

egy egyváltozós esetre vezet vissza.

A fejezetet a [4], [5] és a [6] jegyzetek, valamint a véges matematika és optimalizálás órai

jegyzetek alapján dolgoztam fel.

8

Page 9: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

2. Utazó ügynök probléma - TSP

9. Definíció. (Utazó ügynök probléma) Adott n db város, továbbá azok egymástól mért

távolsága és egy ügynök. Adott városból indulva, minden egyes pontot érintenie kell az

ügynöknek pontosan egyszer, majd vissza kell érnie a kiinduló városba. A feladat, hogy ezt

a legrövidebb úton tegye meg.

Tehát az utazó ügynök definícióját a gráfelméletbe átültetve láthatjuk, hogy amennyi-

ben a városokat egy gráf pontjainak feleltetjük meg és a városok közötti távolságokat a gráf

súlyozott éleinek, akkor a feladat az adott gráfban a legolcsóbb Hamilton-kör megkeresése.

A pontosabb kép érdekében először is két nagy csoportra bontom a TSP alapfelada-

tot, a szimmetrikus és az aszimmetrikus utazó ügynök problémára. Alapvető különbség

közöttük, hogy a szimmetrikus TSP-ben a távolság két város között mindkét irányban azo-

nos, azaz vi városból vj városba ugyanolyan hosszú út vezet, mint vj-ből vi-be. Ilyenkor

a feladatot irányítatlan gráffal modellezhetjük. Az aszimmetrikus TSP irányított gráffal

modellezhető: itt két város között az oda-vissza út nem biztos, hogy azonos hosszúságú,

sőt nem is biztos, hogy létezik mindkettő. Ilyenre példa a forgalmi dugó vagy az egyirányú

út esete.

A feladat típusától függően más-más módszer vezethet a jó megoldáshoz. A folytatás-

ban bemutatok néhány formulát az aszimmetrikus TSP-re, ami valamelyest közelebb áll a

későbbiekben definiált feladathoz, hiszen ott is egy olyan áruszállítási problémáról fogok

beszélni, ami Magyarország útjain zajlik, ahol előfordulhatnak akár egyirányú utak is.

A fejezetet az [1] jegyzet segítségével dolgoztam fel.

9

Page 10: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

3. Különböző egészértékű programozási modellek vizs-

gálata az aszimmetrikus utazó ügynök problémára

Ebben a fejezetben 8 különböző egészértékű programozási formulát ismerünk meg az

aszimmetrikus utazó ügynök problémára, valamint azok összehasonlítását vizsgáljuk. A

TSP feladatot innentől gráfelméleti feladatként kezeljük, tehát a későbbiekben a csúcs/pont

fogalom egy-egy várost takarnak az él pedig két várost (közvetlenül) összekötő utat jelöl.

Emellett az 1-es város lesz a kiinduló-, valamint a végpontja az ügynök útjának.

3.1. A 8 modell

Minden formulában a következő jelöléseket használjuk:

N = 1, 2, ..., n

xi,j ∈ 0,1 lineáris változó (1 ≤ i,j ≤ N, i 6= j)

xi,j=

1, ha vi, vj közti él része a túrának és i 6= j

0, egyébként és i 6= j

ci,j= vi és vj pontok közti út hossza

célfüggvény:

min(c · x) (1)

A formuláknál alapvető hasonlóság, hogy különböző megkötéseket adunk, amelyek segít-

ségével eljutunk a megoldáshoz. A különbség köztük ott rejtőzik, hogy milyen feltételeket

adunk, mely irányból próbáljuk erősíteni a kikötéseket.

∑j

xi,j = 1, (j 6= i) ∀i ∈ N (2)

∑i

xi,j = 1, (i 6= j) ∀j ∈ N (3)

Az előző két feltétel minden modellben benne van. A kikötésekkel azt mondjuk, hogy

minden csúcsba pontosan 1 olyan él vezet be (2) és pontosan 1 olyan él hagyja el (3),

10

Page 11: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

melyek benne vannak az ügynök útjában. Azonban ez a két feltétel még nem biztosan

vezet jó megoldásra, ugyanis hozhat olyan eredményt, ami több diszjunkt kör unióját

adja és nem egy Hamilton-kört talál meg a gráfon. Ennek a kiküszöbölésére kell még

plusz feltételeket adnunk, amiket a következőkben ismertetek.

3.1.1. Hagyományos modell - C

A következő kikötéseket tartalmazza a modell:∑i, j∈M, i 6=j

xi,j ≤ |M | − 1, ∀M ⊂ N, 1 /∈M, |M | ≥ 2 (4)

A csúcsok halmazának egy M részhalmazára igaz, hogy a benne található csúcsok

között maximum |M | − 1 db olyan él vezet (4), melyen áthalad az ügynök.

A fenti formula 2n + 2n − 2 db kikötést tartalmaz és n(n − 1) db bináris változót. Az

exponenciális számú kikötés nem teszi lehetővé, hogy direkt oldjuk meg a feladatot.

Ennek a módszernek egy másik változata is létezik, mely a vágásokon értelmezett. Ezt

úgy kapjuk, hogy a (4)-est helyettesítjük a következővel:∑i∈M, j∈M ′

xi,j ≥ 1, ∀M ⊂ N, ahol 1 ∈M valamint M ′ = N −M (5)

Mint láthatjuk, az (5) kikötést megkaphatjuk, ha a (2) megkötést összeadjuk ∀i ∈ M -re

és kivonjuk a (4)-ből. Mivel a két verzió egymásra átírható, ezért nem definiáljuk külön

őket.

3.1.2. Szekvenciális modell - S

(2)-es és (3)-as kikötések mellett bevezetünk egy folytonos változót. Az ui változó jelöli,

hogy az i. várost hányadikként látogatja meg az ügynök.(i 6= 1) Formulához tartozó

kikötés ((2) és (3) mellett):

ui − uj + nxi,j ≤ n− 1 ∀i, j ∈ N − {1}, i 6= j (6)

(6)-os kikötéssel azt határozzuk meg, hogy amennyiben i és j csúcsok közötti él benne van

az ügynök útjában, úgy ui értéke legalább 1-gyel legyen kisebb mint uj értéke (hiszen akkor

xi,j = 1, és ezt behelyettesítve kapjuk, hogy ui−uj ≤ −1). Amennyiben i, j csúcsok között

11

Page 12: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

nem vezet él az ügynök körében, úgy is igaz a becslés, mert n csúcsú gráfban n darab

élből áll a Hamilton-kör így ha két csúcsra vizsgálódunk ui és uj különbsége maximum

n− 1 lehet.

Ebben a formulában n2−n+2 feltétel, n(n− 1)db bináris és (n− 1) db folytonos változó

található.

3.1.3. Folyamalapú modell 1 árura - F1

A (2)-es és (3)-as kikötések megmaradnak és bevezetünk melléjük egy yi,j folytonos válto-

zót. Tegyük fel, hogy az ügynök autókat árul és minden városban 1 darab autót szeretne

eladni. Kezdetben n darab autóval rendelkezik. Az yi,j változó azt fogja jelenteni, hogy

hány darab autója van még az ügynöknek az (i, j) élen, tehát miután elhagyta i csúcsot

de még nem ért j-be (i 6= j).

yi,j ≤ (n− 1)xi,j ∀i, j ∈ N i 6= j (7)∑j, j 6=1

y1,j = n− 1 (8)

∑i, i6=j

yi,j −∑k, i 6=k

yj,k = 1 ∀j ∈ N − {1} (9)

A (7)-es kikötés jelentése, hogy amennyiben egy olyan élt vizsgálunk, ami eleme az ügynök

körének, úgy ott maximum n− 1 darab autóval rendelkezhet (hiszen ilyenkor már 2 csúcs

között jár, azaz egyet elhagyott, ahol már eladott egy autót). (8)-as és (9)-es kikötések

hozzák azt a korlátozást, hogy minden egyes városban pontosan 1 autót ad el az ügynök.

A (7)-es feltételt tudjuk tovább szorítani(F1’):

yi,j ≥ (n− 2)xi,j ∀i, j ∈ N − 1, i 6= j

Ebben a formulában n(n + 2) darab kikötés, n(n − 1) darab bináris és n(n − 1) darab

folytonos változó található.

Ezzel a modellel a későbbiekben még találkozni fogunk a feladatmegoldással kapcso-

latban.

12

Page 13: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

3.1.4. Folyamalapú modell 2 árura - F2

Az F2 modell nagyban hasonlít az F1-re. Különbség a kettő között, hogy az F2 formulában

nem 1 áru (autó) mozgását vizsgáljuk, hanem 2 áruét. Ennek megfelelően az yi,j folytonos

változó meghagyása mellett bevezetjük a zi,j változót.∑j, j 6=1

y1,j − yj,1 = n− 1 (10)

∑j

(yi,j − yj,i) = −1 ∀i ∈ N − {1}, i 6= j (11)

∑j, j 6=1

(z1,j − zj,1) = −(n− 1) (12)

∑j

(zi,j − zj,i) = 1 ∀i ∈ N − {1}, i 6= j (13)

∑j

(yi,j + zi,j) = n− 1 ∀i ∈ N (14)

(yi,j + zi,j) = (n− 1)xi,j ∀i, j ∈ N (15)

A (10)-es, (11)-es, (12)-es és (13)-as kikötésekkel határoztuk meg, hogy minden egyes vá-

rosban pontosan 1-1 db áru legyen mindkét fajta termékből. A (14)-es feltétel azt mondja,

hogy egy adott (i, j) élen pontosan n− 1 az összege a két áru azon élen felvett értékének.

Végül a (15)-ös kikötés azt mondja, hogy csak azokon az éleken legyen értéke yi,j-nek és

zi,j-nek, amelyeken áthalad az ügynök. Az y változó a kezdő 1-es csúcsba n autóval indul,

addig a z változó 0 darab termékkel, és minden egyes meglátogatott csúcsot követő élen

egyre nő az értéke, egészen visszaérkezéséig a kiinduló csúcsba.

3.1.5. Folyamalapú modell több árura - F3

A (2)-es és (3)-as kikötést ismételten felhasználjuk ebben a formulában is valamint mel-

léjük bevezetünk egy új yki,j folytonos változót. Ennél a modellnél n− 1 darab külön áru-

szállítást végzünk, minden egyes csúcsba egyet és k ∈ N . A változó értéke 1, amennyiben

i, j él benne van a k csúcshoz való áruszállítás útjában.

A formulához tartozó további kikötések:

yki,j ≤ xi,j ∀i, j, k ∈ N (16)

13

Page 14: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

∑i

yk1,i = 1 ∀k ∈ N − {1} (17)

∑i

yki,1 = 0 ∀k ∈ N − {1} (18)

∑i

yki,k = 1 ∀k ∈ N − {1} (19)

∑j

ykk,j = 0 ∀k ∈ N − {1} (20)

∑i

yki,j −∑i

ykj,i = 0 ∀j, k ∈ N − {1}, j 6= k (21)

A (16)-os kikötés miatt az yki,j csak azon az élen vehet fel 1-et, ahol az ügynök áthalad

rajta, minden más esetben értéke 0. Tehát csak ott folyhat áru, ahol az ügynök áthalad.

A (17)-es feltétel miatt minden áru pontosan 1 élen haladhat át az 1-es csúcsból és nem

folyhat be az 1-es csúcsba a k=2,3,..., n csúcshoz tartó áru ((18)-as feltétel). Ezzel tehát

meghatároztuk, hogy mindig az 1-es csúcsból induljon, hiszen mindenképp indul ki belőle

él, de be nem érkezik. A (19)-es és a (20)-as feltételekkel azt mondjuk, hogy a k. áruból a k.

városba 1 folyjon be, de ki egy sem. Végül a (21)-es feltétellel egy egyensúlyt teremtünk,

hogy ha egy városba (ami nem a k. város) befolyik a k. áru, akkor onnan haladjon is

tovább.

Ebben a formulában n3 + n2 + 6n − 3 megkötés, n(n-1) bináris és n(n − 1)2 folytonos

változó volt.

3.1.6. Időalapú modell - T1

Annak érdekében, hogy a későbbiekben könnyebb legyen az összehasonlítás a többi mo-

dellel hasznos (de nem szükséges), hogy megtartsuk az xi,j változót. Ennél a modellnél

bevezetünk egy új, bináris változó típust:

yti,j=

1, ha az (i,j) él keresztül megy a t. szakaszon

0, egyébként

Ahol t = 1, 2, ..., n jelöli a t. szintet, ami alatt azt kell érteni, hogy hányadik lépés, azaz

hányadik alkalommal hagyunk el egy pontot. Azért n darab értéket vehet fel t, mert egy

n csúcsú gráfban keressük a Hamilton-kört, így n darab élt fog tartalmazni, így pontosan

14

Page 15: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

n alkalommal kell "szintet lépni". Ehhez kapcsolódó kikötések:∑i, j, t

yti,j = n (22)

∑j, t,t≥2

tyti,j −∑k, t

tytk,i = 1 ∀i ∈ N − {1} (23)

xi,j −∑t

yti,j = 0 ∀i, j ∈ N, i 6= j (24)

yti,1 = 0 ∀t 6= n, yti,j = 0 ∀t 6= 1, y1i,j = 0 ∀i 6= 1, i 6= j (25)

Annak érdekében, hogy minden pontot pontosan egyszer látogassunk, felírtuk a (22)-es

feltételt. A (23)-es feltételnek köszönhetően, garantáljuk, hogy ha egy városba a t. szinten

beléptünk, akkor a t + 1-ik szinten kilépünk belőle. A (25)-os feltétel pedig az első város

korlátozását mondja ki, azaz azt a várost az első szinten hagyjuk el és az n. szinten lépünk

be.

Ebben a modellben n(n+ 2) feltételt és n(n− 1)(n+ 1) bináris változót találunk.

3.1.7. Időalapú modell - T2

A T2 formulánál ugyanazokat a változókat használjuk, mint korábban a T1 formulánál és

a(2), (3) valamint a (25) feltételt a következőkkel együtt:∑i, t, i 6=j

yti,j = 1 ∀j ∈ N (26)

∑j, t, j 6=i

yti,j = 1 ∀i ∈ N (27)

∑i, j 6=i

yti,j = 1 ∀t ∈ N (28)

∑j, t, t≥2

tyti,j −∑k, t

tytk,i = 1 ∀i ∈ N − {1} (29)

Ez a T1 formula egy kibontott alakja, ahol 4n − 1 feltétel valamint n(n − 1)(n + 1)

bináris változó található.

15

Page 16: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

3.1.8. Időalapú modell - T3

Ebben a formulában is a korábban (T1-ben és T2-ben) látott változókat használjuk va-

lamint ismét megtartjuk a (2), (3) és a (25) feltételeket. Néhány új feltétel bevezetésével

tesszük teljessé a modellt. ∑j

y11,j = 1 (30)

∑i

yni,1 = 1 (31)

∑j

yti,j −∑k

yt−1k,i = 0 ∀i, t ∈ N − {1} (32)

A (30)-as feltétel kényszeríti az 1. várost, hogy az első szinten hagyjuk el és a (31)-es

feltétel kényszeríti, hogy az n. szinten lépjünk bele. A (32)-es feltétel hatása megegyezik

a (23)-as feltétel hatásával, azaz, hogy ha a t. szinten lépünk egy városba, akkor a t+1-ik

szinten hagyjuk el.

Ebben a formulában 2n2 − n+ 3 feltétel és n(n− 1)(n+ 1) bináris változó található.

A három időalapú formulában amennyiben elhagyjuk a (25)-ös feltételt valamint az xi,j

változót, akkor le tudnánk csökkenteni a változók számát. Emellett az yti,j változókat

tekinthetnénk folytonos változóként.

3.2. A modellek összegzése

A hagyományos(C) formula kivételével mindegyik esetben polinomikus számú (n-ben)

feltételünk volt, így azok sokkal vonzóbbak, mint a hagyományos. A feltételek száma

azonban még így is nagy és az LP relaxáció gyenge lehet, ezt a tényezőt vizsgáljuk a

következő alfejezetben.

3.3. Az LP formulák összehasonlítása

Mind a 8 formula, amit korábbiakban láthattunk felírható a következő formában:

min(cx)

Ax+By ≤ b (33)

x, y ≥ 0

16

Page 17: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

Az xi,j változók vektora x, valamint az y a különböző vektorok, amiket S, F és T

formulákban használtunk. A szekvenciális és a folyamalapú formuláknál az y folytonos

változót jelent, míg az időalapú formulánál egészértékű változó.

Az összehasonlítás megkönnyítése érdekében el tudjuk hagyni az y változókat úgy, hogy

csak x változókat tartalmazó modellünk legyen. Mivel 0 ≤ xi,j ≤ 1, ezért a kapott poliéder

politóp és az LP relaxációk politópjainak nagysága összehasonlíthatóvá válik ezután. Egy

M modellből származó LP relaxáció politópja P(M).

T1 formulában az y változónak egész értékűnek kell lennie. Itt a változó kihagyása

sokkal komplexebb és nem biztos hogy jó megoldásra vezetne később (nem feltétlenül

egészértékűre), de az LP relaxációból el tudjuk hagyni az y változót és egy IP (egészérté-

kű programozás) feladatot kapunk. Ennek az IP feladatnak az LP relaxációja gyengébb

lesz mint az eredmény amit az eredetiből kapnánk, azonban még mindig egy helyes össze-

hasonlításra fogunk jutni, ha IP-n alapuló LP-relaxációt használunk. Ezért a P(M) jelölés

használatát folytatjuk a kapott politópra, amit abból az LP relaxációból kaptunk, ahol

kihagyjuk az y változót a T1-ben.

Az y változó elhagyására a Fourier-Motzkin elimináció segjségével történik. Célunk

megtalálni az összes olyan valós w vektort, amire igaz a következő egyenlőtlenség:

w′ B ≤ 0 (34)

Azon w-k halmaza amik kielégítik a (34)-es feltételt egy konvex kúpot alkotnak, melyet

extremális sugarakkal jellemezhetünk. Ezeket a sugarakat egy Q mátrix soraiként adjuk

meg. A Q mátrixot a (33)-as feltételbe behelyettesítve a következőt kapjuk:

QAx ≥ Qb, (35)

,ami egy alternatív formula C-re.

A Q mátrix hatása az S, F és T modellekre:

Szekvencilis modell:

A Q mátrix hatására eltávolítjuk az u2, u3, . . . un változókat a (6)-os egyenlőtlenségből.

Ezt úgy érjük el, hogy összeadunk mindent, ahol M ⊂ N , ahol 1 /∈ M . Az eredmény

egyenlőtlensége (minden M ⊂ N , (2) és (3) feltételekkel)

xi1,i2 + xi2,i3 + . . .+ xi|M|,i1 ≤ |M | −|M |n

(36)

17

Page 18: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

A (2) és (3) egyenletekkel valamint nemnegatívitással együtt:

|M | − 1 < |M | − |M |n, M ⊂ N

Mivel a körök részhalmazai a összekapcsolt halmazuknak, így:

P (S) ⊃ P (C) (37)

Emiatt a szekvenciális formulához tartozó LP relaxáió gyengébb, mint a hagyományos

formuláé.

F1 modell: Minden M ⊂ N halmazra, ahol 1 /∈M :∑i,j∈M

xi,j ≤ |M | −|M |n− 1

(38)

|M | − 1 < |M | − |M |n− 1

< |M | − |M |n

Tehát, ebből láthatjuk, hogy

P (S) ⊃ P (F1) ⊃ P (C) (39)

(F1’) modellt vizsgálva:

1

n− 1

∑i∈M−1, j∈M

xi,j +∑i,j∈M

xi,j ≥ |M | −|M |n− 1

(40)

P (F1) ⊃ P (F1′) (41)

F2 modell Ha a zi,j változót laza változónak tekintjük a (15)-ben, akkor ezt felhasznál-

hatjuk, hogy behelyettesítve lecsökkenthetjük F1 formulára. Tehát:

P (F2) = P (F1) (42)

F3 modell M ⊂ N , ahol 1 /∈M : ∑i,j∈M

xi,j ≤ |M | − 1 (43)

P (F3) = P (C) (44)

Időalapú modellek

P (S) ⊂ P (T1)

P (T2) ⊂ P (F1′)

P (C) ⊂ P (T3) ⊂ P (T2)

A fejezetet a [2] és a [3] jegyzet alapján dolgoztam fel.

18

Page 19: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

4. Áruszállítási feladat optimalizálása

Most, hogy megismertük az utazó ügynök problémát és annak asszimetrikus formájának

megoldására szolgáló különböző modelleket lássuk, hogy az itt megszerzett tudást hogyan

tudjuk átültetni a való életbe. Átlagos hétköznapokon is több helyen megjelenik a TSP-re

épülő feladat. Ezekre néhány példa:

• Tömegközlekedés megszervezése

• Áramköri lapok nyomtatása

• Postás napi útjának megtervezése

• Anyagmozgatás optimalizálása

• Áruházi kiszállítások optimalizálása

A fentebb említett példák közül az áruházi kiszállításokkal kapcsolatos optimalizálás-

ról fogok bővebben írni. Ez egy olyan terület, ami jelentős szerepet játszik minden olyan

vállalat életében, akik foglalkoznak bármiféle áruszállítással. Az ilyen cégek a költsége-

ik jelentős hányadát fordítják a különböző szállítási folyamatok finanszírozására, ezért

hatalmas előnyt jelenthet, ha sikerül a jelenleg használt algoritmusukat, megszokásukat

egy jobban működő folyamattá alakítani. Dolgozatom következő felében egy adott cég

áruszállítási problémáját fogom vizsgálni.

4.1. Alkatrész kiszállítási feladat megfogalmazása, pontosítása

A következőkben egy olyan cégről lesz szó, amely egy közvetítő szerepet tölt be a gyártók

valamint a kis- és nagykereskedelmek között és Magyarországon 23 telephellyel rendelkez-

nek. A cég életében több területen is fenn áll az áruszállítás/árumozgatás optimalizálásá-

nak feladata. Egy részről minden egyes telephely kiszállít a vonzáskörzetébe tartozó kis-

és nagykereskedő partnereinek, más részről pedig a telephelyek közti áruszállítást is meg

kell tudni oldaniuk, mert előfordulhat, hogy egy termék csak egy adott telephelyen van,

de egy másik telephelyhez tartozó partner rendelte meg.

19

Page 20: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

A dolgozatban egy adott telephely áruszállítási problémáját fogom vizsgálni, azzal

kapcsolatban, hogy a különböző partnereknek milyen módon tudja a leghatékonyabban

kiszállítani a megrendelt árut. Egy alaptulajdonságuk, hogy naponta többször is szállíta-

nak, így akár az aznap megrendelt árut (amennyiben van készleten) már aznap ki is tudják

szállítani a partnernek. A feladat megoldásához szükség van további tényadatokra.

• k darab furgon van, amiket be tudunk vonni az áruszállítás folyamatába(rendelt áru

mennyiségétől változó, k értéke maximum 10)

• naponta h alkalommal történik áruszállítás (ez változó, de átlagosan h=7)

• adott azon partnerek (valamint címük) listája, akiknek megrendelés esetén szállítani

kell

A cél egy olyan általános modellt találni, ahova csak az épp aktuális szállítási adatokat

kell betáplálni (éppen az adott körben hova kell szállítani és hova nem) és megtalálja a

legköltséghatékonyabb megoldást.

A modell megalkotása során fel kell készülni olyan jelenségekre, amik problémát okoz-

hatnak:

• ad hoc jellegű problémák, például: útlezárás, torlódás

• adott időre vissza kell érni a furgonoknak, hiszen naponta többször szállítanak, így

a következő szállítási időpontra újra a telephelyen kell lennie a kisteherautóknak

• van néhány kiemelt partner, akik már megszokták, hogy mikor kapnak árut, így a

programot úgy kell megírni, hogy hozzájuk adott időre kell az egyes köröknél odaérni

• folyamatos rendelésfelvétel van, tehát indulás előtt kb. 15 perccel tudják meg, hogy

pontosan kik rendeltek és így mely címekre kell szállítani

Amennyiben az adott címeket megfeleltetjük városoknak a furgont pedig ügynöknek,

úgy láthatjuk, hogy a feladat az utazó ügynök problémán alapszik, hiszen a furgonnak

vissza kell érnie a kiinduló helyre miközben adott pontokat meglátogatott. A feladat

megoldását nehezítik a speciális körülmények.

Feltételezhetjük, hogy az egyes idősávokban, amikor a rendelt áru kiszállítását végzik,

akkor a paraméterekkel megadott feladat megegyezik.

20

Page 21: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

4.2. Matematikai kapcsolatok

Azért, hogy jobban lássuk, miért tekinthetünk erre a feladatra matematikai problémaként

szükséges párhuzamba állítani a feladatot a matematikai ismereteinkkel. Az átláthatóság

érdekében egy kisebb adathalmazon mutatom be a problémát és a modellt.

A feladatban adott címekről és a köztük lévő utak hosszáról van szó, ezért a leg-

célszerűbb a feladatot egy gráffal szemléltetni. Innentől a városokat a gráf pontjainak,

halmazukat N halmaznak, a köztük lévő utakat pedig a gráf súlyozott éleinek tekintjük

(ci,j).

Célunk az utazó ügynök probléma továbbfejlesztése, amit egy már korábban ismerte-

tett megoldási modell kiegészítésével, azaz további feltételek megadásával érünk el és így

a kiszállítási problémánkra illesztjük. A továbbiakban l darab ügynökre vizsgálom a TSP

feladatot, ahol az ügynök útját megfeleltetjük a furgon útjának.

4.3. A modellalkotás

Az F1 modell szolgál alapjául a megoldásomnak, így azt bővítve a továbbiakban több

változóval dolgozunk egyszerre, és különböző feltételek közé szorítjuk őket, hogy ezzel

szűkítsük a megoldáshalmazt.

xki,j: bináris változó, értéke 1, amennyiben az i, j csúcsok közti él része a k. ügynök túrá-

jának és 0, amennyiben nem (k ∈ Z, i, j ∈ N , i 6= j)

yki,j: hány eladásra kínált terméke van még a k. ügynöknek, amikor eljött i. csúcsból de

még nem ért j.-be (k ∈ Z, i, j ∈ N)

τi: mennyi utat tett meg az ügynök, mire az i. csúcsba ér (i ∈ N)

bki : bináris változó értéke 1, ha az i. csúcs a k. ügynök túrájában van, 0 egyébként (k ∈ Z,

i, j ∈ N)

ak: jelentése, hogy hány csúcs tartozik a k. ügynök útjába (k ∈ Z)

Természetesen jelenleg is folyik kiszállítás, tehát van egy fajta metódus, amit a ki-

szállításnál követnek nap mint nap, de az sokkal inkább megszokáson és tapasztaláson

alapszik, mint bármiféle számításon. Ebből adódóan a feladatom nem egy algoritmus ja-

vítása, hanem egy modell megalkotása.

A modellem elkészítését a GUSEK nevű programban kezdtem meg. Segítségemre volt

21

Page 22: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

az alap utazó ügynök problémára egy megoldást nyújtó GUSEK-ben megírt kód, ami az

F1 modell beprogramozásának felel meg. Az alap modell azt a feladatot oldja meg, hogy

egy bediktált adathalmazból kiszámolja, hogy mely utakon végighaladva juthat vissza

a legrövidebb úton a kiinduló pontból ugyanoda úgy, hogy közben minden pontot érin-

tett pontosan egyszer. Ezt a modellt lépésenként javítottam tovább, hogy egyre közelebb

jussunk a végső megoldáshoz.

4.3.1. Két kör esete fix körméretekkel

Az adott telephely egyszerre több autóval tud szállítani árut, így elsőként azt a pontosítást

végeztem el a modellen, hogy 2 kisteherautóra vizsgálódjon, amikre igaz, hogy mindkét

autó ugyanazon adott városból induljon (1-es város), minden egyes pontot érintsen va-

lamelyik furgon és visszaérjenek a kiindulási helyre, mindezt úgy, hogy az összköltség a

lehető legkisebb legyen.

Ennek megvalósítása érdekében be kellett vezetni a modellbe több új változót többek

között y2i,j-t, ami működését tekintve olyan, mint az yi,j, de diszjunkt élhalmazban mozog

úgy, hogy az 1-es csúcson kívül nincsenek közös végpontjai sem az 1 értékű éleknek. Erre a

változóra is különböző feltételeket kellett adni, melyek részben hasonlítanak az yi,j változó

feltételeire. Szükség van további kikötésekre, melyekkel elérjük, hogy a két változó egy-

mástól is függjön, ezáltal biztosítva, hogy ne keresztezzék egymást mégis minden pontot

lefedjenek. A másik újonnan bevezetett változó x2i,j mely egy olyan bináris változó, ami

azokon az éleken vesz fel 1 értéket, amin a második kör megy keresztül. (x1i,j azokon az

éleken vesz fel 1-et,amik az első körben vannak benne). Végül harmadikként bevezetésre

került a b1i változó. Egy fontos tényező, hogy az a1 itt egy paraméter, melynek manuálisan

tudunk értéket adni. Ekkor a modellünk a következőképp épül fel:

Az új változók miatt megváltozott a célfüggvény is:

min(c · [x1 + x2]), ,ahol x1 =∑i,j

x1i,j és x2 =∑i,j

x2i,j (45)

N = 1, 2, ..., n

x1i,j ∈ {0,1} lineáris változó (1 ≤ i,j ≤ N, i 6= j)

x2i,j ∈ {0,1} lineáris változó (1 ≤ i,j ≤ N, i 6= j)

22

Page 23: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

x1i,j=

1, ha i, j közti él része a 1. ügynök túrájának és i 6= j

0, egyébként és i 6= j

x2i,j=

1, ha i, j közti él része a 2. ügynök túrájának és i 6= j

0, egyébként és i 6= j

ci,j= i és j pontok közti él hossza

Ekkor a következő feltételeket használjuk:∑j

x1i,j + x2i,j = 1, j 6= i, j 6= 1 ∀i ∈ N (46)

∑j

x1i,1 + x2i,1 = 2, ∀i ∈ N (47)

∑i

x1i,j + x2i,j = 1, i 6= j, i 6= 1 ∀j ∈ N (48)

∑i

x1i,j + x2i,j = 2, ∀j ∈ N (49)

b1i ≥ x1i,j i, j ∈ N (50)∑i

b1i = a1 (51)

1− b1i ≥ x2i,j j 6= i, i 6= 1 (52)

1− b11 + 1 ≥ x21,j (53)∑i,j

x1i,j = a1 (54)

∑i,j

x2i,j = n− a1 + 1 (55)

y1i,j ≤ (a1 − 1)x1i,j (56)

y2i,j ≤ (n− a1)x2i,j (57)∑i,j

y1j,i =∑i,j

y1i,j + b1i i 6= 1 (58)

∑j

y1j,1 + a1 =∑j

y11,j + b11 (59)

∑i,j

y2j,i =∑i,j

y2i,j + 1− b1i i 6= 1 (60)

∑j

y2j,1 + n− a1 =∑j

y21,j + 1− b11 i 6= 1 (61)

23

Page 24: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

4.3.2. Független körméret esete

Ebben a modellben előre meg kellett adni az a1 értékét tehát, hogy az első körben hány

csúcs legyen, ezért ennek javítása érdekében egy a1 számtól független modellt állítottam

fel. Ezt úgy tudtam elérni, hogy az új modellben a1 nem egy paraméter, hanem a1 ∈ Z+,

a1 < n változó. Ennél a pontosításnál azonban kezdett a program futásideje ugrásszerűen

megnőni, bár jó eredményre jutott.

4.3.3. Több kör esete

Ekkor tettem egy lépést visszafelé és továbbiakban a1-et paraméterként használtam, ami-

nek értékét előre megadtam. Másik irányban javítottam tovább a programot, ugyanis

most már nem 2 hanem 3 kört kerestem, melyek összességében minden pontot lefednek és

egyetlen közös pontjuk van, az 1-es csúcs (ami a telephelyet jelöli). Innen már csak egy

kis korrekcióra volt szükség, és 10 körre (mint a 10 furgon) megírtam a programot. Ah-

hoz, hogy 3 kört tudjon keresni a program újabb változókra volt szükség, így bevezetésre

kerül az x3i,j, b2i és az y3i,j változó valamint az a1 paraméter mellé bevezetésre kerül az a2

paraméter. Ekkor a célfüggvény a következőképp épül fel:

min(c · [x1 + x2 + x3]), ,ahol x1 =∑i,j

x1i,j , x2 =

∑i,j

x2i,j és x3 =

∑i,j

x3i,j (62)

Az új változó: x3i,j ∈ {0,1} lineáris változó (1 ≤ i,j ≤ N, i 6= j)

x3i,j=

1, ha i, j közti él része a 3. ügynök túrájának és i 6= j

0, egyébként és i 6= j

Ekkor a következő feltételeket használjuk:∑j

x1i,j + x2i,j + x3i,j = 1, j 6= i, j 6= 1 ∀i ∈ N (63)

∑j

x1i,1 + x2i,1 + x3i,j = 3, ∀i ∈ N (64)

∑i

x1i,j + x2i,j + x3i,j = 1, i 6= j, i 6= 1 ∀j ∈ N (65)

∑i

x1i,j + x2i,j + x3i,j = 3, ∀j ∈ N (66)

24

Page 25: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

∑i

b1i = a1 (67)

∑i

b2i = a2 (68)

b1i ≥ x1i,j i, j ∈ N (69)

b2i ≥ x2i,j i, j ∈ N (70)

1− b1i − b1i ≥ x3i,j j 6= i, i 6= 1 (71)

1− b11 − b1i + 2 ≥ x31,j (72)∑i,j

x1i,j = a1 (73)

∑i,j

x2i,j = a2 (74)

∑i,j

x3i,j = n− a1 − a2 + 2 (75)

y1i,j ≤ (a1 − 1)x1i,j (76)

y2i,j ≤ (a2 − 1)x2i,j (77)

y3i,j ≤ (n− a1 − a2 + 1)x3i,j (78)∑i,j

y1j,i =∑i,j

y1i,j + b1i i 6= 1 (79)

∑j

y1j,1 + a1 =∑j

y11,j + b11 (80)

∑i,j

y2j,i =∑i,j

y2i,j + b2i i 6= 1 (81)

∑j

y2j,1 + a2 =∑j

y21,j + b21 (82)

∑i,j

y3j,i =∑i,j

y3i,j + 1− b1i − b2i i 6= 1 (83)

∑j

y3j,1 + n− a1 − a2 + 1 =∑j

y31,j + 1− b11 − b2i + 1 i 6= 1 (84)

Itt is azt tapasztaltam, hogy a futásidő megnövekedett.

25

Page 26: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

4.3.4. Időkorlát megadása

Korábban említettem, hogy vannak olyan partnerek, akiket kiemelten kezelnek és adott

időre oda kell érni hozzájuk. Annak érdekében, hogy ez ne a véletlenen vagy az indulási

idő eltolásán múljon a következő módosítást végeztem a programban. Bevezettem egy új

τi változót, melynek segítségével tudtam egy olyan feltételt adni a modellnek, hogy az

adott csúcshoz legkésőbb mikor érjenek oda. Ekkor a modellünk felépítése olyan, mint a

több kör esetében néhány plusz feltétellel együtt, amit a következőek:

τ1 = 0 (85)

τi + ci,j ≤ τj +m(1− x1i,j) (86)

A korlát megadása a következőképp néz ki: ha azt szeretnénk, hogy a 13. csúcshoz maxi-

mum 25 kilométer megtétele után érjen, akkor:

τ13 ≤ 25 (87)

A formulában m szám egy általunk választott valós paraméter. Nem időben, hanem tá-

volságban van a kikötés, hogy maximum mekkora összutat tegyen meg egy furgon, mire

odaér az adott csúcshoz. Természetesen, ha az alap adatokat nem távolságban, hanem

időben adjuk meg, akkor azzal fog számolni a program.

26

Page 27: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

5. Futási eredmények

Ebben a fejezetben néhány kimutatást láthatunk. Az első diagram azt mutatja meg, hogy

a modellem négyféle javítása hogyan oszlik el a futásidejük nagyságrendjét tekintve. Az

egyetlen javítás, ami perceken belül lefutott, az a két kör esete fix körmenet esetén. Ebben

az esetben is volt 2 kiugró eset, az a1 = 7 valamint az a1 = 8 esete. Ezeken kívül gyorsan

lefutott a program:

Abban az esetben, amikor független körmenetet vizsgáltam a program futásideje kö-

rülbelül 1 órára nőtt és eredményként az a1 = 2 esetet hozta. Több kör vizsgálata esetén

is a megnövekedett futásidő elérte az 1 órát. Hasonlóan viselkedett a modell, amikor idő-

korlátot adtam meg.

27

Page 28: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

6. Összefoglalás

Az elkészült program, melynek programkódját a függelékben olvashatjuk, a következő fel-

adatra nyújt megoldást. Egy adott adathalmazon, ami tartalmazza a pontokat és az éleket

(amelyek adott partnerek címeit jelölik egymástól mért távolsággal együtt), megkeresi a

legkisebb összsúlyú körhalmazt, ahol minden egyes pontot pontosan egyszer látogattunk

meg, összesen 3 autóval egyszerre indulva és adott partnerekhez időben (vagy távolságban)

megadva, hogy legkésőbb mikor érjenek oda.

A korábban felsorolt problémákat figyelembe véve ha megvizsgáljuk a modellt, akkor

ezeket a következtetéseket szűrhetjük le. Bármely ad hoc jellegű probléma ellen véde-

kezhetünk azzal, hogy ha tudomásunkra jut útlezárás stb., akkor azt az adott élt, mely

ezt az útszakaszt jelöli, egyszerűen elrejtjük a program elől és így nem egy teljes gráffal

hanem ez az él nélkül fog számolni a program. Azt a problémát is kiküszöböltük, hogy

adott időre kell valahova odaérni, így már csak egyetlen maradt a felsoroltak közül. A

cégnek néhány perce marad lefuttatni a programot, ami kiszámolja, hogy melyik autónak

melyik irányba kell elindulnia. A GUSEK-ben futó glpk egy gyenge solver, így a futási

idők nagyon megnőttek. Annak érdekében, hogy ezt gyorsítani tudjuk érdemes gyorsabb

solverekkel kipróbálni, hogy a gyakorlatban is alkalmazhatóvá váljon.

28

Page 29: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

7. Függelék

A következőkben láthatjuk az elkészült GUSEK-ben megírt programkódot.

Az elkészült programkód

param n, integer, >= 3;

param m, integer;

param a1, integer, >=2;

param a2, integer, >=2;

set V := 1..n;

var tau{i in V}, >=0;

set E, within V cross V;

param c{(i,j) in E};

var x1{(i,j) in E}, binary;

var x2{(i,j) in E}, binary;

var x3{(i,j) in E}, binary;

var b1{i in V}, binary;

var b2{i in V}, binary;

minimize total: sum{(i,j) in E} (c[i,j] * x1[i,j]+c[i,j] * x2[i,j]+c[i,j] * x3[i,j]);

s.t. elso: tau[1]=0;

s.t. odaer{(i,j) in E}: tau[i]+c[i,j]<=tau[j]+m*(1-x1[i,j]);

s.t. ottvan: tau[15]<=2000;

s.t. leave{i in V }: sum{(i,j) in E} (x1[i,j]+x2[i,j]+x3[i,j]) = 1

+ (if i = 1 then 2);

s.t. enter{j in V}: sum{(i,j) in E} (x1[i,j]+x2[i,j]+x3[i,j]) = 1

+ (if j = 1 then 2);

s.t. melyikkor1: sum{j in V} b1[j]=a1;

s.t. melyikkor2: sum{j in V} b2[j]=a2;

s.t. elsokor{(i,j) in E}:b1[i]>=x1[i,j];

s.t. masodikkor{(i,j) in E}:

b2[i]

>=

29

Page 30: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

x2[i,j];

s.t. harmadikkor{(i,j) in E}:

1-b2[i]-b1[i]

+

(if i = 1 then 2)

>=

x3[i,j];

s.t. eldiszjunktx1: sum{(i,j) in E} x1[i,j]=a1;

s.t. eldiszjunktx2: sum{(i,j) in E} x2[i,j]=a2;

s.t. eldiszjunktx3: sum{(i,j) in E} x3[i,j]=n-a1-a2+2;

var y1{(i,j) in E}, >= 0;

var y2{(i,j) in E}, >= 0;

var y3{(i,j) in E}, >= 0;

s.t. cap1{(i,j) in E}: y1[i,j] <= (a1-1) * x1[i,j];

s.t. cap2{(i,j) in E}: y2[i,j] <= (a2-1) * x2[i,j];

s.t. cap3{(i,j) in E}: y3[i,j] <= (n-a1-a2+1) * x2[i,j];

s.t. node1{i in V}:

sum{(j,i) in E} y1[j,i]

+ (if i = 1 then a1)

=

sum{(i,j) in E} y1[i,j]

+ b1[i];

s.t. node2{i in V}:

sum{(j,i) in E} y2[j,i]

+ (if i = 1 then a2)

=

sum{(i,j) in E} y2[i,j]

+b2[i];

s.t. node3{i in V}:

sum{(j,i) in E} y3[j,i]

30

Page 31: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

+ (if i = 1 then (n-a1-a2+1))

=

sum{(i,j) in E} y3[i,j]

+(1-b1[i]-b2[i])

+ (if i=1 then 1);

solve;

printf "\n";

printf "Optimal tour has length %d\n",

sum{(i,j) in E} c[i,j] * (x1[i,j]+x2[i,j]+x3[i,j]);

printf("From node To node Distance\n");

printf{(i,j) in E: x1[i,j]+x2[i,j]+x3[i,j]} " %3d %3d %8g\n",

i, j, c[i,j];

data;

param n := 16;

param m := 70000;

param a1 :=5;

param a2 :=5;

param : E : c :=

[adatok megadása: csúcs...csúcs...köztük lévő út hossza];

end;

31

Page 32: Adamik Réka - web.cs.elte.huweb.cs.elte.hu/blobs/diplomamunkak/bsc_matelem/2017/adamik_reka.pdf · Folyamalapúmodell2árura-F2 AzF2modellnagybanhasonlítazF1-re.Különbségakettőközött,hogyazF2formulában

8. Hivatkozások

Hivatkozások

[1] http://www.tankonyvtar.hu/en/tartalom/tamop425/0046_operaciokutatas_2/

ch06s02.html

[2] Erricson John Kontoghiorghes, Cristian Gatu: Optimisation, Econometric and Fi-

nancial Analysis(99.-107. oldal)

[3] Oman, A. J. and Williams, H. Paul: A survey of different integer programmind for-

mulations of the travelling salesman problem.

[4] Frank András, Király Tamás: Operációkutatás

[5] Jordán Tamás, Recski András, Szeszlér Dávid: Rendszeroptimalizálás

[6] http://www.cs.elte.hu/ szonyi/hami.pdf

[7] http://mathworld.wolfram.com/HamiltonianCycle.html

32