Matemaattisella optimoinnilla ratkotaan mahdottomia ongelmia 

Qalmarin asiantuntijat Juuso Järvinen ja Ari Varjonen pelaamassa shakkia ja pohtimassa seuraavaa siirtoa.

Voiko monimutkainen, lähes mahdottomalta tuntuva ongelma ratketa matemaattisella optimoinnilla? Kyllä voi, ja usein ratkaisu säästää myös rahaa.

Kuvitellaanpa vaikka logistiikkayhtiö, joka haluaa optimoida ajoneuvojensa reitit. Tavoite on selvä: perille pitäisi päästä mahdollisimman nopeasti, pienillä kustannuksilla ja ehkä jopa ympäristöystävällisesti. Huomioitava on aikataulut, lastauskapasiteetti, liikenteen ruuhkat ja se yksi asiakas, joka toivoi toimitusta perjantai-illaksi klo 22.23.

Arvailemalla ratkaisua ei löydy, eikä autoja kannata lähettää suin päin matkaan.

Tässä kohtaa astuu esiin Qalmarin Senior Algorithm Engineer Mikael Nyman, joka yhdistää matematiikan, ohjelmistokehityksen ja koneoppimisen osaamisensa ratkaistakseen monimutkaisia optimointiongelmia.

Mitä haastavampi tehtävä, sitä enemmän Mikael innostuu. Hän on urallaan muun muassa optimoinut ajoneuvojen reititystä yhdistämällä reittien suunnittelun, aikataulutuksen ja kuorman lastauksen optimoinnin yhteen järjestelmään, sekä kehittänyt algoritmeja autonomisten laivojen reaaliaikaiseen päätöksentekoon ja reittien optimointiin.

Mutta mitä matemaattinen optimointi oikeastaan on? Ja miksi se on niin tärkeää?

Mitä optimointi on?

Matemaattinen optimointi tarkoittaa menetelmiä, joilla järjestelmällisesti etsitään paras mahdollinen ratkaisu annettuun ongelmaan, mahdolliset rajoitteet huomioiden.

Optimiratkaisua etsitään säätämällä päätösmuuttujia, kuten reititysongelmassa sitä mikä ajoneuvo kuljettaa minkäkin tuotteen ja milloin. Tavoitteena on saada kohdefunktiolle, kuten tarvittavien ajoneuvojen määrälle tai reittien kokonaismatkalle, pienin mahdollinen arvo. Hakua rajoittavat rajoitefunktiot, kuten ajoneuvon kuljetuskapasiteetti, joka määrittää, kuinka paljon tavaraa voidaan kuljettaa kerralla.

Optimointialgoritmi, jolla ratkaisu etsitään, on usein iteratiivinen ja monesti hyödyntää derivaattoja. Optimointiongelmat voidaan jakaa lukuisiin eri kategorioihin, ja jokaista ongelmatyyppiä varten on kehitetty omat algoritminsa. Esimerkiksi reititysongelmissa käytetään yleisesti heuristiikkoja, jotka tuottavat riittävän hyvän ratkaisun järkevässä laskenta-ajassa.

Mihin optimointia tarvitaan?

Optimoinnilla voidaan säästää merkittävästi rahaa, aikaa ja resursseja. Se on erityisen hyödyllistä, kun ongelma on monimutkainen, sisältää useita muuttujia ja rajoitteita sekä toistuu usein.

Esimerkiksi reititysoptimointi vähentää kuljetuskustannuksia ja parantaa toimitusaikatauluja, ja koska reititys tehdään päivittäin, optimoinnin tuomat hyödyt kertautuvat nopeasti.

Optimointi auttaa tekemään parempia päätöksiä myös monilla muilla alueilla:

  • Varastonhallinta: Kysynnän ennustaminen ja varastotasojen optimointi hyödyntämällä markkinadataa ja tuotantohistoriaa.
  • Resurssien hallinta: Työvuorojen, tuotantoprosessien ja projektien aikataulutus.
  • Tuotannon suunnittelu: Pullonkaulojen tunnistaminen ja läpimenoaikojen lyhentäminen.
  • Autonomiset järjestelmät: Reaaliaikainen päätöksenteko esimerkiksi laivojen tai liikennevalojen ohjauksessa.
  • Automatisointi: Prosessien tehostaminen ja inhimillisten virheiden vähentäminen.

Optimointi ja koneoppiminen kulkevat usein käsi kädessä. Näiden ero on siinä, että optimoinnissa ongelma on ennalta määritelty, ja algoritmi laskee ratkaisun deterministisesti. Koneoppimisessa taas luodaan malli, joka ennustaa lopputuloksen annetun datan perusteella. Ne voivat täydentää toisiaan monin tavoin, kuten:

  • Datan laadun parantaminen: Koneoppiminen voi tunnistaa virheelliset syötteet ennen optimointia.
  • Parametrien ennustaminen: Esimerkiksi ajoneuvojen reitityksessä koneoppiminen voi ennustaa tulevaa kysyntää, mikä parantaa optimointimallin tarkkuutta.

