egészérték¶ programozási...

30

Upload: others

Post on 28-Mar-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

Eötvös Lóránd Tudomány Egyetem

Bsc szakdolgozat

Egészérték¶ programozási feladatok

a közlekedés-tervezésben

Czifra Domonkos

Témvezet®:

Jüttner Alpár

Operációkutatás Tanszék

Budapest,2016

Page 2: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

Köszönetnyilvánítás

Köszönöm témavezet®m, Jüttner Alpár segítségét, aki hasznos tanácsaival jóirányba terelte e dolgozatot, és akihez mindig fordulhattam kérdéseimmel.

Valamint köszönöm szüleimnek, testvéreimnek, barátaimnak a támogatást,biztatást.

1

Page 3: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

Tartalomjegyzék

1. Egy közlekedési hálózat tervezése 41.1. A tervezés folyamata . . . . . . . . . . . . . . . . . . . . . . . . . 41.2. Folyammodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3. Útpakolási modell . . . . . . . . . . . . . . . . . . . . . . . . . . 61.4. Hálózattervezés . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.5. Járattervezés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.5.1. 1.modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.5.2. 2.modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.6. Menetrendtervezés . . . . . . . . . . . . . . . . . . . . . . . . . . 91.6.1. Periodikus Menetrendtervezés(Periodic Event Sheduling

Problem) . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.6.2. Pesp által fedett menetrendtervezési lépések . . . . . . . . 11

1.7. A járm¶vek elosztása . . . . . . . . . . . . . . . . . . . . . . . . . 141.8. Személyzetelosztás . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.8.1. Rotáció . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2. Nagy IP feladatok megoldása 162.1. Branch and Bound . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.1.1. Branch and Cut . . . . . . . . . . . . . . . . . . . . . . . 172.1.2. Branch and Price . . . . . . . . . . . . . . . . . . . . . . . 172.1.3. Diving heurisztikák . . . . . . . . . . . . . . . . . . . . . . 182.1.4. Simple Feasibility Pump . . . . . . . . . . . . . . . . . . . 192.1.5. Objective Feasibility Pump . . . . . . . . . . . . . . . . . 21

2.2. Rapid Branching . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.2.1. Perturbation Branching . . . . . . . . . . . . . . . . . . . 242.2.2. Binary Search Branching . . . . . . . . . . . . . . . . . . 25

3. Kitekintés 27

2

Page 4: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

Bevezetés

Az emberiség történelme során mindig is törekedett a meglév® eszközök fejlesz-tésére, és a meglév®kb®l a legjobbak kihozására, OPTIMALIZÁSÁRA. Azonbana közlekedésben talán csak a 20.században jelent meg akkora forgalom a közle-kedési útvonalakon, hogy legyen értelme érdemben optimalizálásról beszélni.

Az egyik legnagyobb igény a közlekedés optimalizálásra a légitársaságoktólérkezett: hiszen az er®s verseny, és az er®források relatív magas költsége miattegy ügyes optimalizáláson akár a pro�tabilitásuk múlhat.

A légitársaságok két legfontosabb feladata az er®forrás elosztás: repül®gépek(Vehicle-), és a személyzet elosztása (Crew-sheduling). Jóllehet ekkor már léte-zett az a matematikai apparátus, melyekkel modellezni, és megoldani lehetetta problémákat, de látszólag kis problémák megoldásának kiszámítása az ismerteszközökkel "végtelen" sok id®be telt volna, így új módszereket kellett kidolgoz-ni, hogy reális id®ben megoldják a problémákat.

A 21.században az angolszász területeken a közösségi közlekedés egyes részeitprivatizálták, így pro�torientált vasúttársaságok, busztársaságok is optimalizál-ni szerették volna járataikat, már a kezdeti tervezést®l (Network planing) alegkisebb részletekig (Crew-sheduling).

A dolgozat els® része a f®bb tervezési lépésekkel foglalkozik, mint a hálózat-tervezés, járattervezés, menetrendtervezés, er®forrás-, illetve személyzetelosztás.A második rész pedig ezek általános megoldását tárgyalja, kezdve a legegy-szer¶bb algoritmusoktól (Branch and Bound) az egyszer¶ heurisztkákon át azösszetettebb heurisztikákig, amit már a gyakorlatban is alkalmaznak (lásd [1]).

3

Page 5: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

1. Egy közlekedési hálózat tervezése

1.1. A tervezés folyamata

A közlekedési rendszer (pl busz- illletve vasúthálózat) megtervezésénél alapve-t®en két fázisról beszélhetünk:

• stratégiai (strategic)

• illetve m¶ködtetési (operational) tervezésr®l.

A stratégiai tervezés általában több id®t vesz igénybe, a döntések hosszúid®re szólnak. Ebb®l adódóan nehezebb is modellezni, mert akár politikai dön-tésekt®l is függhet. Célja meghatározni a szolgáltatás színvonalát, a kivitelezésmódját. Itt kap helyet többek között az er®források beszerzése, a hálózatterve-zés (network planning), a járattervezés (line planning), és a menetrendtervezés(timetable planning). A menetrendtervezés operációkutatással azonban már egyszéles körben alkalmazott terület, sok vasúti menetrend már nem kézzel készül,úgymint a német, svájci, vagy éppen a holland vasúti menetrend: [2].

A m¶ködtetés megszervezése a tényleges folyamat el®tt nem sokkal/közbentörténik, itt már a meglév® er®forrásokat osztjuk be a megfelel® feladatokhoz,például a járm¶veket (vehicle sheduling), vagy a személyzetet (crew sheduling).Számos légitársaság, és egyéb közlekedési társaság automatizálja ezt a tervezésilépést, mert a rendelkezésre álló algoritmusok olcsóbban, és sokkal hatékonyab-ban osztják be a személyzetet, mint az ember.

1.2. Folyammodell

Talán ez a legkézenfekv®bb modell egy hálózat tervezéséhez.Legyen (V,A) irányított gráf, V a csúcsok halmaza, A az (irányított) élek

halmaza, {s,t} forrás illetve nyel®.Legyen kmina , kmaxa , a ∈ A alsó illetve fels® kapacitások, hogy kmaxa ≥ kmina .

Valamint legyen ca, a ∈ A egy adott folyamegységre jutó költség.A feladat egy minimális költség¶ folyam megtalálása s és t között, az adott

kapacitás megszorítások mellett. (Természetesen egyéb megszorításokat is lehettenni.)Ez formálisan felírva:

min cT y (1)

y(δin(v))− y(δout(v)) = 0, ∀v ∈ V \ {s, t}, (2)

kmaxa ≤ y ≤ kmina ∀a ∈ A, (3)

By = b (4)

ya ≥ 0, ∀a ∈ A (5)

y ∈ ZA (6)

Itt ya megmondja adott a ∈ A élre a folyam értékét. (2) biztosítja a folyam-feltételt (amennyi folyam egy csúcsba befolyt, annyi kell kifolynia is; a forrásés a nyel® kivételével). (3) biztosítja az élekre, hogy a folyam egy adott élen

4

Page 6: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

1. ábra. Tervezési lépések

5

Page 7: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

ne lépje túl a korlátait. (4) feltételek megadásával a folyamnak speciális tulaj-donságokat írhatunk el®. (5)-(6) pedig a nemnegativitásti, és az egészérték¶ségifeltételek, hiszen általában egész dolgokat kell szétosztani: pl.: személyzetetvagy járm¶veket.

Érdemes (4) nevezetes eseteire kitérni

• Ha ugyanis (4) üres, akkor egy minimális költség¶ folyamot kell megolda-nunk, így ez polinomiális id®ben megy.

• Azonban (4) helyébe többtermékes folyamfeltételeket is tehetünk, így egytöbbtermékes folyamfeladatot kapunk.

• Jól alkalmazható∑a∈p ≤ |p| − 1 feltétel egy p ∈ P út tiltására.

A többtermékes folyam jól modellezi például több járm¶parkból való járm¶-ütemezést, vagy a telekommunikációs hálózatok m¶ködését is, hiszen mindenkapcsolat egy külön termék folyamának tekinthet®.

A harmadik speciális feltétel kényelmes lehet bizonyos utak kizárására, azon-ban ez a feltétel elronthatja a feladatunk szerkezetét, ami az így módosult feladatmegoldásánál komoly hátrányokat okozhat.

Mint látszik a célfüggvényen is, ez egy él-központú modell. Ha bizonyosutakat gyakran kell kitiltani az algoritmus során, akkor jobban használható akövetkez® modell, mely út-központú, mert a korlátozó feltételeket bizonyosutakra szabjuk meg.

1.3. Útpakolási modell

