# Planning and Scheduling

67

## Full text

(1)

### E

BRNO UNIVERSITY OF TECHNOLOGY

### U

FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS

PL ´ANOV ´AN´I A ROZVRHOV ´AN´I

PLANNING AND SCHEDULING

MASTER’S THESIS

AUTHOR

SUPERVISOR

(2)

### ace

1. Prostudujte problematiku pl´anov´an´ı a rozvrhov´an´ı. Zamˇeˇrte se na aplikaci genetick´ych

algoritm˚u v tvorbˇe rozvrhu pˇridˇelov´an´ı zdroj˚u aktivit´am.

2. Navrhnˇete vhodn´y pˇr´ıklad pro demonstraci problematiky pl´anov´ani a rozvrhov´an´ı.

Pro reprezentaci pl´an˚u pouˇzijte vysoko´urovˇnov´e Petriho s´ıtˇe.

3. Realizujte syst´em pro tvorbu rozvrhu s vyuˇzit´ım genetick´ych algoritm˚u. Vyuˇzijte

existuj´ıc´ı n´astroje pro modelov´an´ı Petriho s´ıtˇemi a pro genetickou optimalizaci.

(3)

### Licenˇcn´ı smlouva

Licenˇcn´ı smlouva je uloˇzena v archivu Fakulty informaˇcn´ıch technologi´ı Vysok´eho uˇcen´ı

(4)

### Abstrakt

Diplomov´a pr´ace se zab´yv´a problematikou optimalizace pl´anov´an´ı a rozvrhov´an´ı. K tomu

se vyuˇz´ıv´a genetick´ych algoritm˚u inspirovan´ych evoluˇcn´ım v´yvojem. Souˇc´ast´ı pr´ace je

se-zn´amen´ı s probl´emem pl´anov´an´ı a rozvrhov´an´ı, genetick´ymi algoritmy a Petriho s´ıtˇemi.

Tˇechto znalost´ı bylo vyuˇzito k vytvoˇren´ı aplikace, kter´a by s vyuˇzit´ım genetick´ych algoritm˚u

dovedla ˇreˇsit pl´anovac´ı probl´emy a v´ysledn´e pl´any pak reprezentovala ˇCasovou Petriho s´ıt´ı.

V z´avˇeru pr´ace jsou prezentov´any dosaˇzen´e v´ysledky a pˇr´ıklady oblasti vyuˇzit´ı.

### Abstract

This thesis deals with optimization problems of planning and scheduling. There are using genetic algorithms which are inspired by evolution process. Main work is familiar with the problem of planning and scheduling, genetic algorithm and Petri nets. This knowledge was used to create applications that would with the use of genetic algorithms was able to solve planning problems and the resulting plans would be represented the Time Petri Net. In conclusion of the this thesis are presented obtained results and examples of field use.

### a slova

pl´anov´an´ı, rozvrhov´an´ı, Job Shop, genetick´e algoritmy, simulace pl´an˚u, Petriho s´ıtˇe, ˇCasov´e

Petriho s´ıtˇe, PNML

### Keywords

planning, scheduling, Job Shop, genetic algorithms, simulations plan, Petri Nets, Time Petri Net, PNML

(5)

### aˇsen´ı

Prohlaˇsuji, ˇze jsem tuto diplomovou pr´aci vypracoval samostatnˇe pod veden´ım Ing.

Vla-dim´ıra Janouˇska, Ph.D. Uvedl jsem vˇsechny liter´arn´ı prameny a publikace, ze kter´ych jsem

ˇ cerpal.

. . . .

Luk´aˇs Hefka

25. kvˇetna 2009

### an´ı

Chtˇel bych t´ımto podˇekovat vedouc´ımu pr´ace Ing. Vladim´ıru Janouˇskovi, Ph.D., za jeho

cenn´e pˇripom´ınky a trpˇelivost, se kterou pr´aci ˇcetl.

c

Luk´aˇs Hefka, 2009.

Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe

in-formaˇcn´ıch technologi´ı. Pr´ace je chr´anˇena autorsk´ym z´akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´

(6)

## Obsah

1 Uvod´ 3

2 Pl´anov´an´ı a rozvrhov´an´ı 5

2.1 Z´akladn´ı pojmy . . . 5

2.1.1 Charakteristiky ´uloh . . . 5

2.1.2 Charakteristiky zdroj˚u . . . 7

2.1.3 Definice rozvrhov´an´ı . . . 7

2.2 Typy rozvrhovac´ıch ´uloh . . . 9

2.3 Grahamova klasifikace . . . 9

2.4 Grafick´a reprezentace probl´em˚u . . . 10

2.5 Job shop scheduling . . . 10

3 Genetick´e algoritmy 14 3.1 Stavebn´ı bloky a teorie sch´emat . . . 15

3.2 Selekce . . . 17

3.2.1 Ruletov´a selekce . . . 18

3.2.2 Poˇradov´a selekce . . . 18

3.2.3 Turnajov´a selekce . . . 18 3.3 Kˇr´ıˇzen´ı . . . 18 3.3.1 Jednobodov´e . . . 19 3.3.2 Dvoubodov´e . . . 19 3.3.3 Uniformn´ı . . . 20 3.4 Mutace . . . 20 3.5 Ohodnocovac´ı funkce . . . 21 3.6 Typy GA . . . 21 4 Petriho s´ıtˇe 23 4.1 Z´akladn´ı koncepty . . . 23

4.2 Form´aln´ı definice . . . 25

4.3 Casov´ˇ e Petriho s´ıtˇe . . . 26

(7)

5 N´avrh programu 28

5.1 Architektura aplikace . . . 28

5.2 Reprezentace probl´emu . . . 30

5.3 Model Genetick´eho algoritmu . . . 32

6 Implementace Genetick´eho algoritmu 34 6.1 K´odov´an´ı probl´emu . . . 34

6.2 Oper´ator kˇr´ıˇzen´ı . . . 35

6.3 Oper´ator mutace . . . 37

7 Simul´ator pl´an˚u 39 8 Transformace pl´an˚u do Petriho s´ıtˇe 43 8.1 Jazyk PNML . . . 43

8.2 Z´akladn´ı prvky jazyka PNML . . . 44

8.2.1 S´ıt’ . . . 44

8.2.2 M´ısto . . . 44

8.2.3 Pˇrechod . . . 45

8.2.4 Hrana . . . 45

8.3 Layout s´ıtˇe . . . 46

9 Testov´an´ı a v´ysledky 48 9.1 Parametry GA . . . 48

9.2 Z´avislost hled´an´ı na zadan´e ´uloze . . . 48

10 Pˇr´ıklady vyuˇzit´ı 52 10.1 Oblast pl´anov´an´ı v´yroby . . . 52

10.2 Oblast managementu projekt˚u . . . 54

11 Z´avˇer 56

A Pl´anov´an´ı v´yroby - v´ysledky 59

(8)

## Uvod

Tato pr´ace si klade za c´ıl sezn´amen´ı s problematikou pl´anov´an´ı a rozvrhov´an´ı, genetick´ymi

algoritmy a teori´ı ˇCasov´ych Petriho s´ıt´ı. Zamˇeˇruje se na aplikaci genetick´ych algoritm˚u pˇri

tvorbˇe rozvrh˚u a pˇridˇelov´an´ı zdroj˚u aktivit´am. Souˇc´ast´ı t´eto pr´ace je n´avrh a

implemen-tace aplikace pro ˇreˇsen´ı pl´anovac´ıch probl´em˚u za pomoci genetick´ych algoritm˚u. Aplikace

bude pro zadan´y probl´em hledat co nejoptim´alnˇejˇs´ı pl´an. Ten bude n´aslednˇe reprezentov´an

v podobˇe ˇCasov´e Petriho s´ıtˇe a pops´an jazykem PNML.

V kapitole 2 jsou uvedeny z´akladn´ı pojmy z oblasti pl´anov´an´ı a rozvrhov´an´ı. Jsou zde

tak´e pops´ana krit´eria pro hled´an´ı pl´an˚u a obecn´e charakteristiky ´uloh a zdroj˚u.

Kapi-tola tak´e obsahuje moˇzn´e typy rozvrhovac´ıch ´uloh a moˇznosti jejich v´ysledn´e reprezentace.

V z´avˇeru kapitoly je pops´an nejrozˇs´ıˇrenˇejˇs´ı rozvrhovac´ı probl´em Job Shop. Kapitola 3 uv´ad´ı

do problematiky genetick´ych algoritm˚u. Definuje z´akladn´ı pojmy a vysvˇetluje samotn´y

princip GA. Uv´ad´ı metody selekce, typy kˇr´ıˇzen´ı a typy mutac´ı. Kapitola tak´e pˇredstavuje

nezn´amˇejˇs´ı typy genetick´ych algoritm˚u. Posledn´ı teoretickou kapitolou je kapitola 4 jej´ımˇz

c´ılem je sezn´amen´ı se z´akladn´ımi koncepty Petriho s´ıt´ı. Jsou zde pops´any form´aln´ı

de-finice potˇrebn´e pro ´uvod do studia Petriho s´ıt´ı. Kapitola se tak´e vˇenuje rozˇs´ıˇren´e tˇr´ıdˇe

klasick´ych Petriho s´ıt´ı - ˇCasov´e Petriho s´ıtˇe. Z´avˇer kapitoly uv´ad´ı principy modelov´an´ı

sd´ılen´ych zdroj˚u.

N´asleduj´ıc´ı kapitoly popisuj´ı n´avrh a implementaci dan´e aplikace. Postup pˇri tvorbˇe

n´avrhu je zachycen v kapitole 5. Je zde pops´ana architektura aplikace a n´avrh struktury

pro reprezentaci probl´emu, kter´y bude aplikac´ı ˇreˇsen. Je tak´e navrˇzen objektov´y model

genetick´eho algoritmu a seps´any poˇzadavky, kter´e mus´ı splˇnovat. Implementaci tohoto

ge-netick´eho algoritmu dokumentuje kapitola 6. Popisuje k´odov´an´ı probl´emu, implementovan´y

oper´ator kˇr´ıˇzen´ı a mutace. Protoˇze genetick´y algoritmus potˇrebuje pˇri ohodnocov´an´ı jedinc˚u

stochasticky simulovat pl´any, byl zde implementov´an simul´ator pl´an˚u. Jeho algoritmus je

pops´an v kapitole 7. V´ysledn´e pl´any a jejich transformaci do ˇCasov´ych Petriho s´ıt´ı

popi-suji v kapitole 8. Pˇredstavuji zde tak´e prvky standardizovan´eho jazyka PNML, do kter´eho

jsou pl´any pˇrev´adˇeny. V z´avˇeru t´eto kapitoly je navrˇzen obecn´y layout pro rozloˇzen´ı prvk˚u

(9)

byla dobˇre ˇciteln´a.

Testov´an´ı vytvoˇren´e aplikace a shrnut´ı dosaˇzen´ych v´ysledk˚u je v kapitole 9. Protoˇze

popisovan´e pl´anovac´ı probl´emy byly sp´ıˇse obecnˇejˇs´ıho charakteru, v kapitole 10 popisuji

praktick´e vyuˇzit´ı aplikace na konkr´etn´ıch oblastech vyuˇzit´ı. Shrnut´ı cel´e pr´ace a z´avˇery

(10)

## an´ı

Pl´anov´an´ı – postup vytv´aˇren´ı pl´an˚u. Pl´anem rozum´ıme posloupnost akc´ı, kter´e je potˇreba

seˇradit tak, aby syst´em, ˇr´ıd´ıc´ı se t´ımto pl´anem, dostal se z nˇejak´eho sv´eho poˇc´ateˇcn´ıho

stavu do stavu koneˇcn´eho.

Rozvrhov´an´ı – postup vytv´aˇren´ı ˇcasov´ych rozvrh˚u. Rozvrhem rozum´ıme posloupnost

