410 likes | 513 Views
Urheiluturnausten ja viihdetapahtumien skedulointi 1/2. Motivaatio. Halutaan löytää n:n joukkueen sarjalle/turnaukselle aikataulu, jossa kaikki joukkueet pelaavat toisiaan vastaan Mahdollisia aikatauluja karsivat tietyt asetelmaan liittyvät rajoitteet. Sisältö. Turnausasetelman kuvaus
E N D
Motivaatio Halutaan löytää n:n joukkueen sarjalle/turnaukselle aikataulu, jossa kaikki joukkueet pelaavat toisiaan vastaan Mahdollisia aikatauluja karsivat tietyt asetelmaan liittyvät rajoitteet
Sisältö Turnausasetelman kuvaus Matemaattinen formulointi Kokonaislukuoptimointitehtävä Rajoiteohjelmointitehtävä
Lähtökohdat • n kappaletta joukkueita • Yhden kokonaiskierron turnaus: kaikki pelaavat kaikkia vastaan kerran (kotona tai vieraissa) • Jos n parillinen => n-1 kierrosta, jos pariton => n kierrosta (1 joukkue lepää joka kierroksella) • Kahden kokonaiskierron turnauksessa vastaavasti 2n-2 kierrosta (n pariton) tai 2n kierrosta (n parillinen)
Perustehtävä • Yhden kokonaiskierron turnaus • n parillinen eli n-1 kierrosta • Kullakin kierroksella n/2 ottelua • Olkoon kierrosindeksi t ja binäärimuuttuja xijt • Saa arvon 1, jos joukkue i pelaa joukkuetta j vastaan kotona kierroksella t. Muulloin xijt = 0
Rajoitukset • Rajoitukset: • j pelaa jotain joukkuetta vastaan joka kierroksella • i pelaa j:tä vastaan täsmälleen kerran
Rajoitukset II • Usein myös muita rajoitteita • Parien muodostaminen, otteluiden jonoistaminen • Rajoitteita mahdollisesti paljon => käyvän aikataulun löytäminen voi olla vaikea tehtävä • Tyydytään siihen, että sellainen löydetään
Terminologiaa Voi olla, että halutaan optimoida jotain kohdefunktiota => tarvitaan terminologiaa Joukkueen otteluiden jonoistaminen Kotipeli := H (home), vieraspeli := A (away) Esimerkkikaavio i. joukkueelle HAHAA
Katkos Kaavion toivotaan alternoivan: joukkue pelaa vuoroin kotona, vuoroin vieraissa Jos kaksi peräkkäistä kotona/vieraissa hetkillä t-1 ja t => kaaviossa katkos kohdassa t Yleinen kohde: turnauksen katkosten kokonaismäärän minimointi Skedulointiteoria: n (n parill.) joukkuetta => 1 kokonaiskierron turnauksessa väh. n-2 katkosta
Esimerkki 10.2.1 n = 6, kierrosten määrä 5 Jos joukkue i pelaa joukkuetta j vastaan vieraissa kierroksella t => merkitään i:nnelle riville t. sarakkeeseen j Jos joukkue i pelaa joukkuetta j vastaan kotona kierroksella t => merkitään i:nnelle riville t. sarakkeeseen –j Merkitään katkoksia **
Esimerkki 10.2.1 • 6 katkosta, minimitapauksessa olisi 4
Lepovuoro • Olkoon n pariton => vähintään n-1 kierrosta joista jokaisella väh. 1 joukkue lepää • Merkitään B (bye) • Tietyn joukkueen kaavio saadaan A:sta, B:sta ja H:sta => esimerkiksi HAHABA • B ei välttämättä katkos • HBH vs. HHH vs. HH (vähemmän paha?) • Sakot/kustannukset => HBH:lla pienin?
Graafin väritys • 1 kierroksen turnaus (n pariton tai parillinen) • Graafin väritystehtävä (vertaa aikataulutus) • Suunnattu graafi G = (N,B), jossa N muodostuu n kpl solmusta, jotka ovat yhteydessä kaarilla toisiinsa • Kaaret alkuun suuntaamattomia • Jos kaikki solmut liittyvät toisiinsa, kyseessä on täydellinen graafi (clique, complete graph)
Graafin väritys • Graafin eli kaarien värittäminen, kaikki tiettyyn solmuun liittyvät eri värisiä => minimoidaan värien kokonaismäärä • n solmun ”clique” => n värin graafi mahdollinen • Aligraafi = kaarijoukko, jolla oma väri • 1 reunakaari, muut sisäkaaria
Graafin väritys vs. aikataulutus • Yhden kokonaiskierron tehtävä: aligraafi vastaa yhtä ottelukierrosta, oma väri • Kysymys: Miten jako aligraafeihin tapahtuu? • Koti- ja vieraspelin erotus saadaan suunnatuilla kaarilla • i pelaa j:n luona => kaari i -->-- j • Katkosten välttäminen: kaksi aligraafia muodostaa suunnatun Hamiltonin polun • Jokaisessa solmussa enint. 1 sis.meno/ulostulo
Käyvät aikataulut • Standardi runko käypien aikataulujen löytämiseksi • Kaavio verrannollinen kirjainjonoon, jossa kirjaimia A, H ja B • Kirjainjonon pituus parillisessa tapauksessa n-1 ja parittomassa n • Koti-vieraskaavio (home-away pattern HAP)
Algoritmi • 3 vaihetta, 1 kokonaiskierron turnauksille • Vaihe I (Kokoa HAP:t) • Etsi kokoelma, jossa n erilaista koti-vieras – kaaviota • Tämä kokoelma muodostaa kaaviojoukon
Algoritmi • Vaihe II (luo aikataulu): • Määrää ottelu jokaiseen kaaviojoukon kohtaan • Tuloksena aikataulu • Vaihe III (määrää joukkueet kaavioihin) • Aseta kuhunkin kaavioon joukkue • Yhdessä aikataulun kanssa muodostaa 1 kokonaiskierron turnauksen • Vaihe IV (Mahdollinen peilaus) • Kahden kierroksen turnaus peilaamalla
Esimerkki 10.2.3 • n = 4, 3 kierrosta • Askel I: 4 kaavion luonti joukkueille (a,b,c,d) • (1, 2, 3, 4) “place holdereita”, ei vielä tietoa mikä joukkue milläkin paikalla
Esimerkki 10.2.3 • Askel II: määrätään peliparit ja aikataulu • (j) : joukkue vierailee joukkueen j luona • (-j) : joukkue isännöi joukkuetta j
Esimerkki 10.2.3 • Askel III: määrätään joukkueet kaavioihin • Huomioidaan preferenssit • d -> 1, b -> 2, a -> 3, c -> 4
Esimerkki 10.2.3 Askel IV: Peilataan, jos halutaan 2 kiertoa 6 katkosta, keskinäisten kohtaamisten välinen etäisyys aina 3 kierrosta
Algoritmista • Usein käytetään soveltaen -> luodaan enemmän kuin n kaaviota, jolloin yli 1 kaaviojoukkoa • Antaa vaihtoehdoille sijaa • Paljon joukkueita -> vaatii laskentatehoa • Jokaisessa vaiheessa joko kokonaislukuoptimointi tai rajoiteohjelmointi
Optimointi • Askel 1: Luodaan useita kaaviojoukkoja • Ensin sellaiset, joissa A ja H alternoivat • Vaihtoehtoiset, joissa 1-2 katkosta per kaavio • Ylimääräiset joukot sis. esim. n-2 kaaviota ilman katkoksia ja 2 kaaviota 1-2 katkoksella • Mahdollisten kaaviojoukkojen määrä edelleen suhteellisen pieni
Optimointi • Askel II: Luodaan aikataulut • Kukin kaavio linkittyy toiseen kullakin kierr. • S olkoon n kaavion joukko, T kierrosten joukko • xklt : kuvaa sitä, että k. kaavion joukkue pelaa j. kaavion joukkuetta vastaan kierroksella t • Saa arvon 1, jos pelaa vieraissa, muuten 0 • F = käypien (k,l,t)-triplettien joukko
Optimointi Kokonaislukutehtävä
Optimointi • Kohdefunktio keinotekoinen, halutaan löytää ratkaisu, jolle rajoitteet toteutuvat • 1. rajoite: tasan 1 ottelu k:n ja l:n välillä • 2. rajoite: enintään 1 ottelu joukkueelle k kullakin kierroksella • Jos n parillinen, ehto muotoa “=“
Optimointi Askel III: joukkueet kaavioihin Binäärimuuttuja yik : onko joukkue i kaaviossa k Kustannus cik : joukkueen i sijoittamisesta kaavioon k (preferenssit)
Optimointi “1 joukkue per kaavio, 1 kaavio per joukkue”
Rajoiteohjelmointi • Poikkeaa edeltävästä täysin • Soveltuu ongelmaan hyvin, aikatauluilla usein useita rajoitteita • Katkosrajoitteet (esim. ≤ 3 peliä putkeen H/A) • Ensimmäiset kierrokset (≥ 2 koti- tai lepokierrosta 4 ensimmäisellä kierroksella) • Ei kahta viimeistä kierrosta vieraissa • Peli- tai joukkuespesifiset rajoitteet • “constraint store”
Rajoiteohjelmointi • Nyt n pariton ja kahden kierron sarja => 2n kierrosta • Esitelty algoritmi voidaan toteuttaa myös rajoiteohjelmointitapauksessa • at, ht ja bt kuvaavat mitä joukkue tekee kierroksella t • at=1: joukkue pelaa kierroksella t vieraissa • ν = käypien HAP:n määrä
Rajoitukset Näiden perusteella käyvät kaaviot
Vaihtoehtoinen tapa • Askel 1: Käyvät kaaviojoukot • ν*2n – matriisit H, A, B • Apubinäärimuuttuja xk ,joka kuvaa, onko k. kaavio mukana kaaviojoukossa • Arvo 1 jos on
Rajoiteohjelmointi, vaihe II • Uusi rajoitejoukko • n×2n-matriisit H*, A*, B* • Näissä alkiot ja , jotka kuvastavat koti-, vieras – ja lepokierroksia k:nteen kaavioon kierroksella t • Binäärimatriisit H**, A**, B** vastaavasti • Muuttuja , jolla rangi 1,…, n • Jos joukkue i pelaa rivillä *-matriiseissa
Rajoiteohjelmointi, vaihe II • n×2n matriisi T kuvastaa tavoiteaikataulua • Tämän alkiot git määräävät i:n vastustajan • Muuttuja I(x=y) • Saa arvon 1, jos x = y, muulloin 0 • Muuttuja I(x D) vastaavasti • Saa arvon 1, jos x kuuluu joukkoon D • Alldifferent( ): eriävät kokonaisluvut • Element( ):
Rajoiteohjelmoinnin tehtävä • H*, A* ja B* kiinteitä => hakustrategia läpikäy , jolloin H**, A**, B** vaiheittain
Rajoiteohjelmoinnin tehtävä Johdonmukaisesti huomioiden rajoitteet jo kiinnitetyistä muuttujista hakupuu mahdollista tutkia melko lyhyessä ajassa Lopulta git:t haetaan, myös tässä puu harvenee kun edetään johdonmukaisesti
Kotitehtävä Kirjan tehtävä 10.4. Löydätkö esimerkistä 10.2.1 aikataulun, jossa vähemmän kuin 6 katkosta?