Ha az el®z® modellben (3)-ban többtermékes korlátozó feltétel van, sok termék-kel a többtermékes folyam megoldása id®igényes lehet. Ennek elkerülése végetta folyamfeladatot utak és körök uniójára bontjuk föl (lásd Datzig-Wolfe [3]).Az általános útpakolási modell:(General Path Based Model)

min dTx (7)

kmaxa ≤∑a∈p

xp ≤ kmina ,∀a ∈ A, az alsó fels® korlát (p ∈ S) (8)

xp ≥ 0,∀p ∈ S, a változók nemnegatívak (9)

x ∈ ZS , és a változók egészek. (10)

Ahol S bizonyos a hálózatban haladó utak halmaza. Itt dp a költségfüggvény,például:

∑a∈p ca.

GPBM-nek három nevezetes speciális esete van:

• Path Packing Problem: (8a) 1 ≤∑a∈p xp

• Path Partitioning Problem: (8b) 1 =∑a∈p xp

• Path Packing Problem: (8c) 1 ≥∑a∈p xp

S mérete így nagyon nagy lehet, ezért ezt a problémát érdemes valamilyenoszlopgenerálós algoritmussal megoldani.

6

Page 8: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

1.4. Hálózattervezés

A hálózat és járattervezés még nem olyan jól kidolgozott, és ritkán alkalmazotttervezési lépések, és ha használják is, inkább csak a városi tömegközlekedés-ben. Ugyanis még a városi tömegközlekedésben is ritka az az alapszituáció,hogy alapjaitól kell, illetve lehet egy város közlekedését megszervezni, hiszenaz infrastruktúra (buszmegállók, táblák, járatinformációk) már adottak, ezeklecserélése és az utasok tájékoztatása nagy marketingköltséggel járhat. Sokkalinkább jellemz®, hogy egy meglév® hálózatot b®vítenek, optimalizálnak az újigényeknek megfelel®en.

A hálózattervezési feladatban adottak végállomások, és transzfer pontok,ahol a járatok indulnak, pályát módosíthatnak. A célunk adott forgalmú közle-kedés megszervezése minimális költséggel.

Az alábbi modellt [4] szerz®i írták fel el®ször. LegyenN = (V,A) egy hálózat,ahol V a végállomások, és transzfer pontok halmaza, A azon útszakaszok/utcák,ahol a járm¶vek közlekedhetnek. Legyen egy p útra O(p) illetve D(p) az út kétvégpontja, bp közlekedési forgalom O(p), D(p) között. F legyen a járm¶fajtákhalmaza (mint például: csuklósbusz, alacsonypadlós busz, trollibusz, villamosstb). Ennek segítségével minden járm¶típusra különböz® kapacitásokat, illetveköltségeket tudunk felírni. Tehát ufa mondja meg egy f típusú járm¶fajtából aélen hány ember fér fel. Legyen cpa és dfa (f ∈ F ; a ∈ A) az a költség, amely aközlekedési társaságnak a élen keletkezik p úton, illetve f járm¶vön.

Jelölje yfa (f ∈ F ; a ∈ A) azon közleked® egységek/emberek számát, akik aélen f típusú járm¶vel utaznak, és xpa azon folyamérték, mely a élen folyik át.

(Network Design Problem)

min∑p∈P

bp(cpTxp) +∑f∈F

dfTyf

∑p∈P

bpxpa −∑f∈F

ufyfa ≤ 0, ∀a ∈ A (11)

x(δinp (u))− x(δoutp (u)) = 0, ∀p ∈ P, u ∈ V, \(O(p) ∪D(p)) (12)

x(δinp (u)) = x(δoutp (u)) = 1, ∀p ∈ P (13)

xpa ≥ 0 ∀p ∈ P, a ∈ A (14)

yfa ∈ N0, ∀a ∈ A, f ∈ F (15)

Ahol a szumma els® tagja minden egyes útra a közleked®kre jutó költség, amásodik tag a járm¶veken es® költség. (11) biztosítja, hogy minden élen tel-jesüljön a kapacitáskorlát, (12) a folyamfeltétel, (13) biztosítja, hogy az el®írtközlekedési forgalom teljesüljön. (14) és (15) a nemnegativitás, és egészérték¶-ségi feltételek.

Azonban ez a modell nem mindig szolgáltat megfelel® eredményt. Ugyanisa kapott hálózatot a következ® fázisban (járattervezés) nem biztosan fogjuktudni gazdaságosan felbontani, mert egyes útvonalak akár túl hosszú/rövidresikerülhetnek. Valamint még az is megoldandó feladat,hogy az utasok hányátszállással fognak eljutni a célállomásukra.

7

Page 9: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

1.5. Járattervezés

Az el®z® feladatban kaptunk egy hálózatot lehetséges útvonalakkal, ezeket kellmost járatokra felbontani, és meghatározni azok a gyakoriságát. Tehát adottegy hálózat végállomásokkal, transzfer pontokkal, és lehetséges összeköt® út-vonalakkal (lehetséges azonban, hogy egyes utakat csak bizonyos járm¶típusokhasználhatnak), valamint az egyes utakra az el®írt forgalommal.

A cél a költségek és az utazók élégedetlenségének minimalizálása (elégedett-ségi feltétel például: a belvárosban bárhonnan bárhova adott id® alatt avagyátszállással el lehessen jutni).

Mint már az el®z® részben is megemlítettem, nem jellemz® egy hálózatotalapjaitól tervezni, sokkal inkább itt a járattervezésbe kalkulálják bele egy eset-leges útvonal-módosítás költségét.

1.5.1. 1.modell

Szétválasztjuk a feladatot: els® körben meghatározzuk az utasok útvonalát, ésmértékét közlekedési szokásaik szerint. Majd meghatározzuk a járatokat, ésazok gyakoriságát az ismert forgalom mellett, egy útalapú algoritmussal.

Tehát legyen L lehetséges járat-útvonalak halmaza. Legyen továbbá cl,l ∈ L, az l járatra jutó költség, Fl az l járat gyakorisága (0 ∈ Fl). A legyen azél-járat incidenciamátrix: A ∈ {0, 1}AxL. És b ∈ RA a forgalom az éleken.

(Line Planning Problem)

mincTx (16)

Ax ≥ b (17)

xl ∈ Fl ∀l ∈ L (18)

És a feladat megoldása: x az el®re megadott járatok gyakoriságát adja meg.

1.5.2. 2.modell

A második megoldás (lásd [1]) az el®z® két fázist próbálja meg együtt megoldaniegy útalapú algoritmussal, ahol az utasokat és járatokat próbáljuk összeegyez-tetni.

Jelölje yp ∈ R+ a forgalmat, ahol p ∈ P potenciális járatútvonal. Egyúj xl bináris változót vezetünk be minden l ∈ L járatra, mely megmondja,fogjuk-e használni az adott járatot. Az fl egész változó mondja meg az l járatgyakoriságát (a maximum kapacitást Fl jelöli). Jelölje bp azt a változót, amelymegadja p útra O(p), D(p) közötti forgalmat, P p pedig tartalmazza O(p), D(p)közötti összes utat. P legyen ezek uniója, P(a) pedig azon q ∈ P melyek a ∈ Aélen átmennek. L(a) azon járatok, amelyek átmennek a élen.κ ∈ RL+ adja mega járatkapacitást. Végül da az utasonkénti költség a ∈ A élen , cl pedig ajáratköltség l ∈ L járatra.

A hosszas jelölések után végre felírhatjuk a feladatot:

8

Page 10: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

min cTx+ dT y + cT f (19)

y(P p) = bp, ∀OD párra, (20)∑l∈L(a)

κlfl − y(P(a)) ≥ 0, ∀a ∈ A (21)

f ≤ Fx (22)

x ∈ {0, 1}L, 0 ≤ f ≤ F, y ≥ 0. (23)

(24)

(20) biztosítja, hogy az adott forgalmat elvezettük. (21) miatt nem lépjükát a kapacitáskorlátokat. (22) feltétel kényszeríti ki x változótól, hogy 1 legyen,amikor az adott járatot betettük a megoldáshalmazba.

Megjegyzés: az els® modellt inkább vasúti modellekre alkalmazható, hiszenitt az utasoknak nincs sok választása ha A városból B városba akar menni, ígyitt az utasok útjainak el®re meghatározása nem nagy korlátozás.A második modell mivel nem határozza meg ezt el®re, a városi közlekedésterve-zésben jobban alkalmazható.Azonban egyik modell sem veszi �gyelembe, hogy az utasoknak hányszor kállátszállniuk céljuk eléréséhez.S®t, mivel csak végállomásokat és transzfer pontokat vettünk be a modellbe, ígya köztes megállókat nem is határoztuk meg, amik jelent®sen befolyásolják egyjárat menetidejét.