akc´ı, kter´e mus´ıme seˇradit tak, aby se syst´em podl´ehaj´ıc´ı pl´anov´an´ı dostal z nˇejak´eho

sv´eho poˇc´ateˇcn´ıho stavu do stavu koneˇcn´eho s ohledem na uspoˇr´ad´an´ı na ˇcasov´e ose.

Obr´azek 2.1: Proces pl´anov´an´ı a rozvrhov´an´ı

Mezi typick´e pl´anovac´ı probl´emy patˇr´ı napˇr´ıklad pl´anov´an´ı v´yroby a v´yrobn´ıch postup˚u

v tov´arn´ach, tvorba ˇskoln´ıch rozvrh˚u, pl´anov´an´ı rozvrh˚u pracovn´ıch smˇen nebo pl´anov´an´ı

n´aroˇcn´ych v´ypoˇct˚u. Tato pr´ace se nezamˇeˇruje na ˇz´adn´e zde uveden´e konkr´etn´ı pl´anov´an´ı.

Vˇenuje se obecn´emu pl´anov´an´ı, kter´e lze aplikovat na v´ıce typ˚u pl´anovac´ıch probl´em˚u.

### Z´

Tato ˇc´ast je vˇenov´ana sezn´amen´ı se z´akladn´ımi stavebn´ımi kameny pl´anov´an´ı a rozvrhov´an´ı.

Podrobnˇeji se o tˇechto pojmech lze doˇc´ıst v [1] [2] [3].

2.1.1 Charakteristiky ´uloh

´

Uloha je objekt jenˇz pl´anujeme. ´Uloha je charakterizov´ana vnitˇrn´ı strukturou a sv´ymi

vlastnostmi. Operace nebo tak´e pod´uloha je d´ılˇc´ı ˇc´ast´ı cel´e ´ulohy. ´Uloha se skl´ad´a z jedn´e

(11)

Vˇsechny ´ulohy maj´ı vlastn´ı charakteristiku, kter´a je vˇetˇsinou d´ana statick´ymi a

dyna-mick´ymi parametry, kter´e vstupuj´ı do procesu rozvrhov´an´ı. Statick´e parametry jsou takov´e

parametry ´ulohy, jeˇz zn´ame na poˇc´atku rozvrhovac´ıho procesu. Dynamick´e parametry jsou

zn´amy aˇz v pr˚ubˇehu rozvrhovac´ıho procesu, nˇekdy dokonce aˇz na sam´em konci. ´Uloha

za-hrnuje tak´e vlastn´ı strukturu, kter´a ovlivˇnuje, jak se dan´a ´uloha na zdroj´ıch zpracuje.

Obr´azek 2.2: Parametry ´ulohy

Moˇzn´e parametry ´uloh:

• Doba trv´an´ı (processing time) pj

• Zaˇc´atek vykon´av´an´ı (start time) sj 1.

• Konec vykon´av´an´ı (completition time) cj

• Okamˇzik disponability (release time) rj: Nejmenˇs´ı ˇcas, kdy je ´uloha pˇripravena k

• Okamˇzik poˇzadovan´eho dokonˇcen´ı (due date) dj: Hodnota cj by mˇela b´yt menˇs´ı neˇz

tato hodnota.

• Posledn´ı okamˇzik dokonˇcen´ı (deadline) edj: Hodnota cj mus´ı b´yt menˇs´ı neˇz tento ˇcas.

Pokud se cj nevejde do dan´eho limitu, pak nen´ı ˇreˇsen´ı dosaˇziteln´e

• Precedenˇcn´ı vazby na ostatn´ı ´ulohy (precedence constraints): ˇCasto doch´az´ı k

si-tuac´ım, kdy m´ame danou posloupnost ´uloh, kter´e se mus´ı prov´adˇet v pˇredepsan´em

• Stroj (dedicated processor): Jeden nebo v´ıce stroj˚u, na kter´y mus´ı bˇeˇzet ´uloha.

• Priorita (priority): D˚uleˇzitost ´ulohy vzhledem k ´uloh´am jin´ym.

• Latence (latency) Lj: Lj = cj− dj

• Doba ˇcek´an´ı (waiting time) wj: wj = sj− rj

1

U preemptivn´ıho rozvrhov´an´ı m˚uˇze b´yt zaˇc´atk˚u vykon´av´an´ı v´ıce. M˚uˇze nastat situace, kdy se prov´adˇen´ı ´

(12)

• Pˇrekroˇcen´ı vymezen´eho ˇcasu (tardiness) Dj: Dj = max{cj− dj, 0}

• Doba dokonˇcen´ı (flow time, response time) Fj: Fj = cj − rj

V´yznam uveden´ych parametr˚u tak´e ilustruje obr´azek 2.2. Tyto parametry nevytv´aˇr´ı

kompletn´ı v´yˇcet. V praxi se m˚uˇzeme setkat pouze se zlomkem v´yˇse uveden´ych parametr˚u.

2.1.2 Charakteristiky zdroj˚u

Zdroj je jednotka, na kter´e m˚uˇze b´yt vykon´av´ana ´uloha. Zdroje rozliˇsujeme dle vykon´av´an´ı

´

uloh. Prvn´ım typem jsou un´arn´ı zdroje (unary resources), kter´e mohou vykon´avat v ˇcase

pouze jednu ´ulohu. Druh´ym typem jsou zdroje s jistou kapacitou prov´adˇen´ych ´uloh (limited

capacity resources). U zdroj˚u, kter´e maj´ı kapacitu vˇetˇs´ı neˇz 1, se m˚uˇzeme setkat s tzv.

”d´avkov´ym“ zpracov´an´ım ´uloh (batch precessing). Zde vˇsechny ´ulohy zaˇc´ınaj´ı ve stejn´y

okamˇzik a dokud se nepˇriprav´ı cel´a d´avka ´uloh, tak se ˇcek´a na dalˇs´ı ´ulohy do d´avky. Pod

pojmem zdroje nemus´ı b´yt myˇslen pouze stroj z v´yrobn´ı linky nebo poˇc´ıtaˇc. Zdroje mohou

b´yt i n´asleduj´ıc´ı: • Energie • Pen´ıze • Lidsk´a pr´ace • N´astroje • Roboti a stroje

2.1.3 Definice rozvrhov´an´ı

Hlavn´ım ´ukolem rozvrhov´an´ı je alokace mnoˇziny ´uloh T = {T1, T2, ..., Tn} na mnoˇzinu

dostupn´ych zdroj˚u P = {P1, P2, ..., Pn} za dodrˇzen´ı vˇsech omezuj´ıc´ıch podm´ınek [10].

Pˇri rozvrhov´an´ı v praxi se m˚uˇzeme setkat s rozvrhov´an´ım statick´ym, kde mnoˇzina ´uloh,

kter´a se bude prov´adˇet, je zn´am´a pˇredem. Tento typ se vyuˇz´ıv´a pˇrev´aˇznˇe ve v´yrobn´ıch

procesech (tov´arny, d´ılny). Dalˇs´ım typem je rozvrhov´an´ı dynamick´e. Zde mnoˇzina ´uloh

pˇredem zn´am´a nen´ı, ale vyv´ıj´ı se v ˇcase. Tento typ rozvrhov´an´ı je pouˇz´ıv´an napˇr. v robotice.

V´ysledn´e ˇreˇsen´ı rozvrhov´an´ı se vˇetˇsinou posuzuje vhodnou ohodnocovac´ı funkc´ı. Tˇemi

mohou b´yt napˇr´ıklad funkce f (c1, c2, ..., cn), kter´e vyjadˇruj´ı:

• Nejpozdˇeji dokonˇcenou ´ulohu (makespan):

cmax=

n

max

(13)

• Celkov´y souˇcet vˇsech dokonˇcen´ych ´uloh (total flow time):

n

X

j=1

cj (2.2)

• V´aˇzen´y celkov´y souˇcet vˇsech dokonˇcen´ych ´uloh (weighted total flow time):

n

X

j=1

wjcj (2.3)

• Maxim´aln´ı latenci :

Lmax=

n

max

j=1{Lj} (2.4)

• Souˇcet pˇrekroˇcen´ı vymezen´eho ˇcasu (tardiness):

n

X

j=1

Dj (2.5)

• V´aˇzen´y souˇcet pˇrekroˇcen´ı vymezen´eho ˇcasu:

n

X

j=1

wjDj (2.6)

• V´aˇzen´y souˇcet jednotkov´ych penalizac´ı:

n

X

j=1

wjUj (2.7)

kde penalizace Uj je definov´ana jako:

Uj =

(

0 pro cj < dj

1 jinak (2.8)

Podle dan´eho probl´emu je potˇreba zvolit vhodnou ohodnocovac´ı funkci. Ne u vˇsech

probl´em˚u se totiˇz m˚uˇze hodit nejmenˇs´ı doba prov´adˇen´ı. Je proto d˚uleˇzit´e si pˇred kaˇzdou

implementac´ı promyslet, kterou z funkc´ı zvolit.2

2

Pro sloˇzitˇejˇs´ı rozvrhovac´ı probl´emy se m˚uˇze vyuˇz´ıt i v´ıce ohodnocovac´ıch funkc´ı souˇcasnˇe. Omezuj´ıc´ı krit´eria mohou b´yt nejr˚uznˇejˇs´ı. M˚uˇzeme napˇr´ıklad poˇzadovat nejkratˇs´ı dobu prov´adˇen´ı a souˇcasnˇe nejm´enˇe penalizac´ı.

(14)

### uloh

Rozvrhovac´ı probl´emy se dˇel´ı na nˇekolik skupin, podle sloˇzitosti syst´emu nebo na z´akladˇe

povahy ´ulohy. Jednou z tˇechto skupin je pl´anov´an´ı na jednom zdroji. To je takov´a

situace, kdy se vˇsechny ´ulohy zpracov´avaj´ı pr´avˇe na jednom zdroji. Rozvrh pak definuje

pˇriˇrazen´ı tˇechto ´uloh na tento zdroj v ˇcase. Pl´anov´an´ı na v´ıce zdroj´ıch pˇrestavuje situaci,

kdy existuje v´ıce paraleln´ıch zdroj˚u, kter´e mohou jednotliv´e ´ulohy zpracov´avat. Rozvrhem

u t´eto skupiny je pak pˇriˇrazen´ı jednotliv´ych ´uloh na dan´e zdroje v ˇcase. U t´eto skupiny

´

uloh vˇsak vznik´a nˇekolik omezen´ı. Napˇr´ıklad zda je dan´y zdroj vhodn´y pro zpracov´an´ı

´

ulohy, precedence jednotliv´ych ´uloh nebo ˇcasovou prov´azanost. Dalˇs´ı skupinou jsou

Multi-operaˇcn´ı probl´emy (shop). Ty pˇredstavuj´ı takov´e pl´anov´an´ı ´uloh, kdy se jedn´a ´uloha

postupnˇe zpracov´av´a na v´ıce zdroj´ıch (skl´ad´a se z v´ıce operac´ı). U t´eto skupiny existuj´ı

tyto varianty:

• Flow shop - je takov´a situace, kdy se kaˇzd´a ´uloha mus´ı prov´adˇet na vˇsech zdroj´ıch

• Flexible Flow Shop - zobecnˇen´ı pˇredchoz´ıho pˇr´ıpadu. Je zde rozdˇelen´ı na f´aze, kde

kaˇzd´e f´azi pˇr´ısluˇs´ı paraleln´ı zdroj. ´Uloha mus´ı proj´ıt vˇsemi f´azemi ve stejn´em poˇrad´ı.

• Job shop - ´uloha zde mus´ı b´yt prov´adˇena na zdroj´ıch podle pˇredem dan´eho poˇrad´ı

• Open shop - prov´adˇen´ı ´ulohy nemus´ı prob´ıhat na vˇsech zdroj´ıch

### Grahamova klasifikace

V praxi se m˚uˇzeme setkat s velk´ym mnoˇzstv´ım nejr˚uznˇejˇs´ıch rozvrhovac´ıch probl´em˚u. To

n´as pˇriv´ad´ı k myˇslenk´am zaveden´ı standardn´ıch notac´ı. Grahamova notace [1] je v souˇcasn´e

dobˇe velmi rozˇs´ıˇren´a a zaˇstit’uje velk´e mnoˇzstv´ı rozvrhovac´ıch probl´em˚u. Pokl´ad´am proto

za vhodn´e tuto notaci alespoˇn ve struˇcnosti zm´ınit.

Z´akladem klasifikace je trojice:

α | β | γ

Prvn´ı poloˇzka α = {α1, α2} popisuje zdroje. α1 oznaˇcuje typ zdroj˚u (paraleln´ı,

dediko-van´e atd.). α2 ud´av´a poˇcet zdroj˚u.

Druh´y prvek β nese informace o vlastnostech probl´emu jako takov´eho. Popisuje

ome-zen´ı aplikovan´a na ´ulohy. D´ale napˇr´ıklad poˇcet ´uloh, preempci, pˇr´ıdavn´e zdroje, relaci

n´aslednosti, dobu pˇripravenosti, deadline, omezen´ı poˇctu ´uloh).

