Problém rovnomerných rozvrhov a fuzzy inferenčné systémy
29. August, 2011, Autor článku: Ladovský Tomáš, Informačné technológie
Ročník 4, číslo 8
Pridať príspevok
Zovšeobecnenú matematickú formuláciu problematiky tvorby rovnomerných rozvrhov pri neistote poznáme pod názvom “problém rovnomernosti riadkových súčtov stĺpcovo permutovanej matice”. Neistota je zahrnutá v prvkoch matice alebo spôsobe optimalizácie. Veľmi zaujímavá je dvojstĺpcová varianta problému, ktorá je často základom heuristík. Túto dvojstĺpcovú variantu vieme riešiť polynomiálne pomocou priraďovacej úlohy. Článok sa venuje problému návrhu nového spôsobu určenia koeficientov účelovej funkcie priraďovacej úlohy pomocou fuzzy inferenčného systému.
1. Úvod
V tomto článku rozumieme pod pojmom tvorba rozvrhu alebo rozvrhovanie proces rozhodovania, ktorý sa používa vo výrobnom priemysle, vo verejnej doprave a v iných odvetviach a službách. Pracuje s prideľovaním aktivít k zdrojom nad danými časovými periódami a snaží sa optimalizovať jednu alebo viac kriteriálnych funkcií tak, aby boli splnené všetky podmienky priradené k jednotlivým aktivitám a zdrojom. Z iného pohľadu je tvorba rozvrhov problémom časového plánovania a kombinatorickej optimalizácie. To sú problémy v ktorých vystupujú diskrétne premenné a v ktorých množina prípustných riešení je konečná. V každom z týchto problémov sa skrýva možnosť kombinatorickej explózie.
Rozvrh je súbor údajov, z ktorého je zrejmé, v ktorých časových intervaloch sa majú jednotlivé aktivity realizovať na ktorých zdrojoch. Zdrojmi môžu byť vodiči autobusov, stroje v dielni, viacnásobné/viacjadrové procesory, dopravné prostriedky, robotníci na pracovisku a veľa iného. Aktivitami môžu byť turnusy1 v autobusovej doprave, úlohy (operácie) vo výrobnom procese, vykonávanie počítačových programov, etapy pri stavebnom projekte a iné.
Každá aktivita má naplánovanú dobu trvania. V reálnom živote sa stretávame so zrovnomerňovaním pracovných zaťažení/výkonov strojov/vodičov za dané časové (periodické) obdobie rozvrhovania. Aby sme vedeli optimalizovať rovnomernosť rozvrhov, potrebujeme poznať mieru nerovnomernosti, ktorá je jednou z optimalizovaných kriteriálnych funkcií a môže nadobúdať nasledujúce tvary
(1) |
(2) |
Za predpokladu, že vytvárame rozvrh v doprave, môže jednotlivé premenné x1 až xm predstavovať plánované pracovné zaťaženia m vodičov a je ideálnym pracovným zaťažením vodičov, v tomto prípade priemernou hodnotou, ktorú spočítame ako
Rozvrhy, ktoré vznikli optimalizáciou miery nerovnomernosti, nazývame rovnomernými rozvrhmi. Vzhľadom na známu Grahamovu [1] klasifikáciu ide o neštandardný typ rozvrhov. Pod pojmom rovnomerné rozvrhy pri neistote rozumieme v nasledujúcom texte také rovnomerné rozvrhy, ktorých veľkosť aktivít je neistá a/alebo podmienky priradené k jednotlivým aktivitám a zdrojom sú vyjadrené neisto.
2 Rovnomerné rozvrhy pri neistote
Rovnomerné rozvrhy môžeme zovšeobecniť a matematicky formulovať ako kombinatorický problém rovnomernosti riadkových súčtov stĺpcovo permutovanej matice, ktorý anglicky označujeme ako matrix permutation problem [3]. Vhodným preusporiadaním stĺpcov matice môžeme docieliť väčšiu rovnomernosť riadkových súčtov matice/rozvrhu.
Definícia 1 (Matrix permutation problem [2])
Nech a
sú konečné neprázdne množiny a nech
je reálna matica rozmeru
. Hľadá sa taká matica permutácií
stĺpcov matice
pre ktorú platí:
kde f je nejaká miera nerovnomernosti vektora reálnych čísel, je i-ty riadkový súčet matice
a
je množina všetkých permutácií množiny
. Riešením takto formulovanej úlohy
je matica
Veľmi zaujímavá varianta problému vzniká pri dvojstĺpcovej matici, tzv. n=2, ktorú označujeme
. Túto variantu vieme riešiť exaktne v polynomiálnom čase pomocou \textit{priraďovacej úlohy} bivalentného lineárneho programovania, kde maticu priradení
definujeme ako
(3) |
Definícia2 (Klasická priraďovacia úloha KPU)
Medzi najznámejšie inštancie rozvrhovacích úloh patrí klasická priraďovacia úloha. Nech je konečná množina,
typu
je daná matica reálnych čísel a
typu
je hľadaná matica priradení. Potom priraďovaciu úlohu možno formulovať ako nasledujúcu úlohu bivalentného lineárneho programovania.
(4) |
Aby sme vyriešili pomocou
, potrebujeme správne navrhnúť účelovú funkciu, t.j. prvky matice
. Pre štandardný postup [2] nám poslúži miera nerovnomernosti (2). Po jednoduchej úprave získavame nasledujúci tvar
(4) |
Za predpokladu že permutácia prvého stĺpca je identická, je . Hodnoty
a
sú konštantné a neovplyvňujú výsledok optimalizácie, preto ich z účelovej funkcie môžeme vypustiť. Za predpokladu
, môžeme písať prvok matice
ako
pre všetky
Čo ale ak potrebujeme nahradiť niektoré alebo všetky prvky matice neistými hodnotami (fuzzy číslami, fuzzy intervalmi)? V takomto prípade potrebujeme definovať novú mieru nerovnomernosti, ktorá vie pracovať s neistými číslami. Takýto postup ale nie je cieľom článku. My chceme použiť trošku neštandardný postup a ukázať nové možnosti použitia fuzzy inferenčných systémov, to je ale cieľom predposlednej sekcie 3.
Pre úplnosť si ukážme ešte možnosti riešenia všeobecného problému . Tento problém rovnomernosti riadkových súčtov stĺpcovo permutovanej matice môžeme riešiť dvoma známymi heuristikami:
- Stochastickou dekompozičnou metódou
- Metódou deň-po-dni (stĺpec-po-stĺpci)
Metóda deň-po-dni najskôr pridelí turnusy vodičom pre prvý deň rozpisovania služieb, potom pre druhý deň a takto pokračuje až nepridelí turnusy vodičom pre každý deň rozpisovacieho obdobia. Toto prideľovanie sa deje s ohľadom na optimalizačné kritérium, ktoré je v tom tomto článku mierou nerovnomernosti. Nech je množina indexov riadkov a
je množina indexov stĺpcov reálnej matice
rozmeru
. Nech
je usporiadaná n-tica permutácií množiny
.
Algoritmus: Zovšeobecnená metóda deň-za-dňom [4]
1. Krok Inicializácia
- Nech k je aktuálny index stĺpca, potom nastav k:=1
- Nech
je vstupná matica rozmeru
- Nech
je inicializačná usporiadaná n-tica permutácií množiny $atex \mathcal M$, pre ktorú platí, že
pre
.
2. Krok Hľadanie permutácie
- Pre dané aktuálne k nastav
- Nájdi takú permutáciu
, pre ktorú platí, že
je optimálnou stĺpcovo permutovanou maticou s ohľadom na optimalizačné kritérium. Operácia
je operáciou násobenia matíc.
3. Krok Kontrola
- Ak k=n, potom KONIEC; inak k:=k+1 a GOTO krok 2.
Stochastická dekompozičná metóda pracuje na princípe rozkladu problému na niekoľko podproblémov (častí), riešením týchto podproblémov a ich následnou kompozíciou. Nech je množina indexov riadkov a
je množina indexov stĺpcov reálnej matice
rozmeru
. Nech
je usporiadaná n-tica permutácií množiny
.
Algoritmus: Stochastická-dekompozičná metóda [2]
1. Krok Kontrola
- Začíname s
reálnou maticou
a ľubovoľnou n-ticou
permutácií.
2. Krok Stochastická dekompozícia
- Náhodne vyberieme
, pre ktoré platí, že matica
rozmeru
, ktorú definujeme ako
kde , je optimálnou stĺpcovo permutovanou maticou s ohľadom na optimalizačné kritérium.
4.Krok Skladanie
- Aplikujme permutáciu
na všetky permutácie
pre
, to isté s
na všetky permutácie
pre
, atď. – a tak aktualizujeme n-tuple
ako
5. Krok Kontrola
- Ak je splnené nejaké zastavovacie kritérium potom STOP inak GOTO krok 2.
Tretí krok metódy môžeme riešiť viacerými prístupmi. Napríklad pre r=2 vzniká dvojstĺpcová matica , ktorú môžeme vzhľadom na optimalizačné kritérium riešiť pomocou priraďovacej úlohy (viď. definícia 2.2), kde hodnota premennej
rozhoduje o tom, či i-ty prvok v ľavom stĺpci priradíme k j-temu prvku v pravom stĺpci. Ďalej pre r=3 sa ponúka použitie trojindexovej priraďovacej úlohy. Taktiež sa na úlohy pre
problém)
Hlavný výpočet heuristík pozostáva z problematiky . Pri
a pre r=2 je to konkrétne jej tretí krok a pre
je to konkrétne druhý krok heuristiky. Táto vlasnosť nám dovoľuje použiť vyššie spomínaný postup riešenia
problému pomocou priraďovacej úlohy
.
Cieľom článku nieje prezentovať výhody a nevýhody jednotlivých heuristických metód, ale ukázať fuzzy inferenčné systémy ako vhodný a jednoduchý nástroj pri riešení problémov spojených s tvorbou rovnomerných rozvrhov, v tomto prípade pri návrhu prvkov matice .
3. Návrh koeficientov účelovej funkcie
Aby sme mohli vyriešiť problém pomocou
, potrebujeme správne navrhnúť účelovú funkciu, t.j. prvky matice
. Už vieme, že môžeme použiť modifikovanú mieru nerovnomernosti (5). Teraz na nasledujúcom príklade je ukázaný ďalší spôsob, pomocou ktorého demonštrujeme jednoduchosť/výhody použitia fuzzy inferenčných systémov.
Príklad 1 (Ilustračný príklad riešenia pomocou
)
Majme už existujúci s-dňový rozvrh pre piatich vodičov a pre
-vý deň chceme nájsť také priradenie i-teho vodiča k j-temu turnusu, aby index preferencie
spojený s týmto priradením bol maximálny, pričom musíme každému vodičovi priradiť práve jeden turnus (h1) a každému turnusu priradiť práve jedného vodiča (h2). Nech prvý stĺpec dvojstĺpcovej matice
odpovedá kumulovaným výkonom [min] piatich vodičov po s-tý deň a druhý stĺpec matice odpovedá pracovným časom [min] piatich turnusov, o ktorých ešte len máme rozhodnúť, ktorému vodičovi budú priradené.
Zadanie chceme riešiť pomocou priraďovacej úlohy (3), pre ktorú sú obe podmienky (h1,h2) splnené. Ostáva nám iba správne navrhnúť účelovú funkciu, t.j. prvky matice , ktoré spočítame pomocou fuzzy inferenčného systému, pre každé
a pre každé
samostatne, tzn., že vykonáme 25 fuzzy inferencií.
Výhodou použitia fuzzy inferenčného systému je, že vyjadrí hodnoty matice aj pre fuzzy vstupy, tzv. pre fuzzy maticu
. Teda nemusíme navrhovať žiadnu novú mieru nerovnomernosti pracujúcu s fuzzy číslami. Pre jednoduchosť riešme túto úlohu pre reálnu maticu, ktorej prvky sú fuzzy singletony
Nami navrhovaný fuzzy inferenčný systém má dve reálne vstupné hodnoty a
, ktoré sa zobrazujú do príslušných fuzzy množín (hodnôt fuzzy lingvistických premenných) a jednu reálnu výstupnú hodnotu y.
Báza dát pozostáva z dvoch fuzzy lingvistických premenných , ktoré sú potrebné pri fuzzyfikácií, t.j. pri určovaní stupňa, ktorým jednotlivé vstupy prislúchajú fuzzy lingvistickým hodnotám, ktoré definujeme pomocou funkcií príslušnosti. Nech
je fuzzy lingvistická premenná vyjadrujúca denný kumulovaný pracovný čas vodiča nadobúdajúca nasledujúce hodnoty (obr. 1):
- VS – Very short working cumulated time
- S – Short working cumulated time
- A – Average working cumulated time
- L – Long working cumulated time
- VL – Very long working cumulated time
Obr. 1: Fuzzy lingvistická premenná A vyjadrujúca kumulovaný denný pracovný čas vodiča s danými funkciami členstva fuzzy množín VS, S, A, L, VL
Nech je fuzzy lingvistická premenná vyjadrujúca denný pracovný čas turnusu, ktorá nadobúda nasledujúce hodnoty (obr. 1(b)):
- VS – Very short working time
- S – Short working time
- A – Average working time
- L – Long working time
- VL – Very long working time
Obr. 2: Fuzzy lingvistická premenná B vyjadrujúca denný pracovný čas turnusu a jej funkcie členstva fuzzy množín VS, S, A, L, VL
Ďalej báza dát pozostáva z fuzzy lingvistickej premennej , ktorá je potrebná v procese inferencie na získanie výslednej hodnoty (plochy) uvažovaného lingvistického pravidla (AK – POTOM). Nech
je fuzzy lingvistická premenná vyjadrujúca index preferencie a nadobúda nasledujúce hodnoty (obr. 3).
- VLP – Very low preference
- LP – Low preference
- MP – Medium preference
- HP – High preference
- VHP – Very high preference
Obr. 3: Fuzzy lingvistická premenná C vyjadrujúca index preferencie a jej funkcie členstva fuzzy množín VLP, LP, MP, HP, VHP
Báza lingvistických pravidiel pozostáva z nasledujúcich piatich pravidiel:
Vidíme, že takto zapísaná báza lingvistických pravidiel je dosť nečitateľná a preto ju zjednodušíme a zapíšeme pomocou nasledujúcej tabuľky:
Báza pravidiel
y | x2 | |||||
VS | S | A | L | VL | ||
x1 | VS | VLP | LP | MP | HP | VHP |
S | LP | VLP | LP | MP | HP | |
A | MP | LP | VLP | LP | MP | |
L | HP | MP | LP | VLP | LP | |
VL | VHP | HP | MP | LP | VLP |
Zadefinujme si teraz dve vstupné a jednu výstupnú hodnotu fuzzy inferenčného systému:
- Prvou vstupnou hodnotou je
,
- druhou vstupnou hodnotou je
a
- výstupnou hodnotou je
.
Tieto vstupy a výstupy definujeme pre každé . Teraz môžeme použiť nástroj [7] (aplikáciu), ktorým vyriešime takto navrhnutý fuzzy inferenčný systém aplikovaním Mamdamiho inferenčnej metódy. Postup inferencie pre dané vstupy
a
s výslednou hodnotou
môžeme vidieť na obrázku 3. Výsledok inferencie y patriaci do intervalu [0,100] pre všetky vstupné hodnoty
a
sme spočítali pomocou balíčka pyFuzzy [6] v programovacom prostredí Python [5] a môžeme ho vidieť na obrázku 4. A matica
je rovná hodnotám
Po vyriešení priraďovacej úlohy získame maticu priradení
pre ktorú podľa predpisu (3) spočítame usporiadanú dvojicu (maticu permutácií 2.1) optimálnych permutácií
pre ktoré obdržíme nasledujúci rozvrh
s kumulovanými pracovnými časmi vodičov .
Obr. 4: Výsledný graf fuzzy inferencie pre všetky vstupy.
4 Záver
Článok sa venoval problematike rovnomernosti riadkových súčtov stĺpcovo permutovanej matice, ktorú vieme riešiť pomocou dvoch známych heuristických metód. Obe heuristiky sú založené na zjednodušenej variante problému a exaktnom výpočte dvojstĺpcovej matice. Na exaktný výpočet sme použili priraďovaciu úlohu, pre ktorú sme navrhli koeficienty účelovej funkcie pomocou neštandardného postupu, t.j. pomocou fuzzy inferenčného systému.
Výhody použitia na riešenie
sú:
- Matica
môže obsahovať ako fuzzy singletony (reálne hodnoty), tak aj fuzzy čísla, tzv. fuzzy inferenčný systém ponúka možnosť definovania všeobecnej miery nerovnomernosti, ktorá pracuje ako s ostrými hodnotami, tak aj s fuzzy číslami.
- Pre väčší počet hodnôt lingvistických premenných A,B a C obdržíme rovnomernejší rozvrh.
- Znalostná báza pozostáva z jasne zrozumiteľných požiadaviek/pravidiel.
Literatúra
- Graham, R.L., Lawler, E.L., Lenstra, J.K., Rinnooy Kan, A.H.G., Optimization and Appro- ximation in Deterministic Sequencing and Scheduling: A Survey, 1979
- Peško, Š., Optimalizácia NP-ťažkých dopravných rozvrhov, ŽU Žilina, Habilitačná práca, 2002
- Peško, Š., The Matrix Permutation Problem in Interval Arithmetic, Journal of Information, Control and Management Systems, vol. 1, num. 1, 2006
- Teodorovič, D., Luči ́c, P., A fuzzy set theory approach to the aircrew rostering problem, Fuzzy Sets and Systems, vol. 95, num. 3, pp. 261-277, 1998
- Python, Python Programming Language, Programming Language,
www.python.org - pyFuzzy, Python fuzzy package,
pyfuzzy.sourceforge.net
Katedra matematických metód, Fakulta riadenia a informatiky, Žilinská Univerzita, Univerzitná 8215/1, 010 26 Žilina
1Turnus je denný pracovný cyklus, ktorý má byť odjazdený vodičom v danom dni a pozostáva z postup- nosti trás. Trasa je súbor jázd a jazda pozostáva z príslušného času (miesta) odchodu a príchodu autobusu.