1.6. Menetrendtervezés

1.6.1. Periodikus Menetrendtervezés(Periodic Event Sheduling Prob-lem)

A periodikus menetrendek egy gyakran használt menetrend forma/tulajdonság,amikor egy menetrend során periódusonként ismétl®dnek az események. Eza periódus tipikusan egy óra. Ennek az utazók számára legkézzelfoghatóbbel®nye, hogy csak egyetlen óra menetrendjét kell az adott állomásra megjegyezni:például a Budapest-Bécs railjet mindig 'óra negyvenkor' indul Budapestr®l (ésminden köztes állomáson miden óra azonos percén halad át).

Az alábbi modellt Sera�ni és Ukovitch [5] vezette be 1989-ben. Tehát egyperiódikus modellben adott egy T periódusid® (ami gyakran egy óra), egy Vesemények halmaza, ami általában vonatok adott állomáson való érkezési/indu-lási idejeinek halmaza. Meg van adva természetesen egy A feltételhalmaz: amiegy eseménypárból áll, valamint minden élhez adott egy alsó-fels® korlát (ua, la:∀a ∈ A).

A célunk egy menetrend; egy olyan függvény, ami megmondja egy eseményre,mikor következzen be. Formálisan keressük π : V → [0, T ) függvényt, hogy

π(j)− π(i)− la(modT ) ≤ ua − la ∀a = (i, j) ∈ A; i, j ∈ V. (25)

Másképpen röviden: π(j)− π(i) ∈ [la, ua]modT .

9

Page 11: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

π(i)

ua

π(j)

la

2. ábra. Illusztráció korlátokra

Def : Egy ilyen π függvényt menetrendnek nevezünk.

• Speciálisan: la = ua : π(j)− π(i) = la mod T .

• Például ha a = (i, j); la = 10, ua = 15 és π(j) = 5. Ekkor π(i) 'óra 50 és'óra 55 között következhet be.

1. Megjegyzés. Alkalmazhatunk egy másik felírást is, ha 0 ≤ la < T és δa =ua − la változókat használjuk, ekkor

π(j)− π(i)− la(modT ) ≤ δa ∀a ∈ A. (26)

Ezen a felíráson látszik, hogy két eseményre megmondhatjuk, hogy mennyi id®teljen el közöttük egy menetrendben (la), valamint hogy mennyire engedünk apontosságból (δ).

2. Megjegyzés. Ha egy adott eseményt rögzíteni szeretnénk, akkor ezt bátranmegtehetjük, ugyanis (∀i0 ∈ V )(∀t0 ∈ [0, T ))(∀π menetrendhez )(∃π′ : π(i0) =t0).Biz: Ugyanis el tudjuk forgatni a menetrendünket: legyen π egy menetrend, i0,t0 adott, ahol π(i0) = t10. Ekkor π′ := π + (t0 − t10). Ez ugyanúgy menetrendlesz, és π′(i0) := π(i0) + (t0 − t10) = t10 + t0 − t10 = t0.

3. Megjegyzés. Ha nem egy, hanem több eseményt szeretnénk rögzíteni, aztis megtehetjük egy egyszer¶ trükkel. Válasszunk ki egy tetsz®leges i0 rögzítenikívánt eseményt, t0 rögzíteni kívánt id®ponttal. Ekkor i1 . . . in legyen a maradékrögzíteni kívánt esemény, t1 . . . tn rögzíteni kívánt id®pontokkal. Ekkor A- hozadjunk hozzá n élet: ai := (i0, ii) ∀i = 1 . . . n, la = ua = ti − t0 alsó-fels®korláttal. Ha van megoldás, akkor már csak az el®z® megjegyzés szerint i0 ese-ményt be kell forgatni t0 id®pontba, és akkor minden rögzíteni kívánt eseményti id®pontban fog megtörténni.

Egy menetrend hasznosságát/pontosságát egy c költségfüggvény méri. Azazegy menetrend annál jobb, minél kisebb∑

a=(i,j)∈A

ca(π(j)− π(i)− la). (27)

10

Page 12: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

Itt la helyébe ua is írható lenne, s®t bármely köztes szám (mod T ), attólfügg®en, hogy az esemény pontosságát mihez viszonyítjuk

Az IP feladat felírásához egy fogalom:

1. De�níció (tenzió). Adott egy (G,A) gráf. Egy A → R függvényt tenzió-nak nevezünk, ha minden C körre az éleket irányítás szerinti el®jellel összeadva0-t kapunk.

Mivel az eddigi képletekben π csak mint potenciálkülönbség jelent meg, ígyérdemes bevezetni:

x̂0 = π(j)− π(i) (28)

függvényt.Ez tenzió triviálisan, hiszen egy potenciálból származtattuk. Tehát az MIP

(Mixed Integer Program: kevert egészérték¶ programozási feladat) probléma:

minc(x̂+ pT )

Γx̂ = 0

la ≤ x̂+ pT ≤ uap ∈ ZA

1. Lemma (Sera�ni és Ukovich). Ha nem π : V → [0, T ), hanem π : V →Q menetrendet keresünk, akkor bármeny H feszít®fára bármeny π menetrendhezlétezik olyan is, amire p = 0 minden élre.

1.6.2. Pesp által fedett menetrendtervezési lépések

Mivel az el®z® szekciókban meghatároztuk az utasok forgalmát, a vonatok út-vonalát, és gyakoriságát, ezért ezek adottak.

A három legelemibb dolog, amit modelleznünk kell, az az

• utazás/mozgás: az adott vonalon mennyi ideig megy a vonat

• megállás: azaz mikor áll meg a vonat, és mennyi ideig várakozik

• átszállás: mennyi ideig kell várakozni ha egyik vonatról egy másikra aka-runk átszállni. Adott egy minimális átszállási id®, hiszen ha a vonatoknem ugyanazon a vágányon állnak meg, akkor az utasoknak át kell sétál-niuk egyik peronról a másikra.

Budapest Gy®r Bécs[1:22,1:22] [1:16,1:16][2,6]

3. ábra. Példa járatok modellezésére: a halvány vonal a megállási él, a vastagabbnyilak a vonat közlekedését írják le.

A megállási éleknek általában pici a fesztávja: azaz a minimum és maximumvárakozási id® közötti különbség, hiszen egy sok helyen megálló vonatnál ezen

11

Page 13: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

fesztávok összeadódnak, tehát a modell felírása után az indulási id® ismeretébenmég csak körülbelül sem tudnánk, mikor érkezik meg a vonat. Ezért érdemesezt a fesztávot nagy állomásoknál picire venni, kis állomásoknál nullára venni(azaz megmondjuk el®re, mennyi ideig várakozik a vonat).

További el®nye a 0 fesztávnak, hogy ilyenkor a modellünket tovább tudjukegyszer¶síteni. Hiszen legyen a = (i, j) 0 fesztávú él. Ekkor összehúzhatjuk azélt j csúccsal, éspedig úgy, hogy j minden élét ua = la értékkel eltoljuk (mindenintervallumot eltolunk). Továbbá párhuzamos él elhagyható, ha intervallumatartalmazza a másik intervallumot (azaz a1 = (i, j), a2 = (i, j) és [la1 , ua1 ] ⊆[la2 , ua2 ] ekkor a2 elhagyható).

Ha k vonat közlekedik egy adott vonalon, és egy egyenletes/kiegyensúlyo-zott menetrendet szeretnénk, könnyen megtehetjük ezt: vegyünk egy új élet azindulási csúcstól [la, ua] = [T/k, T − T/k] korlátokkal. Ez az él "kényszeríti" avonatokat egyenl® id®közönként indulni.

Az egyszer¶ség kedvéért tegyük fel, hogy minden vonat mozgási tulajdon-ságra ugyan olyan típusú: azaz ugyanolyan a gyorsulása, végsebessége stb.

Követési távolság: A biztonságos közlekedés céljából bizonyos esetekbenszükség van követési távolság beállítására. Ezt természetes módon egy pluszél felvételével tudjuk megtenni [l, T − l] intervallummal, azon vágány elejéhez,vagy végéhez toldva, amit több vonat használ. Így biztosan nem lesz ütközés,hiszen a vonatok ugyan olyan sebességgel közlekednek, azaz nem tudják meg-el®zni egymást, és a követési távolságot is betartják a biztonsági él bevezetésemiatt.