Posledn´ı prvek γ ud´av´a optimalizaˇcn´ı krit´eria. Konkr´etnˇe tyto: Cmax - celkov´a doba

(15)

opoˇzdˇen´ı.

Pˇr´ıklady takto klasifikovan´ych probl´emu m˚uˇzou b´yt n´asleduj´ıc´ı:

• P 3 | prec | Cmax: mont´aˇz kola

• Pm | rj | σwjCj: paraleln´ı stroje

### u

Aby se zadan´e probl´emy daly sn´aze pochopit, je nˇekdy v´yhodnˇejˇs´ı je zobrazit graficky

pomoc´ı diagram˚u. Zad´an´ı probl´em˚u se nejˇcastˇeji reprezentuj´ı pomoc´ı tzv. task-on-node

nebo task-on-arc graf˚u. U prvn´ıho typu grafu se ´ulohy zakresluj´ı na vrcholech a u druh´eho

typu na hran´ach grafu. Pro ilustraci uvaˇzme pˇr´ıklad zad´an n´asledovnˇe:

T = {T1, T2, T3}, P = {6, 4, 1}, T2 → T3

V´ysledn´e ˇreˇsen´ı probl´emu vystihuje pro oba dva typy graf˚u obr´azek 2.3. U graf˚u typu

task-on-node se pˇrid´avaj´ı nav´ıc dva uzly, kter´e reprezentuj´ı nov´e ´ulohy. Ty maj´ı funkci

poˇc´ateˇcn´ı resp. koncov´e ´ulohy. Vyuˇz´ıvaj´ı se k vymezen´ı ˇcasov´eho ´useku od poˇc´atku skuteˇcn´e

´

ulohy do konce posledn´ı skuteˇcn´e ´ulohy.

U grafick´e reprezentace v´ysledn´eho rozvrhu se velmi ˇcasto pouˇz´ıvaj´ı Ganttovy diagramy.

Velmi vyuˇz´ıvan´e jsou tak´e v oblasti manaˇzersk´e, kde slouˇz´ı k projektov´emu pl´anov´an´ı. Jedn´a

se o sloupcov´y graf, kter´y vyjadˇruje ´uplnou informaci o jednotliv´ych ´uloh´ach (poˇc´atek,

ko-nec, precedence, zdroj). Pˇr´ıklad ˇreˇsen´ı naˇseho probl´emu je ilustrov´an Ganttov´ym

diagra-mem na obr´azku 2.4.

### Job shop scheduling

Job shop scheduling [5] v ˇcesk´em pˇrekladu rozvrhov´an´ı zak´azkov´e v´yroby je typ

(16)

Obr´azek 2.4: Gantt˚uv diagram

prac´ı. Kaˇzd´a pr´ace m´a d´ano uspoˇr´ad´an´ı stroj˚u, tzn., ˇze pr´ace jsou sloˇzeny z jednotliv´ych

´

ukol˚u, kter´e jsou urˇceny poˇzadavkem na stroj a procesn´ım ˇcasem na dan´em stroji.

Mˇejme d´any tˇri koneˇcn´e mnoˇziny:

• ´uloh J = {J1, J2, ..., Jn}

• stroj˚u M = {M1, M2, ..., Mm}

• operac´ı O = {o1, o2, ..., oN}

Kaˇzd´a z ´uloh je sloˇzena z dan´eho, obecnˇe nestejn´eho poˇctu operac´ı. Mnoˇzina O je

mnoˇzina vˇsech operac´ı vˇsech ´uloh. Je zapotˇreb´ı prov´est vˇsechny ´ulohy pˇri splnˇen´ı tˇechto

omezen´ı:

• pro kaˇzdou operaci je potˇreba jednoznaˇcnˇe pˇriˇrazen´y stroj

• na jednom stroji je moˇzno prov´adˇet pouze jednu operaci jedn´e ´ulohy

• poˇrad´ı operac´ı ´uloh nelze mˇenit

• prov´adˇen´ı operace nelze pˇreruˇsit

• mezi operacemi r˚uzn´ych nen´ı precedenˇcn´ı omezen´ı

Vykon´an´ı jedn´e ´ulohy tedy znamen´a proveden´ı vˇsech jejich operac´ı. Ty mus´ı b´yt

prove-deny v zadan´em poˇrad´ı a na dan´ych stroj´ıch. Rozvrhem pak naz´yv´ame jak´ekoli provediteln´e

poˇrad´ı π operac´ı na vˇsech stroj´ıch z M . ˇReˇsen´ı probl´emu je nalezen´ı optim´aln´ıho poˇrad´ı

operac´ı na dan´ych stroj´ıch. V´ysledn´e ˇreˇsen´ı m˚uˇze vych´azet z nejr˚uznˇejˇs´ıch c´ıl˚u. M˚uˇze to b´yt

napˇr. minimalizace celkov´e doby zpracov´an´ı, minimalizace ztr´at souvisej´ıc´ıch s nesplnˇen´ım

prac´ı v poˇzadovan´ych term´ınech, minimalizace ˇcek´an´ı stroj˚u a pod.

Necht’ je d´ano toto oznaˇcen´ı:

n poˇcet ´uloh

(17)

B(i) mnoˇzina bezprostˇredn´ıch pˇredch˚udc˚u operace i

m poˇcet stroj˚u

O(k) mnoˇzina operac´ı pˇriˇrazen´ych stroji k

pj doba prov´adˇen´ı operace j

zj nejdˇr´ıve moˇzn´y term´ın zah´ajen´ı operace j

M horn´ı mez celkov´e doby trv´an´ı vˇsech operac´ı

Cmax celkov´a doba trv´an´ı vˇsech ´uloh

xj,l promˇenn´a pro popis precedenˇcn´ıho vztahu mezi operacemi j, l ∈ Ok

xj,l= 1 operace j se provede pˇred operac´ı l

xj,l= 0 operace l se provede pˇred operac´ı j

Probl´em optimalizace rozvrhu, kde se snaˇz´ıme minimalizovat Cmax, lze pak matematicky

definovat takto: Cmax≥ zi+ pi, i = 1, 2, ..., n (1) zj ≥ zj+ pi, j = 1, 2, ..., N ; i ∈ B(j) (2) zl≥ zj+ pjxj,l− M (1 − xj,l), k = 1, 2, ..., m; j, l ∈ O(k) (3) zj ≥ zl+ pl(1 − xj,l) − M xj,l, k = 1, 2, ..., m; j, l ∈ O(k) (4) xj,l ∈ {0, 1}, k = 1, 2, ..., m; j, l ∈ O(k) (5) Cmax≥ 0, zj ≥ 0 j = 1, 2, ..., N (6)

Omezen´ı (2) ud´av´a, ˇze operace kaˇzd´eho ´ukolu se prov´adˇej´ı v pˇredem urˇcen´em poˇrad´ı.

Podm´ınky (3)-(5) ˇr´ıkaj´ı, ˇze v urˇcit´em ˇcase m˚uˇze b´yt stroj obsazen pouze jednou operac´ı.

Libovoln´e pˇr´ıpustn´e ˇreˇsen´ı, kter´e splˇnuje podm´ınky (1)-(6) je provediteln´e a oznaˇcujeme jej

jako rozvrh.

Pˇr´ıklad 2.5.1 Mˇejme zad´anu instanci probl´emu, kter´a obsahuje ´ulohy T1,T2 a T3 ((i, j)

oznaˇcme operaci ´ulohy Tj na stroji i):

• p(1,1) = 2, p(2,1) = 1, p(3,1) = 4 s poˇrad´ım (2, 1),(1, 1),(3, 1)

• p(1,2) = 2, p(2,2) = 1, p(3,2) = 4 s poˇrad´ım (3, 2),(1, 2),(2, 2)

(18)

Obr´azek 2.5: Optim´aln´ı ˇreˇsen´ı Job shop probl´emu dle krit´eria makespan (Gantt˚uv diagram)

Optim´aln´ı ˇreˇsen´ı tohoto probl´emu je zobrazeno pomoc´ı Ganttova diagramu na obr´azku

2.5. V´ypoˇcet celkov´e ceny tohoto ˇreˇsen´ı je n´asleduj´ıc´ı:

(19)

## e algoritmy

ˇ

Clovˇek se v ˇzivotˇe ˇcasto dostane do situace, kdy potˇrebuje ˇreˇsit sloˇzit´e probl´emy. Snaˇz´ı se

pak nal´ezt ˇreˇsen´ı, kter´e nen´ı ledajak´e, ale jist´ym zp˚usobem co nejv´ıce optim´aln´ı, pˇr´ıpadnˇe

nejoptim´alnˇejˇs´ı. Mnoˇzina probl´em˚u u kter´ych se snaˇz´ıme nal´ezt optimum na jist´e mnoˇzinˇe

potencion´aln´ıch ˇreˇsen´ı se naz´yv´a optimalizaˇcn´ı probl´emy. Mnoˇzina moˇzn´ych ˇreˇsen´ı se tak´e

nˇekdy oznaˇcuje jako stavov´y prostor. ˇReˇsen´ı dan´eho probl´emu se pak transformuje na

proch´azen´ı t´ımto stavov´ym prostorem. Abychom urˇcili kvalitu jednotliv´ych ˇreˇsen´ı ve

sta-vov´em prostoru, ohodnocujeme je na z´akladˇe kriteri´aln´ı ztr´atov´e funkce. ˇRada probl´em˚u

obsahuje znaˇcn´y poˇcet potencion´aln´ıch ˇreˇsen´ı (NP-´upln´e probl´emy), u kter´ych se ned´a v

ro-zumn´em ˇcase vyhodnotit optimum. Proto se hledaj´ı cesty k urychlen´ı tohoto hled´an´ı. Jednou

z tˇechto cest jsou Genetick´e algoritmy.

Na ot´azku v´yvoje ˇclovˇeka pˇrinesl v druh´e polovinˇe 19. stolet´ı Charles Darwin ucelenou a

obhajitelnou teorii evoluce. Tato teorie odpov´ıd´a na ot´azku v´yvoje, kter´y stoj´ı na chyb´ach

pˇri replikaci a pˇr´ırodn´ım v´ybˇeru, kter´y zv´yhodˇnuje vlastnosti jedinc˚u l´epe pˇrizp˚usoben´ych

okol´ı a penalizuje ty vlastnosti, kter´e jedince omezuj´ı. Kv˚uli tˇemto chyb´am vznik´a spousta

odliˇsn´ych vlastnost´ı pˇri replikace. Tedy jedinci, kteˇr´ı jsou rychlejˇs´ı, inteligentnˇejˇs´ı a silnˇejˇs´ı

