Úprava p ednášky byla podpo ena projektem CZ.2.17/3.1.00/33274, který je fnancován Evropským socálním fondem a rozpo tem hlavního m sta Prahy. Evropský socální fond Praha & EU: Investujeme do vaší budoucnost Plánování a rozvrhování 11 Roman Barták, KTIML roman.bartak@mff.cun.cz http://ktml.mff.cun.cz/~bartak Rozvrhování jako CSP! Rozvrhovací problém je statcký, takže m že být p ímo zakódován jako CSP.! Spl ování podmínek se používá pro kompletní rozvrhování. CSP model: " prom nné! pozce aktvty A v ase a prostoru! alokace asu: start(a), [p(a), end(a)]! alokace zdroj : resource(a) " domény! termín dostupnost a uzáv rka pro asové prom nné! alternatvní zdroje pro zdrojové prom nné " podmínky! uspo ádání aktvt a omezené kapacty zdroj
Rozvrhování jako CSP omezující podmínky! asové vztahy " start(a)+p(a)=end(a) " uspo ádání! B «A # end(b) start(a) B A! omezení kapacty zdroj " unární zdroj (aktvty se nemohou p ekrývat)! A «B B «A # end(a) start(b) end(b) start(a) Podmínky pro zdroje
Zdroje! Zdroje jsou v plánování a rozvrhování používány v trochu jných významech!! rozvrhování " zdroj = stroj (prostor) pro zpracování aktvty! plánování " zdroj = materál konzumovaný/produkovaný danou aktvtou " unární zdroj z pohledu rozvrhování je asto modelován jako logcká podmínka (nap. ruka je volná)! unární zdroje Typy zdroj " v daném ase m že být zpracována maxmáln jedna aktvta! kumulatvní zdroje " n kolk aktvt se m že zpracovávat paraleln, ovšem za p edpokladu, že není p ekro ena kapacta zdroje! produkovatelné/spot ebovatelné zdroje " aktvta konzumuje/produkuje n jakou kapactu zdroje " na zdroj musí zbýt n jaká mnmální volná kapacta (konzumace) a maxmální kapacta zdroje nem že být p ekro ena (produkce)
! Aktvty se nemohou p ekrývat! Unární zdroje " v daném ase b ží maxmáln jedna aktvta, proto se t mto zdroj m íká unární! P edpokládáme, že aktvty jsou nep eruštelné. " nep eruštelná aktvta zabírá zdroj od svého startu až do ukon ení! Jednoduchý model s dsjunktvním podmínkam: " A «B B «A end(a) start(b) end(b) start(a) " t mto zdroj m se proto n kdy íká dsjunktvní Baptste & Le Pape (1996) Edge fndng Co se stane, pokud aktvta A nebude zpracována jako první? 4 16 A (2) 6 16 B (4) 7 15 C (5) Pro A, B, C není dost asu, a tedy aktvta A musí být první! 4 7 A (2) 6 16 B (4) 7 15 C (5)
Baptste & Le Pape (1996) Pravdla: Edge fndng pravdla " p(ω {A}) > lct(ω {A}) - est(ω) A«Ω " p(ω {A}) > lct(ω) - est(ω {A}) Ω«A " A«Ω end(a) mn{ lct(ω') - p(ω') Ω' Ω } " Ω«A start(a) max{ est(ω') + p(ω') Ω' Ω } V prax: " je pot eba prozkoumat n.2 n dvojc (A,Ω) (to je moc!) " místo Ω m žeme používat ntervaly úloh [X,Y] {C est(x) est(c) lct(c) lct(y)} # asová složtost O(n 3 ), asto používaný nkrementální algortmus " exstují také algortmy se složtostí O(n 2 ) a O(n.log n) Torres & Lopez (2000) Not-frst/not-last Co se stane, pokud aktvta A bude zpracována jako první? 6 16 A (2) 7 15 B (5) 4 16 C (4) Pro B a C není dost asu, a tedy aktvta A nem že být první! 8 16 A (2) 7 15 B (5) 4 16 C (4)
Torres & Lopez (2000) Not-frst/not-last pravdla Pravdla not-frst: p(ω {A}) > lct(ω) - est(a) A«Ω A«Ω start(a) mn{ ect(b) B Ω } (Symetrcká) pravdla not-last: p(ω {A}) > lct(a) - est(ω) Ω«A Ω«A end(a) max{ lst(b) B Ω } V prax: " M že být mplementováno s asovou složtostí O(n 2 ) a pam ovou složtostí O(n) Kumulatvní zdroje! Každá aktvta využívá jstou kapactu zdroje cap(a).! Aktvty mohou být zpracovávány paraleln, pokud není p ekro ena kapacta zdroje.! Kapacta zdroje m že být v ase prom nná! " takové zdroje lze modelovat pomocí v ase nem nné kapacty, od které se ode te kapacta pevn umíst ných aktvt, ímž se v každém ase dosáhne požadované kapacty volná kapacta pevně umístěné aktvty vytvoří kapactní profl zdroje pevná kapacta čas
Baptste et al. (2001) Agregované požadavky Kde je dostate ná kapacta pro zpracování aktvty? využtá kapacta kapacta zdroje agregované požadavky čas Jak se konstruuje graf agregovaných požadavk? využtá kapacta tady aktvta ur t pob ží kapacta zdroje agregované požadavky čas Baptste et al. (2001) Podmínka tabulky! Jak zajstt, že v žádném ase není p ekro ena maxmální kapacta?* t start ( A ) t end( A ) cap( A ) MaxCapacty! Tabulka pro aktvtu A je množna Booleovských prom nných X(A,t) ndkujících, zda A b ží v ase t. t t, A start( A ) t X ( A, t) cap( A ) MaxCapacty end( A ) X ( A, t) * p edpokládáme dskrétní as
! po áte ní stuace Podmínka tabulky p íklad fltrace lst(a) lct(a) est(a) ect(a) 0 {0,1} 0 X(A,t)! n které pozce zakázané kv l kapact lst(a) lct(a) est(a) ect(a) 0 {0,1} 0 {0,1} 0 X(A,t)! nová stuace lst(a) lct(a) 0 est(a) ect(a) {0,1} {0,1} 1 {0,1} 0 X(A,t) Baptste et al. (2001) Podmínka tabulky pravdla Jak realzovat fltrac p es podmínku t, start( A ) t < end( A ) X ( A, t)? Problém: t slouží jako ndex jako prom nná start(a) mn{t : ub(x(a,t))=1} end(a) 1+max{t : ub(x(a,t))=1} X(A,t)=0 t<ect(a) start(a)>t X(A,t)=0 lst(a) t end(a) t (lst(a) t t<ect(a) X(A,t)=1)
Alternatvní zdroje! Jak modelovat možnost použtí alternatvních zdroj pro danou aktvtu?! Pro každý zdroj ud láme duplkát aktvty. " duplkát se ú astní p íslušných zdrojových podmínek, ale neomezuje další aktvty na daném zdroj! neúsp ch u duplkátu znamená odstran ní zdroje z domény prom nné res(a) p íslušné aktvty! odstran ní zdroje z domény prom nné res(a) znamená smazání odpovídajícího duplkátu " p vodní aktvta se ú astní preceden ních podmínek (nap íklad v rámc úlohy) " omezení as u duplkátu se propaguje do orgnálu aktvty a naopak Alternatvní zdroje fltrace! Nech A u je duplkát aktvty A alokovaný na zdroj u res(a). u res(a) start(a) start(a u ) u res(a) end(a u ) end(a) start(a) mn{start(a u ) : u res(a)} end(a) max{end(a u ) : u res(a)} prázdné okno pro A u res(a)\{u} Ve skute nost se jedná o realzac konstruktvní dsjunkce mez alternatvním zdroj.
Relatvní uspo ádání Pokud je as relatvní (uspo ádání aktvt) potom technky edge-fndng a agregovaných požadavk nc neodvodí! Po ád ale m žeme používat nformace o uspo ádání aktvt a spot eb /produkc daného zdroje! P íklad: Reservoár: aktvty konzumují a produkují zdroj A -1 B -1 C +1 D -1 Cesta & Stella (1997) Zdrojový profl! Aktvta A produkuje kvanttu prod(a): " poztvní íslo znamená produkc " negatvní íslo znamená spot ebu! Optmstcký zdrojový profl (orp) " maxmální možná úrove zdroje v ase, kdy se A za ne zpracovávat " aktvty, které musí být p ed A, se vezmou dohromady s produk ním aktvtam, které mohou být p ed A orp(a) = IntLevel + prod(a) + B«A prod(b) + B??A & prod(b)>0 prod(b)! Pesmstcký zdrojový profl (prp) " mnmální možná úrove zdroje v ase, kdy se A za ne zpracovávat " aktvty, které musí být p ed A, se vezmou dohromady s konzuma ním aktvtam, které mohou být p ed A prp(a) = IntLevel + prod(a) + B«A prod(b) + B??A & prod(b)<0 prod(b) *B??A znamená, že po adí A a B ješt není známé
Cesta & Stella (1997) Fltrace orp! orp(a) < MnLevel fal " p estože veškerá produkce je plánována p ed A, po ád ješt není dosažena požadovaná mnmální úrove zdroje! orp(a) prod(b) B«C & C??A & prod(c)>0 prod(c) < MnLevel B «A, pro lbovolné B takové, že B??A a prod(b)>0 " pokud je produkce v B plánována za A a mnmální požadovaná úrove zdroje není dosažena an když všechny ostatní produk ní aktvty jsou p ed A (které tam být mohou), potom B musí být p ed A Cesta & Stella (1997) Fltrace prp! prp(a) > MaxLevel fal " p estože veškerá konzumace je plánována p ed A, je maxmální úrove zdroje (kapacta) p ekro ena! prp(a) prod(b) B«C & C??A & prod(c)<0 prod(c) > MaxLevel B «A, pro lbovolné B takové, že B??A a prod(b)<0 " pokud je konzumace v B plánována za A a maxmální úrove zdroje je p ekro ena když všechny ostatní konzuma ní aktvty jsou p ed A (které tam být mohou), potom B musí být p ed A
Vlím (2002) Detectable precedence od asových oken k precedencím Co se stane, pokud je aktvta A zpracována p ed B? 6 B (4) 15 7 A (5) 16 " Omezená asová okna mohou být použta pro detekc precedencí. " est(a)+p(a)+p(b)>lct(b) B«A Labore (2003) Energy precedence od precedencí k asovým okn m Použtí energe aktvt zpracovaných p ed A k odvození lepšího est(a) start(a) max{ est(ω ) + +e(ω )/cap, Ω' {C : C«A} } Pro unární zdroje start(a) max{ est(ω ) + p(ω ) Ω' {C : C«A} } sta í prozkoumat Ω(X,A) = {Y Y «A est(x) est(y)} start(a) max{ est(ω(x,a)) + p(ω(x,a)) X «A } dur 0 end est(a) for each Y { X X «A } n the non-ncreasng order of est(y) do dur dur + p(y) end max(end, est(y) + dur) end for est(a) end Flterng Technques n Plannng and Schedulng 24
Optmalzace v CSP! Ú elová (krterální) funkce se v CSP typcky kóduje specální podmínkou: v = obj(xs) Příklad: makespan = max{end(a )} " je možné odvodt lepší meze pro v použtím sou asných domén pro prom nné Xs! makespan mn = max{ect(a )} " Je možné omezt domény prom nnch Xs na základ aktuálních mezí prom nné v! end(a ) makespan max " pro propagac složt jších ú elových funkcí se typcky používá relaxace problému Rozvrhovací stratege
Schémata v tvení v tvení = ešení dsjunkcí Trad ní rozvrhovací p ístupy:! krtcká rozhodnutí se d lají první " vy eš úzká hrdla " defnuje tvar prohledávacího stromu " vzpome me na prncp prvního neúsp chu (fal-frst)! preferuj alternatvy s v tší flexbltou " defnuje po adí v tví pro prozkoumání " vzpome me prncp prvního úsp chu (succeed-frst) Jak ale popsat co je krtcké a co je flexblní? Smth and Cheng (1993) Slack Slack (tolerance) je formální pops flexblty.! Slack pro dané po adí dvou aktvt je volný as pro posun aktvt A slack for A<<B B slack(a«b) = max(end(b))-mn(start(a))-p({a,b})! Slack pro dv aktvty (bez ur ení po adí) slack({a,b}) = max{slack(a«b),slack(b«a)}! Slack pro skupnu aktvt slack(ω) = max(end(ω)) - mn(start(ω)) - p(ω)
Smth and Cheng (1993) Uspo ádání v tví A«B A«B! Jaké aktvty mají být uspo ádány první? " nejkrt t jší pár (fal-frst) " pár s mnmálním slack({a,b})! Jaké po adí má být zvoleno? " nejflexbln jší po adí (succeed-frst) " po adí maxmalzující slack(a??b)! O(n 2 ) bod volby Baptste et al. (1995) V tvení první/poslední (A«Ω A«Ω) nebo (Ω«A Ω«A)! Máme hledat první nebo poslední aktvtu? " rozhodn se podle menší množny kanddát na první resp. poslední aktvtu (frst-fal)! Jaká aktvta má být vybrána? " pokud se hledá první aktvta, potom preferuj aktvtu, která má nejmenší mn(start(a)) " pokud se hledá poslední aktvta, potom preferuj aktvtu, která má nejv tší max(end(a))! O(n) bod volby
Zdrojový slack! Zdrojový slack je defnovaný jako slack množny aktvt zpracovávaných daným zdrojem.! Jak používat zdrojový slack? " volíme zdroj, na kterém budou aktvty uspo ádány jako první! zdroj s mnmálním slackem (úzké hrdlo) " volíme zdroj, na který alokovat danou aktvtu! zdroj s maxmálním slackem (flexblta)