Szembemen® forgalom esetén a legegyszer¶bb példa: Tegyük fel, hogy a hár-mas metró felújítása során az egyik alagutat teljes egészében lezárják a DeákFerenc tért®l Újpest-Központ ig. Ezért ezen a szakaszon csak az egyik alag-útban közlekedik a metró (oda-vissza). Itt a menetid® 16 perc a megfordu-lási id® 4 perc, és egy 2 perces biztonsági távolságot szeretnénk minden sze-relvény között. Ekkor egy új élet veszünk fel Újpest-Központ-nál az alábbi[la, ua] = [2, T − (16 + 16)] = [2, T − 32] korlátokkal.

Amennyiben egy vonat,f egységgel gyorsabb egy másik vonatnál, úgy [d +f, T − d] korlátokat kell közéjük tenni, hogy betartsuk a biztonsági rést.

Biztosan tapasztaltuk már, hogy ha egy kétsávos útból lezárnak egy sávot, ésegy sávon engedik a forgalmat, akkor nem a felére, hanem annál nagyobb mér-tékben visszaesik az út kapacitása. S®t és nem is mindegy, a váltakozó forgalmathogyan szabályozzuk. Ha ugyanis a forgalmat "csomókban" engedjük (azaz egyirányból egyszerre többet is), adott id® alatt nagyobb forgalmat tudunk átenged-ni, mintha egyesével engednénk az autókat/vonatokat. De nem csak egyirányúútszakaszokra, hanem többsebességes útszakaszokon (ahol ICE/IC és személy-vonat is egy vágányon közlekedik) is célszer¶ "csomósítani" a vonatokat. Tehátnem mindegy, milyen sorrendben indítjuk a vonatainkat, mert ett®l függ®en amenetrend optimalitása is változhat.

Szerencsére a PESP modellbe ezt is könnyen belevehetjük. Vegyünk ugyan-is fel egy plusz csúcsot, és i1, ..., in ∈ V a "csomósítani kívánt vonatok" azonidejét jelzi, amikor a közös vágányra lépnek. A plusz csúcsból vegyünk minden

12

Page 14: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

BpÉszaki

Déli

BpÉszaki

Déli

[5,10]

[5,10][2,58]

4. ábra. Példa járatok szétkapcsolására

i1, ..., in csúcsba egy élet [0, T/2 − t] korlátokkal, ahol t a vágányon az adottvonatok menetideje (csak azonos tulajdonságú vonatokat szoktunk "csomósíta-ni"). És így nem is kell meghatároznunk a "csomósított" vonatok sorrendjét,amit esetleg már egy fels®bb tervezési szinten hoztunk.

Egy vasúthálózatban el®fordulhatnak olyan megoldások is, hogy egy vonat-szerelvényt egy állomáson szétvágnak két szerelvénnyé, és más útvonalon foly-tatják útjukat, vagy fordítva, két külön útról összecsatlakoztatják ®ket Gon-doljunk csak Budapest-Balaton útvonalakra: Északi-Déli part szerint szét isbonthatnák a szerelvényeket, és így az utasoknak nem kellene átszállniuk. Ezüzemeltetési költségek szempontjából is meggondolandó, de sokkal inkább túl-terhelt útvonalakon lehet hasznát venni, hiszen két külön vonat között akár többperc biztonsági rés is lehet, míg ha összekapcsoljuk ®ket; 0.

Az ábra mutatja, egy ilyen összekapcsoló csúcsot csak szét kell szedni 3csúcsba, két átszállási él id®korlátja természetesen adódik, míg a harmadik élbehúzásával biztosítjuk, hogy például 2 perc biztonsági réssel induljanak el azállomásról. S®t ezzel a megoldással még csak a szétkapcsolt vonatok indulásisorrendjét sem kellett meghatároznunk.

13

Page 15: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

1.7. A járm¶vek elosztása

Ez a negyedik tervezési lépés, amely már az operációs tervezési fázisba esik.Általában egy �x menetrenddel dolgozunk, azaz az egyes járatokra meg vanhatározva a kezdeti- és végállomás, valamint az induló, és érkez® buszok id®-pontja is. A járm¶veink kezdetben, és a munka befejeztével (ugyan abba) agarázsba térnek vissza. A célunk az, hogy költséghatékonyan határozzuk megaz egyes buszok feladatait/útvonalait, hogy minden menetrend szerinti járatonegy (és csak egy) járm¶ haladjon végig, miközben ez a közlekedési társaságnaka legkevesebb költségbe kerüljön (például: minimális járm¶ üzembe helyezése,minimális üzemanyag fogyasztása stb.).

Tehát a feladataink, amelyeket el kell végezni, két helykoordináta (kiindu-lási és végcél) valamint két id®koordináta (kiindulási és végcél id®pont) jellem-zi. Ezeket menetrend szerinti járatoknak (timetable trip) nevezzük. Hogyezeket el lehet-e végezni egymás után, az üres járatok adják meg a kapcso-latot. Tipikusan ilyen járat a garázs, és az els®/utolsó járat közötti út, eztpull-in/pull-out trip -nek nevezi a szakirodalom. De természetesen az is üresjáratnak min®sül, ha a végállomáson megfordul a járm¶.

Nem minden járm¶ közlekedhet minden útvonalon (a csuklós busz nem köz-lekedhet kis utcákon, hanem a nagyforgalmú járatokat kell szolgálnia). S®tminden garázsra meg van határozva, milyen típusú járm¶vek parkolhatnak itt,és típusonként vagy összesen adva van egy kapacitáskorlát.

Egy járm¶ végállomások közötti üres járatok és menetrend szerinti járatokegymásutáni f¶zését blokkoknak hívjuk.

Egy közlekedési társaságnak az alábbi költségei keletkezhetnek: �x költséga járm¶venként (fenntartási, tárolási, lízing költség), valamint a garázson kí-vül töltött id® és távolság függvényében további költségek (emberi er®forrás,üzemanyag stb.).

Összefoglalva célunk tehát egy blokkokból álló olyan halmaz meghatározása,mely elvégzi az összes feladatot, miközben az említett költségeket minimalizálja.

Modell: LegyenG = (V,A), ahol a csúcsokmenetrend-szerinti útvonalaknak,az élek pedig az üres útvonalaknak felelnek meg, da költséggel (minden da ∈ Aélre). Természetesen a menetrend-szerinti útvonalaknak is meghatározhatnánkköltséget, de mivel úgyis mindegyiket teljesíteni kell, ezért nincs értelme ebbe amodellbe bevenni. Legyen Ag azon élek halmaza, melyeken a g depóból indulójárm¶vek haladhatnak. Azon éleket, amelyek v csúcsból be- illetve kiindulnak,és g depóból induló járm¶vek haladhatnak rajta, δin/outg -nak jelöljük.

Tehát formálisan a feladatunk:(Járm¶elosztás)

min dT y

y(δing (v))− y(δoutg (v)) = 0 ∀v ∈ V \ {s, t}, g ∈ Gy(δing (v)) = 1 ∀v ∈ Vy(δoutg (v)) ≤ kg ∀v ∈ V,∀g ∈ G

y ∈ {0, 1}A

Lényegében egy többtermékes folyamot írtunk le, itt az els® három feltételezt fejezi ki. A negyedik feltétel pedig a depó tárolási kapacitása.

14

Page 16: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

4. Megjegyzés. Lehetséges a járm¶vek elosztását összevonni/beleépíteni a me-netrendtervezésbe, hogy még optimálisabb/költséghatékonyabb közlekedési rend-szert kapjunk. Például megengedhetünk a menetrendben kisebb módosításokat(shiftelés).

1.8. Személyzetelosztás

Az eddigiekben sikeresen megalkottunk egy közlekedési hálózatot, meghatároz-tuk a járatok útvonalát, menetrendjét, és végül pedig a rendelkezésre álló jár-m¶veket beosztottuk menetrend szerint. Már csak az emberi er®forrás elosztásamaradt. Ez nagyon hasonló az el®bb tárgyalt problémához, azonban mivel nemgépekr®l beszélünk, más korlátozásokat kell �gyelembe vennünk. Mint példáulmegfelel® pihen®id® közbeiktatása, az esetleges �x munkaid® betartása, vagyesetleg túlórák minimalizálása, és egyéb munkaügyi el®írások betartása. Továb-bá a járm¶vezet®knek egyéb feladatokat is el kell látniuk, mint a járm¶ átnézése(sign in/o� time), üzembe helyezése, különböz® naplók vezetése, az utazásravaló felkészülés (lásd például légitársaságok pilótái).

1.8.1. Rotáció