maj´ı daleko vˇetˇs´ı ˇsance v r˚uznorod´em prostˇred´ı neˇz jedinci pomalejˇs´ı, m´enˇe inteligentn´ı a

slabˇs´ı.

Genetick´e algoritmy [11] [7] [8] se inspiruj´ı biologick´ymi discipl´ınami a pouˇz´ıvaj´ı v´yrazov´e

prostˇredky z tˇechto obor˚u. Pro oznaˇcen´ı jednotlivce v populaci vyuˇz´ıv´ame pojmu genotyp,

chromozom, struktura nebo ˇretˇezec. Gen m˚uˇze nab´yvat nˇekolika hodnot, kter´e v celku

mohou vyjadˇrovat urˇcitou vlastnost jako napˇr. barvu oˇc´ı. Tˇemto hodnot´am se ˇr´ık´a alely.

Kaˇzd´y z chromozom˚u je reprezentantem moˇzn´eho ˇreˇsen´ı probl´emu. Form´at chromozomu a

jeho v´yznam je oznaˇcov´an jako fenotyp.

Pro prohled´av´an´ı stavov´eho prostoru existuje v´ıce pˇr´ıstup˚u. Proch´azen´ı obvykle vyˇzaduje

• exploitation - prohled´av´an´ı ve slibn´ych oblastech prostoru

(20)

Technik´am, kter´e d˚ukladnˇe prohled´avaj´ı okol´ı nejlepˇs´ıho ˇreˇsen´ıˇr´ık´ame Gradientn´ı

me-tody. Mezi takov´e metody patˇr´ı napˇr´ıklad Hillclimbing. Jejich nev´yhodou je, ˇze ´uplnˇe

ignoruj´ı zbytek stavov´eho prostoru. Opak tˇechto metod jsou metody n´ahodn´e. Ty proch´azej´ı

prostor ze vˇsech stran, ale ignoruj´ı jeho slibn´e oblasti. Genetick´e algoritmy kombinuj´ı

vlast-nosti tˇechto dvou zp˚usob˚u. Na z´akladˇe parametr˚u, kter´e jim m˚uˇzeme nastavit se zamˇeˇruj´ı

jak na slibn´e oblasti, tak na co nejvˇetˇs´ı ˇc´ast stavov´eho prostoru. To z tˇechto algoritm˚u dˇel´a

nˇeco ojedinˇel´eho.

GA se vyznaˇcuj´ı tˇemito vlastnostmi:

• lze je aplikovat na velmi ˇsirok´e spektrum ´uloh

• proch´az´ı nejr˚uznˇejˇs´ı stavov´e prostory (spojit´e, multimod´aln´ı, nehladk´e a pod.)

• ˇreˇsen´ı lze hledat i pro v´ıce krit´eri´ı

• vyuˇzit´ı i u dynamick´ych optimalizac´ı

• um´ı nal´ezt v´ıce optim´aln´ıch ˇreˇsen´ı

Aby bylo moˇzn´e vyˇreˇsit dan´y probl´em pomoc´ı GA je potˇreba splnit tyto poˇzadavky:

• vhodnˇe zvolit reprezentaci probl´emu - zak´odov´an´ı do chromozomu

• navrhnout zp˚usob vytvoˇren´ı poˇc´ateˇcn´ı populace chromozom˚u

• implementovat fitness funkci, kter´a bude bude ohodnocovat jedince

• definovat genetick´e oper´atory

• zvolit vhodn´e parametry jako velikost populace, pravdˇep. kˇr´ıˇzen´ı a pod.

Cel´y proces genetick´eho algoritmu je ilustrov´an na obr´azku 3.1.

### emat

V populaci lze pozorovat mezi stejnˇe dobr´ymi jedinci urˇcitou podobnost vyj´adˇrenou stejn´ymi

bity na urˇcit´ych pozic´ıch. Ostatn´ı pozice chromozomu nemus´ı v podobnosti jedinc˚u hr´at

ˇ

z´adnou roli. Pozic´ım, kter´e mezi stejnˇe dobr´ymi jedinci ud´avaj´ı podobnost ˇr´ık´ame stavebn´ı

bloky.

Velk´a ˇc´ast model˚u GA stav´ı na takzvan´e teorii sch´emat [4]. Sch´ema je podobnostn´ı

ˇsablona definovan´a nad abecedou {0, 1, ∗}. Symbol

”*“ na pozici ve sch´ematu ud´av´a, ˇze

na t´eto pozici se m˚uˇze vyskytovat libovoln´y symbol z mnoˇziny {0, 1}. Poˇcet pevnˇe

(21)

Algoritmus 1 Pseudok´od genetick´eho algoritmu t := 0;

initpopulation P(t); evaluate P (t);

while not finished do t := t + 1; P’ := selectpar P (t); recombine P’ (t); mutate P’ (t); evaluate P’ (t); P := survive P,P’ (t); end while

ve sch´ematu se oznaˇcuje jako d´elka sch´ematu δ(H). Vˇetˇsinou je ´uˇcelnˇejˇs´ı sledovat ˇs´ıˇren´ı

sch´emat neˇz ˇs´ıˇren´ı jednotliv´ych jedinc˚u.

Protoˇze genetick´e oper´atory pˇr´ımo ovlivˇnuj´ı sch´emata chromozomu, je v´yhodn´e zjistit,

jak moc sch´emata ovlivˇnuj´ı. To se d´a vyj´adˇrit pomoc´ı tzv. sch´ema-teor´emu, kter´y je d´an

vztahem: m(H, t + 1) ≥ m(H, t) ·f (H) f ·  1 − PC · δ(H) L − 1− PM · o(H)  (3.1)

kde uveden´e symboly maj´ı n´asleduj´ıc´ı v´yznam:

m(H, t) poˇcet ˇretˇezc˚u v populaci odpov´ıdaj´ıc´ıch sch´ematu H v ˇcase t

f (H) kvalita sch´ematu

f stˇredn´ı kvalita populace

PC pravdˇepodobnost kˇr´ıˇzen´ı

PM pravdˇepodobnost mutace

δ(H) definuj´ıc´ı d´elka sch´ematu

L d´elka sch´ematu

Pokud provedeme rozbor sch´ema-teor´emu m˚uˇzeme vypozorovat, ˇze stavebn´ı bloky

chro-mozom˚u jsou tvoˇreny kr´atk´ymi nadpr˚umˇern´ymi sch´ematy n´ızk´eho ˇr´adu. Sch´emata jsou

kr´atk´a z toho d˚uvodu, aby s co nejvˇetˇs´ı pravdˇepodobnost´ı nebyla poruˇsena kˇr´ıˇzen´ım a

(22)

Obr´azek 3.1: Proces genetick´eho algoritmu

### Selekce

Selekˇcn´ı oper´ator se inspiruje Darwinovou teori´ı o pˇrirozen´em v´ybˇeru jedinc˚u. Realizuje

model pˇreˇzit´ı nejsilnˇejˇs´ıho jedince. Z populace vyb´ır´a ty nejlepˇs´ı jedince, ze kter´ych se pak

rekombinac´ı tvoˇr´ı potomci nov´ı. Aby ˇreˇsen´ı neˇslo od sam´eho poˇc´atku pouze jedn´ım smˇerem

a nedostali jsme se tak do lok´aln´ıho mimina je v´yhodn´e do nov´e populace vz´ıt i nˇekter´e

nejhorˇs´ı jedince. To zaruˇcuj´ı pravdˇepodobnostn´ı mechanizmy pˇri v´ybˇeru jedinc˚u, kdy se

chromozomu pˇriˇrad´ı pravdˇepodobnost jeho pˇreˇzit´ı na z´akladˇe hodnoty z fitness funkce.

M˚uˇzeme tak vyj´adˇrit Selekˇcn´ı intenzitu nebo tak´e Selekˇcn´ı tlak t´ımto vztahem:

I = m

− M

σ (3.2)

kde je v´yznam symbol˚u n´asleduj´ıc´ı:

M pr˚umˇern´a fitness hodnota v populaci pˇred selekc´ı

m∗ pr˚umˇern´a fitness hodnota po selekci

σ rozptyl fitness hodnot pˇred selekc´ı

Rychlost konvergence algoritmu z´avis´ı na selekˇcn´ım tlaku. Neboli ˇc´ım vˇetˇs´ı je selekˇcn´ı

(23)

3.2.1 Ruletov´a selekce

Ruletov´a selekce (Roulette-wheel selection) vyb´ır´a jedince na z´akladˇe pravdˇepodobnosti,

kter´a je pˇr´ımo ´umˇern´a jeho kvalitˇe. Cel´y proces v´ybˇeru se d´a pˇredstavit na ruletov´em kole,

kter´e roztoˇc´ıme a vybereme toho, na kter´em se zastav´ı kuliˇcka. Jedinci jsou na ruletov´em

kole rozm´ıstˇeni tak, ˇze ˇc´ım v´ıce je jedinec kvalitnˇejˇs´ı, t´ım v´ıce zab´ır´a na kole pol´ıˇcek. Toto

kolo je ilustrov´ano na obr´azku 3.2 I kdyˇz je toto selekˇcn´ı sch´ema jedn´ım z nejuˇz´ıvanˇejˇs´ıch,

Obr´azek 3.2: Ruletov´y v´ybˇer jedinc˚u

m´a i p´ar nev´yhod. M´a probl´em se ˇsk´alov´an´ım, je vhodn´y pouze pro maximalizaˇcn´ı probl´emy

a tak´e vyˇzaduje velkou populaci.

Poˇradov´a selekce (Rank selection) je modifikac´ı pˇredchoz´ıho selekˇcn´ıho sch´ematu.

Chromo-zomy jsou zde seˇrazeny v posloupnosti dle jejich kvality. Nad t´ımto uspoˇr´ad´an´ım n´aslednˇe

prob´ıh´a ruletov´a selekce. Tato metoda ˇreˇs´ı nˇekter´e probl´emy ruletov´e selekce jako napˇr.

probl´em ˇsk´alov´an´ı, vzorkov´an´ı u menˇs´ıch populac´ı a tak´e zvl´ad´a dobˇre nejen maximalizaˇcn´ı,

ale i minimalizaˇcn´ı probl´emy.

3.2.3 Turnajov´a selekce

Turnajov´a selekce (Tournament selection) je opaˇcn´ym pˇr´ıstupem neˇz pˇredchoz´ı dvˇe metody.

Pro vytvoˇren´ı nov´e generace se ze star´e generace vezme n chromozom˚u a mezi nimi se

uspoˇr´ad´a turnaj. Do nov´e generace tak jdou nejlepˇs´ı jedinci z n-tice. Hodnotou n se d´a

jednoduˇse ovlivˇnovat selekˇcn´ı intenzita. ˇC´ım vˇetˇs´ı je hodnota n, t´ım vˇetˇs´ı je selekˇcn´ı tlak.

### zen´ı

Oper´ator kˇr´ıˇzen´ı (crossing-over) je jeden z nejd˚uleˇzitˇejˇs´ıch oper´ator˚u v evoluci populace.

(24)

nˇekteˇr´ı tvrd´ı, ˇze tento oper´ator rozb´ıj´ı stavebn´ı bloky a tak jej uplatˇnuj´ı se stejnˇe malou

pravdˇepodobnost´ı jako mutaci. Existuje velk´e mnoˇzstv´ı variant kˇr´ıˇzen´ı, pˇriˇcemˇz z´akladem

je n´ahodn´y v´ybˇer dvojic jedinc˚u z populace. Mezi nimi n´aslednˇe doch´az´ı k v´ymˇenˇe genov´e

informace. Tato rekombinace se ale neprov´ad´ı na celou populaci, n´ybrˇz pouze na nˇejakou

ˇ

c´ast (napˇr. 60%). Zbytek jedinc˚u z˚ust´av´a bez nˇejak´e v´ymˇeny informac´ı.