Miten optimointiprojekti onnistuu?

Hyvä optimointiprojekti ei synny sattumalta, vaan siihen vaaditaan huolellista suunnittelua sekä ymmärrystä niin liiketoiminnasta, optimoinnista kuin ohjelmistokehityksestä. Projekti etenee tyypillisesti seuraavasti:

1. Ongelman määrittely: Tunnistetaan optimoitavat prosessit ja asetetaan selkeät tavoitteet. Yksinkertaiselta kuulostava vaihe on kriittinen, jotta vältetään harhapoluille ajautuminen heti alkuvaiheessa.

2. Matemaattinen mallinnus: Päätösmuuttujien, rajoitteiden ja kohdefunktion määrittely. Parhaimmillaan ongelma on standardimuotoinen ja sopii johonkin hyvin tunnettuun ongelmakategoriaan.

3. Ratkaisumenetelmän valinta: Valitaan sopiva optimointimenetelmä, kuten lineaarinen tai epälineaarinen optimointi, diskreetti optimointi tai heuristinen menetelmä. Jos olemassa olevat kaupalliset tai avoimen lähdekoodin algoritmit eivät riitä, rakennetaan oma algoritmi juuri tätä ongelmaa ratkomaan.

4. Prototyyppi ja iterointi: Testataan ratkaisua ja säädetään kohdefunktiota, rajoitteita ja optimointialgoritmia vastaamaan paremmin reaalimaailman vaatimuksia. Samalla vastataan seuraaviin kysymyksiin:

  • Onko ratkaisu käytännössä mahdollinen? Mikäli ei, ongelmasta on unohdettu rajoitteita ja ne lisätään optimointitehtävään.
  • Onko ratkaisu tarpeeksi hyvä? Mitattiinko hyvyyttä oikealla kriteerillä? Löysikö optimointialgoritmi parhaan mahdollisen ratkaisun?
  • Onko optimointialgoritmi luotettava? Löytyykö ratkaisu joka kerta?
  • Ratkeaako optimointiongelma tarpeeksi nopeasti? Joidenkin ongelmien ratkaisu onnistuu reaaliajassa, kun taas toisten parissa tietokone saa raksuttaa tunteja. Tuntemalla optimointialgoritmit voidaan parantaa suorituskykyä ja valita ratkaisu, joka on tarpeeksi hyvä järkevässä ajassa, sen sijaan että jäätäisiin odottamaan vielä paremman ratkaisun löytymistä.


5. Käyttöönotto ja seuranta: Seurataan vaikutuksia ja tehdään tarvittavat säädöt, jotta tavoitteet saavutetaan. Optimointiratkaisun tuotantoon vienti vaihtelee suuresti sovelluskohteen mukaan: on eri asia tehdä pilvessä julkaistavaa käyttöliittymäpohjaista optimointiratkaisua loppuasiakkaan käytettäväksi kuin reaaliajassa autonomisesti toimivaa sulautettua algoritmia.

Hyvä optimointiratkaisu on myös:

  • Käyttäjäystävällinen: Työkalujen tulee olla päätöksenteon tukena, ei korvata sitä. Helppokäyttöiset ja intuitiiviset käyttöliittymät sekä käyttäjien koulutus ja osallistaminen projektin eri vaiheisiin takaavat, että ratkaisut otetaan sujuvasti käyttöön.
  • Selkeä: Päätöksenteon perusteiden on oltava ymmärrettäviä ja läpinäkyviä.
  • Mukautuva: Optimointimalleja on päivitettävä säännöllisesti vastaamaan muuttuvia olosuhteita ja liiketoiminnan tarpeita.

Tärkeintä on aloittaa pienestä ja kehittää ratkaisua tulosten perusteella vaiheittain. Näin varmistetaan, että optimoinnista saadaan konkreettista liiketoiminnallista hyötyä ilman tarpeetonta monimutkaisuutta.

Onko sinulla haaste, joka kaipaa ratkaisua?

Optimointi ei ole pelkkää teoreettista matematiikkaa, vaan käytännön työkalu liiketoiminnan kehittämiseen. Jokainen projekti tuo mukanaan omat haasteensa, ja Mikaelista juuri monimutkaisten ongelmien ratkaiseminen on palkitsevaa, kun asiakas sekä säästää optimointiratkaisun avulla rahaa että parantaa toimintaansa.

Jos et halua pähkäillä haasteitasi yksin, ota yhteyttä! Qalmarit ovat valmiina tarttumaan seuraavaan pulmaan, olipa kyseessä logistiikan reittisuunnittelu, autonomisten järjestelmien päätöksenteko tai täysin uudenlainen optimointisovellus.

Luitko jo nämä?