Az el®bbi rész után azt gondolhatnánk, hogy most már nincs mit szervezni aszemélyzeten, azonban ez nem így van. Ugyanis beosztottuk a személyzetün-ket feladatokra, az igényeiknek, és a jogszabályoknak megfelel®en. Azonban afeladatokat névtelen sof®röknek osztottuk be. Ez azért probléma, mert el®for-dulhat, hogy egy sof®r egyik nap sokáig dolgozik,akkor másnap nem kezdhettúl korán, hiszen pihen®id®re van szüksége. Ezért egyes közlekedési társaságokúgynevezett rotációs rendszerben osztják be járm¶vezet®iket (lásd 1.8.1 ábra).

Hétf® Kedd Szerda Csütürtök Péntek Szombat Vasárnap1 éjszakás éjszakás nappali nappali délel®tti délel®tti2 éjszakás éjszakás nappali nappali délel®tti délel®tti3 éjszakás éjszakás nappali nappali délel®tti4 délel®tti éjszakás éjszakás nappali nappali5 délel®tti délel®tti éjszakás éjszakás nappali6 nappali délel®tti délel®tti éjszakás éjszakás7 nappali nappali délel®tti délel®tti éjszakás8 éjszakás nappali nappali délel®tti délel®tti

1. táblázat. Példa rotációra (A m¶szakokat rotációs rendszerben cserélik)

15

Page 17: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

2. Nagy IP feladatok megoldása

Az el®z® részben sok egészérték¶ programozási feladatot írtunk fel, ebben arészben ezek megoldásával foglalkozunk. A következ®kben, ha nem mondjuk akövetkez® általános egészérték¶ programozási feladattal foglalkozunk:

min cx

Ax ≤ bl ≤ x ≤ uxj ∈ Z;∀j ∈ S ⊆ N;

(29)

2. De�níció (LP fízibilis megoldás). Adott egy egészérték¶ feladat. Ennekcsak az optimalitást nem teljesít® x megoldását fízibilis megoldásnak nevezzük.

3. De�níció (IP fízibilis megoldás). Adva van egy egészérték¶ programozásifeladat, amely esetleg x ∈ ZS ×Rn−S, azaz csak S indexhalmaz egészérték¶ségétköveteli meg. Ennek egy IP fízibilis (és nem feltétlen LP fízibilis) megoldása egyolyan x vektor, melynek S koordinátái egészek.

Az LP és IP fízibilis megoldást egyszer¶en fízibilis megoldásnak nevezzük.

4. De�níció (lock). Egy (29)-cel megadott IP feladat x megoldás j-edik koor-dinátához tartozó 'lock' száma azon feltételek száma, mely xj kerekítése soránmegsérülhetnek.

2.1. Branch and Bound

Talán a legáltalánosabb ismert, egészérték¶ programozási feladatokra használtalgoritmus, vagy inkább megoldási séma.

A branch and bound lényege, hogy a diszkrét megoldási halmazt alproblé-mákra osztja/szétdarabolja ("branch"), majd elvet néhányat ("bound"). Eztrekurzív ismételve addig folyatjuk, amíg meg nem találjuk az optimális megol-dást.

Egy lehetséges séma pszeudókódja:

Data: Adatszerkezet, Az IP feladat LP relaxáltjaResult: Az IP megoldásaAdatszerkezet.push({LP}) while Adatszerkezet 6= ∅ do

Problem=Adatszerkezet.pop() ;if Problem.egész() AND Problem.vizsgáld() then

optimális megoldás frissítése;else

xi=Problem.törtVáltozó();Problemi={Problem} ∪ { branch1} i=1 . . . k;Adatszerkezet.push(Problemi) i=1 . . . k;

end

endAlgorithm 1: Branch and Bound

16

Page 18: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

Itt persze sok múlik az adatszerkezetünkön, hogy melyik problémát fogjakiadni, amikor kérünk egyet t®le (.pop()). Példa ilyen stratégiára (verem/sor):mindig az utolsó/els® betett problémát adja vissza (ilyen típusú kereséssel mély-ségi/szélességi bejárást kapunk).A Problem.vizsgáld() függvény logikai érték¶ függvény, ezzel olyan ágakat vet-hetünk el az algoritmus során, amelyr®l már tudjuk, hogy nem fog optimálismegoldást adni.

5. De�níció (branch and bound fa). Egy olyan gyökeres fa, melynek csú-csai olyan Lp problémák, mely az eredeti Lp problémánkból kaphatunk néhánykorlátozó feltétel hozzáadásával, és egy probléma leszármazottja egy másik prob-lémának, ha származtatható néhány feltétel hozzáadásával.

Ha van jó becslésünk az adott problémára, bizonyos alproblémákat "levág-hatunk". Hiszen például egy ágat levághatjuk, ha Lp relaxáltja nagyobb azeddigi legjobb megoldás költségénél (minimalizációs problémáknál). Ugyan-is ezen az ágon hiába keresnénk egész megoldásokat, az LP relaxáltnál csaknagyobb-egyenl® költség¶t találhatunk, ami nagyob-egyenl® az eddigi optimálismegoldásnál, így biztosan nem lesz optimális. Esetleg ha tudjuk, hogy a gyökércsúcsban az Lp relaxált jól közelíti az Ip megoldást, az olyan alproblémákat islevághatjuk, amelyek el®re megadott (mondjuk 5) százalékkal rosszabb Lp rela-xálttal rendelkeznek a gyökér LP optimumnál.

Ha tehát van egy közel optimális Ip megoldásunk, általában sok alproblé-mát "levághatunk", így gyorsítjuk algoritmusunkat. Egy ilyen megoldás meg-találására érdekében többféle stratégiánk lehet. Például a branch and boundfában szélességi bejárást végzünk. Azonban ez nagyon sok memóriát igényelhet.Szigorúbb memóriakorlátok mellett a mélységi bejárás alkalmazása gyakoribb,valamilyen alámerülési heurisztikával. Vagy ezeket kombinálhatjuk is: amígvan elég memóriánk szélességi bejárást végzünk, mikor már nem sok maradt,a kigenerált csúcsokból mélységi bejárást indítunk egymás után (a sorrendetokosan/heurisztikusan megválasztva).

2.1.1. Branch and Cut

Ezt olyan feladatok megoldásánál használhatjuk, ahol nagyon sok(például ex-ponenciálisan sok) korlátozó feltétel van. Ennek az algoritmusnak az alapjaa branch and bound, azonban a sok korlátozó feltétel miatt az Lp megoldásahosszadalmas lehet. Ezért kezdetben sorok csak egy alkalmasan választott rész-halmazával foglalkozunk. Ha a branch and bound fában a részprobléma egymegoldáshoz jutunk, akkor megnézzük, teljesíti-e az részprobléma megoldásaaz összes feltétel. Ha nem, akkor a részproblémához hozzáadunk néhány sért®sort,és folytatjuk az eljárást.

2.1.2. Branch and Price

Tipikusan olyan feladatokra alkalmazható, melyekre nagyon sok változónk van.Ez a branch and bound egy oszlopgenerálós változata. A Branch and Cut algo-ritmushoz hasonlóan m¶ködik, csak a kiindulási részprobléma itt oszlopok egy

17

Page 19: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

alkalmasan megválasztott részhalmazából áll. Az algoritmus során a rész LP-hez az olyan oszlopokat vesszük hozzá, amelyeknek a redukált költsége negatív.

A Branch and Price és Branch and Cut nyilván akkor m¶ködnek jól, ha azalkalmas oszlopok/sorok generálását gyorsan (polinomiális id®ben) meg tudjuktenni, valamint a kezd®problémát jól meg tudjuk választani, amely nem túl sokoszlopot/sort tartalmaz, és viszonylag nem is kell túl sok oszlop/sorgenerálástvégezni.

2.1.3. Diving heurisztikák

Az el®z®ekben leírtam, miért is fontos egy fízibilis megoldást találni, minél gyor-sabban, hogy a Branch and Bound minél hatékonyabb legyen. Tehát ebben arészben olyan heurisztikákat mutatok be, amely egy ilyen fízibilis megoldásttalál, lehet®leg minél optimálisabbat.

A heurisztikák mélységi bejárással egy fízibilis, és minél optimálisabb meg-oldás felé törekednek, úgy, hogy a branch and bound fában ígéretes változókatkerekítenek a megfelel® irányba.

De el®tte vezessünk be néhány fogalmat az egyszer¶bb tárgyalás kedvéért:

6. De�níció (legközelebbi egész). Legyen xj törtváltozó.Az bxj + 0.5c egészszámot az xj-hez tartozó legközelebbi egésznek hívjuk.

7. De�níció (töredékrész). Egy xj tört koordináta töredékrészén (nem össze-tévesztend® a törtrésszel) |xj − bxj + 0.5c| számot értjük. Azaz a töredékrész alegközelebbi egészt®l való távolság. A továbbiakban f(xj)-ként jelöljük.