3.3.1 Jednobodov´e

Patˇr´ı k nejjednoduˇsˇs´ım a tak´e nejv´ıce pouˇz´ıvan´ym metod´am kˇr´ıˇzen´ı. Ze dvou n´ahodnˇe

zvolen´ych rodiˇc˚u vznikaj´ı dva nov´ı potomci. U rodiˇc˚u se na vybran´em m´ıstˇe zvol´ı bod.

Lev´e ˇc´asti se potomk˚um zanechaj´ı a prav´e ˇc´asti se prohod´ı. Podrobnˇeji to ilustruje obr´azek

3.3. Bod ve kter´em se rodiˇce budou kˇr´ıˇzit se vol´ı n´ahodnˇe.

Obr´azek 3.3: Jednobodov´e kˇr´ıˇzen´ı

3.3.2 Dvoubodov´e

Dvoubodov´e kˇr´ıˇzen´ı pracuje na stejn´em principu jako jednobodov´e. S t´ım rozd´ılem, ˇze se

zde n´ahodnˇe vyb´ıraj´ı dva body u rodiˇc˚u, kter´e rozdˇel´ı chromozomy na tˇri kˇr´ıˇz´ıc´ı oblasti.

Lev´a a prav´a oblast se potomk˚um zachov´av´a a prostˇredn´ı oblast se zamˇen´ı. I zde ze dvou

rodiˇc˚u vznikaj´ı dva nov´ı potomci. Ilustrace na obr´azku 3.4.

(25)

3.3.3 Uniformn´ı

Uniformn´ı kˇr´ıˇzen´ı nevyuˇz´ıv´a bod˚u na z´akladˇe kter´ych prohazuje oblasti, ale vygeneruje

n´ahodnˇe masku o stejn´e velikosti jako chromozomy. Hodnota masky urˇcuje ze kter´eho rodiˇce

se pouˇzije hodnota pro danou pozici. Pokud je hodnota v masce 0 - pouˇzije se hodnota

z prvn´ıho rodiˇce. Pro hodnotu 1 se pouˇzije hodnota z druh´eho rodiˇce. Ilustrativnˇe je to

pops´ano na obr´azku 3.5.

Obr´azek 3.5: Uniformn´ı kˇr´ıˇzen´ı

Tento typ kˇr´ıˇzen´ı je nˇekdy kritizov´an z d˚uvodu rozvracen´ı k´odu (teorie stavebn´ıch

blok˚u). Oproti tomu tento princip m˚uˇze do populace pˇrin´est r˚uznorodost, kter´a je nˇekdy

ˇ

z´adouc´ı. Velmi dobˇre se tak´e br´an´ı pˇredˇcasn´e konvergenci algoritmu. Je vhodn´y pro

v´ıce-rozmˇern´e funkce s mnoha lok´aln´ımi extr´emy.

### Mutace

Tento reprodukˇcn´ı oper´ator je i pˇres malou ˇcetnost v´yskytu velmi v´yznamn´y. Klasicky

modifikuje (vytv´aˇr´ı mutanty) gen˚u s velmi malou pravdˇepodobnost´ı. Tato pravdˇepodobnost

je obvykle mezi hodnotami 0.0005 a 0.01. Mutace pˇrin´aˇs´ı do populace nov´e informace. Pro

pˇr´ıliˇs velkou pravdˇepodobnost mutace se m˚uˇze v´yvoj populace st´at nestabiln´ı. Naopak pro

malou pravdˇepodobnost nevznikaj´ı nov´e informace a ˇreˇsen´ı m˚uˇze smˇeˇrovat pouze jedn´ım

smˇerem. To m˚uˇze v´est do lok´aln´ıho extr´emu. Existuj´ı implementace, kdy se m´ıra mutace

mˇen´ı dynamicky v z´avislosti na konvergenci populace.

U bin´arn´ıho k´odov´an´ı se mutace prov´ad´ı tak, ˇze se n´ahodnˇe zvol´ı jedna pozice v

chromo-zomu a jej´ı hodnota se invertuje. U permutaˇcn´ıho k´odov´an´ı ˇretˇezc˚u se n´ahodnˇe vyberou dvˇe

pozice v chromozomu a ty se jednoduˇse zamˇen´ı. Tyto postupy jsou zn´azornˇeny na obr´azku

3.6. ˇ

Rada v´yzkum˚u uk´azala, ˇze u mal´ych populac´ı je v´yhodn´e nastavit vˇetˇs´ı pravdˇepodobnost

mutace a stejnˇe tak opaˇcnˇe. Tato teorie se d´a vysvˇetlit tak, ˇze u mal´ych populac´ı mutace

pom´ah´a proch´azet vˇetˇs´ı stavov´y prostor. U velk´ych populac´ı se toto zaruˇcuje samotnou

(26)

Obr´azek 3.6: Mutace pro bin´arn´ı a permutaˇcn´ı k´odov´an´ı

### Ohodnocovac´ı funkce

Ohodnocovac´ı funkce je jeden z nejd˚uleˇzitˇejˇs´ıch element˚u, kter´y m´a pod spr´avou uˇzivatel.

D˚uleˇzit´y proto, ˇze ˇr´ıd´ı cel´y proces evoluce. Z toho d˚uvodu by se j´ı mˇela pˇri

implemen-taci vˇenovat znaˇcn´a pozornost. Ohodnocovac´ı funkce urˇcuje kvalitu jednotliv´ych jedinc˚u.

Tato kvalita je pˇr´ımo ´umˇern´a schopnosti pˇreˇzit´ı v okoln´ım prostˇred´ı. Rozliˇsujeme dva typy

ohodnocovac´ıch funkc´ı.

Nejpouˇz´ıvanˇejˇs´ım typem je Fitness funkce f . Tato funkce pˇredstavuje stavov´y prostor ve

kter´em se snaˇz´ıme nal´ezt maximum. Chromozom pˇredstavuje jeden bod v tomto prostoru.

Hled´ame tedy nejlepˇs´ı chromozom. f (i) ud´av´a fitness hodnotu i-t´eho chromozomu. Pro

ˇreˇsen´ı, kter´a jsou nepˇrijateln´a lze pouˇz´ıt penalizaˇcn´ı funkci g.

Dalˇs´ım typem je ´Uˇcelov´a funkce u. Jedn´a se o invertovanou fitness funkci. Pouˇz´ıv´a se

tehdy pokud ve stavov´em prostoru hled´ame minimum. D´a se vyuˇz´ıt pro ˇreˇsen´ı probl´em˚u

jako napˇr. Knapsack nebo TSP.

Grafick´e srovn´an´ı tˇechto dvou ohodnocovac´ıch funkc´ı je na obr´azku 3.7

### Typy GA

Jednoduch´y GA (Simple GA) – tento algoritmus vyuˇz´ıv´a nepˇrekr´yvaj´ıc´ı se populace.

Do kaˇzd´e generace algoritmus vytvoˇr´ı ´uplnˇe novou populaci jedinc˚u. Pro termin´aln´ı

podm´ınku m˚uˇzeme vyuˇz´ıt konvergenci populace. Protoˇze dosaˇzen´ı ´upln´e konvergence

je velmi n´aroˇcn´e, populace se povaˇzuje za zkonvergovanou, pokud rozptyl klesne pod

urˇcitou mez. D´a se ovˇsem pouˇz´ıt i jin´ych termin´aln´ıch podm´ınek jako poˇcet generac´ı

apod.

GA se st´al´ym stavem (Steady-State GA) – tento typ algoritmu pouˇz´ıv´a pˇrekr´yvaj´ıc´ı

populace. Uˇzivatel tedy mus´ı specifikovat jak velk´a ˇc´ast jedinc˚u se bude nahrazovat.

(27)

Obr´azek 3.7: Fitness a ´uˇcelov´a funkce

nahrazovac´ı strategii. Lze pouˇz´ıt stejn´ych termin´aln´ıch podm´ınek jako u pˇredchoz´ıho

typu GA.

Inkrement´aln´ı GA – vyuˇz´ıv´a podobn´eho principu jako GA se st´al´ym stavem. Opˇet pouˇ

z´ı-v´a pˇrekr´yvaj´ıc´ı se populace. Tento typ GA se ale vyznaˇcuje velmi mal´ym pˇrekryvem.

Obvykle se v kaˇzd´e generaci vytvoˇr´ı jeden nebo dva nov´ı jedinci. Je zde potˇreba opˇet

(28)

## e

Pojem Petriho s´ıtˇe oznaˇcuje ˇsirokou tˇr´ıdu matematick´ych model˚u, kter´ymi lze popisovat

ˇr´ıd´ıc´ı toky a tak´e informaˇcn´ı z´avislosti uvnitˇr syst´em˚u. Jedn´a se tedy o matematickou

re-prezentaci diskr´etn´ıch distribuovan´ych syst´em˚u. Petriho s´ıtˇe poprv´e vznikly v roce 1962

v disertaˇcn´ı pr´aci nˇemeck´eho matematika C.A.Petriho. Petri v pr´aci prezentoval nov´e

kon-cepty popisu z´avislost´ı podm´ınek a ud´alost´ı v modelovan´em syst´emu. Od t´e doby se Petriho

s´ıtˇe zaˇcaly postupnˇe rozv´ıjet a dneˇsn´ı dobˇe uˇz existuje nˇekolik tˇr´ıd tˇechto s´ıt´ı. V t´eto pr´aci

se budu soustˇredit pˇredevˇs´ım na ˇCasov´e Petriho s´ıtˇe, kter´e jsou vyuˇzity pro reprezentaci

pl´an˚u.

Oblast´ı, ve kter´ych se s Petriho s´ıtˇemi m˚uˇzeme setkat, st´ale pˇrib´yv´a. Nejˇcastˇeji je to ale

pˇri n´avrhu, modelov´an´ı a anal´yze paraleln´ıch a distribuovan´ych syst´em˚u, ale tak´e v

### Z´

Stavebn´ımi kameny Petriho s´ıt´ı jsou m´ısta (places), pˇrechody (transitions). M´ısto pˇ

redsta-vuje podm´ınku a pˇrechod je ud´alost. Pˇrechod je ud´alost, kter´a m´a vstupn´ı podm´ınky a

po jej´ım probˇehnut´ı zaˇcnou platit podm´ınky jin´e. M´ısta a pˇrechody se propojuj´ı hranami

(arcs). Grafickou reprezentac´ı m´ısta je kruˇznice a pˇrechod je zobrazen obd´eln´ıkem, pˇr´ıpadnˇe

´

useˇckou viz obr´azek 4.1.

Obr´azek 4.1: a) grafick´a reprezentace m´ısta, b) grafick´a reprezentace pˇrechodu ve dvou

variant´ach

Modelovac´ı schopnost Petriho s´ıt´ı je obecnˇe vˇetˇs´ı neˇz koneˇcn´ych automat˚u. U koneˇcn´ych

(29)

ud´avaj´ı stav znaˇcen´ım jednotliv´ych m´ıst (tzv. znaˇcen´ı s´ıtˇe).

M´ısta jsou znaˇcena nez´apornou celoˇc´ıselnou hodnotou ud´avaj´ıc´ı poˇcet znaˇcek (tokens)

v m´ıstˇe. Tento poˇcet je graficky zn´azornˇen pomoc´ı vyplnˇen´ych krouˇzk˚u o stejn´em poˇctu

jako je poˇcet znaˇcek v m´ıstˇe. Pˇri vˇetˇs´ım mnoˇzstv´ı znaˇcek se poˇcet reprezentuje ˇc´ıslem viz.

obr´azek 4.2.

Obr´azek 4.2: a) m´ısto bez znaˇcek, b) m´ısto se tˇremi znaˇckami, c) m´ısto se sedmi znaˇckami

