<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=135298703709534&amp;ev=PageView&amp;noscript=1">

Puhuttaessa resurssien optimoinnista reaalimaailma on monimutkainen. Tämä käy selvästi esille optimoidessa rajallisia resursseja mahdollisimman hyvän lopputuloksen saamiseksi. Resurssi voi olla henkilö, kone, aika, raaka-aine, raha tai melkein mikä tahansa.

Optimointiin löytyy kaupallisia ohjelmia, akateemisia tutkimuksia ja malliesimerkkejä optimoinnin ratkaisemisesta. Avoimen lähdekoodin puolelta löytyy tuote nimeltä OptaPlanner, jota tarkastellaan tässä artikkelissa syvällisemmin.

Resurssien optimointiongelmat:

  • Sääntöjä on lukuisia
  • Optimoitavia asioita on paljon
  • Kahdesta edellisestä johtuen, asiat voidaan asetella miltei äärettömän monella tavalla (ns. ratkaisuavaruus on valtavan iso)
  • Kahdesta eri ratkaisuehdotuksesta voidaan laskea/päätellä, kumpi on parempi (esim. vaihtoehto A tuottaa enemmän voittoa kuin B)
  • Ihmisvoimin ensimmäisen toimivan ratkaisun löytäminen vaatii runsaasti aikaa ja yleensä
  • Tyydytään ensimmäiseen toimivaan ratkaisuun
  • Kun yksi ratkaisu on löydetty, sitä voidaan osittain koittaa ihmisvoimin optimoida, mutta
  • Prosessi on aikaa vievä, eikä suuria optimointeja tahdo syntyä

Resursointi tietotekniikan avulla

Resursointia voidaan ratkaista tietotekniikan avulla. Jotta tietotekninen ratkaisu olisi toimiva ja ylläpidettävä, sen täytyy täyttää seuraavat ehdot:

  1. Ratkaisua rajoittavat säännöt tulee voida esittää yksittäisinä, erillisinä sääntöinä (koneella A voidaan tuottaa vain yhdenlaista kappaletta kerrallaan)
  2. Säännöt tulee pystyä esittämään yksinkertaisesti, niitä ei voi/saa ohjelmoida koodina, koska tyypillisesti säännöt muuttuvat jatkuvasti
  3. Metodi, jolla ratkaisua etsitään, tulee olla sellainen, että se pystyy rajallisessa ajassa etsimään hyviä ratkaisuja

Resurssien optimoinnin Säännöt, verkosto, pisteytys ja rajoitteet

OptaPlanner tarjoaa hyvän alustan optimointi-ongelman ratkaisemiseen. Säännöt esitetään Jboss Drools -pohjaisina, yksittäisinä sääntöinä erillään koodista. Säännöistä muodostuu verkosto, joiden pohjalta voidaan kullekin ratkaisuehdotukselle muodostaa pisteytys. Tyypillisesti pisteytystä on useampaa tasoa.

Resurssien optimoinnissa on myös ns. kovia rajoitteita, joiden rikkominen ei ole fyysisesti mahdollista: esimerkiksi yksi sairaanhoitaja ei voi olla vuorossa kahdella osastolla yhtä aikaa. Lisäksi on ns. pehmeitä rajoitteita, joiden määrää tulee minimoida: esimerkiksi käytetyn polttoaineen määrä. Ensin tulee etsiä ratkaisu, jossa kovia rajoitteita ei rikota, sitten etsitään ratkaisua, missä minimoidaan pehmeitä rajoitteita.

Resurssien optimoinnin Ratkaisun prosessi

OptaPlanner toteuttaa useita metodeja, joilla ratkaisua voidaan etsiä. Ratkaisun etsintä toimii suurin piirtein seuraavasti:

  1. Ensin etsitään jokin ratkaisu (täysin mahdotonkin kelpaa aluksi)
  2. Lasketaan ratkaisun pisteytys
  3. Muutetaan ratkaisua, siirretään resurssia/resursseja jollain lailla
  4. Lasketaan uudelle ratkaisulle pisteytys
  5. Mikäli uuden ratkaisun pisteet olivat paremmat, otetaan se uudeksi ratkaisuksi
  6. Palataan kohtaan kolme
  7. Tätä toistetaan esim. seuraavat 5 minuuttia

OptaPlannerista on paljon apua ensimmäisen toimivan ratkaisun etsimiseen ja ratkaisun optimoimiseen.

Seuraavaksi esitellään, miten OptaPlanneria voisi käyttää polttoaineenkulutuksen vähentämiseen jäteastioiden tyhjennyksessä:

Esimerkki reittien optimoinnista - jäteastioiden tyhjennysten optimointi

Kuvassa on keskellä kaatopaikka ja jäteautojen varikko. Ympyrät kuvaavat noutopisteitä, luvut kuvaavat noudettavan roskan määrää, kellotauluun on merkitty aika-ikkuna milloin jätteet tulisi hakea.

Resurssien optimointi jäteastioiden tyhjennyksessä

 Optimoinnin käynnistyessä saattaa ensimmäinen ratkaisu olla esim. tällainen:

Oikeaan alakulmaan on tulostettu kuluvan polttoaineen määrä. Kunkin jäteauton viereen on merkitty reitin roskamäärä ja auton kapasiteetti (esim. 211/1000). Kellotauluun on viisarilla merkitty hakuaika:

Resurssien optimointi jäteastioiden tyhjennyksessä 2 
Tietokoneen etsiessä parempia ratkaisuja, saattaa jossain vaiheessa ratkaisu näyttää tältä, jolloin polttoainetta kuluu jo huomattavasti vähemmän:

Resurssien optimointi jäteastioiden tyhjennyksessä 3 
Laskentaa jatketaan niin kauan kuin halutaan. Tyypillisesti tulos paranee aluksi nopeasti, mutta parempien ratkaisujen löytyminen hidastuu. Halutun laskenta-ajan lopussa ratkaisu voisi näyttää esimerkiksi tältä:

Resurssien optimointi jäteastioiden tyhjennyksessä kuva

OptaPlannerin esimerkeistä tulet kuulemaan lisää tulevissa blogiartikkeleissa,  joten jos aihe kiinnostaa, tilaa blogimme suoraan sähköpostiisi. 

Seuraava OptaPlanner-aihe tulee olemaan:

Miten selvitän, onko OptaPlannerista apua minun ongelmaani?