8. De�níció (triviálisan le/felkerekítés). Egy ( 29)-el adott IP egy xj vál-tozója triviálisan lefelé kerekíthet®, ha A.j ≥ 0.Hasonlóan egy xj változó triviálisan felfelé kerekíthet®, ha A.j ≤ 0.

• Töredékrészes módszer: Addig branchel a minimális töredékrész vál-tozó mentén a legközelebbi változó felé, amíg van egész változó, vagy amíginfízibilissé nem válik a megoldás.

• Együttható módszer: Azon koordinátát kerekítjük a megfelel® irányba,melynek a 'lock' száma a legkisebb. Ha több ilyen is van, akkor a legkisebbtöredékrész¶t választjuk.

• Lineáris keresés: Legyen x̂ az branch and bound fa gyökerében lev® LPrelaxált megoldása, és x̃ az aktuális csúcsban lev® megoldás xj = k szerintkerekítünk, melyre a s= x̂x̃ szakasz el®ször metszi az xj = k hipersíkot.

• Vectorlength módszer: Ez a módszer Set Packing problémákra alkal-mazható, ami a valóságban gyakran el®forduló problématípus. A Set pac-king probléma:

(SPP )

min cx

Ax = 1

x ∈ {0, 1}n

ahol A ∈ {0, 1}m×n

18

Page 20: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

Ennél a feladatnál ha egy tört változót 1-re �xálunk, akkor az új Lp megol-dásban legalább egy másik változó egészre (0-ra) állítódik, hiszen A {0, 1}mátrix, és a sorösszeg 1.Azt a j. koordinátát állítjuk 1-re, amire

min([x̄j ]∗ − x̄j) ∗ cj|{aij 6= 0}|

(30)

felveszi minimumát.Ahol

[x̄j ]∗ =