Petriho s´ıt’ tedy vznik´a propojen´ım m´ıst a pˇrechod˚u. Pokud napˇr. m´ıstem

modelu-jeme logickou podm´ınku, pak podm´ınka plat´ı, pokud je v m´ıstˇe znaˇcka. V opaˇcn´em pˇr´ıpadˇe

podm´ınka neplat´ı. Dan´y pˇrechod je provediteln´y, pokud jsou splnˇeny vˇsechny jeho podm´ınky.

Proveden´ı pˇrechodu znamen´a, ˇze se odebere znaˇcen´ı ze vstupn´ıch m´ıst a je pˇrid´ano do m´ıst

v´ystupn´ıch. Na obr´azku 4.3 je s´ıt’ pˇred proveden´ım pˇrechodu a na obr´azku 4.4 po proveden´ı

pˇrechodu.

Obr´azek 4.3: S´ıt’ pˇred proveden´ım pˇrechodu - splnˇeny vstupn´ı podm´ınky

Obr´azek 4.4: S´ıt po proveden´ı pˇrechodu

Pˇr´ıpadu, kdy m´ısta maj´ı v´yznam logick´ych dvouhodnotov´ych podm´ınek vyuˇz´ıv´a

nej-jednoduˇsˇs´ı tˇr´ıda Petriho s´ıt´ı C/E Petriho s´ıtˇe. (Condition/Event Petri Nets). Zobecnˇen´ım

C/E Petriho s´ıt´ı vznik´a v dneˇsn´ı dobˇe velmi rozˇs´ıˇren´a tˇr´ıda Petriho s´ıt´ı. M´ısta s´ıtˇe jsou

interpretov´ana jako parci´aln´ı stav syst´emu, kter´y se specifikuje nez´aporn´ym celoˇc´ıseln´ym

znaˇcen´ım. Proveden´ı ud´alosti se tedy formuluje na minim´aln´ı poˇcet znaˇcek ve vstupn´ıch

(30)

vˇetˇs´ı poˇcet hran se pˇri grafick´e reprezentaci ˇcastˇeji zobrazuje nad hranou hodnota ud´avaj´ıc´ı

jej´ı v´ahu viz. obr´azek 4.5

Obr´azek 4.5: a) n´asobn´a hrana, b) ohodnocen´ı hrany

### aln´ı definice

Tato kapitola obsahuje z´akladn´ı matematick´e definice potˇrebn´e pro ´uvod do studia Petriho

s´ıt´ı. V´ıce se lze doˇc´ıst v [13].

• Definice 4.2.1 S´ıt’.

Trojici N = (P, T, F ) naz´yv´ame s´ıt´ı, jestliˇze

1. P a T jsou disjunktn´ı mnoˇziny a

2. F ⊆ (P × T ) ∪ (T × P ) je bin´arn´ı relace

Mnoˇzina P se naz´yv´a mnoˇzinou m´ıst s´ıtˇe N , mnoˇzina T mnoˇzinou pˇrechod˚u s´ıtˇe N

a relace F tokovou relac´ı s´ıtˇe N .

Grafem s´ıtˇe naz´yv´ame bipartitn´ı orientovan´y graf, kter´y vznikne grafovou reprezentac´ı

relace F . Mnoˇzina P ∪ T je mnoˇzinou vrchol˚u grafu s´ıtˇe.

S´ıt’ N zobrazen´a na obr´azku 4.6

m´a form´aln´ı z´apis N = (P, T, F ), kde

P = {p1, p2, p3} T = {t1, t2} F = {hp1, t1i, hp2, t1i, ht1, p3i, hp3, t2i, ht2, p1i, ht2, p2i} . • Definice 4.2.2 Petriho s´ıt’. ˇ

Sestici N = (P, T, F, W, K, M0) naz´yv´ame P/T Petriho s´ıt´ı (Place/Transition Petri

Net) jestliˇze

1. (P, T, F ) je koneˇcn´a s´ıt’

(31)

Obr´azek 4.6: Pˇr´ıklad Petriho s´ıtˇe N

3. K : P → N ∪ {ω} je zobrazen´ı urˇcuj´ıc´ı kapacitu kaˇzd´eho m´ısta

4. M0: P → N ∪ {ω} je poˇc´ateˇcn´ı znaˇcen´ı m´ıst Petriho s´ıtˇe takov´e, ˇze

∀p ∈ P : M0(p) ≤ K(p)

Mnoˇzina P se naz´yv´a mnoˇzinou m´ıst s´ıtˇe N , mnoˇzina T mnoˇzinou pˇrechod˚u s´ıtˇe N

a relace F tokovou relac´ı s´ıtˇe N .

Grafem s´ıtˇe naz´yv´ame bipartitn´ı orientovan´y graf, kter´y vznikne grafovou reprezentac´ı

relace F . Mnoˇzina P ∪ T je mnoˇzinou vrchol˚u grafu s´ıtˇe.

### e

Tˇr´ıda ˇCasov´ych Petriho s´ıt´ı je rozˇs´ıˇren´ım klasick´ych Petriho s´ıt´ı o moˇznost popisu ˇcasov´ych

vztah˚u mezi operacemi v modelovan´em syst´emu [13].

Obr´azek 4.7: Uk´azka ˇCasov´e Petriho s´ıtˇe

Kaˇzd´y pˇrechod t ˇcasov´e Petriho s´ıtˇe je atribuov´an dvˇema nez´aporn´ymi re´aln´ymi ˇc´ısly

a a b, a ≤ b reprezentuj´ıc´ımi relativn´ı ˇcasov´e hodnoty vztaˇzen´e k okamˇziku, kdy se st´av´a

(32)

Hodnota a znaˇc´ı minim´aln´ı ˇcas, kter´y mus´ı uplynout, aby pˇrechod t mohl b´yt proveden

a hodnota b je maxim´aln´ı ˇcas, po kter´y je pˇrechod t provediteln´y, aniˇz byl proveden. Tedy,

stane-li se pˇrechod t provediteln´ym v ˇcase τ , pak m˚uˇze b´yt proveden v ˇcasov´em intervalu

hτ + a, τ + bi, pokud ovˇsem v tomto intervalu nedoˇslo ke zmˇenˇe znaˇcen´ı, kter´a vyluˇcuje

proveden´ı pˇrechodu t. Grafick´a reprezentace s´ıtˇe se nijak nemˇen´ı od klasick´ych Petriho s´ıt´ı.

Jedinou zmˇenou je, ˇze se k pˇrechod˚um pˇrid´av´a popisn´a informace ud´avaj´ıc´ı minim´aln´ı a

maxim´aln´ı ˇcas, ve kter´em m˚uˇze b´yt dan´y pˇrechod proveden. Tato informace se zapisuje

v hranat´ych z´avork´ach. Uk´azka ˇcasov´e s´ıtˇe je ilustrov´ana na obr´azku 4.7.

### u

Petriho s´ıtˇemi lze modelovat syst´emy se sd´ılen´ymi zdroji. Princip modelov´an´ı sd´ılen´ych

zdroj˚u bude nejl´epe patrn´y na pˇr´ıkladu 4.4.1.

Obr´azek 4.8: Pˇr´ıklad Petriho s´ıtˇe se sd´ılen´ym zdrojem

Pˇr´ıklad ilustruje pouˇzit´ı sd´ılen´eho zdroje dvˇema procesy. Kaˇzd´y z proces˚u je sloˇzen ze

tˇr´ı ud´alost´ı a tˇr´ı pˇrechod˚u. Sd´ılen´y zdroj obsahuje jednu znaˇcku, coˇz znamen´a, ˇze zdroj

m˚uˇze v jednu chv´ıli vyuˇz´ıvat pouze jeden proces. Dan´y proces si znaˇcku ze sd´ılen´eho

zdroje odebere a po proveden´ı ud´alost´ı ji n´aslednˇe vr´at´ı. Pokud jsou pˇrechody t3 a t03

ˇcasov´e, tak pˇredstavuj´ı onen fakt pouˇz´ıv´an´ı zdroje. Velk´ym probl´emem u sd´ılen´ych

zdroj˚u je tzv. uv´aznut´ı, nˇekdy tak´e oznaˇcovan´e jako deadlock, coˇz znamen´a, ˇze ˇz´adn´y

z proces˚u nem˚uˇze pokraˇcovat a ˇz´adn´y pˇrechod s´ıtˇe nen´ı v tomto okamˇziku

(33)

## avrh programu

Hlavn´ım c´ılem, kter´y jsem si kladl pˇri n´avrhu, bylo vytvoˇren´ı programu pro ˇreˇsen´ı co

nej-obecnˇejˇs´ı mnoˇziny probl´em˚u pl´anov´an´ı a rozvrhov´an´ı. Protoˇze ´uplnˇe vˇsechny probl´emy

z t´eto oblasti nen´ı moˇzn´e jednou aplikac´ı pokr´yt, soustˇredil jsem se proto na skupinu

probl´em˚u, kter´a je v t´eto oblasti nejrozˇs´ıˇrenˇejˇs´ı a tou jsou Shop probl´emy. Vych´azel jsem

ze z´akladn´ıho typu Job Shop (viz. kapitola Job Shop scheduling, 2.5), kter´y jsem rozˇs´ıˇril

do obecnˇejˇs´ı podoby. Z toho d˚uvodu jsem aplikaci dal jm´eno Job Shop Solver. Dalˇs´ım

d˚uleˇzit´ym poˇzadavkem na navrhovan´y program byla snadn´a rozˇsiˇritelnost na vˇetˇs´ı skupinu

pl´anovac´ıch probl´em˚u, pˇr´ıpadnˇe snadn´a ´uprava krit´eri´ı. Protoˇze je program navrhov´an jako

konzolov´a aplikace, m˚uˇze b´yt ˇz´adouc´ı jej vyuˇz´ıvat v aplikac´ıch s GUI1. Snaˇzil jsem se tedy

program navrhnout tak, aby bylo napojen´ı na GUI co nejjednoduˇsˇs´ı. T´ım by mohlo b´yt

vyuˇzit´ı aplikace ˇsirˇs´ı a mohla by b´yt vyuˇzita v praxi u nejr˚uznˇejˇs´ıch pl´anovac´ıch probl´em˚u.

´

Ukolem programu bude naj´ıt nejlepˇs´ı pl´any k zadan´emu probl´emu. Pro specifikaci zad´an´ı

jsem navrhl strukturu (viz. kapitola Reprezentace probl´emu, 5.2), kter´a bude dan´y probl´em

reprezentovat. Aplikace bude pro hled´an´ı nejlepˇs´ıch pl´an˚u vyuˇz´ıvat genetick´ych algoritm˚u

(viz. kapitola Genetick´e algoritmy, 3). Hled´an´ı bude moˇzno prov´adˇet pro nejr˚uznˇejˇs´ı krit´eria,

jak´ymi jsou napˇr. nejkratˇs´ı celkov´a doba pl´anu nebo nejmenˇs´ı ˇcasov´a prodleva na zdroj´ıch.

V´ysledn´y nalezen´y pl´an ´ulohy bude v posledn´ı f´azi reprezentov´an ˇCasovou Petriho s´ıt´ı. Ta

bude pops´ana a pˇrehlednˇe vymodelov´ana v jazyce PNML (viz. kapitola Transformace pl´an˚u

do Petriho s´ıtˇe, 8), kter´y je v souˇcasn´e dobˇe standardem pro popis Petriho s´ıt´ı.

### Architektura aplikace

Objektov´y model aplikace je koncipov´an do nˇekolika oddˇelen´ych modul˚u. Tyto moduly

pˇredstavuj´ı hlavn´ı bloky, kter´e jsou d´ıky interfaceov´emu n´avrhu snadno nahraditeln´e za

bloky s jinou implementac´ı.

Hlavn´ı objektov´y model aplikace je zobrazen na obr´azku 5.1. Pˇredstavuje pouze z´akladn´ı

