Modely rozvrhování produkce s využitím Matlabu Semestrální práce pro 4EK425 (Modely produkčních systémů) Autor: Jaroslav Zahálka
Obsah Úvod 3 Popis produkčního systému 3 Matlab a TORSCHE Scheduling Toolbox 4 Modely s jedním procesorem 6 Modely s více procesory 7 Závěr 9
Úvod Modely s rozvržením produkce jsou jednou z nejdůležitějších odnoží oblasti optimalizace produkčních systémů. Tato práce má za cíl na úloze jednoduššího charakteru předvést řešení několika problémů z této problematiky a zároveň ilustrovat využití profesionálního softwarového prostředí Matlab a jeho doplňků k tomu určených. Matlab samotný nemá ve své základní instalaci žádné prostředky pro řešení problémů rozvrhování produkce, ale existuje plug-in TORSCHE Scheduling Toolbox, který má ambice tento nedostatek pokrýt. Následující práce tedy nejdříve nastíní řešený problém a pak postupně probere vhodné algoritmy implementované v tomto toolboxu a použitelné pro tuto úlohu. Popis produkčního systému Produkční systém, pro kterou budeme řešit jednotlivé úlohy, bude automatická linka, na které jsou skládány jednotlivé díly osobních počítačů. Pro naše účely je problém zjednodušen na deset operací, které mohou probíhat nezávisle na sobě. Jedná se o instalace jednotlivých komponent počítače do základní desky a tzv.casu krycí části základní jednotky počítače.každá činnost je charakterizována svou dobou trvání t i, termínem nejdříve možného začátku realizace r i a termínem požadovaného dokončení d i. Činnosti jsou následující: 1. instalace procesoru označíme procesor 2. instalace pevného disku označíme disk 3. instalace pamětového modulu označíme paměť 4. instalace grafické karty označíme grafika 5. instalace zvukové karty označíme zvuk 6. intalace síťové karty označíme disk 7. instalace chladícího větráku označíme větrák 8. instalace CD mechaniky označíme cdrom 9. instalace disketové mechaniky označíme diskety 10. instalace zdroje označíme zdroj
Tabulka shrnuje charakteristiky činností (časy jsou v sekundách): procesor disk paměť grafika zvuk síť větrák cdrom diskety zdroj t i 15 20 8 10 10 12 20 17 17 25 r i 0 15 18 25 45 70 65 50 95 110 d i 20 35 52 52 60 80 100 90 110 120 Matlab a TORSCHE Scheduling Toolbox Matlab je pokročilý výpočetní software, který má vlastní programovací jazyk pro popis řešených problémů a díky kterému je možné vytvářet i tzv. plug-iny přídavné moduly rozšiřující základní funkcionalitu výchozího programu. Jedním z nepřeberného množství těchto doplňků je právě TORSCHE Scheduling Toolbox zaměřený na úlohy rozvrhování produkce. Toolbox byl vytvořen na elektrotechnické fakultě ČVUT Praha a přehledný informační web o jeho použití s možností stažení je na adrese http://rtime.felk.cvut.cz/scheduling-toolbox/. Instalace Matlabu i samotného plug-inu je nenáročná a dobře popsaná, největší problém je s verzí Matlabu, která musí být vyšší než 6.5 (poslední verze jsou 7.3 a vyšší) a hardwarovou náročností programu. Na pomalejších počítačích není použití Matlabu kvůli jeho nárokům na velikost paměti a rychlost procesoru nejpříjemnější. Po zdárném zavedení toolboxu do systému je umožněn přístup k novým objektům a funkcím, díky kterým je možné definovat a řešit úlohy plánování. Základní příkazy jsou task, taskset, problem, plot a pak jednotlivé algoritmy: Objekt task představuje reprezentaci jedné činnosti systému, které lze přiřadit charakteristiky jako např. Processing time (doba trvání), Release time (nejdříve možný začátek realizace) a Deadline (požadovaný čas dokončení). Taskset představuje soubor činností (tedy objektů Task), které tvoří systém a je s nimi nakládáno jako s celkem. Problem je objekt zastřešující řešenou úlohu a je popsán Grahamovou notací, např. 1 r i C max. Syntaxe je pak např. problem('1,rj,cmax').
Algoritmy jsou implementovány jako funkce, jejichž parametrem je většinou objekt problem a taskset. Například pro úlohu 1 r i Cmax se používá funkce alg1rjcmax(taskset,problem). Příkaz plot se používá k vizualizaci vypočítaného řešení. Ke všem příkazům lze vypsat nápovědu pokynem help. Vyčerpávající přehled možností systému lze najít na adrese http://rtime.felk.cvut.cz/scheduling-toolbox/manual/. Pro představu následuje přehled algoritmů a typů úloh, které lze díky toolboxu řešit: Název Příkaz Problém Algoritmus pro 1 rj Cmax alg1rjcmax 1 rj Cmax Bratleyho algoritmus bratley1 rj,~dj Cmax Hodgsonův algoritmus alg1sumuj1 ΣUj Algoritmus pro P Cmax algpcmax P Cmax McNaughtonův algoritmus mcnaughtonrule P pmtn Cmax Algoritmus pro P rj,prec,~dj Cmax algprjdeadlinepreccmax P rj,prec,~dj Cmax Huův algoritmus hu P in-tree,pj=1 Cmax Bruckerův algoritmus brucker76 P in-tree,pj=1 Lmax Hornův algoritmus horn 1 pmtn,rj Lmax Plánování seznamu (List scheduling) listsch P prec Cmax Hoffmanův a Grahamův algoritmus algorithmcoffmangraham P2 prec,pj=1 Cmax Plánování s kladným a záporným spntl SPNTL časovým zpožděním Cyklické plánování cycsch CSCH SAT plánování (SAT scheduling) satsch P prec Cmax Definice dané úlohy v Matlabu zjednodušeným zápisem by tedy vypadala následovně: T=taskset([15 20 8 10 10 12 20 17 17 25]); T.Name={'procesor' 'disk' 'pamet' 'grafika' 'zvuk' 'sit' 'vetrak' 'cdrom' 'diskety' 'zdroj'}; T.ReleaseTime = ([0 15 18 25 45 70 65 50 95 110]); T.Deadline = ([20 35 52 52 60 80 100 90 110 120]); Na takto zavedený systém můžeme dále aplikovat celou řadu algoritmů a vytvářet jednotlivé rozvrhy optimální podle daných kritérií. Příkazem plot(t) lze zobrazit výchozí rozvržení činností včetně svých časových charakteristik. Šipky ve směru vzhůru zobrazují nejdříve možný začátek činnosti a šipky dolů požadované ukončení realizace. Výsledek zobrazuje následující obrázek.
Modely s jedním procesorem Nejjednodušší úloha je výpočet kritéria C max v jednoprocesorovém systému. V našem případě hodnota vychází 154 sekund a daný rozvrh můžete vidět na následujícím obrázku. Úloha byla vyřešena díky funkci alg1rjcmax(t,p), kdy všechny hodnoty r j jsou rovny nule. Další úlohou je 1 r j C max která se řeší algoritmem řadícím dávky vzestupně podle doby nejdříve možného začátku r j. Řeší se stejnou funkcí jako předchozí úloha - alg1rjcmax(t,p). C max je opět 154 sekund.výsledek zobrazuje následující obrázek.
Modely s více procesory Pokud se bude náš systém skládat z více procesorů, např. bude linka obsluhována více automaty skládajícími díly počítačů, můžeme se zabývat modely s více procesory. První úlohou je rozdělení dávek v systému se třemi procesory, kde není možné činnosti přerušovat v Grahamově notaci úloha 3 C max. Úloha je definována jako problem('p Cmax') a řešení je dosaženo algoritmem algpcmax(t,p,3). Algoritmus pro hledání optimálního rozvržení používá metody celočíselného programování.hodnota kritéria C max činí 52 sekund. Obrázek ukazuje optimální řešení: Obdobným problémem je úloha se dvěma procesory bez přerušení dávek 2 C max. Zde vychází optimální C max =77 a rozvržení činností na procesory ukazuje opět vygenerovaný obrázek na následující straně.
Úlohu rozdělení dávek na víc procesorů lze upravit o požadavek možného přerušení činností. V případě naší úlohy to asi není nejrozumnější požadavek, ale pro ilustrační účely schopností Matlabu se můžeme tohoto nedopatření dopustit. Nejprve budeme tedy řešit úlohu označenou jako 3 pmtn C max, na kterou byl vyvinut speciální algoritmus známý jako McNaughtonův. Ten je implementován v Matlabu jako funkce mcnaughtonrule() v našem případě ji tedy použijeme se třemi parametry jako mcnaughtonrule(t,p,3). Kritérium C max vychází 51,3 sekund. Prohlédněte si znázornění příslušného optimálního rozvrhu: Obdobnou úlohou je 2 pmtn C max, která se řeší také Mcnaughtonovým algoritmem a kritérium C max pro ní vychází 77 sekund. Na další stránce se opět nachází grafická podoba optimálního rozvrhu.
Závěr V této práci byly popsány základní možnosti využití Matlabu pro řešení úloh rozvrhování produkce s několika ilustračními problémy řešenými algoritmy probíranými v předmětu 4EK425. Použitý plug-in TORSCHE Scheduling Toolbox dokáže řešit i spoustu dalších úloh, zároveň však v současné verzi postrádá schopnost počítat některé základní problémy a určovat hodnoty kritérií. Určitě by však nebyl problém alespoň některé z jednodušších algoritmů a postupů používaných při výuce 4EK425 dodatečně naimplementovat.