Kaupungin liikennevirtojen simulaattori rakentui Elixir-ohjelmointikielellä, Case: Turku City Data
Qalmarin Tekkilonkerot-blogisarjan ensimmäisessä osassa keskitytään funktionaalisen ohjelmoinnin saloihin ja erityisesti Elixir-nimiseen ohjelmointikieleen. Funktionaalinen ohjelmointi on nyt kovassa nosteessa, joten tarkastellaan teknologiaa, johon Kari tutustui asiakasprojektin kautta.
Asiakas ja nykyisin myös Qalmarin kumppani, Turku City Data, tilasi työkalun jolla simuloidaan kaupungin liikennevirtoja. Alkuun lähdettiin POC-tyyppisellä toteutuksella, jolla testattiin idean toimivuus sekä tavoiteltiin laajennettavaa rakennetta, jotta myöhemmin simulaatioon voidaan tuoda uudenlaisia toimijoita sekä ottaa kaupunkiympäristöä paremmin huomioon.
Kokemuksesi funktionaalisesta ohjelmoinnista?
Funktionaalisen ohjelmoinnin perusasiat olivat minulle tuttuja jo ennen projektin aloittamista. Olen omien harrasteprojektieni kautta tutustunut Haskell-kieleen. Elixir sen sijaan oli minulle uusi tuttavuus. Entuudestaan tuttuja juttuja olivat esimerkiksi Elixiristäkin löytyvät: pattern mathing sekä muuttujien immutabiliteetti. Pääsin siis hyvin nopeasti vauhtiin tutustumalla muutamiin tutoriaaleihin sekä artikkeleihin. Mieleeni jäi yksi erinomaisen hyvä artikkeli, jonka kirjoitti Jaakko Hannikainen Solitalta.
Elixirhän on siitä mielenkiintoinen ohjelmointikieli, että se toimii Erlang OTP -virtuaalikoneen päällä jossa ”Everything is a process”, eli prosessien luonti on suositeltavaa ja edullista. Sen takia se soveltuikin erinomaisesti kyseessä olevaan projektiin, jossa simuloidaan itsenäisten agenttien vuorovaikutuksia toisiinsa sekä ympäristöön.
Agenttipohjainen simulointi?
Agentti on yksittäinen toimija, joka on vuorovaikutuksessa toisiin toimijoihin sekä ympäristöönsä. Simulaatiossa on yhtäaikaisesti satoja tai jopa satoja tuhansia agentteja, jotka sitten vuorovaikuttavat toisiinsa ja simulaatioympäristöön. Se mitä agentti mallintaa, riippuu tietysti siitä mitä ollaan simuloimassa.
Kyseisessä projektissa mallinnettiin ensin toimija ja sille säännöt miten se vaikuttaa ympäristöönsä. Lisäksi mietittiin miten toimijat vaikuttavat toisiinsa. Tässä tapauksessa toimijoilla ei ollut suoraan vuorovaikutusta keskenään, vaan ne vaikuttivat toisiinsa lähinnä ympäristön välityksellä, joka toisaalta aiheutti vuorovaikutuksen takaisin toimijoille. Ympäristön mallintaminen tuntuu useimmiten olevan se vaikein asia sillä varsinkin fyysisessä maailmassa jossa elämme, on muuttujia lähes loputtomasti. Sen takia simulaatioon tehdään usein tiettyjä oletuksia ja pyritään yksinkertaistamaan olosuhteita.
Esimerkkinä tällaisesta simulaatiosta voisi ajatella vaikka sitä lähikulmilla toimivaa pientä markettia: Agentteina tässä simulaatiossa toimivat asiakkaat, joilla jokaisella on se oma kauppalista, josta ostokset löytyvät. Simulaatiossa agentit eli asiakkaat kulkevat kärryineen keräilemässä ostoksia kaupan käytävillä. Käytävät sekä kaupan muut tilat, kuten kassat, kuvaavat siten ympäristöä. Riippuen siitä, montako asiakasta on ollut tavoittelemassa makaroneja tai vastaavia kuivatuotteita samalta käytävältä samaan aikaan, on tämä saattanut aiheuttaa jonoja ja siten hidastaa ostoksien tekemistä. Lopuksi agentti jonottaa kassalle maksamaan ostoksensa ja tämän jälkeen simulaatio päättyy kyseisen agentin osalta. Samanaikaisesti agentteja on saattanut olla ostoksilla, kaupan koosta riippuen, kymmenen tai jopa tuhat agenttia. Simulaation lopputuloksena voidaan esittää optimointeja esimerkiksi tuotteiden sijoitteluun ja käytävien leveyksiin, tai kassojen määrään.
Minkälaisia vaatimuksia asiakkaalla oli toteutuksen suhteen?
Koska kyseessä oli asiakkaan ydintekemiseen liittyvä simulaattori, oli vaatimuksena simulaattorin laajennettavuus uudentyyppisillä toimijoilla. Ensimmäisessä vaiheessa oli kuitenkin tavoitteena todistaa ABM-simuloinnin vahvuudet asiakkaan liiketoiminnassa. Tämän takia lähdettiin liikkeelle proof of concept -ajatuksella ja tehtiin vielä rankkoja rajauksia, kuitenkaan vaarantamatta simulaatiotuloksen oikeellisuutta. Toisaalta sovittiin yhdessä, että mahdollisuuksien mukaan otetaan huomioon jatkokehitystarpeita ja suunitellaan ohjelmiston arkkitehtuuri sen mukaisesti, että sitä olisi helppo laajentaa esim. uudentyyppisillä toimijoilla.
Tekniset vaatimukset olivat lähinnä Elixir, sekä tietty tietokantaympäristö, joka asiakkaalla oli jo käytössä. Tietokantaa varten Elixiristä löytyi valmis kirjasto.
Retrospektiivi
Ennen projektin alkua tutustuin Elixiriin muutaman viikon ajan. Juuri ennen lomille lähtöä saatiin asiakkaan kanssa sovittua vielä yksityiskohdat speksien osalta ja sain tarvittavat tietokannat käyttööni, jotta voin lomilta palatessani heti aloittaa tehokkaan työskentelyn. Projekti luovutettiin ajallaan lähdekoodeineen sekä dokumentaatioineen asiakkaalle.
Asiakkaalle rakennettiin myös lyhyt roadmap, jossa projisoitiin mahdollista jatkokehitystä. Nyt esimerkiksi simulaation visualisointi jäi taka-alalle, mutta sitä silmällä pitäen simulaattorin rakenne ottaa huomioon mahdollisen visualisointikerroksen lisäämisen myöhemmin. Lisäksi toimijoiden simulointia varten mietittiin muutamia uusia toiminnallisuuksia, joiden avulla simulaatiosta saisi monikäyttöisempää.
Kaiken kaikkiaan projekti oli todella mielenkiintoinen ja sitä oli hauska tehdä. Opin jotain uutta funktionaalisesta ohjelmoinnista ja ennenkaikkea Elixiristä. Vaikka simulaattoreita olen ennenkin tehnyt, tämä konsepti oli minulle uusi ja sen kanssa oli mielenkiintoista työskennellä. Työn edetessä koin monia ahaa-elämyksiä jatkokehitysideoiden suhteen ja ne syntyivätkin kuin itsestään.
Ja mikä parasta: asiakas oli tyytyväinen projektiin.
Tiedot
Tilaaja: | Turku City Data |
Lisätietoja
Tagit
Liiketoimintaprosessi
Tuotekehitys ja suunnittelu |
Erikoisosaaminen
Ketterät menetelmät | |
Ohjelmistokehitys |
Tarjonnan tyyppi
Konsultointi | |
Toteutustyö |
Omat tagit
Qalmari - Asiantuntijat ja yhteyshenkilöt
Qalmari - Muita referenssejä
Qalmari - Muita bloggauksia
It- ja ohjelmistoalan työpaikat
- Laura - Development Manager, Operations
- Laura - ICT-asiantuntija
- Laura - IT Manager
- Nordea - Senior Fullstack Developer
- Innofactor Oyj - Business Architect
- Laura - Cloud Engineer
- Laura - UX/UI Designer
Premium-asiakkaiden viimeisimmät referenssit
- SD Worx - Kehitystyö SD Worxin kanssa takaa Clas Ohlsonille parhaat palkanmaksun prosessit kasvun tiellä
- Digiteam Oy - Case Esperi Care Oy: Ketterä kumppanuus vei Esperin verkkosivu-uudistuksen maaliin sujuvasti ja aikataulussa
- Kisko Labs Oy - Howspace Hub - Mukautuva oppimisen hallintajärjestelmä kasvaviin oppimisalustavaatimuksiin
- Kisko Labs Oy - Sanoma Pro: Multimediasisältöjen hallinnan uudistaminen
- Kisko Labs Oy - Svean helppokäyttöinen palvelu asiakkaan verkko-ostosten hallintaan
- Kisko Labs Oy - Yhtenäinen käyttöliittymä luovien alojen ammattilaisille
- Codemate - Digitaalisen murroksen nopeuttaminen Flutterin avulla
Tapahtumat & webinaarit
- 27.11.2024 - Green ICT -ekosysteemitapaaminen III: Ohjelmistojärjestelmien virrankulutuksen mittaaminen ja kasvihuonepäästöjen arviointi
- 27.11.2024 - Digitaalisen asiakaskokemuksen uusi aikakausi
- 28.11.2024 - Webinaari: Keskity myyntityön laatuun!
- 28.11.2024 - Copilot-webinaari – Mielekkäämpää tietotyötä turvallisesti
- 04.12.2024 - Kuinka oikea matka- ja kululaskujärjestelmä tehostaa prosesseja?
- 05.12.2024 - Green ICT VICTIS -hankkeen kick off -tilaisuus
- 15.01.2025 - Datavastuullisuuden valmennus: hanki valmiudet vastuulliseen datan ja tekoälyn hyödyntämiseen
Premium-asiakkaiden viimeisimmät bloggaukset
- Zimple Oy - Pipedrive vai Hubspot? Kumpi kannattaa valita?
- SC Software Oy - Jatkuvat palvelut – asiakaslähtöistä kumppanuutta projekteista ylläpitoon
- Timeless Technology - Ohjelmoitavat logiikat (PLC): Ratkaisevat työkalut automaatioon ControlByWebiltä.
- Kisko Labs Oy - Heroku: Ohjelmistokehittäjän ykköstyökalu skaalautuvien sovellusten rakentamiseen
- SD Worx - Näin luot vakuuttavan Business Casen palkkahallinnon ulkoistukselle
- Timeless Technology - Kyberriskien tunnistaminen Profitap IOTA verkkoanalysaattorin avulla.
- GidiUp Oy - Ai hitto -päivä: Kun sesonki pääsee taas yllättämään
Digitalisaatio & innovaatiot blogimediaBlogimediamme käsittelee tulevaisuuden liiketoimintaa, digitaalisia innovaatioita ja internet-ajan ilmiöitä |