1GUI - Graphical User Interface, je uˇzivatelsk´e rozhran´ı, kter´e umoˇnuje ovl´adat poˇc´ıtaˇc pomoc´ı

(34)

strukturu s b´azov´ymi tˇr´ıdami aplikace. Jednotliv´e moduly jsou popisov´any v kapitol´ach n´ıˇze.

Model je tedy sloˇzen z tˇechto modul˚u:

• Options • GA

• Simulator • Petri net

Aplikace mus´ı v prvn´ım kroku z´ıskat zadanou ´ulohu od uˇzivatele. O to se bude

sta-rat modul Options, kter´y zpracuje parametry na standardn´ım vstupu a n´aslednˇe naˇcte

zad´an´ı ´ulohy, kter´e je uloˇzeno v textov´em souboru v podobˇe urˇcit´e struktury (viz. kapitola

Reprezentace probl´emu, 5.2). Modul se bude starat nejen o kontrolu spr´avn´e syntaxe t´eto

struktury, ale tak´e jej´ı s´emantiky. V posledn´ı f´azi se vytvoˇr´ı reprezentace zadan´e ´ulohy

v podobˇe objektu, kter´y bude pˇred´av´an do dalˇs´ıch modul˚u.

GA

ArgChecker

Options GenAlg PNTransform

Petri net «interface» IOptions JobShopSolver Simulator Simulator «interface» ISimulator «interface» IPNTransform Options TaskBuilder «interface» IGenAlg

Obr´azek 5.1: Hlavn´ı objektov´y model rozdˇelen´y na bloky

Hlavn´ı ˇcinnost programu bude prob´ıhat v modulu GA. Ten bude zahrnovat genetick´y

algoritmus, kter´y se bude snaˇzit pro zadanou ´ulohu hledat pomoc´ı evoluce nejlepˇs´ı pl´an.

Z´akladem genetick´ych algoritm˚u je ohodnocov´an´ı jednotliv´ych jedinc˚u, v tomto pˇr´ıpadˇe

nalezen´ych pl´an˚u. Protoˇze pl´any mohou obsahovat operace, kter´e nemaj´ı pˇresnˇe stanovenou

(35)

modelu. Bude proto zapotˇreb´ı prov´adˇet na jednotliv´ymi pl´any simulaci, ve kter´e se budou

n´ahodnˇe volit d´elky operace v dan´em intervalu. O simulaci pl´anu se bude starat modul

Simulator.

V posledn´ı f´azi se bude nejlepˇs´ı nalezen´y pl´an pro zadanou ´ulohu reprezentovat v

po-dobˇe ˇCasov´e Petriho s´ıtˇe. Petriho s´ıt’ bude modelov´ana ve znaˇckovac´ım jazyce PNML.

Bude zapotˇreb´ı vytvoˇrit obecn´y layout, pomoc´ı kter´eho se pro jak´ykoli pl´an zobraz´ı

Pet-riho s´ıt’ v pˇrehledn´e a ˇciteln´e podobˇe. Tato transformace pl´anu do podoby Petriho s´ıtˇe bude

prov´adˇena modulem Petri net.

### emu

Pro reprezentaci probl´emu je zapotˇreb´ı vytvoˇrit obecnou strukturu, ve kter´e by bylo moˇzn´e

danou ´ulohu popsat. Navrhl jsem proto strukturu pokr´yvaj´ıc´ı a souˇcasnˇe rozˇsiˇruj´ıc´ı pl´anovac´ı

´

ulohu typu Job Shop. Rozˇs´ıˇren´ı Job Shop ´ulohy spoˇc´ıv´a v ˇcasov´em intervalu jednotliv´ych

operac´ı. Klasick´a ´uloha Job Shop poˇc´ıt´a pouze s konstantn´ı d´elkou operace. Toto rozˇs´ıˇren´ı

umoˇzˇnuje popisovat probl´emy s urˇcitou nepˇresnost´ı, kter´a m˚uˇze b´yt v urˇcit´ych pˇr´ıpadech

ˇ

z´adouc´ı. Na druhou stranu komplikuje ˇreˇsen´ı takov´ych probl´em˚u2. Uk´azku takov´eho zad´an´ı

probl´emu je moˇzno vidˇet na pˇr´ıkladu n´ıˇze.

Pˇr´ıklad 5.2.1 Uk´azka struktury zad´an´ı na jednoduch´em probl´emu

Job: A, B Operations: 1 − 5 Machines: X, Y Process plans: A → (2, 1) B → (3, 4, 5) Utilization: X → {1, 3, 5} Y → {2, 3, 4} Duration: 1 : 3 − 4 2 : 1 − 1 3 : 5 − 6 4 : 2 − 2 5 : 7 − 9

Struktura je sloˇzena ze ˇsesti prvk˚u, kter´e umoˇzˇnuj´ı pˇresn´y popis dan´e ´ulohy. Tento

popis ˇc´asteˇcnˇe odpov´ıd´a obecn´emu zad´an´ım Job Shop probl´emu a vyuˇz´ıv´a tak jeho pojm˚u.

2

(36)

Probl´em se skl´ad´a z nˇekolika ´uloh uveden´ych v parametru Job, ty zase z operac´ı, kter´e

je potˇreba na stroj´ıch prov´est, aby byla ´uloha splnˇena. Celkov´y poˇcet operac´ı na vˇsech

´

uloh´ach vyjadˇruje parametr Operations3. Struktura d´ale obsahuje seznam stroj˚u (nˇekdy

oznaˇcovan´ych jako zdroj˚u), na kter´ych jsou vykon´av´any operace jednotliv´ych ´uloh. V´yˇcet

stroj˚u je uveden v parametru Machines. Pro kaˇzdou z ´uloh se definuje tzv. procesn´ı pl´an,

kter´y ud´av´a z jak´ych operac´ı jsou ´ulohy sloˇzeny a v jak´em poˇrad´ı mus´ı b´yt prov´adˇeny.

Pl´any jsou definov´any v parametru Process plans. Dalˇs´ım parametrem je Utilization,

kter´y definuje schopnosti jednotliv´ych stroj˚u, neboli kter´e operace na nich lze prov´adˇet.

Posledn´ım parametrem je Duration vymezuj´ıc´ı ˇcasov´y interval pro jednotliv´e operace.

Pro tuto strukturu v textov´em form´atu jsem vytvoˇril objektov´y model, kter´y ji bude

reprezentovat v pamˇeti poˇc´ıtaˇce. Model n´avrhu je na obr´azku 5.2.

Machine  name : string

 operations : vector< O peration* > Task

 jobs : vector< Job >  machines : vector< Machine >

Operation  name : string  minT ime : int  maxT ime : int Job

 name : string

 plan : vector< O peration* >

Obr´azek 5.2: Objektov´a reprezentace probl´emu

Zad´an´ı cel´eho probl´emu by tak bylo uloˇzeno v jedin´em objektu tˇr´ıdy Task, pˇres kter´y

by se pˇristupovalo ke vˇsem dalˇs´ım poloˇzk´am. Tato tˇr´ıda obsahuje dva vektory4, jeden pro

´

ulohy a druh´y pro stroje. ´Ulohy a stroje jsou navrˇzeny jako samostatn´e tˇr´ıdy. Tˇr´ıda Job,

kter´a by pˇredstavovala ´ulohu, by uchov´avala jej´ı n´azev a jej´ı procesn´ı pl´an v podobˇe vektoru

obsahuj´ıc´ı ukazatele na operace. Stroje by byly objekty tˇr´ıdy Machine. Ta by uchov´avala

n´azev stroje a vektor ukazatel˚u na operace, kter´e by bylo moˇzno na stroji prov´adˇet. Operace

jsou takt´eˇz zapouzdˇreny ve zvl´aˇst’ tˇr´ıdˇe Operation a jej´ımi ˇcleny jsou n´azev a minim´aln´ı a

3

Parametr Operations byl zaveden pˇredevˇs´ım pro kontrolu s´emantiky zad´an´ı.

(37)

### eho algoritmu

Modul s genetick´ym algoritmem bude tvoˇrit nejv´yznamnˇejˇs´ı ˇc´ast programu a tak bylo

ˇ

z´adouc´ı mu vˇenovat vˇetˇs´ı pozornost. Pro ˇreˇsen´ı ´uloh genetick´ym algoritmem budu vyuˇz´ıvat

knihovny GAlib coˇz je C++ knihovna obsahuj´ıc´ı komponenty pro vytv´aˇren´ı genetick´ych

algoritm˚u. Obsahuje n´astroje pro pouˇzit´ı genetick´ych algoritm˚u k optimalizac´ım v r˚uzn´ych

C++ programech. Ty mohou vyuˇz´ıvat libovolnou reprezentaci a genetick´e oper´atory.

Kniho-vna GAlib je podporov´ana na r˚uzn´ych UNIX platform´ach (Linux, SGI, MacOSX, Sun,

HP, DEC, IBM) stejnˇe dobˇre jako na Windows, pˇr´ıpadnˇe MacOS. Domovsk´e str´anky t´eto

knihovny jsou na adrese http://lancet.mit.edu/ga/.

Pˇri n´avrhu jsem se soustˇredil na abstrakci v modelu, kter´a by umoˇzˇnovala snadnou

z´amˇenu knihovny GAlib za jinou. N´avrh se tak´e odv´ıjel od m´eho poˇzadavku umˇet

gene-tick´y algoritmus pozastavit, spustit pˇr´ıpadnˇe restartovat. Tato funkcionalita by mohla b´yt

n´aslednˇe vyuˇz´ıv´ana pˇri napojen´ı na GUI. Posledn´ım poˇzadavkem bylo vyuˇz´ıt n´avrhov´eho

vzoru Observer [6], kter´y by umoˇzˇnoval vytv´aˇret prvky pro sledov´an´ı genetick´eho

algo-ritmu. Objektov´y model se zn´azornˇenou hierarchi´ı dˇediˇcnosti je vidˇet na obr´azku 5.3.

AbstractSubj ect GenAlg AbstractProcess AbstractProcWatch ContinuousWatch TimedStop FitnessWatch «interface» IObserver «interface» IProcess «interface» IGenAlg «interface» ISubj ect

Obr´azek 5.3: Objektov´y model Genetick´eho algoritmu

B´azovou tˇr´ıdou genetick´eho algoritmu je tˇr´ıda GenAlg. Ta implementuje rozhran´ı5, kter´e

je souˇcasnˇe tak´e rozhran´ım modulu GA. Tˇr´ıda GenAlg je navrˇzena tak, ˇze ji lze pouˇz´ıt

jako b´azovou tˇr´ıdu pro ˇreˇsen´ı nejr˚uznˇejˇs´ıch optimalizaˇcn´ıch probl´em˚u. D˚uleˇzit´ymi prvky

jsou observery. Pr´avˇe pro nˇe jsem pˇrizp˚usobil cel´y n´avrh objektov´eho modelu. Observery

5

(38)

jsou objekty, kter´e mohou sledovat aktu´aln´ı stav pr˚ubˇehu genetick´eho algoritmu a tak´e

reagovat na konkr´etn´ı zmˇeny tohoto stavu. Napˇr´ıklad mohou vypisovat informace o pr˚ubˇehu

prohled´av´an´ı a nebo na z´akladˇe stanoven´ych podm´ınek mohou prohled´av´an´ı samy zastavit.

D˚uleˇzitou tˇr´ıdou, ze kter´e tˇr´ıda GenAlg dˇed´ı, je tˇr´ıda AbstractProcess. Tato tˇr´ıda

implementuje rozhran´ı IProcess, kter´e umoˇzˇnuje uˇz v´yˇse zmiˇnovanou funkcionalitu

zasta-ven´ı, spuˇstˇen´ı nebo restart genetick´eho algoritmu. Tˇr´ıda implementuje tak´e pro observery