{bx̄jc if cj ≥ 0

dx̄je if cj ≤ 0(31)

Vagyis afelé próbálunk kerekíteni, amerre a célfüggvény kevésbé romlik,és a nullára állítható változók száma egyre nagyobb (Hiszen xj = 1 esetén∀i : aij = 1 =⇒ xj = 0,mert

∑mi=1 aij = 1).

Továbbá bármely eddigi heurisztikára igaz, hogy érdemes (ha lehet) binárisváltozók mentén kerekíteni, hiszen ez �xálást jelent, így elkerülhetjük egy nembináris változó többszöri korlátozását. Valamint bináris változók a modellekben,és az eredmény szempontjából is általában fontos szerepet játszanak. Például ajárattervezés 2. modelljében (1.5.2) el®ször x bináris változóval eldöntöttük, azadott járatot bevesszük-e a megoldásba, és egy másik változóval döntöttük csakel, milyen gyakorisággal közlekedik. Így ha el®ször a bináris változók menténbranchelünk, akkor megmondjuk, melyik járatot választjuk is be a megoldásba,így a megmaradt jóval kevesebb járat gyakoriságait kell csak úgy megválasztani,hogy az adott forgalmat elvezessék.

5. Megjegyzés. Az el®bbi heurisztikák akár bejárási technikák is lehetnek, hi-szen csak azt mondták meg, egy adott csúcsában a branch and bound fának melyikágán haladjunk egy fízibilis, vagy közel optimális megoldás megtalálása érdeké-ben.

2.1.4. Simple Feasibility Pump

A Feasibility Pump [6] fejlesztették ki el®ször bináris problémákra, majd [7]fejlesztették tovább általános egészérték¶ problémákra. Ennek a primál heu-risztikának a lényege, hogy két sorozatot de�niál;

• egy Lp fízibilis pontokból állót, amely általában nem IP fízibilis

• és egy IP fízibilis pontokból állót, amely nem feltétlen LP fízibilis.

A heurisztika szerint ezek a sorozatok konvergálnak, és a határérték ezek szerintmár IP, és LP fízibilis is lesz.

9. De�níció ( S halmazra vett egészrész). Legyen S ⊆ N.

[x]S :=

{[xj + 0.5] ha j ∈ Sxj ha j /∈ S

(32)

19

Page 21: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

10. De�níció ( S halmazra vett L1 távolság). Legyen S ⊆ N.

δS(x, y) :=∑j∈S|xj − yj | (33)

Valamint hasonlóan fS(x) :=∑j∈S f(xj) ahol már f(xj) töredékrészt már de-

�niáltuk.

Az eljárás menete a következ®: megoldjuk a feladat LP relaxáltját, jelöl-jük ezt x̄-al. Ehhez megtaláljuk a legközelebbi egész megoldást: x̃ = [x]S aholS = { bináris változók} vagy S = { egész változók}. Ha x̃ fízibilis, megál-lunk. Különben egy újabb LP feladat megoldásával keressük az x̃-hoz δS(x, x̃)távolság szerinti legközelebbi x̄1 pontot. Majd elölr®l addig ismételjük ezt azeljárást, amíg fízibilis megoldást nem kapunk, vagy egy bizonyos id®korlátot elnem érünk.

Az algoritmus pszeudókódja:

Data:x̄: LP fízibilis megoldásmaxIter: maximális iterációszámResult: Az IP egy fízibilis megoldása, vagy hogy sikertelen volt az

algoritmuswhile i<maxIter do

x̃ := [x̄]S ;if x̃ LP fízibilis then

break;end

x̄ = {x|δS(x, x̃)minimális és x LP fízibilis};end

Algorithm 2: Feasibility Pump

Ahhoz hogy meghatározzuk

x̄ = {x|δS(x, x̃) minimális, és x LP fízibilis} (34)

pontot, meg kell oldanunk a következ® LP feladatot:

min∑

j∈S:x̃j=lj

(xj − lj) +∑

j∈S:x̃j=uj

(uj − xj) +∑

j∈S:lj<x̃j<uj

dj (35)

Ax ≤ b (36)

d ≥ x− x̃ (37)

d ≥ x̃− x (38)

l ≤ x ≤ u. (39)

Ez látszik hogy jó, hiszen a egy optimális megoldás esetén dj (37),(38) közülaz egyiket egyenl®séggel teljesíti, így x valóban x̃-hoz legközelebbi LP fízibilismegoldás lesz. Természetesen ha az egész változóink binárisak, akkor d-re nincsszükségünk, ugyanis a célfüggvényben a harmadik szumma j ∈ S : lj < x̃j < uj-re megy, ami üres halmaz, hiszen lj , x̃j , uj ∈ {0, 1}, így mindkét egyenl®tlenség

20

Page 22: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

nem teljesülhet. [6] szerz®i azt javasolják, osszuk három fázisra az eljárást.

Az els® fázisban csak a nem bináris egész változókat relaxáljuk így S = B :={ bináris változók }. Az eljárás

• vagy egy fízibilis megoldás megtalálása után áll meg,

• vagy egy bizonyos abszolút számú iterációszám elérése után,

• vagy egy bizonyos számú olyan iteráció után, amikor a törekékrészek össze-ge (fs(x)) nem csökken mondjuk p % -nál nagyobb mértékben. Ezzel el-kerülhetjük olyan megoldások keresését, amelyek csak kevéssé mozdítanakminket a kit¶zött cél irányába.

A második fázisban az egész változókat akarjuk kerekíteni, azaz S = I := { egészváltozók }. Azért választottuk szét az els® két fázist, mert abban reménykedünk,hogy az els® fázisban sok nem bináris egész változót sikerült egészre állítani, ígycsak kevés új dj változót kell bevezetnünk. Addig futtatjuk az eljárásunkat,amíg egy IP, és LP fízibilis megoldást nem találunk, vagy egy bizonyos iterációshatárt el nem értünk a fentiekhez hasonlóan.

Az utolsó fázisban azt reméljük, hogy a második fázisban kapott x̃ mármajdnem fízibilis, így a környezetében találunk egy jó fízibilis megoldást. Akörnyezetben lev® megoldások átvizsgálásához, az alábbi MIP problémát oldjukmeg:

min δI(x, x̃)

Ax ≤ bd ≥ x− x̃d ≥ x̃− xl ≤ x ≤ u

xj ∈ Z; ∀j ∈ I.

2.1.5. Objective Feasibility Pump

A Simple Feasibility Pump a gyakorlatban elég hatékonynak bizonyult egy fízibi-lis megoldás megtalálásában, azonban gyenge primál megoldást nyújt. Jóllehetmert a fenti algoritmus csak kiindulása során veszi �gyelembe a célfüggvényt:csak a kezdeti x̄ LP optimum megtalálásakor. Ezen úgy lehet segíteni, hogy atávolságfüggvénybe beépítjük c-t, ezáltal remélve hogy a heurisztika jobban azoptimalitás felé mozdul.

Tehát δS(., x̃)-t lecseréljük; δS(., x̃) és c konvex kombinációjára:

δSα(x, x̃) := (1− α)δS(x, x̃) + α

√|S|‖c‖

cTx (40)

Tehát az algoritmus ugyan az, csak más távolságfüggvényt alkalmazunk.Sajnos az optimalitás növelése a fízibilitás terhére tehet® meg. Így az algorit-mus el®rehaladtával érdemes c hatását csökkenteni, ezt pedig α csökkentéséveltehetjük meg, ennek egyik módja, ha minden i iterációban αi := βi valamilyen

21

Page 23: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

β ∈ [0, 1) valós számra. Természetesen c ≡ 0 vagy β ≡ 0 a Simple Feasibi-lity Pump algoritmust adja vissza (c ≡ 0-t azért is érdemes külön venni, mertδSα(x, x̃) de�níciójában 0-val osztanánk ...) .

Bár a leírt algoritmus csak egy heurisztika, ezért nem is várunk t®le mindigmegoldást, még inkább nem optimális megoldást. De van egy olyan eshet®ség,amit érdemes orvosolni, éspedig a ciklizálás. Azaz az algoritmus visszatéréseugyan abba a pontba. Különösen fontos ez a Simple Feasibility Pump esetében,ugyanis ha ugyanabba a x̃ egész változóba értünk vissza, akkor ugyanabba a x̄törtváltozó lesz ehhez a legközelebb, mint az els® alkalommal. Így az algorit-mus ciklizál, és nem lesz esélye egy fízibilis megoldás megtalálására. A hibátkétféleképpen próbáljuk orvosolni:

• x̄ néhány változóját random fel-lefelé toljuk el

• ha a kerekítés ismét x̃ lesz, akkor pedig néhány nagy töredékrész¶ változóta távolabbi egész felé kerekítünk.

Majd ezután folytatjuk az algoritmust.

Az Objective Feasibility Pump is visszatérhet ugyan abba az x̃ csúcsba (azels® és a második látogatás it1, it2 iterációban történjen). Azonban a távolság-függvény nem ugyan az a két lépés során (δSαit1

(x, x̃), és δSαit2(x, x̃)), így a leg-

közelebbi fízibilis csúcs x̄ sem lesz feltétlen ugyanaz. Így tehát csak δSαit1(x, x̃),

és δSαit2(x, x̃) nagymérték¶ egyezése (azaz αit1−αit2 ≤ δ0; δ0 ∈ (0, 1)) során kell

a fenti javítási módszert alkalmazni.

22

Page 24: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

2.2. Rapid Branching

A Rapid Branching egy hatékony branch and bound heurisztika, amit f®leg nagy-méret¶ tömegközlekedési problémák megoldására használnak. Eredetileg Wei-der [8] használta ezt az algoritmust összehangolt személyzet és járm¶elosztásra.De sikeresen alkalmazta Borndörfer [9] track allocation és egyéb [10] problémákmegoldására is.

A továbbiakban az alapproblémánk egy hálózatban éleknek valamilyen rész-halmazát kell megtalálnunk (általában utak és körök unióját), valamilyen c költ-ségfüggvény mellett. A probléma méretét a hálózat csúcsszámában mérjük.

A Rapid Branching egyik ötlete, hogy a célfüggvény ügyes módosításával afeladatott az egészérték¶ megoldások felé tereli (Perturbation Branching). Más-részt megpróbál minél több koordinátát 1-re rögzíteni. Ezt persze nem mindig jóötlet, ezt felügyeljük egy bináris féle kereséssel: binary search barnching. És ter-mészetesen LP approximációs technikákat is felhasználhatunk, hogy gyorsítsukaz algoritmust.

A

min{cTx|Ax = b, x ∈ {0, 1}n} (41)

típusú problémákkal foglalkozunk (A ∈ Rm×m, b ∈ Rm), ahol n nagyságren-dekkel nagyobb, mint m (például n a hálózat csúcsainak lineáris, m exponen-ciális függvénye). Emiatt, hogy kezelni tudjuk a problémát, oszlopgenerálástis alkalmaznunk kell az algoritmus során (a generált sorok indexeinek halmaza:N ⊆ N). Mivel nagy problémákkal foglalkozunk, nem nagy megszorítás, ha fel-tesszük, hogy az LP approximáció jól közelíti az IP optimumot.

• (IP)(l, u) minl≤x≤u {cTx : Ax = b, x ∈ {0, 1}n}

• (RIP)(l, u) legyen (IP)(l, u) megszorítása N koordinátákra.

• (MLP)(c, l, u) az (IP)(l, u) probléma LP relaxáltja.

• (RMLP)(c, l, u) (MLP)(c, l, u) megszorítása N koordinátákra.

Mint már ezel®tt megemlítettem, a célfüggvényt perturbálni fogjuk az al-goritmus során (azt remélve, a perturbált célfüggvénnyel f I(x) csökken), ezértkell MLP, RMLP-hez paraméterként hozzáadni egy célfüggvényt.

Célunk egy minél jobb IP megoldás megtalálása, ezt egy IP(0, 1) gyöker¶fából fogjuk indítani, melynek csúcsai IP(l, u). A fa bejárása mélységi jelleg¶,a megfelel® irányt a perturbation branch fogja megadni az adott csúcsban, az-az néhány változót �xálunk l és u segítségével. Ahogyan a branch and boundalgoritmus pszeudókódjában is jeleztük, minden csúcsot analizálunk, érdemes-eebbe az irányba tovább keresnünk egy jó IP megoldás érdekében.

A perturbation branching tipikusan sok változót ad vissza (k darabot), ami-ket �xálásra javasol. Ha kés®bb kiderül, valamiért mégsem érdemes az összes(k) javasolt változót �xálni, akkor megpróbáljuk a k/2 legígéretesebb változót�xálni. Ha ez is soknak bizonyul, k/4 változót �xálunk, és így tovább... Azaz

23

Page 25: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

"bináris módon" próbáljuk megkeresni melyik az az l egész szám, amennyi vál-tozót érdemes lerögzíteni.

A Rapid Branching pszeudókódja:

Data: IP feladat, és egy δ tolerancia küszöbResult: Sikeres futás esetén x∗ megoldás, és az optimalitást bizonyító lb

alsó korlát, amire fenn kell hogy álljon lb+ δ ≥ cTxS0 :=IP feladat;ub∗ :=∞; lb∗ := −∞;i := 0;while S 6= ∅ do

set Ni ∈ Si /*binary search alapján*/ ;compute lbi ≤ minx∈Ni

cTxi ;if xi ∈ Ni megoldást találtunk then

ubi := cTxi;ub∗ = min1≤k≤i ubk;x∗ := argmin1≤k≤ic

Txk;else

ubi :=∞;endif lbi ≥ ub∗ then

Ezt az ágat nem érdemes vizsgálni: Si+1 := Si \Ni;i := i+ 1;continue;

endlb∗ := min{lbk : Nk ∈ Si};if lb∗ + δ ≥ ub∗ then

Egy elég jó megoldást találtunk, így megállhatunk.break;

endA perturbáció branching:compute ∪kij=1Q

ji , 1 ≤ j ≤ ki ;

Si+1 = (Si \ {Ni}) ∪ki

j=1 Qji ;

i := i+ 1;end

Algorithm 3: Rapid Branching, [10] nyomán

Mivel mi csak egy közel optimális megoldást keresünk, Ni szétbontásábólnem fogjuk az összeset végigvizsgálni, arra fogjuk használni a perturbation bran-ching eljárást, hogy pár igéreteset kiválasszunk ezek közül.

2.2.1. Perturbation Branching

A perturbation branching egy sor MLP-t old meg, miközben a célfüggvényt úgyváltoztatja (ci, i=0,1,2 . . .), hogy a megoldás egészérték¶ség felé mozduljon (pél-dául mérjük ezt a koordináták töredékrész összegével: f I(x), ami ezek szerintcsökken). Az algoritmus során azoknak a koordinátáknak a költségét csökkent-

24

Page 26: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

jük, amelyek közel vannak egyhez. A célfüggvény perturbációja:

c0j := cj ;j ∈ Ncij + 1 := cij + cjαx

2j ;j ∈ N j = 0, 1, 2, . . .

Azaz így elérjük, hogy az 1-hez közel lev® változók 1 felé mozduljanak el. Afolyamat sikerességét a

v(xi) := cTx− δ|B(xi)| (42)

méri, ahol B(xi) := {majdnem 1 változók} = {j ∈ N : xij > 1 − ε}. Aholδ, ε segítségével az egészérték¶séget hangolhatjuk (például δ = 1, ε = 0.1).

Ezt addig folytatjuk, amíg ez a tesztfüggvény csökken, ha már egy bizo-nyos iteráció után sem csökken, a legnagyobb olyan indexet �xáljuk 1-re, és acélfüggvényét 0-ra állítjuk. Ha ez sem segít leállítjuk az algoritmust.

2.2.2. Binary Search Branching

A preturbation branching egy B∗ koordináták egy halmazát jelöli ki, amit arrajavasol, hogy minden i ∈ B∗-ra xj alsó korlátját 1-re �xáljuk. De mint ezt márírtam, nem mindig célszer¶ az összes változót �xálni, mert így gyorsan infízibilismegoldásokhoz juthatunk, és messze kerülünk az optimális megoldástól.

Ezért is építünk be egy olyan mechanizmust, ami az ilyen eltévedések utána 'megfelel®' csúcshoz vezet minket vissza. Tehát az algoritmus során egyRMLP(c, l, u) csúcsban adva van egy B∗ indexhalmaz, K := |B∗|. Feltehet-jük hogy B∗ a redukált költség szerint növekv®en van rendezve. Azaz i, j ∈ B∗esetén i < j =⇒ (c − AT y)i ≤ (c − AT y)j ha RMLP(c, l, u) (29) alakban vanmegadva (y a duális vektor). Ekkor

B∗k := i1...ik k = 1...K; (43)

Vizsgáljuk az alábbi alproblémákat:

Pk := minl≤x≤u

{cTx : Ax ≤ b, x ∈ [0, 1]n|xj = 1, j ∈ B∗k} (44)

Így PK komplementere, ha az utolsó feltételben egy változóra is j ∈ B∗k : xj = 0áll fenn. Ezt egy egyszer¶ feltétellel is megfogalmazhatjuk:∑

i∈B∗k

xi ≤ |B∗K | − 1

Ez azonban elronthatja a feladat szerkezetét: sokszor az oszlopgenerálás ezt aspeciális szerkezetet tuja kihasználni, hogy gyorsan tudjon új oszlopot negatívredukált költséggel generálni.

Ezért is inkább |K| részhalmazra fogjuk RMLP(c, l, u)-t szétbontani:

Qk := RMLP (c, l, u) ∩ {x ∈ [0, 1]n|xj = 1, j ∈ B∗k−1 és xi = 0, i ∈ B∗k \B∗k−1}

25

Page 27: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

B∗

P1 Q1

P2 Q2

P3 Q3

P4 Q4

P5 Q5

5. ábra. (Binary Search) csak a pirossal jelölt csúcsokat vizsgálja csak meg aRapid Branching

Így tehát ∪Kk=1(Qk ∪ Pk) =RMLP(c, l, u).

Az algoritmus során az alábbi csúcsokat fogjuk végigvizsgálni (lásd az ábra):

xj = lj = 1,j ∈ B∗k ; k = K, dK/2e, dK/2e, ..., 2, 1.

Tehát a Rapid Branching algoritmusában:

Si+1 = (Si \ {Ni}) ∪ {B∗dK/2e} ∪ {B∗dK/4e} ∪ ... ∪ {B

∗2} ∪ {B∗1}

szerint bontjuk szét Si + 1-et. Így tehát ahelyett hogy sorra végigvizsgálnánk2K csúcsot, csak ennek a logaritmusának megfelel® csúcsot vizsgálunk át.

26

Page 28: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

3. Kitekintés

Ezen szakdolgozat els® része csak közösségi közlekedési problémákat írt fel.Azonban a nem közösségi közlekedés is érdekes témákat rejt: mint például azautós közlekedési lámpákat hogyan állítsuk be. Hogyan állítsuk be a közleke-dési lámpákat, hogy az adott menetrend szerinti busz illetve villamos járatokmindig zöld lámpát kapjanak? Ha nem lehetséges, lehet-e a menetrendet úgymódosítani, hogy ez lehetséges legyen?Meg lehet-e oldani egy adott csomópontban egy adott forgalommal, hogy se-melyik autónak se kelljen lassítania amelyik ott áthalad? Ha nem, átlagosanmennyit kell várakoznia?

A GPS-ek térnyerése kapcsán egyre fontosabb kérdés, ha mindegyik au-tós a legkevesebb id® alatt akar elérni kezd® és végcélja között, egy id® utánmindig ugyan azon az útvonalon érdemes autóznia (szigorú Nash-egyensúly) ?Lehetséges-e bizonyos utcák kiszélesítésével, esetleg lezárásával Nash-egyensúlytlétrehozni? (lásd [11]).

Az önvezet® autók szintén érdekes kérdéseket vethetnek fel. Tegyük fel, hogyaz egyes résztvev®k nem törekednek saját veszteségüket/menetidejüket minima-lizálni (nem 'racionálisak'), vagy esetleg hajlandóak p% pluszveszteséget vállalni,hogy az összforgalom gyorsuljon. Ekkor mennyire lehet felgyorsítani a forgal-mat?

Tehát van még mit tenni egy optimális közlekedés eléréséig...

27

Page 29: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

Hivatkozások

[1] R. Borndörfer, M. Grötschel, and M. E. Pfetsch, Computer-aided Systemsin Public Transport, ch. Models for Line Planning in Public Transport,pp. 363�378. Berlin, Heidelberg: Springer Berlin Heidelberg, 2008.

[2] D. Huisman, �The new dutch timetable: The or revolution,� Interfaces,vol. 39, pp. 6�17, 2009.

[3] P. W. George B. Dantzig, �Decomposition principle for linear programs,�in ATMOS, 1960.

[4] D. Kim and C. Barnhart, Computer-Aided Transit Scheduling: Proceedings,Cambridge, MA, USA, August 1997, ch. Transportation Service NetworkDesign: Models and Algorithms, pp. 259�283. Berlin, Heidelberg: SpringerBerlin Heidelberg, 1999.

[5] P. Sera�ni and Ukovich, �A mathematical for periodic scheduling prob-lems,� SIAM J. Discret. Math., vol. 2, pp. 550�581, Nov. 1989.

[6] F. G. M. Fischetti and A. Lodi, �The feasibility pump,� MathematicalProgramming, p. 91�104, 2005.

[7] L. Bertacco, M. Fischetti, and A. Lodi, �A feasibility pump heuristic forgeneral mixed-integer problems,� Discrete Optimization, vol. 4, no. 1, pp. 63� 76, 2007. Mixed Integer ProgrammingIMA Special Workshop on Mixed-Integer Programming.

[8] S. Weider, Integration of Vehicle and Duty Scheduling in Public Transport.PhD thesis, 2007.

[9] R. Borndörfer, T. Schlechte, and S. Weider, �Railway Track Allocation byRapid Branching,� in 10th Workshop on Algorithmic Approaches for Tran-sportation Modelling, Optimization, and Systems (ATMOS'10) (T. Erle-bach and M. Lübbecke, eds.), vol. 14 of OpenAccess Series in Informatics(OASIcs), pp. 13�23, Schloss Dagstuhl�Leibniz-Zentrum fuer Informatik,2010.

[10] R. Borndörfer, A. Löbel, M. Reuther, T. Schlechte, and S. Weider, �Rapidbranching,� Public Transport, vol. 5, no. 1, pp. 3�23, 2013.

[11] E. Tardos, �Network games,� in Proceedings of the Thirty-sixth AnnualACM Symposium on Theory of Computing, STOC '04, (New York, NY,USA), pp. 341�342, ACM, 2004.

[12] C. Liebchen and R. H. Möhring, Algorithmic Methods for Railway Optimi-zation: International Dagstuhl Workshop, Dagstuhl Castle, Germany, June20-25, 2004, 4th International Workshop, ATMOS 2004, Bergen, Norway,September 16-17, 2004, Revised Selected Papers, ch. The Modeling Powerof the Periodic Event Scheduling Problem: Railway Timetables � andBeyond, pp. 3�40. Berlin, Heidelberg: Springer Berlin Heidelberg, 2007.

[13] T. Berthold, �Primal heuristics for mixed integer programs,� Master's the-sis, Technischen Universität Berlin, 2006.

28

Page 30: Egészérték¶ programozási feladatokweb.cs.elte.hu/blobs/diplomamunkak/bsc_alkmat/2016/...Egészérték programozási feladatok a közlekedés-tervezésben Czifra Domonkos Témvezet®:

[14] C. Barnhart, E. L. Johnson, G. L. Nemhauser, M. W. P. Savelsbergh, andP. H. Vance, �Branch-and-price: Column generation for solving huge integerprograms,� Oper. Res., vol. 46, pp. 316�329, Mar. 1998.

29