Razporejanje vozil z uporabo matematičnih modelov
Razvoj pametnih rešitev praksi
Pri razvoju naprednih rešitev za naše naročnike se vsakodnevno srečujemo z novimi izzivi, ki potrebujejo inovativne pristope, s katerimi bi optimizirali procese, zmanjšali stroške in zagotovili boljšo izkušnjo za končne uporabnike. V preteklih zapisih smo delili, kako lahko z umetno inteligenco pomagamo na področjih kot so loterije, zavarovalnice, telekomunikacije, v enem od zadnjih projektov pa smo se soočili z izzivom podjetja, ki se ukvarja s transportom, pri čemer pa smo problem reševali tudi s pomočjo bolj “analognih” rešitev.
Tokrat ne bomo govorili o umetni inteligenci, ampak o poglobljenem matematičnem znanju, razmisleku in postopkih, ki smo jih opravili in brez katerih ne bi prišli do želenega rezultata.
Izzivi razporejanja vozil
Upravljanje transportnih poti je veliko bolj zahtevna naloga, kot se zdi na prvi pogled. Če so nekoč recimo vozniki taksijev morali imeti svoje mesto v malem prstu, poznati vse ulice in točke, kjer prihaja do zastojev, je ta problem že pred časom do določene mere rešil navigacijski sistem, kot je npr. Google Maps, ki je omogočil, da lahko delo taksista opravlja praktično vsak z vozniškim izpitom. Z uporabo sodobnih tehnologij, algoritmov in s pravimi podatki pa lahko gremo še korak dlje.
Na usmerjanje vozil podjetja, ki se ukvarja s transportom, vpliva več spremenljivk. Stanje na cestah je le eden od zunanjih dejavnikov, potem pa so tu še številni interni dejavniki, kot so razporejanje različnih strank in časovna razporeditev prevozov. Rešitev za izziv našega naročnika smo torej iskali ob upoštevanju internih in eksternih dejavnikov, vedeli pa smo, da zadovoljiva rešitev na ključ ne obstaja, saj ima vsako večje podjetje specifične zahteve, ki zahtevajo specifičen pristop. Hitro smo ugotovili, da bomo za končno rešitev potrebovali “surovo” računanje, še preden na projekt vključimo tehnologijo.

Fotografija: Matthew Smith na Unsplashu
Kako smo se lotili iskanja rešitve
Naša glavna naloga je bila strniti vso kompleksnost problema v matematični račun in poiskati primeren algoritem oziroma matematični model, ki bi znal ta račun obdelati na način, da bi prišli do ustrezne rešitve. Celoten postopek smo, če zelo poenostavimo, razdelili v dve fazi.
Izziv št. 1: Kako zapisati vse kompleksne omejitve in posebne zahteve našega naročnika, da bi ga preko računov razložili matematičnemu modelu?
Izziv št. 2: Kateri algoritem oziroma matematični model uporabiti za reševanje tega problema?
Vse pa seveda ni tako preprosto, saj je potrebno najprej do potankosti razumeti problem, za kar je ključno sodelovanje z naročnikom. Oblikovanje problema se zgodi v prvi, raziskovalni fazi, kjer skozi pogovore z naročnikom ugotovimo njihove izzive, ki bi jih bilo vredno nagovoriti za boljše delovanje podjetja in storitev. Šele, ko razumemo problem, ga lahko preslikamo v matematično obliko, ki postane del algoritma. Oblikovanje algoritma je vse prej kot rutinska naloga, saj zahteva poglobljeno programskega jezika, v našem primeru Jave, napredno matematično znanje in vsebinsko poznavanje problema razporejanja vozil. Preučevanje primernega postopka za reševanje zastavljenih matematičnih modelov, ki sledi raziskovalni fazi, je tisto, kar nas pripelje korak bližje k končni rešitvi, pri tem pa so naša velika prednost izkušnje in predhodno znanje tovrstnega reševanja problemov.
Ko je problem preoblikovan v matematični račun, pa naloga še zdaleč ni končana. Sledi iskanje pravega matematičnega modela oziroma algoritma. V podjetju Medius stavimo na odprtokodne rešitve, zato smo tudi tokrat iskali algoritem, ki bi ustrezal našim standardom. Med rešitvami, kot so SCPSolver, CLP (COIN-OR Foundation) in OR-Tools, smo se odločili za slednjo. V fazi testiranja različnih algoritmov znotraj OR-Tools smo ugotovili, da določeni lahko rešujejo problem za manjšo količino vozil, ko pa se ta poveča, moramo algoritem zamenjati z drugim. Po številnih testiranjih in primerjanju različnih "reševalnikov" (angl. Solver), ki jih ponuja OR-Tools knjižnjica, se je za naš matematični račun in problem našega naročnika, kot najbolj obetavna izkazala prav Googlova interna implementacija – GLOP.
Validacija in nadgradnje v prihodnosti
Ko na postopek pogledamo z vidika končne rešitve, se zdijo koraki logični in enostavni. Vendar pa gre za izjemno kompleksen postopek, v katerem se brez poglobljenega znanja Medius ekipe in izkušenj s preteklih projektov rešitev ne bi pojavila tako hitro ali pa ne bi bila tako učinkovita. Vse to pa je seveda šele začetek. Namreč z uporabo sistema za razvrščanje se količina obdelanih podatkov in razvrščenih prevozov stalno povečuje, kar pa je ključno izhodišče za vpeljavo strojnega učenja (umetne inteligence), s katerim se lahko razvrščanje vozil skozi čas le še izboljša. V praksi to pomeni, da še naprej ugotavljamo, kaj deluje in kaj ne, ter povratne informacije, ki prihajajo s strani naročnika, uporabimo za dopolnjevanje rešitve.
Za konec naj še enkrat poudarimo to, kar verjamemo, da je ključ do zadovoljstva vseh vpletenih – sodelovanje, razumevanje in strokovnost.

Fotografija: Fahrul Azmi na Unsplashu