d˚uleˇzit´e rozhran´ı ISubject. Toto rozhran´ı slouˇz´ı k pˇripojov´an´ı jednotliv´ych observer˚u ke

genetick´emu algoritmu.

N´avrh observer˚u byl navrˇzen tak, aby byly pokud moˇzno nez´avisl´e na b´azov´e tˇr´ıdˇe

ge-netick´eho algoritmu. Observery, kter´e jsem navrhl se budou starat o pr˚ubˇeˇzn´e vypisov´an´ı

informac´ı na v´ystup (kter´ym m˚uˇze b´yt logovac´ı soubor pˇr´ıpadnˇe standardn´ı v´ystup) a nebo

o pˇr´ıpadn´e ukonˇcen´ı prohled´av´an´ı pˇri platnosti uˇzivatelem nastaven´ych podm´ınek. Celkem

jsem navrhl tˇri observery struˇcnˇe popsan´e v tabulce 5.1.

Tˇr´ıda Popis

TimedStop Zastav´ı prohled´av´an´ı pokud ubˇehne dan´y ˇcasov´y limit. ContinuousWatch Pr˚ubˇeˇznˇe vypisuje informace o aktu´aln´ım stavu prohled´av´an´ı.

FitnessWatch Pokud je nalezeno ˇreˇsen´ı s lepˇs´ı hodnou fitness, vyp´ıˇse jej.

(39)

## algoritmu

Jak uˇz jsem zm´ınil v n´avrhu, genetick´y algoritmus bude m´ıt za ´ukol pro uˇzivatelem zadanou

´

ulohu, naj´ıt co nejlepˇs´ı pl´an. Protoˇze probl´em hled´an´ı takov´eho pl´anu je oznaˇcov´an jako

NP-´upln´y, nebude jeho nalezen´ı ´uplnˇe snadn´e. Genetick´e algoritmy se ve srovn´an´ı se slep´ym

prohled´av´an´ım dok´aˇz´ı i s tˇemito probl´emy pomˇernˇe dobˇre vyrovnat.

Genetick´y algoritmus ale pro svou ˇcinnost mus´ı m´ıt definov´any urˇcit´e prvky, kter´e jsou

pro nejr˚uznˇejˇs´ı optimalizaˇcn´ı ´ulohy jedineˇcn´e. Z´akladem je definice k´odov´an´ı probl´emu.

Neboli jak bude probl´em reprezentov´an v podobˇe genomu. Dalˇs´ımi d˚uleˇzit´ymi prvky jsou

genetick´e oper´atory a v neposledn´ı ˇradˇe ohodnocovac´ı funkce (fitness funkce), kter´a

vel-kou m´ırou ovlivˇnuje hled´an´ı. Pr´avˇe implementac´ı tˇechto prvk˚u genetick´eho algoritmu pro

probl´em pl´anov´an´ı se vˇenuje cel´a tato kapitola.

### emu

Vhodn´e zak´odov´an´ı informac´ı do chromozomu m˚uˇze v´yznamnˇe pˇrispˇet k efektivnosti hled´an´ı

poˇzadovan´eho ˇreˇsen´ı. ˇSpatn´ym k´odov´an´ım m˚uˇzeme v´yraznˇe navyˇsovat prohled´avan´y

pro-stor. Proto je vhodn´e t´eto ˇc´asti vˇenovat zv´yˇsenou pozornost. Zp˚usob˚u jak´ymi lze probl´emy

k´odovat m˚uˇze b´yt v´ıcero (celoˇc´ıselnˇe, bin´arnˇe, v podobˇe stromu, ˇretˇezce). Volba k´odov´an´ı

pak souvis´ı s charakterem dan´eho probl´emu, jak´e informace jsou pro n´as kl´ıˇcov´e, kter´e

genetick´e oper´atory se nad jedinci budou aplikovat a pod.

Pro zak´odov´an´ı probl´emu jsem zvolil dvourozmˇern´e pole s cel´ymi ˇc´ısly. To bude

repre-zentovat chromozom nˇejak´eho ˇreˇsen´ı. ˇR´adky pole budou budou konkr´etn´ı stroje a jednotliv´e

sloupce pak budou operace, kter´e se na nich budou prov´adˇet. Hodnoty, kter´e se v pol´ıch

mohou vyskytovat mus´ı b´yt v intervalu 0 − N . Nula pˇredstavuje pr´azdn´e m´ısto pl´anu a

hodnota od 1 do N pak konkr´etn´ı ˇc´ıslo operace. Poˇrad´ı operac´ı v poli ud´av´a uspoˇr´ad´an´ı

v jak´em budou na stroj´ıch prov´adˇeny. Toto poˇrad´ı je z´avisl´e i na operac´ıch na jin´ych stroj´ıch.

(40)

z´avisl´a na operaci 6 a nem˚uˇze b´yt proto provedena dˇr´ıve. D´ale m˚uˇzeme vyˇc´ıst, ˇze operac´ım

14 a 13 nebr´an´ı nic, aby byly na stroj´ıch provedeny paralelnˇe. Je d˚uleˇzit´e upozornit na

fakt, ˇze poˇrad´ı neud´av´a faktick´e prov´adˇen´ı na stroj´ıch, ale pouze naznaˇcuje ˇcasov´e poˇrad´ı

zaˇc´atku operace. Chromozom tedy nen´ı pˇr´ım´ym obrazem v´ysledn´eho prov´adˇec´ıho pl´anu.

Ten je z chromozomu vytvoˇren dle ˇcasov´eho intervalu operac´ı aˇz pˇri samotn´e simulaci (v´ıce

v kapitole Simul´ator pl´an˚u, 7).

Obr´azek 6.1: Uk´azka k´odov´an´ı probl´emu

Protoˇze je problematick´e pracovat s r˚uznˇe velk´ymi chromozomy, bylo zapotˇreb´ı vymezit

pevnou velikost pole. V´yˇsku pole ud´av´a poˇcet stroj˚u a ˇs´ıˇrka je d´ana poˇctem vˇsech operac´ı.

To z toho d˚uvodu, aby byl prostor i pro takov´e pl´any, kde by se na stroj´ıch neprov´adˇely

Pˇri inicializaci populace se vytvoˇr´ı chromozomy dan´e velikosti a ty jsou naplnˇeny

ope-racemi1 tak, aby operace leˇzely na ˇr´adc´ıch stroje, kter´y je um´ı zpracov´avat. Rozm´ıstˇen´ı

operac´ı na stroji je n´ahodn´e a po cel´e ˇs´ıˇrce pole. Pr´azdn´a m´ısta jsou vyplnˇena nulami.

Pokud je operace provediteln´a na v´ıce neˇz jednom stroji, je stroj vybr´an n´ahodnˇe.

### zen´ı

Oper´ator pro kˇr´ıˇzen´ı jedinc˚u tvoˇril implementaˇcnˇe nejsloˇzitˇejˇs´ı ˇc´ast genetick´eho algoritmu.

Snaˇzil jsem se o zachov´av´an´ı sch´emat a tak´e, aby v´ysledn´e chromozomy byly korektn´ı

(aby napˇr. ˇz´adn´a operace nebyla na v´ıce stroj´ıch a pod.). Navrhl jsem tedy dvoubodov´e

kˇr´ıˇzen´ı pro cel´a ˇc´ısla, kter´e se nejv´ıce podob´a kˇr´ıˇz´ıc´ı metodˇe Order 1 crossover (OX).

Tuto metodu bylo zapotˇreb´ı upravit tak, aby byla pouˇziteln´a pro ˇreˇsen´ı tohoto probl´emu.

Pˇri kˇr´ıˇzen´ı se uvaˇzuje fakt, ˇze potomci maj´ı inicializovan´e geny chromozom˚u na hodnotu 0.

Kˇr´ıˇzen´ı se skl´ad´a ze tˇr´ı ˇc´ast´ı, kter´e se budu snaˇzit ilustrovat obr´azky.

V prvn´ı ˇc´asti kˇr´ıˇzen´ı se n´ahodnˇe vygeneruj´ı dva body v rozsahu ˇs´ıˇrky chromozomu. Na

z´akladˇe tˇechto dvou bod˚u se budou do chromozomu potomka br´at geny bud’ z 1. nebo 2.

rodiˇce. Pro jednoduchost zavedu pojmy jako vnitˇrn´ı a vnˇejˇs´ı oblast. Do vnitˇrn´ı oblasti patˇr´ı

geny mezi n´ahodnˇe vygenerovan´ymi body a do vnˇejˇs´ı ty ostatn´ı. V t´eto prvn´ı ˇc´asti kˇr´ıˇzen´ı

se do potomk˚u pˇrenesou pouze vnitˇrn´ı oblasti a to tak, ˇze pro potomka 1 se pouˇzije vnitˇrn´ı

oblast rodiˇce 1 a pro potomka 2 se pouˇzije vnitˇrn´ı oblast rodiˇce 2, tak jako to zn´azorˇnuje

(41)

obr´azek 6.2.

Obr´azek 6.2: Kˇr´ıˇzen´ı ˇc´ast 1 - zachov´an´ı stˇred˚u mezi body

Ve druh´e ˇc´asti kˇr´ıˇzen´ı se vytv´aˇr´ı seznamy gen˚u, poˇc´ınaje genem za druh´ym n´ahodn´ym

bodem a konˇce genem pˇred prvn´ım n´ahodn´ym bodem. Geny jsou br´any cyklicky, tedy za

posledn´ım genem chromozomu n´asleduje gen prvn´ı. Seznamy jsou vytvoˇreny pro vˇsechny

ˇr´adky chromozom˚u a budou vyuˇz´ıv´any pro doplˇnov´an´ı do potomk˚u, kter´e je pops´ano v tˇret´ı

ˇ

c´asti. Seznamy jsou pˇriˇrazeny k potomk˚um do kˇr´ıˇze, stejnˇe jak je zobrazeno na obr´azku

6.3. Tedy pro potomka 1 se pouˇzij´ı seznamy rodiˇce 2 a naopak.

Obr´azek 6.3: Kˇr´ıˇzen´ı ˇc´ast 2 - vytvoˇren´ı seznam˚u gen˚u pro doplˇnov´an´ı

Posledn´ı tˇret´ı ˇc´ast kˇr´ıˇzen´ı doplˇnuje vytvoˇren´e seznamy do potomk˚u. Skl´ad´a se z 1 − N

kol dle aktu´aln´ıho rozloˇzen´ı gen˚u. Doplˇnov´an´ı se prov´ad´ı dokud nejsou vˇsechny seznamy

pr´azdn´e a je prov´adˇeno tak, ˇze se bere ze seznamu vˇzdy prvn´ı prvek zleva, kter´y je po

zpracov´an´ı2 smaz´an. Doplˇnov´an´ı seznam˚u na ve dvou kolech ilustruje obr´azek 6.3. V tomto

pˇr´ıpadˇe jsou dvˇe kola dostaˇcuj´ıc´ı - seznamy se ve druh´em kole vypr´azdn´ı.

V 1. kole se seznamy doplˇnuj´ı pouze do vnˇejˇs´ıch oblast´ı, poˇc´ınaje prvn´ı genem za druh´ym

n´ahodn´ym bodem. Pokud je prvkem seznamu ˇc´ıslo, kter´e uˇz v chromozomu potomka

exis-tuje, je toto ˇc´ıslo ignorov´ano a n´aslednˇe odstranˇeno ze seznamu. V kole 2-N je doplˇnov´an´ı

prov´adˇeno nad cel´ym chromozomem, poˇc´ınaje prvn´ım genem za druh´ym n´ahodn´ym bodem.

Doplˇnuje se pouze do gen˚u s nulovou hodnotou. Nyn´ı se uˇz nedoplˇnuj´ı prvky seznamu i

s nulovou hodnotou jako tomu bylo v 1. kole, ale jsou rovnou ignorov´any. I zde ale plat´ı

Updating...

## References

Related subjects :