Terhi Mäki-Turja Matkustaja-autolautan työntötehon mallintaminen Aurora Botnia -aluksen dataan ja sääolosuhteisiin perustuva koneoppimismallinnus Vaasa 2025 Tekniikan ja innovaatiojohtamisen yksikkö Energiatekniikan diplomityö Energia- ja informaatiotekniikan ohjelma 2 VAASAN YLIOPISTO Tekniikan ja innovaatiojohtamisen yksikkö Tekijä: Terhi Mäki-Turja Tutkielman nimi: Matkustaja-autolautan työntötehon mallintaminen : Aurora Botnia -aluksen dataan ja sääolosuhteisiin perustuva koneoppimis- mallinnus Tutkinto: Diplomi-insinööri Oppiaine: Energiatekniikka Työn valvoja: Anne Mäkiranta Työn ohjaajat: Teemu Ovaska ja Jani Boutellier Valmistumisvuosi: 2025 Sivumäärä: 75 TIIVISTELMÄ: Merenkulku aiheuttaa noin kolme prosenttia globaaleista ihmisen toiminnasta aiheutuvista päästöistä. Kansainvälinen merenkulkujärjestö IMO (International Maritime Organization) on päivittänyt kasvihuonekaasustrategiansa ja sen tavoitteena on vähentää merenkulusta aiheutu- via päästöjä. Alusten polttoaineenkulutuksella on merkittävä vaikutus merenkulun päästöihin, ja polttoaineenkulutukseen vaikuttavat monet asiat. Tämän diplomityön tarkoituksena on mallintaa Merenkurkussa liikennöivän Aurora Botnia -aluk- sen propulsiotehoon vaikuttavia muuttujia. Tarkoitus on pyrkiä tunnistamaan erilaisten sääele- menttien ja laivan ajamisen muuttujien vaikutusta propulsiotehon tarpeeseen ja sitä kautta polt- toaineenkulutukseen. Erityisenä kiinnostuksenkohteena on biolikaantumisen vaikutuksen mah- dollinen näkyminen käytettävissä olevasta datasta ja sen mahdollinen ennustaminen. Aurora Botnia -alukselta saatu data sekä Ilmatieteen laitoksen meripoijudata ja jäädata on yh- distetty Wasalinelta saatuihin tietoihin aluksen pesuajankohdista. Yhdistettyä dataa on mallin- nettu käyttämällä MATLAB-ohjelmaa. Koneoppimismallinnuksessa on käytetty lineaarista reg- ressiota ja keinotekoista neuroverkkoa (ANN). Työssä on tutkittu eteenpäin työntävää propul- siotehoa suhteessa muihin muuttujiin. Datan valinnassa ja käsittelyssä on jouduttu tekemään joitakin oletuksia. Numeerista tai visuaali- siin havaintoihin perustuvaa tietoa aluksen pohjan likaantumisesta ei ollut olemassa. Jään vai- kutuksesta likaantumiseen tai jään ilmenemisestä reitillä ei ollut saatavissa täsmällistä tietoa. Tuloksista voidaan päätellä, että aluksen nopeudella on suurin vaikutus propulsiotehon tarpee- seen. Seuraavaksi merkittävin tekijä on suhteellinen tuulennopeus. Keinotekoisella neurover- kolla mallinnettaessa seuraavaksi merkittävimmät muuttujat ovat viippaus, merkitsevä aallon- korkeus, Frouden syvyysluku ja syväys. Pohjan puhtaudella pesupäivän mukaan arvioitaessa ei ollut suurta merkitystä tehontarpeeseen kuten ei veden lämpötilallakaan. Lineaariregression avulla luotu malli ennustaa tarvittavan työntötehon tarpeen. Arvovälille nol- lasta yhteen normalisoidulla datalla mallin keskiarvoinen keskineliövirhe (MSE) on 0,0027 ja jäännösvirhehajonta (RMSE) 0,0520. AVAINSANAT: aikasarjat, koneoppiminen, laivat, mallintaminen, meriliikenne, monimuuttu- jamenetelmät, potkurit, teho 3 UNIVERSITY OF VAASA School of Technology and Innovations Author: Terhi Mäki-Turja Title of the thesis: Ferry propulsion modelling: Machine learning modelling based on Aurora Botnia vessel data and environmental data Degree: Master of Science in Technology Discipline: Energy Engineering Supervisor: Anne Mäkiranta Instructors: Teemu Ovaska and Jani Boutellier Year: 2025 Pages: 75 ABSTRACT: Shipping is responsible for about three percent of the global anthropogenic emissions. The In- ternational Maritime Organization (IMO) has set a target of reaching net-zero GHGs emissions by 2050. Vessel fuel consumption significantly affects total emissions and is a resultant of many factors. This thesis aims to model these factors’ effects on propulsion needed on Aurora Botnia, a ferry trafficking in the Kvarken region. The goal is to identify various weather and ship operat- ing variables’ effect on needed thrust and consequently fuel consumption. A particular interest is taken on biofouling and detecting and predicting it from available data. The vessel data from Aurora Botnia has been combined with the buoy and ice data from the Finnish Meteorological Institute (FMI) as well as the log of when the hull was cleaned. This com- bined data was modelled by using MATLAB and its machine learning tools for linear regression and Artificial Neural Network (ANN). Modelling was focused on forward thrust in relation to other variables. In data handling and selection some presumptions were made. Vessel fouling data was based on hull cleaning dates rather than numerical or visual observations. There was no precise data on ice seasons on the route or its effect on biofouling. Results from the ANN approach show that the propulsion needed is most significantly affected by the speed of the vessel. The second most significant factor is the relative wind speed. After this, the most significant factors are trim, significant wave height, Froude depth number and draught, in order. When assessed according to the days since the hull was cleaned, neither bio- fouling nor water temperature were found to be significant factors. Using linear regression, the model reliably prognosed the needed thrust. When data was nor- malized between 0 and 1, the average mean squared error was 0,0027 and the average root mean squared error was 0,0520. KEYWORDS: machine learning, marine traffic, modelling, multivariable methods, power, pro- pellers, ships, time series 4 Sisällys 1 Johdanto 8 2 Teoria 11 2.1 Meriliikenne ja päästövaatimukset 11 2.2 Aluksen geometria 12 2.3 Muut alueella tehdyt tutkimukset 12 2.4 Syväys ja trimmi eli viippaus 12 2.5 Matala vesi ja Frouden syvyysluku 13 2.6 Biolikaantuminen 13 2.7 Reitinvalinta ja sääolosuhteet 14 3 Tapauksen esittely 16 3.1 Aurora Botnia 16 3.1.1 Voimanlähteet 16 3.1.2 Azipod 17 3.1.3 Nacos Platinum 17 3.2 Merenkurkku 17 3.3 Kasvusto 18 4 Työn data 19 4.1 Käytettävissä oleva data 19 4.2 Käytettävissä olevat muuttujat 19 4.2.1 Paikkaan ja nopeuteen liittyvät muuttujat 19 4.2.2 Syvyyteen ja asentoon liittyvät muuttujat 20 4.2.3 Tuuleen liittyvät muuttujat 20 4.2.4 Azipodeihin liittyvät muuttujat 20 4.2.5 Veteen liittyvät muuttujat 21 4.2.6 Pohjan pesuun liittyvä muuttuja 21 5 Datan käsittely 22 5.1 Käytetty ohjelmisto 22 5.2 Laskennalliset muuttujat 22 5 5.2.1 Frouden syvyysluku 22 5.2.2 PowerSum 23 5.2.3 PowerEteen 23 5.2.4 PowerEro ja nopeusero 24 5.2.5 Lämpimätpäivät 24 5.3 Yhdistäminen ja käsittely 25 5.4 Käytettävän datan valikoiminen 26 6 Tulokset 30 6.1 Datan mallintaminen neuroverkolla 30 6.2 Datan mallintaminen lineaariregressiolla 34 7 Tulosten tarkastelu 38 8 Johtopäätökset 44 9 Yhteenveto 47 Lähteet 49 Liitteet 54 Liite 1. Täydentäviä tuloksia 54 Liite 2. Muuttujien yksiköt 58 Liite 3. MATLAB-koodit: aineiston yhdistäminen 59 Liite 4. MATLAB-koodit: laskennalliset muuttujat 65 Liite 5. MATLAB-koodit: aineiston rajaamiseen käytettävät koodit 68 Liite 6. MATLAB-koodit: tulosten laskeminen 72 6 Kuvat Kuva 1. Aluksen liikennöintireitti, kun telakkakäynti on poistettu 27 Kuva 2. Reitti, kun telakkakäynti, suuret nopeuserot ja negatiiviset teho- ja nopeusarvot on poistettu 28 Kuva 3. Neuroverkon rakenne 31 Kuva 4. Yksittäisten muuttujien vaikutus työntötehoon neuroverkkomallissa 32 Kuva 5. Lineaariregression ennuste ja todelliset arvot 36 Kuva 6. Yksityiskohta ennustettujen ja todellisten arvojen kuvaajasta 37 Kuva 7. Muuttujien vaikutukset neuroverkossa, jossa on seitsemän kerrosta 42 Taulukot Taulukko 1. Muuttujien kulmakertoimet neuroverkkomallissa 33 Taulukko 2. Lineaariregression muuttujien kulmakertoimet 35 Taulukko 3. Neuroverkkojen kerrosten lukumäärän vaikutus 41 7 Symbolit ja lyhenteet Symbolit αp paapuurin puolen Azipodin ohjauskulma αs styyrpuurin puolen Azipodin ohjauskulma Fr Frouden syvyysluku h veden syvyys PE teho eteenpäin Pp paapuurin puolen teho Ps styyrpuurin puolen teho Psum yhteenlaskettu teho V aluksen nopeus veden läpi Lyhenteet DWT dead weight tonnage, kuollut paino, aluksen kantavuus eli aluksen lastin, polttoaineen, vesivarastojen, tarvikkeiden ja henkilöiden yhteispaino GT gross tonnage, bruttovetoisuus, yksikötön aluksen vetoisuuden suure MAPE mean absolute percentage error, prosentuaalinen keski-itseisvirhe mpk meripeninkulma, merimaili, 1852 m MSE mean squared error, keskineliövirhe ps port side, paapuuri RMSE root mean squared error, jäännösvirhehajonta ro-ro roll-on/roll-off eli aluksessa voidaan ajaa sen läpi pitkittäissuuntaisesti RoPax-alus roll-on/roll-off matkustaja-alus eli alus, jolla on mahdollista kuljettaa rah- tia ja matkustajia sb starboard, styyrpuuri 8 1 Johdanto Meriteitä pitkin käydään noin 80–90 prosenttia maailmankaupasta. Merenkulku aiheut- taa noin kolme prosenttia globaaleista ihmisen toiminnasta aiheutuvista päästöistä (Am- pah ja muut, 2021). Tulevaisuuden merenkulun tavoitteena on vähentää sen aiheuttamia ilmastopäästöjä merkittävästi aiempaan verrattuna. Vaihtoehtoisten polttoaineiden käyttämisen lisäksi on tärkeää vähentää käytettyä polttoainemäärää. Kansainvälinen merenkulkujärjestö IMO (International Maritime Organization) päivitti heinäkuussa 2023 kasvihuonekaasustrategiansa. Sen tavoite on, että alusten kasvihuo- nekaasupäästöt ovat nettomääräisesti nolla vuoteen 2050 mennessä (International Ma- ritime Organization, 2023a). Alusten polttoaineenkulutuksella on merkittävä vaikutus merenkulun päästöihin. Kulku- vastukseen ja sitä kautta polttoaineen kulutukseen vaikuttaa suuri joukko erilaisia asioita. Näitä asioita ovat aluksen pysyvät ominaisuudet, kuten rungon muoto ja paino, sekä muuttuvat ominaisuudet, kuten syväys ja trimmi (laivan eteen- tai taaksepäin kallistunei- suus). Lisäksi muuttuvia ominaisuuksia on laaja joukko erilaisia veteen ja säähän liittyviä mitattavia suureita, kuten tuulen nopeus ja suunta, veden suolaisuus ja lämpötila sekä vallitsevat virtaukset (Altarriba, 2020). Myös aluksen biolikaantuminen vaikuttaa sen kulkuvastukseen. Biolikaantuminen tar- koittaa aluksen vedenalaisiin osiin kertyvää kasvustoa, kuten merirokkoja ja leviä. Tämä kasvusto vaihtelee paikallisesti sekä mahdollisesti vuodenaikojen mukaan. Kasvustoa voidaan poistaa joko telakalla tai vedessä tapahtuvan puhdistuksen avulla (Adland ja muut, 2018; Altarriba, 2021; Luoma ja muut, 2022). Säännöllinen ja riittävän usein tapahtuva pohjan puhdistus paitsi vähentää polttoaineen- kulutusta myös estää sen, että orgaaniset kasvustot eivät pääse kiinnittymään tiukasti. Tällöin pohja voidaan pestä hellävaraisemmin kuin tiukasti kiinnittyneiden organismien 9 poistaminen vaatisi, ja aluksen maalipinta ei kärsi. Tämä säästää kustannuksia ja helpot- taa jatkossa tapahtuvaa pesua (Luoma ja muut, 2022). Propulsio- eli työntötehon tarpeesta on tehty monia eri tutkimuksia. Myös tämän tutki- muksen kohteena olevaa, Merenkurkussa liikennöivää matkustaja-autolautta Aurora Botniaa on tutkittu (Häggman, 2022; Öztürk & Başar, 2022). Veden syvyyden vaikutusta ovat tutkineet muun muassa Nguyen ja muut (2019). Myös biolikaantumista ja sen vai- kutusta polttoaineenkulutukseen on tutkittu paljon, mutta nämä tutkimukset keskittyvät lähinnä lämpimissä ja syvissä vesissä kulkeviin aluksiin. Biolikaantumisen vaikutus voi li- sätä polttoaineenkulutusta lähteestä riippuen 4–59 % (Laurie ja muut, 2021; Uzun ja muut, 2019). Aluksista, jotka kulkevat matalissa vesissä tai osittain jäisissä olosuhteissa on vähän tutkimuksia (Hughes & Ashton, 2016). Tämän diplomityön tavoitteena oli mallintaa Merenkurkussa, Vaasa-Uumaja -väliä, lii- kennöivän Aurora Botnia -aluksen propulsiotehon tarvetta lastaus- ja sääolosuhteet huo- mioon ottaen. Mallinnuksessa huomioitiin olosuhteiden lisäksi se, että osan reitistä alus kulkee matalassa vedessä. Tässä työssä keskityttiin työntötehon tarpeeseen eikä siihen, millaisella energialla tuo teho on saatu aikaiseksi, minkä mahdollisti Azipod-potkurilait- teelta saatu data. Tarkoituksena oli selvittää, voidaanko tehontarvetta ennustaa pelkästään nykyaikaisten alusjärjestelmien datan ja vapaasti saatavilla olevan säädatan perusteella, koneoppi- mista hyödyntäen. Samalla selvitettiin, onko mallinnus mahdollista ilman syvällistä ym- märrystä työntötehoon vaikuttavista asioista ja laivageometrian huomiointia. Aurora Botnian propulsiotehon mallintamiseen käytettiin MATLAB-ohjelmaa. Data mal- linukseen saatiin Wasalinelta ja Wärtsilältä osana KvarkenData-projektia. Muu data oli Ilmatieteen laitoksen avoimista lähteistä noudettua säädataa. Mallinnuksessa käytettiin lineaarista regressiota ja keinotekoista neuroverkkoa. 10 Ilmastonmuutoksen aiheuttama lämpeneminen vaikuttanee Itämeren alueen jääolosuh- teisiin, jotka sitten voivat lisätä biolikaantumista ja hankaloittaa veneen pohjan pesua (Altarriba, 2021). Tämän vuoksi on hyvä pystyä ennakoimaan puhdistuksen tarvetta tar- kemmin, ja siinä tämän tutkimuksen tulos voi auttaa. Tämän työn luvussa kaksi perehdytään työhön liittyvään teoriaan ja aiempiin tutkimuk- siin. Luvussa kolme on esitelty tutkittava tapaus ja luvussa neljä perehdytään tutkimuk- sen dataan. Luvussa viisi käydään läpi datan käsittelyyn liittyvät asiat. Luku kuusi kertoo tutkimuksen tulokset ja luvussa seitsemän analysoidaan saatuja tuloksia. Luvussa kah- deksan tarkastellaan tutkimuksesta tehtyjä johtopäätöksiä ja luvussa yhdeksän on työn yhteenveto. 11 2 Teoria Erilaisten merenkulkualusten propulsiotehon tarvetta on tutkittu paljon ja erilaisista nä- kökulmista. Useat näistä tutkimuksista keskittyvät johonkin tiettyyn muuttujaan kuten polttoainevalintaan, trimmiin (viippaukseen), reittivalintoihin tai painolastiin (Ampah ja muut, 2021; Martić ja muut, 2024; Öztürk & Başar, 2022). On olemassa myös useita tut- kimuksia, joissa mallinnetaan työntötehon tarvetta tai polttoaineen kulutusta erilaisia matemaattisia malleja käyttäen. Nämä mallit saattavat perustua joko aluksilta saatuun todelliseen dataan tai simuloituun dataan (Ampah ja muut, 2021; Martić ja muut, 2024; Öztürk & Başar, 2022). 2.1 Meriliikenne ja päästövaatimukset Kansainvälinen merenkulkujärjestö IMO (International Maritime Organization) on Yhdis- tyneiden kansakuntien alainen erikoisjärjestö, joka käsittelee merenkulkuun liittyviä asi- oita. Muun muassa kansainväliseen merenkulkuun liittyvät turvallisuuskysymykset, me- ren saastumisen ehkäiseminen ja oikeudelliset kysymykset kuuluvat IMO:ssa käsiteltä- viin asioihin (International Maritime Organization, ei pvm.-a). IMO:n vuonna 2023 päivittämä kasvihuonekaasustrategia tavoittelee alusten nettonol- lapäästöjä vuoteen 2050 mennessä. Myös aluksen energiatehokkuuden parantamisen suunnittelun ohjeissa (SEEMP, Ship Energy Efficiency Management Plan) tarjotaan näkö- kulmia erilaisiin keinoihin vaikuttaa aluksen energiatehokkuuteen. Aluksen pohjan li- kaantumisen vaikutukset nostetaan esiin sekä energiatehokkuuden että vieraslajien le- viämisen näkökulmasta (International Maritime Organization, 2022, 2023a, 2024). 12 2.2 Aluksen geometria Aluksen geometria vaikuttaa merkittävästi sen kulkuvastukseen. Kokonaisuudessaan aluksen geometria on pysyvä eikä se varsinaisesti muutu. Toisaalta aluksen asento (trimmi ja kallistuneisuus) vaikuttaa vedessä olevan osan geometriaan kuin myös bioli- kaantuminen. Nämä ominaisuudet vaikuttavat kulkuvastukseen, mutta tässä tutkimuk- sessa niitä ei huomioida muuttuneen geometrian näkökulmasta eikä mitään aluksen fy- sikaalisia ominaisuuksia kuten märkäpinta-alaa lasketa (Bertram, 2012; Molland ja muut, 2011). 2.3 Muut alueella tehdyt tutkimukset Itämeren alueella on tehty alusten biolikaantumisen tutkimusta muun muassa osana Eu- roopan Unionin rahoittamaa, Interreg Baltic Sea Region -ohjelman COMPLETE-hanketta. Hankkeessa kiinnitettiin huomiota vieraslajien vaikutuksiin ja pintakäsittelymateriaalien myrkyllisyyteen, mutta myös eri tekijöiden vaikutusta alusten kulkuvastuksiin. Näissä tut- kimuksissa kuitenkin jätettiin matalan veden alueet huomiotta ja tutkimukset on tehty jäättömään aikaan (Altarriba, 2020, 2021; Luoma ja muut, 2022). Tässä tutkimuksessa nämä näkökulmat kuitenkin otetaan huomioon. 2.4 Syväys ja trimmi eli viippaus Syväys tarkoittaa aluksen keskilaivankaaren kohdasta mitattavaa pystysuoraa etäisyyttä aluksen alimmasta kohdasta vesilinjaan. Kullakin aluksella on oma nimellinen syväys, ja todellinen syväys riippuu aluksessa olevan lastin ja varustuksen painosta. Syväyksellä on merkittävä vaikutus kulkuvastukseen muuttuvan märkäpinta-alan vuoksi. Kasvavan mär- käpinta-alan hydrodynaaminen vastus on selkeästi suurempi kuin vastaavasti pienene- vän pinta-alan ilmanvastuksen väheneminen (Altarriba, 2021; International Maritime Or- ganization, 2023b). 13 Trimmi tarkoittaa keulan ja perän syväyksien eroa ja se vaikuttaa aluksen kulkuvastuk- seen. Trimmiin vaikuttaa aluksen lastaus ja se on tapauskohtainen. Aurora Botnia ei py- sähdy välillä purkamaan lastia, joten aluksella on yksi lastauksesta riippuva trimmi kulle- kin matkalle. Perätrimmissä aluksen perän syväys on suurempi kuin keulan syväys ja trim- miarvo on negatiivinen. Keulatrimmissä keulan syväys on suurempi kuin perän syväys ja trimmiarvo positiivinen (Le ja muut, 2021; Musulin ja muut, 2024; Rawson & Tupper, 2001). 2.5 Matala vesi ja Frouden syvyysluku Matala vesi lisää kitkasta aiheutuvaa vastusta ja yleensä myös aaltojen vastusta. Kun Frouden syvyysluku on lähellä yhtä, vastus lisääntyy merkittävästi (Bertram, 2012). Ma- talan veden määritelmä riippuu kuitenkin sekä veden syvyydestä että aallonpituudesta. Täten ei voida yksiselitteisesti määrittää, mikä alue on matalan veden aluetta ja mikä syvän, vaan se riippuu sääolosuhteista (Nguyen ja muut, 2019). Muut tutkimukset eivät tutki matalan veden alueita vaan rajaavat nämä pois. Aurora Botnia kulkee kuitenkin suuren osan reitistään matalassa vedessä, joten tässä tutkimuk- sessa tätä rajausta ei tehdä. 2.6 Biolikaantuminen Biolikaantumisella (engl. biofouling) tarkoitetaan vedenalaisten rakenteiden likaantu- mista biologisesta aineksesta, kuten merirokosta ja levistä (Altarriba, 2021). Biolikaantu- minen alkaa välittömästi, kun kohde on kosketuksissa veteen. Ensimmäisten minuuttien ja tuntien aikana pinnalle kehittyy orgaaninen kalvo ja tämän jälkeen muunlainen kas- vusto ja eliöstö kehittyvät olosuhteista riippuen (Vinagre ja muut, 2020). 14 Veden suolaisuudella ja auringonvalolla on merkitys kasvuston lisääntymiseen. Murto- vettä suolaisemmissa vesissä kasvu on voimakkaampaa. Kasvu on voimakkainta lämpi- missä pintavesissä. Auringonvalon aiheuttaman kasvun lisääntymisen vuoksi joskus alus- ten pohjia pestään vain muutaman metrin levyiseltä alueelta vesirajasta kohti pohjaa (Altarriba, 2021). Biolikaantumisen vaikutusta on tutkittu paljon ja myös Itämerellä. Näistä tutkimuksista käy ilmi, että biolikaantuminen ei vaikuta ainoastaan aktiivisesti kulkuvastuksen lisään- tymisenä vaan maalipinnan mahdollisen vaurioitumisen kautta myös välillisesti (Luoma ja muut, 2022). IMO:n ohjeessa suositellaan seuraamaan biolikaantumista ja tarvittaessa puhdistamaan pohjaa ja potkureita osittain tai kokonaan. Myös pohjan pinnan laadulla ja karkeudella todetaan olevan suora vaikutus tehontarpeeseen (International Maritime Organization, 2022). Altarriban (2021) tutkimuksessa käytettyjen alusten pesuväli perus- tui kokemusperäiseen havainnointiin ja se tehtiin kesäkaudella eli toukokuun alusta lo- kakuuhun 6–8 kertaa, joillain aluksilla jopa kahden viikon välein. Biolikaantumisen ehkäisyyn käytetään usein erilaisia pinnoitteita, joiden laatu ja vaikut- tavuus vaihtelee paljonkin. Tässä tutkimuksessa ei kuitenkaan keskitytty pohjankäsitte- lyaineeseen, sillä aluksella oli koko ajan käytössä sama pinnoite eikä maalipintaa uusittu koejakson aikana. Eräs biolikaantumisen näkökulmista on vieraslajien leviäminen. Tässä tutkimuksessa sitä ei oteta huomioon, sillä tutkittava alus liikkuu säännöllisesti edestakaisin reitillä, jonka pituus on vain noin 100 km, pysytellen hyvin samalla leveyspiirillä, joten lajisto on sa- mankaltaista koko reitin matkalla. 2.7 Reitinvalinta ja sääolosuhteet Sääolosuhteet merellä vaikuttavat sekä suoraan polttoaineenkulutukseen että mahdolli- siin reittivalintoihin. Tutkimuksia esimerkiksi reittivalintojen tekemisestä sääennusteiden 15 perusteella on olemassa. Merivirrat ja virtaukset voivat vaihdella suurestikin erityisesti matalikkojen ja rantojen läheisyydessä ja niillä voi olla merkittäviä vaikutuksia vaaditta- vaan työntötehoon (Altarriba, 2020; Öztürk & Başar, 2022). Tämän diplomityön kohteena olleen aluksen reittiin voidaan vaikuttaa ainoastaan avo- merellä, sillä osassa reitistä väylät ovat kapeita ja vesistö ympärillä on matalaa. Reitin kokonaispituus on noin 53 merimailia, josta merikartan perusteella arvioiden korkein- taan kolmasosalla matkasta on edes teoriassa mahdollista tehdä reitinvalintaa. 16 3 Tapauksen esittely Tutkimuksen kohteena oli Merenkurkussa liikennöivä alus Aurora Botnia. Alus liikennöi Vaasan ja Uumajan välillä kahdesta neljään kertaan vuorokaudessa, päivästä ja vuoden- ajasta riippuen. Aluksen reitti kulkee osittain Merenkurkun saariston Unescon maailman- perintökohteen alueella. Alue on tavallisesti talviaikaan jääpeitteinen. 3.1 Aurora Botnia Aurora Botnia on Kvarken Link Ab Oy:n omistama alus. Kvarken Link Ab Oy:n omistavat tasaosuuksin Vaasan kaupunki ja Uumajan kunta. Toiminta tapahtuu Wasaline-nimen alla ja toiminnan taustalla on varustamoyritys NLC Ferry Ab Oy. Aurora Botnia on vuonna 2021 valmistunut monipolttoainelaiva ja maailman ympäristöystävällisemmäksi mai- nittu lastin ja matkustajien kuljettamiseen tarkoitettu alus eli RoPax-alus. Säännöllinen reittiliikenne alkoi lauantaina 28.8.2021 (DNV AS, 2022; Leiwo, 2021; Mäkinen, 2022). Aurora Botnia on 150 m pitkä ja 26 m leveä alus, jonka syväys on 6 m. Sen kuollut paino (DWT) on 3500 tonnia ja bruttovetoisuus (GT) 24036. Alus kuuluu jääluokkaan 1A Super. Siinä on 1500 kaistametriä tilaa kuorma- ja henkilöautoille ja kapasiteetti 800 matkusta- jalle (DNV AS, 2022; Mäkinen, 2022). Alukselta kerätään paljon erilaista dataa sisäänra- kennettujen anturien avulla. 3.1.1 Voimanlähteet Aluksen pääasiallisina voimanlähteinä ovat neljä Wärtsilän 8V31DF monipolttoai- nemoottoria. Moottorit voivat käyttää dieseleiden lisäksi polttoaineena nesteytettyä maakaasua (LNG) ja biokaasua (LBG). Alusta voidaan ajaa yhden tai useamman mootto- rin voimalla (Wärtsilä, 2023, 2024a, 2024b). 17 Aluksella on myös kaksi Leclanchén 1,1 megawattitunnin litium-ioniakustoa, jota voidaan käyttää voimanlähteenä yhdessä monipolttoainemoottorien kanssa tai itsenäisesti. Eri- tyisesti satama-alueilla voimanlähteenä käytetään ainoastaan akkuja. Akkuja käytetään myös tehohuippujen tasaamiseen (Moore, 2021; Peter, 2021). 3.1.2 Azipod Azipod on ABB:n valmistama potkurilaite. Aurora Botnialla on käytössä kaksi 5,8 MW:n Azipod yksikköä. Kiinteälapaisia yksikköjä voidaan kääntää pystyakselinsa ympäri 360 as- tetta ja ne ovat jäävahvistettuja, Polar Code 6 -jääluokan vaatimusten mukaisia potkuri- laitteita (ABB, 2020; International Association of Classification Societies, 2016; Wärtsilä, ei pvm.). 3.1.3 Nacos Platinum Nacos Platinum on Wärtsilän navigointi- ja viestintäjärjestelmä, joka yhdistää navigoin- nin, automaation, voimantuotannon ja propulsion ohjausjärjestelmät. Järjestelmä on yh- distetty Wärtsilän Data Bridge -alustaan, mikä mahdollistaa alukselta saadun datan ana- lysoinnin (Wärtsilä, 2019). 3.2 Merenkurkku Merenkurkku on alue Pohjanlahdessa, Selkämeren ja Perämeren välissä. Merenkurkun saaristossa on Unescon maailmanperintökohdealue. Merenkurkku on matala ja kapea merialue ja maankohoaman vuoksi se madaltuu vuosittain. Alueen mataluus lisää alueen luonnon haavoittuvuutta ja vaikuttaa käytettävissä oleviin alusten pohjan puhdistusta- poihin ja keinoihin suojella aluksen pohjaa biolikaantumiselta (Luoma ja muut, 2022; Suomen ympäristökeskus, 2023). 18 Alueen mataluus vaikuttaa merkittävästi myös aluksen kulkuvastukseen (Nguyen ja muut, 2019). Aluksen reitillä on datan mukaan vettä kölin alla pienimmillään 2,8 metriä ja suu- rimmillaan 140 metriä. 3.3 Kasvusto Merenkurkussa elää murtovesialueen eliöitä, joista joillekin Merenkurkku on niiden poh- joisin levinneisyysalue. Biolikaantumista aiheuttavia eliöitä on vähemmän kuin Meren- kurkun vettä lämpimämmissä ja suolaisemmissa vesissä, mutta erilaiset levät ja esimer- kiksi merirokko kuitenkin aiheuttavat näkyvääkin biolikaantumista vedenalaisissa raken- teissa (Luoma ja muut, 2022; Metsähallitus & Suomen ympäristökeskus, 2024). Aurora Botniasta kasvusto poistetaan 1–2 kertaa vuodessa, yleensä heinäkuussa ja toisi- naan myös marraskuussa. Tällöin koko aluksen pohja pestään harjaamalla. Alus puhdis- tetaan vedessä (B. Holmblad, sähköpostikeskusteluja, 30.8.2024–29.10.2024). 19 4 Työn data Aurora Botnia -alukselta kerätään monenlaista dataa. Tähän työhön käytettiin osaa tuosta datasta. Ilmatieteen laitoksen avointa dataa on myös paljon saatavilla ja sitä hyö- dynnettiin myös. Toisissa tutkimuksissa (Saukko, 2020) ilmi tulleet ongelmat, kuten datan hajanaisuus, sisältö, määrä ja muoto, eivät tässä tapauksessa olleet ongelmia, sillä kaikki tieto alukselta tuli saman järjestelmän kautta. Kun kaikki omistajuuteen ja salassapito- velvollisuuteen liittyvät asiat saatiin sovittua yritysten ja yliopiston kesken, eivät nekään tuottaneet hankaluuksia. 4.1 Käytettävissä oleva data Tutkimuksessa käytettiin Wärtsilän Nacos-järjestelmän kautta saatua dataa. Tarkemmat kuvaukset käytössä olleista muuttujista on selitetty seuraavassa alaluvussa. Säädata saa- tiin Ilmatieteen laitoksen kahdelta eri meripoijulta. Toinen poijuista on Maalahden Stor- skäretin pintalämpötilapoiju ja toinen on Selkämerellä, noin 60 km:n päässä Suomen rannikosta sijaitseva aaltopoiju (Ilmatieteen laitos, ei pvm.-a, ei pvm.-b). 4.2 Käytettävissä olevat muuttujat Käytettävissä olevien muuttujien nimet tulivat Wärtsilän Nacos-järjestelmästä ja ne on esitelty tässä sellaisinaan. Muuttujien yksiköt löytyvät liitteestä 2. Myös säädataan liitty- vät muuttujanimet tulivat nimettyinä datan lataamisen myötä. 4.2.1 Paikkaan ja nopeuteen liittyvät muuttujat Aluksen sijaintia merellä ilmaisevat muuttujat latitude ja longitude. Latitude ilmaisee le- veysasteet (latitudi) ja longitude pituusasteet (longitudi). Arvot saadaan Nacos-järjestel- 20 mästä desimaalimuodossa. Sog tulee sanoista speed over ground, ja se kuvaa aluksen nopeutta maan suhteen. Stw tulee sanoista speed through water, ja se on aluksen no- peus veden suhteen. Aluksen kulkusuunnasta kertoo kaksi muuttujaa. Cog (course over ground) on aluksen kurssi maan suhteen ja heading aluksen kompassisuunta. 4.2.2 Syvyyteen ja asentoon liittyvät muuttujat Muuttuja depth eli syvyys tarkoittaa veden syvyyttä kölin alta meren pohjaan mitattuna. Draught tarkoittaa laivan syväystä. Se kertoo kuinka syvällä vedessä alus ui. Se mitataan vesilinjasta pystysuoraan laivan alimpaan kohtaan. Trim eli trimmi eli viippaus tarkoittaa aluksen keula- ja peräsyväyksen välistä eroa. Mikäli luku on positiivinen, on keulan syväys suurempi kuin perän. Luvun ollessa negatiivinen on tilanne päinvastainen (International Maritime Organization, ei pvm.-b; Le ja muut, 2021). 4.2.3 Tuuleen liittyvät muuttujat Tuulen suuntaan ja nopeuteen liittyviä ominaisuuksia on kuusi: angle wind relative, angle wind true, direction wind relative, direction wind true, speed wind relative ja speed wind true. Kukin ominaisuksista ilmaistaan kahdella eri muuttujalla, suhteellinen (relative) ja tosi (true). Angle ottaa huomioon aluksen suunnan ja direction on se ilmasuunta, josta tuuli käy. Speed ilmoittaa tuulen nopeuden. 4.2.4 Azipodeihin liittyvät muuttujat Azipodeihin liittyviä muuttujia on kuusi erilaista: powerpropulsion ps, powerpropulsion sb, rpmpropulsion ps, rpmpropulsion sb, AZP_P_steeringangle ja AZP_S_steeringangle. Paapuurin puolelle (ps tai _P_) on omansa ja styyrpuurin puolelle (sb tai _S_) omansa. Powerpropulsion ilmoittaa tehon, rpmpropulsion potkurin kierrosluvun ja steeringangle ohjauskulman. 21 4.2.5 Veteen liittyvät muuttujat Veden lämpötila celsiusasteina saatiin kahdesta eri mittauspisteestä. VedenLmptilaC_ML on Maalahdesta mitattu tulos ja se saatiin Ilmatieteenlaitoksen Storskäretin pintalämpö- tilapoijusta. Poiju on ankkurointia varten muokattu MetOceanin iSVP-poiju, jonka U.S.Sensorin valmistaman anturin tarkkuus on valmistajan mukaan 0,05 °C ja käytän- nössä n. 0,2 °C (Ilmatieteen laitos, ei pvm.-b). Muuttuja VedenLmptilaC_SM saatiin Selkämerellä sijaitsevasta aaltopoijusta. Tästä poi- justa saatiin myös aaltoihin liittyvät muuttujat merkitsevä aallonkorkeus, aallokon tulo- suunta ja aallokon modaalinen periodi. Selkämeren poiju on Directional Waverider -aal- topoiju, ja se mittaa aallokkoa kompassin ja kiihtyvyysantureiden avulla. Veden lämpötila mitataan noin 0,4 m pinnan alapuolelta. Aaltopoiju on ankkuroitu Selkämerelle alueelle, jossa merenpohjan syvyys on noin 120 m (Ilmatieteen laitos, ei pvm.-a, ei pvm.-b). 4.2.6 Pohjan pesuun liittyvä muuttuja Päiviä pesusta -muuttuja kertoo edellisestä pesupäivästä kuluneiden päivien lukumäärän. Wasaline antoi tiedot aluksen pesupäivistä (B. Holmblad, sähköpostikeskusteluja, 30.8.2024–29.10.2024). Lisäksi käytössä olisi ollut akustoon liittyvää dataa, mutta tätä dataa ei käytetty, sillä työssä ei keskitytty siihen, mistä lähteestä energia saadaan. Samasta syystä, ja aineiston salaisuuden vuoksi, myöskään polttoaineen massoihin ja tilavuuksiin liittyvää dataa ei käytetty. Kuten ei myöskään tarkkailtu kunkin moottorin tuottamaa tehoa. 22 5 Datan käsittely Tässä työssä datan käsittelyyn valittiin MATLAB, sillä se soveltui suuren datamäärän hal- lintaan ja yhdistämiseen. Nacos-järjestelmästä saatu data oli aikaleimattua, joten muun datan yhdistäminen siihen onnistui MATLABilla. Datan esikäsittely ennen mallintamista parantaa merkittävästi mallinnuksesta saatavia tuloksia (Laurie ja muut, 2021). 5.1 Käytetty ohjelmisto Datan käsittelyssä käytettiin MATLAB-ohjelmaa ja sen versiota 9.14.0.2254940 (R2023a) Update 2. Data saatiin erilaisissa tiedostomuodoissa, kuten Excel-muotoisena, ja tämä data siirrettiin MATLABiin. 5.2 Laskennalliset muuttujat Saadun datan lisäksi taulukkoon lisättiin joitain laskennallisia muuttujia. Tämä siksi, että vaikka neuroverkot osaavatkin luoda erilaisia riippuvuuksia muuttujien välillä, näin ei välttämättä ole lineaariregressiota tehtäessä. Toinen syy on se, että joitakin valmiiksi las- kettuja muuttujia on helpompi vertailla ja ymmärtää kuin erillisiä sarakkeita. Laskennal- lisia muuttujia voidaan myös helposti käyttää hyväksi datan rajausta tehtäessä. Lasken- nallisten muuttujien MATLAB-koodit on esitetty liitteessä 4. 5.2.1 Frouden syvyysluku Frouden syvyysluku on yksikötön luku, joka kertoo aluksen nopeuden suhteesta veden syvyyteen. Frouden syvyysluku lasketaan kaavalla 𝐹𝑟 = 𝑉 √ℎ𝑔 , (1) 23 missä Fr tarkoittaa Frouden syvyyslukua, V aluksen nopeutta veden läpi (m/s), h aluksen kölin alla olevan veden syvyyttä (m) ja g gravitaatiokiihtyvyyttä (m/s2). Frouden luku las- ketaan suoraan MATLABiin siirretyssä datataulukossa, joten lukujen pyöristetyt arvot ovat Wärtsilän järjestelmän antamia arvoja. Gravitaatiokiihtyvyytenä käytettiin lukua 9,81 m/s2. Wärtsilän järjestelmä antaa nopeuden veden läpi solmuina eli meripeninkul- mina tunnissa, ja tämä muutetaan yksikköön metriä sekunnissa kaavalla 𝑉𝑚/𝑠 = 𝑉𝑠 1852𝑚 𝑚𝑝𝑘 36𝑜𝑜𝑠 ℎ , (2) missä Vm/s tarkoittaa nopeutta yksikössä metriä sekunnissa ja Vs tarkoittaa nopeutta sol- muina. Mpk on meripeninkulma. 5.2.2 PowerSum Työntötehoihin liittyvä laskennallinen muuttuja on PowerSum. Tämä muuttuja on las- kettu yksinkertaisesti yhdistämällä styyrpuurin ja paapuurin puoleisten Azipodien an- tama teho. Kaavalla ilmaistuna 𝑃sum = 𝑃s + 𝑃p, (3) missä Psum on yhteenlaskettu teho, Ps on styyrpuurin puoleisen Azipodin teho ja Pp on paapuurin puoleisen Azipodin teho. 5.2.3 PowerEteen Toinen tehoihin liittyvä laskennallinen muuttuja on PowerEteen-muuttuja. Tämä muut- tuja on laskettu siten, että on otettu kummankin Azipodin (styyrpuurin ja paapuurin) tuottama teho ja niiden kulma rungon suhteen. Kulmat 0° ja 360° tarkoittavat samaa. 24 Tällöin Azipod-potkurien tuottama teho suuntautuu suoraan taaksepäin eli alusta eteen- päin työntäen. Kulman asteluku suurenee myötäpäivään käännyttäessä. PowerEteen on laskettu kaavalla 𝑃E = 𝑃s ⋅ 𝑐𝑜𝑠 𝛼s + 𝑃p ⋅ 𝑐𝑜𝑠 𝛼P, (4) missä PE on teho eteenpäin, αs on styyrpuurin puoleisen Azipodin kulma ja αp on paa- puurin puoleisen Azipodin kulma. Vaikka matemaattinen asteluku lisääntyy vastapäivään pyörittäessä ja tässä myötäpäivään pyörittäessä, kosinifunktio antaa silti oikean arvon suhteessa tehon suuntaan. 5.2.4 PowerEro ja nopeusero Muuttuja PowerEro laskee eteenpäin työntävän ja yhteenlasketun työntötehon välisen erotuksen itseisarvon. Vastaavasti nopeusero laskee erotuksen itseisarvon muuttujien sog ja stw välillä. 5.2.5 Lämpimätpäivät Lämpimätpäivät (lampimatpaivat) laskee perättäisten lämpimien päivien määrää Maa- lahden sääpoijun lämpötilatiedoista. Kyseinen lämpimäksi ajateltu lämpötila määrätään ohjelmaa kutsuttaessa. Tämä muuttuja luotiin sen takia, että veden lämpötila vaikuttaa muun muassa merirokon lisääntymiseen (Nasrolahi ja muut, 2012) ja haluttiin tutkia, näkyykö tämä jollakin tavalla tuloksissa. 25 5.3 Yhdistäminen ja käsittely Wärtsilän järjestelmästä saatu data, Wasalinelta saatu data ja Ilmatieteen laitoksen avoi- mesta lähteestä saatavilla oleva data yhdistettiin yhdeksi taulukoksi. Taulukkoa on täy- dennetty, sillä Wärtsilältä saatu data sisältää tietoa 30 sekunnin välein, säädata tunnin välein ja pesupäivätaulukko päivän välein. Kaikki kerätty data yhdistettiin taulukoksi AB. Sääpoijujen antamia tietoja on käsitelty siten, että niinä päivinä, kun dataa on olemassa, on väli edelliseen arvoon interpoloitu lineaarisesti. Niiltä päiviltä, kun dataa ei ole ole- massa, on arvoksi merkitty NaN (Not a Number). Sääpoijujen antamia tietoja ei ole tal- viajalta. Wasalinelta pesupäivistä saatujen tietojen pohjalta muodostettiin oma rivi taulukkoon. Jäiden aluksen pohjaa biolikaantumisesta puhdistava vaikutus huomioitiin siten, että jäisten aikojen ”päiviä pesusta” -arvoksi merkittiin nolla. Jäiset ajat määrättiin ilmatie- teen laitoksen avoimen datan jäätalvitilaston perusteella Vaasan sataman jäätietojen mukaan (Ilmatieteen laitos, ei pvm.-c). On myös huomioitava, että ensimmäisen vuoden ”päiviä pesusta” -muuttuja ei pidä täs- mällisesti paikkansa. Alus on ollut vedessä jo ennen liikennöintiä ja ensimmäisek- si ”pesupäiväksi” on merkitty saadun datan ensimmäinen päivä. Ensimmäinen päivä, jol- loin alukselta on paikkadataa, on 18.6.2021, jolloin dataa oli jo 18 päivän ajalta ja päiviä pesusta siis arvolla 18. Ei tiedetä täsmälleen, kuinka kauan alus on ollut vedessä Rauman telakalla. Biolikaantumisen näkökulmasta on otettava huomioon myös se, että telakka- alueella biolikaantuminen voi tapahtua eri tavalla kuin liikennöivään alukseen. Taulukkoon lisättiin myös laskennalliset muuttujat. Kun kaikki käytettävissä oleva data yhdistettiin, oli käytössä 53 eri muuttujaa ja yli kolme miljoonaa (3146173) näytettä. Näistä 53 muuttujasta kahdeksan oli laskennallisia ja muut olivat joko avoimesta läh- teestä tai yhteistyötahojen tarjoamia. Tästä datasetistä oleellisen tiedon valikoiminen oli yksi hankaluuksista, joka muiden tutkimusten (Laurie ja muut, 2021; Saukko, 2020) pe- 26 rusteella oli odotettavissa. Kaikki datan yhdistämiseen liittyvät koodit on eritelty tarkem- min liitteessä 3. Laskennallisten muuttujien koodit ovat liitteessä 4. 5.4 Käytettävän datan valikoiminen Datan suuren määrän vuoksi esimerkiksi MATLABin valmiita funktioita, kuten satunnai- nen metsä -menetelmän TreeBagger-toteutusta, ei ollut tässä tapauksessa mahdollista käyttää. Aluksi dataa rajattiinkin muilla perusteilla. Ensin rajattiin pois se data, joka oli ajalta ennen kuin alus aloitti säännöllisen reittiliiken- teen. Datan perusteella liikennöinti Vaasan ja Uumajan välillä alkoi 27.8.2021 klo 10.14. Toinen ajan perusteella pois rajattu data liittyi aluksen telakkakäyntiin. Lisäksi poistettiin selkeät mittapoikkeamat, kuten ohjauskulmat, jotka olivat yli 360° ja syväykset, jotka oli- vat yli 30 m, sekä rivit, joilla näiden muuttujien arvo oli NaN. Pois rajattiin myös ne sarakkeet, joiden tietoja ei joko tarvittu tai haluttu käyttää. Näitä sarakkeita olivat polttoaineeseen ja akustoon liittyvät sarakkeet sekä laskennalliset apusarakkeet styyrpuurin ja paapuurin eteenpäin työntävälle teholle. Näiden poistojen jälkeen taulukon AB koko oli 2874610x41. Tästä datasta on piirretty kuva 1, jossa näkyy aluksen reitti kartalla. 27 Kuva 1. Aluksen liikennöintireitti, kun telakkakäynti on poistettu Datasta poistettiin myös kaikki sellainen data, jossa aluksen nopeus veden läpi oli nega- tiivinen, sekä sellainen data, joissa työntöteho oli negatiivinen. Rivit, joilla aluksen no- peus maan suhteen ja aluksen nopeus veden suhteen erosivat enemmän kuin yhden sol- mun, poistettiin myös. Tämä rajaus tehtiin siksi, että aluksen potkurit voivat tuottaa työn- tötehoa mihin suuntaan tahansa ja täten aluksen nopeus veden suhteen, joka yleensä ilmaisee veden virtauksien voimakkuutta, ei välttämättä pidä paikkansa. Tämä ilmeni muun muassa tilanteissa, joissa alus oli paikoillaan laiturissa eli nopeus maan suhteen oli nolla solmua, mutta nopeus veden suhteen esimerkiksi -1 solmu. Rajanopeudeksi valikoitui yksi solmu, sillä Ilmatieteen laitoksen mukaan tyypilliset vir- taukset Itämeressä ovat 5–10 senttimetriä sekunnissa ja myrskyissä voidaan saavuttaa 28 50 senttimetrin sekuntinopeus. Tämä nopeus vastaa noin yhtä solmua (Ilmatieteen laitos, 2022). Näiden rajausten jälkeen taulukon AB koko oli 15566046x41. Tämän datajoukon perusteella on piirretty kuva 2. Kuva 2. Reitti, kun telakkakäynti, suuret nopeuserot ja negatiiviset teho- ja nopeusarvot on poistettu Koska Merenkurkun alue on monella tapaa erityinen, on tämän tutkimuksen tuloksia mielenkiintoisia verrata valtamerellä tehtyihin tutkimuksiin. Laurie ja muut (2021) käyt- tivät tutkimuksessaan kahdeksaa parametriä. Nämä muuttujat olivat nopeus veden suh- teen, suhteellinen tuulennopeus, meren lämpötila, trimmi, syväys, Frouden syvyysluku, merkitsevä aallonkorkeus ja päiviä pesusta. 29 Suurimmat korrelaatiokertoimet PowerEteen-muuttujan suhteen olivat PowerSum, stw, sog, Frouden syvyysluku, syvyys, suhteellinen tuulennopeus, kompassisuunta, syväys, to- dellinen tuulennopeus, aluksen kurssi maan suhteen ja päiviä pesusta. Näissä korrelaa- tiokerroin oli enemmän kuin 0,05. Pienemmät kuin -0,05 korrelaatiokertoimella olevat muuttujat olivat todellinen tuulensuunta, longitudi ja trim. Merkittävin ero Laurien ja muiden (2021) käyttämiin muuttujiin oli merkitsevä aallonkorkeus, jonka korrelaatioker- roin oli lähellä nollaa sekä veden lämpötilat. Kompassisuunnan, aluksen kurssin maan suhteen, longitudin ja syvyyden vaikutusta kor- relaatioon saattaa osittain selittää se, että alus kulkee hyvin täsmällisesti samalla reitillä ja syvimmän veden alueella alus kulkee nopeimmin. Veden lämpötilan vaikutus ja mer- kitsevä aallonkorkeus otettiin mukaan, vaikka niiden korrelaatiokertoimet eivät olleet- kaan suuria. Tässä tutkimuksessa päädyttiinkin valitsemaan käytettäviksi muuttujiksi sa- mat muuttujat, joita Laurie ja muut (2021) ovat tutkimuksessaan käyttäneet. Kun seurattavat muuttujat oli valittu, poistettiin vielä ne rivit, joista puuttui jokin muut- tujan arvo. Jos käytetään Maalahden poijun lämpötiloja, samalla kun poistetaan ne rivit, joilla lämpötilamuuttujalla ei ole arvoa, poistuvat jäätalvet. Kun lämpötilana käytettiin Maalahden poijun lämpötilaa, rivejä oli jäljellä 790659. Mallinnusta varten aineisto nor- malisoitiin kaavalla, joka löytyy liitteestä 5. 30 6 Tulokset Valittua dataa mallinnettiin kahdella eri tavalla: keinotekoisella neuroverkolla ja lineaari- regressiolla. Kummallakin mallinnustavalla osa aineistosta käytettiin mallin kouluttami- seen ja osa arviointiin, vaikka keskenään hieman eri tavalla. 6.1 Datan mallintaminen neuroverkolla Datan mallintamiseen MATLABilla käytettiin Levenberg-Marquardt-algoritmia neurover- kon kouluttamiseen. Levenberg-Marquardt-algoritmi on muunnelma Newtonin mene- telmästä, ja soveltuu hyvin käytettäväksi neuroverkoissa, joissa suorituskykyä arvioidaan keskineliövirheen avulla. MATLABissa algoritmi on erityisen tehokas, sillä se perustuu si- säänrakennettuihin funktioihin ja täten laskenta on nopeampaa ja tarkempaa kuin ma- nuaalisilla toteutuksilla (Hagan ja muut, 2014; MATLAB, ei pvm.). Neuroverkossa käytettiin yhtä piilokerrosta. Ohjelma jakaa datan satunnaisesti kolmeen eri aineistoon: koulutus-, testaus- ja arviointiaineistoon. Koulutusaineisto sisältää 70 % koko aineistosta, ja testaus- ja arviointiaineisto sisältävät kumpikin 15 % aineistosta. Kun koko aineisto koulutetaan viisi kertaa, saadaan keskiarvoiseksi keskineliövirheeksi (MSE = mean squared error) 0,00268 ja korrelaatiokertoimeksi (R) 0,97774. Taulukko tuloksista löytyy liitteestä 1. Kuvassa 3 on esitetty neuroverkon rakenne MATLABin kuvaamana. 31 Kuva 3. Neuroverkon rakenne Neuroverkossa on kahdeksan syötettä ja yksi tulos (vihreät laatikot). Piilokerros sisältää painot (W), sisäiset korjaustekijät (b), summauksen ja aktivointifunktion. Kerroksessa on seitsemän painoelementtiä (Weight Elements). Tuloskerros sisältää painot, sisäiset kor- jaustekijät ja summauksen, mutta ei funktiota. Tuloskerros tuottaa yhden tuloksen. Kunkin muuttujan vaikutusta propulsiotehon tarpeeseen tutkittiin siten, että kaikista muuttujista laskettiin keskiarvo ja yhtä muuttujaa kerrallaan muuttamalla kokeiltiin neu- roverkkomallia siten, että ajettiin kyseisen muuttujan arvot minimistä maksimiin. Nor- malisoidun datan tapauksessa minimi oli nolla ja maksimi oli yksi. Kukin muuttuja ajettiin 32 erikseen ja kaikki kuvaajat piirrettiin kuvaan 4 siten, että vaaka-akseli on normalisoitu ja pystyakselilla on normalisoimattomat arvot. Kuva 4. Yksittäisten muuttujien vaikutus työntötehoon neuroverkkomallissa Kuvasta 4 voidaan todeta, että kaikki muut käyrät ovat suoria tai lähes suoria, paitsi no- peus veden läpi. Toinen kuvasta selkeästi muista erottuva suora on suhteellista tuulen- nopeutta ilmaiseva muuttuja. Muiden muuttujien sijoittuminen hyvin lähelle toisiaan käy ilmi myös niiden kulmakertoimista. Taulukossa 1 on esitetty kunkin muuttujan las- kennallinen kulmakerroin ja lisäksi MATLABin polyfit-funktiolla laskema kulmakerroin sekä normalisoidulle että normalisoimattomalle kohdemuuttujalle. 33 Taulukko 1. Muuttujien kulmakertoimet neuroverkkomallissa Nimeke, muuttuja Laskettu keskiarvo Polyfit- keskiarvo Normalisoimaton polyfit-keskiarvo stw, nopeus veden läpi 0,93397 0,90493 10,19040 trim, viippaus 0,04728 0,04726 0,53213 swr, suhteellinen tuulen- nopeus 0,17087 0,17036 1,91850 draught, syväys 0,03320 0,03319 0,37380 vlml, veden lämpötila Maalahti -0,00093 -0,00093 -0,01045 mak, merkitsevä aallon- korkeus 0,03833 0,03833 0,43159 pp, päiviä pesusta 0,01130 0,01130 0,12721 Froude, Frouden syvyysluku 0,03509 0,03508 0,39504 Laskettu keskiarvo on laskettu mallin antaman pienimmän ja suurimman ennusteen vä- lisistä arvoista. Kuvaajasta voidaan todeta, että nämä arvot ovat kunkin suoran ensim- mäinen ja viimeinen arvo. Kaikki laskentaan käytetyt luvut on esitetty liitteessä 1. Polyfit- keskiarvo on vähintään kolmen desimaalin tarkkuudella sama kuin laskennallinen kes- kiarvo kaikilla muilla muuttujilla paitsi nopeudella, ja myös tämä voidaan kuvasta nähdä. Normalisoimattoman polyfit-keskiarvon voidaan katsoa kertovan suoraan suurimman muutoksen tehontarpeeseen (megawatteina), minkä kukin muuttuja voi aiheuttaa. Merkittävin vaikutus tehontarpeeseen on siis nopeudella veden läpi ja seuraavaksi eni- ten vaikuttaa suhteellinen tuulennopeus. Viippaus ja merkitsevä aallonkorkeus sekä Frouden syvyysluku ja syväys ovat seuraavaksi merkittävimmät. Pohjan puhtauden mer- kitys on tämän tutkimuksen mukaan enintään 0,13 megawattia lisääntynyt tehontarve muiden muuttujien ollessa keskimääräisiä. Veden lämpötilalla ei ole suurta merkitystä. 34 6.2 Datan mallintaminen lineaariregressiolla MATLABin komento fitlm sovittaa lineaariregressiomallin annettuun dataan. Dataa voi mallintaa monella tapaa, mutta tässä päädyttiin erilaisten kokeilujen jälkeen malliin, jossa kaikki muut muuttujat ovat ensimmäisen asteen muuttujia, mutta nopeudesta ve- den suhteen ja suhteellisesta tuulennopeudesta käytetään myös toisen asteen muuttu- jaa. Jokaista valittua kahdeksaa muuttujaa ajettiin kolmella eri vaihtoehdolla (esimerkiksi stw, stw2 ja stw3), josta sitten valittiin sopivin ja edettiin seuraavaan muuttujaan. Merkittävin ero oli ensimmäisen ja toisen ajon välillä, joissa vertailtiin nopeuksia stw ja stw2. Muissa ajoissa kaikkien muuttujien osalta vaihtelu oli melko pientä. Koska koulutuksessa valitaan satunnaisesti koulutus- ja testiaineisto, niin kullakin kerralla tulos oli hieman eri. Tämä tuloksen vaihtelu näkyy arvojen kolmannessa ja neljännessä desimaalissa eli samoissa kohdissa kuin keskinäisen koulutuksen eroissa. Mahdollisimman yksinkertainen ja riittä- vän tarkasti toimiva malli saatiin siis valitsemalla muuttujista nopeus veden suhteen ja suhteellinen tuulennopeus ensimmäisen ja toisen potenssin muuttujat ja muista ainoas- taan ensimmäisen potenssin muuttujat. Muuttujien valintamenettely on esitelty tarkem- min liitteessä 1. Koulutus tehtiin siten, että koko datasta valittiin satunnaisesti 80 % koulutusaineistoksi ja 20 % testiaineistoksi. Tuloksena saatiin kullekin muuttujalle kulmakerroin. Satunnais- otannan vuoksi nämä kulmakertoimet vaihtelevat hieman, joten kaikille kertoimille las- kettiin keskiarvo. Myös mallin hyvyydestä kertovat arvot keskineliövirhe, jäännösvirhe- hajonta, selitysaste ja korjattu selitysaste vaihtelevat hieman ja näistäkin laskettiin kes- kiarvo. Tarkemmat laskelmat ovat liitteessä 1. Mallin keskiarvoinen keskineliövirhe on 0,0027 ja jäännösvirhehajonta 0,0520. Selitysaste R2-arvon keskiarvo on 0,9554, kuten myös korjatun R2 selitysasteen. Taulukossa 2 näkyy keskiarvo kustakin tutkitun muuttu- jan kulmakertoimesta eli vaikutuksesta kohdemuuttujaan. 35 Taulukko 2. Lineaariregression muuttujien kulmakertoimet Nimeke, muuttuja Laskettu keskiarvo intercept, akselin leikkauspiste (vakiotermi) -0,0420 stw ja stw2, nopeus veden läpi -0,1642 stw + 1,0888 stw2 trim, viippaus 0,0728 swr ja swr2, suhteellinen tuulennopeus -0,2382 swr + 1,3340 swr2 draught, syväys 0,0379 vlml, veden lämpötila Maalahti -0,0028 mak, merkitsevä aallonkorkeus 0,0199 pp, päiviä pesusta 0,0158 Froude, Frouden syvyysluku 0,0792 Muuttujista, joista on käytössä myös toisen asteen muuttuja, on huomattavaa, että en- simmäisten asteiden kulmakertoimet ovat negatiiviset ja täten nopeuksien vaikutusta ar- vioitaessa on otettava kumpikin muuttujatekijä huomioon. Yhden koulutuksen tulokset ovat kokonaisuutena liitteessä 1 ja siitä on nähtävissä, että muidenkin arvojen (standardivirhe, t-arvo ja todennäköisyysarvo) mukaan malli ennus- taa hyvin mitattuja arvoja eikä kyse ole sattumasta, ja merkittävimmät muuttujat ovat samat, joilla on suurimmat kertoimet. Kuvassa 5 on erään koulutuksen tulos kuvaajana. Se havainnollistaa, kuinka paljon kunkin testidataksi erotetun rivin ennuste ja todellinen arvo eroavat toisistaan. 36 Kuva 5. Lineaariregression ennuste ja todelliset arvot Kuvasta 5 näkyy myös poikkeamatilanteita, jolloin todellinen kulutus on ollut hetkittäi- sesti suurempaa kuin ennustettu. Vastaavasti tilanteita, jolloin ennusteet ovat olleet suu- rempia kuin todellinen kulutus näkyy myös muutamia. Kuvasta näkyy selkeästi myös lii- kennöinnin ensimmäisenä vuonna ollut keskimääräisesti nopeamman liikkumisen aika. Kuvassa 6 näkyy yksityiskohta kuvan 5 kuvaajasta. Kuvaajassa näkyy myös kohtia, jolloin data-aineisto on datan valinnan vuoksi katkennut, eikä kuvaaja sisällä ajallisesti kaikkia peräkkäisiä havaintoja. 37 Kuva 6. Yksityiskohta ennustettujen ja todellisten arvojen kuvaajasta Kuvasta 6 voidaan nähdä, miten todellinen PowerEteen-arvo on ollut hyvin tasainen pe- räkkäisissä havainnoissa. Ennuste sen sijaan heittelee todellisen arvon ylä- ja alapuolella. 38 7 Tulosten tarkastelu Työntötehon tarpeeseen vaikuttavien muuttujien mallinnus alus- ja säädataan perus- tuen on monimutkaista. Kuten muun muassa Laurie ja muut (2021) kirjoittavat, on datan valikoinnilla suuri merkitys ja se huomattiin tässäkin työssä. Käytettävissä olevaa dataa oli paljon, mutta käyttökelpoisen ja tarpeellisen materiaalin valinta oli vaikea prosessi. Datan käsittelyssä käytiin monenlaisia vaiheita läpi. Dataa rajattiin siten, että otettiin huomioon vain tietyn syvyiset vesialueet tai rajattiin alue tietylle maantieteelliselle alu- eelle. Lopullisessa rajauksessa näistä luovuttiin ja käytettiin suurinta mahdollista data- määrää, joka edellä mainittujen valintaperusteiden jälkeen oli jäljellä. Edes datan erilaisen valikoinnin ja useiden koeajojen jälkeen toistettavia ja loogisia tu- loksia oli vaikea saada aikaan. Erityisesti muuttujat sog (speed over ground) ja stw (speed through water) olivat hankalia. Oletettavaa on, että nopeuden lisääntyessä tarvittaisiin lisää työntötehoa. Näin ei kuitenkaan aina ollut stw:n kohdalla ja tätä ongelmaa ratkais- tiin pitkään. Erilaisilla datavalikoimilla saatiin toisinaan oikean suuntaisia tuloksia ja toi- sinaan täysin epäloogisia. Alussa oletettiin stw:n eron suhteessa sog:hen muodostuvan veden virtauksesta. Tässä oli jäänyt huomiotta se, että alus eroaa monesta muusta tutkitusta aluksesta siinä, että sillä on käytössä Azipod-potkurilaitteet. Nämä potkurit voivat kääntyä akselinsa ympäri 360 ° ja tämä aiheuttaa tavanomaisesta, kiinteäsuuntaisilla potkureilla ja peräsimellä va- rustetuista aluksista eroavaa pyörteilyä. Oletettavasti tämä virtaus näkyy myös stw- muuttujassa. Azipod-potkureita käytetään myös esimerkiksi satamissa aluksen käsitte- lyyn niin, että niillä ajetaan ”toisiaan vasten” eli toisen ollessa 90 °:n ja toisen 270 °:n kulmassa. Tämä aiheuttaa veden pyörteilyä, joka ilmenee datasta esimerkiksi siten, että sog on nolla solmua ja stw -2.7 solmua. Näiden ”valheellisten virtaamien” poistaminen datasta johti toistettaviin ja loogisiin tuloksiin. 39 Erilaisten muuttujien, kuten biolikaantumisen, vaikutusta aluksiin on tutkittu paljon. Useimmat näistä tutkimuksista on tehty lämpimien vesien alueella ja siten, että matalan veden alueet on jätetty pois tutkittavasta datasta. Merenkurkku on alueena erityispiir- teinen. Se on erittäin matala alue ja vaikka tutkimuksessa käytetyssä datassa Aurora Bot- nian reitillä syvin vesialue oli 103 metriä, mittaustuloksista 99,5 %:ssa syvyys oli alle 40 metriä, keskiarvon ollessa 12 metriä. Veden mataluus vaikuttaa aluksen energiankulutukseen. Matalan veden vaikutus kulu- tukseen ilmenee hyvin Nguyenin ja muiden (2019) tutkimuksesta. Aurora Botnian ta- pauksessa avuksi otettiin Frouden syvyysluku, joka laskettiin valmiiksi käsiteltävään da- taan. Neuroverkko olisi oletettavasti osannut tämän riippuvuuden nopeuden ja veden syvyyden välillä rakentaa, mutta lineaarisessa regressiossa syvyysluvun valmiiksi muo- dostaminen oli suoraviivaisempi toimintatapa. Erään merkittävän ongelman aiheutti päiviä pesusta -muuttujan muodostaminen. Wasa- line kertoi aluksen pohjan pesupäivät, mutta esimerkiksi jääpeite aiheutti oman huomi- oitavan seikan. Jää hioo kasvustoa pois aluksen pohjasta ja täten puhdistaa sitä. Alussa tuota aikaa lähdettiin rajaamaan kalenterin mukaan, mutta jossain vaiheessa käyttöön otettiin jäiden ilmaantumiseen perustuvat määreet. Jäiden ilmaantumisen ajankohta pe- rustettiin jäänmurtajien käytön ajankohdalla. Jäitä tietenkin ilmenee jo ennen ja jälkeen jäänmurtajien käyttöajan, mutta se oli ajankohta, joka oli selvästi saatavilla ja oletetta- vasti perustuu suurin piirtein yhtä paksun jään aikaan. Nämä päivät merkittiin pesupäi- vänumerolla nolla. Tällä tavoin ratkaistiin talvikausien aiheuttama ongelma pesupäivä- laskentaan. On tietysti myös muistettava jo aiemmin mainittu ongelma ensimmäisen vuoden pesu- päivien paikkansa pitämisestä ja telakalla tapahtuvan biolikaantumisen erilaisuudesta verrattuna liikennöivään alukseen. Lisäksi on huomioitava, että aluksen pohjan pesun ai- noa tarkoitus ei ole senhetkisen kasvuston poistaminen. Mikäli kasvusto saa olla kiinnit- tyneenä aluksen pohjaan pitkiä aikoja, se voi vaikuttaa pohjan maalipintaan. Maalipinta 40 tulee epätasaisemmaksi ja alttiimmaksi uudelle kasvustolle. Aivan kuten liian karheilla välineillä pesu saattaa hetkellisesti helpottaa tilannetta, mutta kokonaisvaikutus on huo- nompi, kun maalipinta vaurioituu ja on siten alttiimpi uusien eliöiden kasvualustaksi. Tätä lyhyt- ja pitkäaikaista vaikutusta olisi myös mielenkiintoista tutkia. Tutkimuksen aikana Frouden syvyysluvun vaikutus kävi ilmi. Se oli datapaketista riippu- matta aina saman kaltainen. Näin oli myös merkitsevän aallonkorkeuden kohdalla. Nii- den merkitys onkin suurempi kuin päiviä pesusta -muuttujan. Veden lämpötilaa yritettiin ottaa tutkimuksessa huomioon. Merirokon ja muiden bioli- kaantumista aiheuttavien eliöiden kasvu kiihtyy lämpötilan noustessa. Veden lämpötila nousee kuitenkin verrattain hitaasti ja kasvu ei ehkä olekaan kovin kiihkeää verrattuna vaikkapa Tyynen valtameren alueisiin. Kun tarkasteltiin mallinnuksessa käytettyä dataa, oli pisin aika, jolloin meriveden lämpötila oli yli 20 ° C, kolme vuorokautta peräkkäin. Kun datan rajaamiseen käytetään Maalahden poijun lämpötiloja ja poistetaan NaN-ar- von sisältävät rivit, poistuvat samalla jäätalvet. Jos käytetään Selkämeren lämpötiloja, dataa on hieman enemmän. Käytettäessä Selkämeren lämpötiloja kulmakertoimesta tu- lee lievästi positiivinen, mutta joka tapauksessa veden lämpötilan merkitys on tutkitun datan kohdalla pieni. MATLABin ohjelmointi oli eräs diplomityön hankaluuksista. Kokemus MATLABista ennen tätä työtä oli hyvin vähäistä. Suuren datamäärän käsittelyyn se oli kuitenkin looginen va- linta. Ohjelmointi onnistui kuitenkin hyvin, ja sillä saatiin aikaan käyttökelpoisia funkti- oita, joiden avulla datan käsittely oli helppoa. Funktioiden muotoilussa käytettiin toisi- naan apuna Microsoftin Copilot-tekoälyohjelmaa. Erikoista datan käsittelyssä oli, että useissa tapauksissa datasta tehdyt korrelaatiokertoi- met vaikuttivat loogisilta, mutta silti neuroverkkomallissa ei saatu kunnollisia ja toistet- 41 tavia tuloksia aikaan. Riittävän laajaa ymmärrystä neuroverkoista ei ollut, että tämä on- gelma olisi osattu ratkaista. Erilaisten neuroverkkojen ominaisuuksia olisi mielenkiintoista vertailla. Tässä tutkimuk- sessa koetettiin kouluttaa erilaisia malleja neuroverkon kerroksia lisäämällä. Erilaisten kerrosten lukumäärän tutkimuksen tuloksen näkyvät taulukossa 3. Taulukko 3. Neuroverkkojen kerrosten lukumäärän vaikutus Kerrosten lukumäärä mse 1 0,0027 2 0,0026 5 0,0024 7 0,0023 10 0,0023 Tutkimuksessa kävi ilmi, että keskineliövirhe pienenee, mutta vähän. Vastaavasti mallien kompleksisuus lisääntyi niin, että oli olettavaa, että neuroverkko loi sellaisiakin yhteyksiä muuttujien välille, mitä niillä ei oikeasti ole. Esimerkkinä kuva 7, jossa neuroverkon ker- roksien lukumäärä on seitsemän. 42 Kuva 7. Muuttujien vaikutukset neuroverkossa, jossa on seitsemän kerrosta Kuvassa näkyy, miten alhaisin nopeus saavutettaisiin -3 MW:n teholla ja esimerkiksi päi- viä pesusta muuttuja tekee koukkauksen alaspäin arvoalueensa maksimia lähestyttäessä. Mielenkiintoinen on Frouden syvyysluvun vaikutuksessa oleva kuoppa, sillä Frouden sy- vyysluvun vaikutus ei välttämättä ole lineaarista, mutta tuon kuopan tulisi oletettavasti olla huippu. Jonkinlainen yhteys siis löytyy, kun kerroksia lisätään, mutta sen oikeelli- suutta tulisi tutkia enemmän. Lineaariregression tuloksissa arvoalueen maksimi tulisi suurimmalla suhteellisella tuu- lennopeudella. Tämä saattaa johtua siitä, että suhteellinen tuulennopeus saa poikkeuk- sellisen suuriakin arvoja, verrattuna nopeuteen veden läpi, joita ei voida pitää mittapoik- keamina. Kahtena erityisen myrskyisänä päivänä suhteellinen tuulennopeus ylittää het- kittäin, mutta peräkkäisissä mittauksissa näkyvinä arvoina, jopa yli 40 m/s. Seuraavaksi merkityksellisimmät muuttujat ovat Frouden syvyysluku, viippaus, syväys ja merkitsevä / M W 43 aallonkorkeus. Tälläkin mallinnustavalla ”päiviä pesusta” -arvo ja veden lämpötila jäivät merkityksettömimmiksi. Saatuja tuloksia ei voida suoraan vertailla Laurien ja muiden (2021) saamiin tuloksiin. Siinä tutkimuksessa keskityttiin erilaisten mallien tuottamaan ennusteeseen vaaditta- vasta työntötehosta ja tässä työssä mallinnettiin eri muuttujien vaikutusta vaadittavaan työntötehoon, ja mallien hyvyyttä arvioitiin eri muuttujilla. Lineaariregression tulokset olisivat muuten vertailukelpoisia, mutta tutkimuksesta saa- dut prosentuaaliset keski-itseisvirhe-arvot (Mean Absolute Percentage Error, MAPE) ei- vät ole suoraan vertailukelpoisia. Tämä johtuu siitä, että Laurien ja muiden (2021) tutki- muksessa käytetään kullekin alukselle suunniteltua nopeusaluetta, joka on 14–22 sol- mua ja tässä tutkimuksessa on käytössä kaikki nollaa solmua suuremmat nopeudet. Kun jakajana on hyvin pienet luvut, vääristyy suhteellinen virhe ja tulokseksi saadaan todella suuria lukuja prosentuaaliseksi osuudeksi. Tämän todentamiseksi tutkimuksessa mitattuihin nopeuksiin kokeiltiin lisätä vakioarvo, jolloin saatiin MAPE-arvoksi 2,0–6,2 %, vakiosta riippuen. Laurien ja muiden (2021) saama lineaariregression MAPE-arvo oli 6,45 %. Tästä voidaan arvella, että mikäli tutki- muksessa käytettäisiin vain Aurora Botnialle suunniteltuja nopeuksia, saataisiin vertailu- kelpoisia ja alhaisen MAPE-arvon omaavia tuloksia. Tässä tutkimuksessa saatuja tuloksia on varmasti mahdollista parantaa, mutta samalla voi sanoa, että on pyritty minimoimaan kaikki ne virheet, jotka huomattiin. 44 8 Johtopäätökset Työn tarkoituksena oli mallintaa Aurora Botnia -aluksen työntötehoa ja siihen vaikuttavia muuttujia käytettävissä olevan datan perusteella. Mallintamisessa käytettiin keinote- koista neuroverkkoa ja lineaariregressiota. Merenkurkun alue toi omat piirteensä tutki- mukseen, ja lisäksi eräs kiinnostuksen kohteista oli aluksen pohjan biolikaantumisen vai- kutus työntötehon tarpeeseen. Mallinnuksen selkeänä tuloksena nähdään, että aluksen nopeudella on suurin vaikutus työntötehon tarpeeseen eli mitä nopeammin kuljetaan, sitä enemmän tarvitaan työntö- tehoa. Seuraavaksi merkittävin tekijä oli suhteellinen tuulennopeus. Aluksen geometriaa ei tutkittu erikseen, mutta trimmin vaikutus oli neuroverkkomallinnuksessa seuraavaksi merkittävin tekijä ennen merkitsevän aallonkorkeuden, Frouden syvyysluvun ja syväyk- sen vaikutusta. Lineaariregressiossa näiden muuttujien merkitys oli eri järjestyksessä: Frouden syvyysluku on merkityksellisin, sitten trimmi, syväys ja merkitsevä aallonkor- keus. Päiviä pesusta -muuttujan merkitys on kummallakin tavalla järjestyksessä toiseksi viimeinen ja meriveden lämpötila viimeinen. Tutkimuksen perusteella voidaan suositella huomion kiinnittämistä aluksen lastaukseen ja siitä aiheutuvaan trimmin muutokseen. Frouden syvyyslukuun vaikuttaminen on vai- keampaa, sillä pysyäkseen aikataulussa, on aluksen ajettava matalissakin vesissä riittävän nopeasti. Sääolosuhteisiin, kuten suhteelliseen tuulennopeuteen ja aallonkorkeuteen, ei voi vaikuttaa, eikä reittivalinnoillakaan voi juuri vaikuttaa vesiväylien määrätessä reitin. Jatkossa olisi mielenkiintoista tutkia, miten parametrien lukumäärä vaikuttaa ennusteen hyvyyteen. Kuinka pieneen voi rajata sen parametrien määrän, joita tulisi tarkkailla, että saadaan vielä luotettavia tuloksia? Voidaanko parametrejä lisäämällä saada tarkempia ennusteita? Miten neuroverkon kerrosten lisääminen vaikuttaisi tuloksiin? Toisaalta jat- kotutkimuksen kannalta olisi mielenkiintoista saada käyttöön vielä enemmän dataa ja 45 koettaa ymmärtää, voisiko neuroverkon avulla saada laajemmin juuri tähän alueeseen soveltuvaa mallia aikaiseksi. Olisi myös mielenkiintoista, että biolikaantumiselle olisi jokin toinen, konkreettisempi mittari kuin tässä tutkimuksessa käytössä ollut päiviä pesusta -muuttuja. Se voisi olla joko visuaaliseen tarkasteluun perustuva tai jonkinlaisella mittalaitteella saatava arvo. Nyt tuo muuttuja oli melko epätarkka ja sisälsi vielä oletuksia talvikaudesta ja sen vaiku- tuksesta. Erilaisten mittareiden ja antureiden sijoittelusta ja tarkkuudesta olisi myös hyvä olla tar- kempaa tietoa. Esimerkiksi juuri stw-anturin paikka olisi mielenkiintoista tietää ja tutkia lisää virtauksien syntymistä ja vaikutuksia. Toinen mielenkiintoinen täsmennys olisi tieto siitä, miten usein jokin muuttuja voi oikeasti muuttua ja mikä on mittavirhe. Esimerkiksi, jos potkurin kulma on puolen minuutin välein 0, 0, 0, 220 ja 0 astetta, onko poikkeava arvo mahdollinen edes teoriassa, vai onko kyseessä mittavirhe. Eräs tarkemman tutkimisen kohde olisi keskittyä nopeuksiin, jotka ovat lähellä alukselle suunniteltua nopeutta ja tyypillisimpiä ajonopeuksia. Tällä rajatulla alueella tutkittaisiin tarkemmin vaikkapa viippauksen tai biolikaantumisen merkitystä. Muunkin kuin no- peusdatan erilaisella valinnalla, kuten esimerkiksi käyttämällä jokaisesta tutkittavasta muuttujasta vain tietyn verran tyyppiarvosta poikkeavia arvoja, tuloksista voisi tulla hy- vin erilaisia. Erilaisia tutkimuksen kohteita olisi siis monia ja laivan jatkuvasti liikennöidessä uutta da- taa tulee päivittäin. Ihanteellinen tilanne olisi, jos tulevan tutkimuksen perusteella voi- taisiin luoda malli, joka saa datan suoraan Nacos-järjestelmästä ja laskee sen perusteella, koska vene kannattaisi viedä pesulle ja kannattaisiko pestä koko pohja vai riittääkö muu- taman metrin kaistale pinnan tuntumasta. 46 Joka tapauksessa voidaan todeta, että matalassa vedessä ja Azipod-potkureilla varuste- tun aluksen tapauksessa on monta huomioon otettavaa seikkaa, jotka vaikuttavat tarvit- tavan työntötehon tarpeeseen verrattuna syvissä vesissä, tavanomaisemmalla propul- siojärjestelmällä varustetuista aluksista tehtyihin tutkimuksiin. 47 9 Yhteenveto Meriliikenne aiheuttaa ilmastopäästöjä ja niiden vähentämiselle on tarve Kansainvälisen merenkulkujärjestön IMO:n (International Maritime Organization) asettamien kasvihuo- nekaasustrategian päästötavoitteiden saavuttamiseksi. Alusten polttoaineenkulutuk- sella on suuri vaikutus merenkulun ilmastopäästöihin. Aluksen liikuttamiseen vaaditta- van propulsiotehon suuruus ja sitä kautta tarvittavan polttoaineen määrä riippuu mo- nista seikoista. Tämän diplomityön tarkoituksena oli mallintaa Merenkurkussa liikennöivän Aurora Bot- nia -aluksen propulsiotehon tarpeeseen vaikuttavia muuttujia. Tutkimusmateriaalina käytettiin Vaasan ja Uumajan välillä liikennöivän matkustaja-autolautan Nacos-järjestel- män kautta tarjoamaa dataa, Merenkurkun alueen säädataa sekä aluksen pohjan puh- distamiseen liittyvää dataa. Työn alussa esiteltiin aiheesta tehtyjä muita tutkimuksia ja aluksen kulkuvastukseen ja siten myös vaadittavaan työntötehoon vaikuttavia seikkoja sekä esiteltiin tutkimuksen kohteena oleva tapaus ja olosuhteet. Useat muut aiheeseen liittyvät tutkimukset on tehty lämpimämmissä kuin Merenkurkun alueen vesissä, sekä tutkimuksista on tavalli- sesti poistettu matalan veden alueet. Työssä käytettiin MATLAB-ohjelman koneoppimismallinnuksen lineaarista regressiota ja keinotekoista neuroverkkoa. Datan käsittelyssä luotiin joitain uusia laskennallisia muut- tujia ja poistettiin tarpeettomiksi arvioituja muuttujia. Datan valikoinnissa rajattiin pois muun muassa aluksen normaalilta reitiltä poikkeavat näytteet, negatiivisen työntötehon ja nopeuden näytteet sekä ne näytteet, joilla aluksen nopeus maan ja veden suhteen erosi enemmän kuin yhden solmun. Datan valikoinnin jälkeen näytteitä oli 790 659 ja työntötehoon vaikuttavia vertailtavia muuttujia kahdeksan. 48 Tuloksista huomattiin, että aluksen nopeudella veden läpi oli suurin vaikutus propul- siotehon tarpeeseen. Seuraavaksi merkittävin tekijä oli suhteellinen tuulennopeus. Kei- notekoisella neuroverkolla mallinnettaessa seuraavaksi merkittävimmät muuttujat olivat viippaus, merkitsevä aallonkorkeus, Frouden syvyysluku ja syväys. Biolikaantuminen ja veden lämpötila olivat tutkimukseen valituista muuttujista merkityksettömimmät tekijät. Lineaariregressiomalli ennusti työntötehon tarvetta samojen kahdeksan muuttujan poh- jalta. Muuttujista nopeus veden läpi ja suhteellinen tuulennopeus käytettiin myös toisen asteen muuttujia. Mallin keskiarvoinen keskineliövirhe (MSE) oli 0,0027 ja jäännösvirhe- hajonta (RMSE) 0,0520. 49 Lähteet ABB. (2020, syyskuuta 14). Wasalinen uuden matkustajalautan vesillelasku vahvistaa ABB:n Azipod®-potkurijärjestelmän asemaa lauttamarkkinoilla | News center. https://new.abb.com/news/fi/detail/67582/wasalinen-uuden-matkustajalautan- vesillelasku-vahvistaa-abbn-azipodr-potkurijarjestelman-asemaa- lauttamarkkinoilla Adland, R., Cariou, P., Jia, H. & Wolff, F. C. (2018). The energy efficiency effects of periodic ship hull cleaning. Journal of Cleaner Production, 178, 1–13. https://doi.org/10.1016/J.JCLEPRO.2017.12.247 Altarriba, E. (2020). Laivojen pohjien likaantumisen vaikutus kulkuvastukseen Itämerellä: Teoreettinen viitekehys ja empiiriset mittaukset. Rakenteiden Mekaniikka, 53(3), 208–239. https://doi.org/10.23998/rm.79336 Altarriba, E. (2021). Laivojen pohjien likaantumisen vaikutus kulkuvastukseen Itämerellä: Chow-Liu-puulla täydennetyn Naiivi Bayes -mallin soveltaminen aluksen kulun analysointiin. Rakenteiden Mekaniikka, 53(4), 356–389. https://doi.org/10.23998/RM.87314 Ampah, J. D., Yusuf, A. A., Afrane, S., Jin, C. & Liu, H. (2021). Reviewing two decades of cleaner alternative marine fuels: Towards IMO’s decarbonization of the maritime transport sector. Journal of Cleaner Production, 320, 128871. https://doi.org/10.1016/J.JCLEPRO.2021.128871 Bertram, V. (2012). Resistance and Propulsion. Teoksessa Practical Ship Hydrodynamics (ss. 73–141). Elsevier. https://doi.org/10.1016/b978-0-08-097150-6.10003-x DNV AS. (2022). DNV Vessel Register. https://vesselregister.dnv.com/vesselregister/details/40916 Hagan, M. T., Demuth, H. B., Beale, M. H. & De Jesús, O. (2014). Neural Network Design 2nd Edition. Hughes, K. A. & Ashton, G. V. (2016). Breaking the ice: the introduction of biofouling organisms to Antarctica on vessel hulls. Aquatic Conservation: Marine and Freshwater Ecosystems, 27, 158–164. https://doi.org/10.1002/aqc.2625 50 Häggman, V. (2022). M/S Aurora Botnias driftprofil. Yrkehögskolan Novia. Ilmatieteen laitos. (ei pvm.-a). Ilmatieteen laitos - Havaintoasemat. Noudettu 25. helmi- kuuta 2025, osoitteesta https://www.ilmatieteenlaitos.fi/havaintoasemat Ilmatieteen laitos. (ei pvm.-b). Ilmatieteen laitos - Poijut. Noudettu 25. helmikuuta 2025, osoitteesta https://www.ilmatieteenlaitos.fi/poijut Ilmatieteen laitos. (ei pvm.-c). Itämeren jäätalvikuvaukset. Noudettu 19. maaliskuuta 2025, osoitteesta https://www.ilmatieteenlaitos.fi/jaatalvet Ilmatieteen laitos. (2022, syyskuuta 10). Itämeren virtaukset. https://www.ilmatieteenlaitos.fi/veden-virtaus International Association of Classification Societies. (2016). Requirements concerning POLAR CLASS. International Maritime Organization. (ei pvm.-a). Frequently Asked Questions. Noudettu 13. maaliskuuta 2025, osoitteesta https://www.imo.org/en/About/Pages/FAQs.aspx International Maritime Organization. (ei pvm.-b). Regulation 2 - Definitions. Noudettu 25. helmikuuta 2025, osoitteesta https://www.imorules.com/GUID-CC2626FC-C5A9- 480A-A9D1-B6D43BEB366F.html International Maritime Organization. (2022). Resolution MEPC 346 78, 2022 Guidelines for the Development of a Ship Energy Efficiency Management Plan (SEEMP). https://wwwcdn.imo.org/localresources/en/KnowledgeCentre/IndexofIMOResolu tions/MEPCDocuments/MEPC.346(78).pdf International Maritime Organization. (2023a). 2023 IMO strategy on reduction of GHG emission from ships. https://wwwcdn.imo.org/localresources/en/OurWork/Environment/Documents/a nnex/MEPC%2080/Annex%2015.pdf International Maritime Organization. (2023b, tammikuuta). Section 5 Definitions. https://www.imorules.com/NSR_V1_PT3_CH1_5.html#GUID-CDA42745-B275- 403C-A612-274EBAF41F3C 51 International Maritime Organization. (2024). RESOLUTION MEPC.378(80) (adopted on 7 July 2023) 2023 GUIDELINES FOR THE CONTROL AND MANAGEMENT OF SHIPS’ BIOFOULING TO MINIMIZE THE TRANSFER OF INVASIVE AQUATIC SPECIES. Laurie, A., Anderlini, E., Dietz, J. & Thomas, G. (2021). Machine learning for shaft power prediction and analysis of fouling related performance deterioration. Ocean Engineering, 234, 108886. https://doi.org/10.1016/J.OCEANENG.2021.108886 Le, T. H., Vu, M. T., Bich, V. N., Phuong, N. K., Ha, N. T. H., Chuan, T. Q. & Tu, T. N. (2021). Numerical investigation on the effect of trim on ship resistance by RANSE method. Applied Ocean Research, 111, 102642. https://doi.org/10.1016/J.APOR.2021.102642 Leiwo, H. (2021, elokuuta 25). Merenkurkun uusi laiva kastettiin – liikutuksen kyyneleiltä ei vältytty, kun odotettu alus Aurora Botnia lipui satamaan | Yle. https://yle.fi/a/3- 12068506 Luoma, E., Laurila-Pant, M., Altarriba, E., Nevalainen, L., Helle, I., Granhag, L., Lehtiniemi, M., Srėbalienė, G., Olenin, S. & Lehikoinen, A. (2022). A multi-criteria decision analysis model for ship biofouling management in the Baltic Sea. Science of the Total Environment, 852. https://doi.org/10.1016/j.scitotenv.2022.158316 Martić, I., Anušić, B., Degiuli, N. & Grlj, C. G. (2024). Numerically Investigating the Effect of Trim on the Resistance of a Container Ship in Confined and Shallow Water. Applied Sciences 2024, Vol. 14, Page 6570, 14(15), 6570. https://doi.org/10.3390/APP14156570 MATLAB. (ei pvm.). https://uk.mathworks.com/help/deeplearning/ref/trainlm.html. Metsähallitus & Suomen ympäristökeskus. (2024). The Finnish Inventory Programme for the Underwater Marine Environment (VELMU) Methodology guide. (12.6.2019 FIN). Zenodo. https://doi.org/10.5281/ZENODO.11576650 Molland, A. F., Turnock, S. R. & Hudson, D. A. (2011). Ship resistance and propulsion : practical estimation of ship propulsive power. 537. https://doi.org/10.1017/9781316494196 Moore, R. (2021, kesäkuuta 14). Aurora Botnia: a ‘never-ending story’ of development. Riviera - News Content Hub. https://www.rivieramm.com/news-content- 52 hub/news-content-hub/aurora-botnia-a-lsquonever-ending-storyrsquo-of- development-66007 Musulin, M., Mihanović, L., Balić, K. & Musulin, H. N. (2024). The Impact of Container Ship Trim on Fuel Consumption and Navigation Safety. Journal of Marine Science and Engineering 2024, Vol. 12, Page 1658, 12(9), 1658. https://doi.org/10.3390/JMSE12091658 Mäkinen, E. (2022, maaliskuuta 20). Uusi laiva auttaa Wasalinen kasvuun - Navigator Magazine. Navigator Magazine. https://navigatormagazine.fi/uutiset/uusi-laiva- auttaa-wasalinen-kasvuun/ Nasrolahi, A., Pansch, C., Lenz, M. & Wahl, M. (2012). Being young in a changing world: How temperature and salinity changes interactively modify the performance of larval stages of the barnacle Amphibalanus improvisus. Marine Biology, 159(2), 331–340. https://doi.org/10.1007/S00227-011-1811-7/FIGURES/7 Nguyen, T. N. H., Vu, N. B., Tran, N. T., Nguyen, M. C. & Le, T. H. (2019). Numerical Investigating the Effect of Water Depth on Ship Resistance Using RANS CFD Method. Polish Maritime Research, 3(103), 56–64. https://doi.org/10.2478/pomr-2019- 0046 Peter, B. (2021). For a greener northern Baltic AURORA BOTNIA. Shippaxinfo, 11/2021. www.shippax.com Rawson, K. J. & Tupper, E. C. (2001). Basic ship theory (5th ed.). Butterworth-Heinemann . Saukko, O.-P. J. (2020). Laivan sähkönjakelu ja datan käsittely [diplomityö, Tampereen yliopisto]. https://urn.fi/URN:NBN:fi:tuni-202005125197 Suomen ympäristökeskus. (2023, huhtikuuta 25). Meriluonnon monimuotoisuus. https://www.ymparisto.fi/fi/luonto-vesistot-ja-meri/luonnon- monimuotoisuus/meriluonnon-monimuotoisuus#merenkurkun-kivikkoinen- kynnys-estaa-suolaisemman-veden-virtaamisen-pohjoiseen Uzun, D., Demirel, Y. K., Coraddu, A. & Turan, O. (2019). Time-dependent biofouling growth model for predicting the effects of biofouling on ship resistance and powering. Ocean Engineering, 191, 106432. https://doi.org/10.1016/J.OCEANENG.2019.106432 53 Vinagre, P. A., Simas, T., Cruz, E., Pinori, E. & Svenson, J. (2020). Marine biofouling: A European database for the marine renewable energy sector. Teoksessa Journal of Marine Science and Engineering (Vsk. 8, Numero 8). https://doi.org/10.3390/JMSE8070495 Wärtsilä. (ei pvm.). AZIPOD (Azimuthing Podded Drive). Noudettu 27. helmikuuta 2025, osoitteesta https://www.wartsila.com/encyclopedia/term/azipod-(azimuthing- podded-drive) Wärtsilä. (2019, syyskuuta 12). Wasalinen erittäin tehokkaaseen laivaan tulee Wärtsilän Nacos Platinum -navigointijärjestelmä. https://www.wartsila.com/fi/media- fi/uutinen/12-09-2019-wasalinen-erittain-tehokkaaseen-laivaan-tulee-wartsilan- nacos-platinum--navigointijarjestelma- 3225840?utm_source=organic&utm_medium=MP-press- release&utm_term=marine-power&utm_content=press- release&utm_campaign=Wartsila-providing-systems-solutions-and-maintenance- support-for-worlds-most-environmentally-friendly-ferry Wärtsilä. (2023, tammikuuta 24). What did Wasaline do to save fuel and reduce emissions? https://www.wartsila.com/insights/case-study/aurora-botnia-fuel- optimization Wärtsilä. (2024a). Wärtsilä W31DF Product Guide. Wärtsilä. (2024b, joulukuuta 5). How Wasaline improved engine room air quality on their ferry. https://www.wartsila.com/insights/case-study/wasaline-s-aurora-botnia- improves-engine-room-air-quality Öztürk, O. B. & Başar, E. (2022). Multiple linear regression analysis and artificial neural networks based decision support system for energy efficiency in shipping. Ocean Engineering, 243, 110209. https://doi.org/10.1016/J.OCEANENG.2021.110209 54 Liitteet Liite 1. Täydentäviä tuloksia Neuroverkon koulutus, normalisoitu data, Laurien muuttujat. Koulutustapahtuma MSE R-arvo 1 0,00269 0,97774 2 0,00267 0,97774 3 0,00268 0,97774 4 0,00267 0,97774 5 0,00268 0,97774 keskiarvo 0,00268 0,97774 Kunkin muuttujan minimi- ja maksimiarvot. Kulmakertoimen laskemisen perusteena olevat ajot, normalisoitu ja normalisoimaton: 55 Lineaariregression tulokset, normalisoitu data. Taulukon x tarkoittaa, että kyseinen muuttuja on ollut mukana kyseisessä koeajossa. Jo- kaista muuttujaa on ajettu kolmella eri vaihtoehdolla, josta sitten valittu sopivin ja edetty seuraavaan. Alkuperäinen taulukko kuvakaappauksena. 56 Koulutukset valinnalla, joissa kaikki muut ovat ensimmäiseen potenssiin, mutta stw myös toiseen potenssiin. Tunnuslukujen keskiarvot: Koulutukset valinnalla, joissa kaikki muut ovat ensimmäiseen potenssiin, mutta stw ja swr myös toiseen potenssiin. Tunnuslukujen keskiarvot: 57 Sarakkeissa valituilla muuttujilla saadut keskineliövirhe, jäännösvirhehajonta, seli- tysaste ja korjattu selitysaste (mse, rmse, r squared ja adjusted r squared), kun koulu- tettiin viisi kertaa (riviä). Ja näiden keskiarvo: Sekä eri muuttujien kertoimet. Ja näiden keskiarvo: Erään koulutuskerran tarkemmat tulokset. Estimate (arvio) kertoo arvioidun kertoimen eli yhden muuttujan vaikutuksen kohde- muuttujaan. SE eli standard error eli standardivirhe mittaa kuinka paljon arvio voi poi- keta todellisesta otannan vaikutuksen vuoksi. Pieni arvo tarkoittaa parempaa ja luotet- tavampaa arviota. tStat-arvo eli t-arvo kuvaa arvion tilastollista merkittävyyttä, suuri arvo on merkitsevämpi kuin pieni. p-arvo eli todennäköisyysarvo mittaa todennäköi- syyttä, että vaikutus on sattumaa. Pieni arvo tarkoittaa tilastollista merkittävyyttä eikä sattumaa. 58 Liite 2. Muuttujien yksiköt sog [kn], Stw [kn], Cog [degree_angle], Heading [degree_angle], Trim [m], Depth [m], Latitude [degree_angle], Longitude [degree_angle], Angle.wind.relative [degree_angle], Angle.wind.true [degree_angle], Direction.wind.relative [degree_angle], Direction.wind.true [degree_angle], Speed.wind.relative [kn], Speed.wind.true [kn], massFlowRate.fuel.lng@engine.main [kg/h], volFlowRate.fuel@engine [m^3/h], power@generator.diesel [MW], power@propulsion [MW], rpm@propulsion [rev/min]. 59 Liite 3. MATLAB-koodit: aineiston yhdistäminen Liitteessä on kaikki datan käsittelyssä käytetyt koodit. Koodien muotoilussa on saatettu käyttää apuna Microsoft Copilot-tekoälysovellusta ajanjaksolla 11.12.2024–3.2.2025. Liite sisältää koodit: Latausjayhdistys3 paiviapesustaajanmukaan Latausjayhdistys3.m load('AuroraBotniaData3.mat') AuroraBotniaextractv3(1,:) = []; % Poistaa taulukon ensimmäisen rivin, kun siinä on höpöjä tietoja. AuroraBotniaextractv3 = removevars(AuroraBotniaextractv3, "vessel"); % Aluksen nimeä ei tarvita ja tekstinä sekoittaa taulukon. AuroraBotniaextractv3 = renamevars(AuroraBotniaextractv3,"automationdraft","draught") % Muuttaa nimen selkeämmäksi. ABtt = table2timetable(AuroraBotniaextractv3); % Tekee taulukosta timetablen, että voidaan yhdistää ajan perusteella toisiin taulukoihin. hajotettuaika = datevec(ABtt.time); % Hajottaa aika-sarakkeen omiksi elementeikseen. vuosi = hajotettuaika(:,1); % Määrittää vuoden, kuukausi = hajotettuaika(:,2); % kuukauden ja paiva = hajotettuaika(:,3); % päivän kyseisestä sarakkeesta. aika = table(vuosi,kuukausi,paiva); % Tekee "sarakkeista" ( ) taulukon. ABtt = [ABtt aika]; % Lisää hajotetut aika-sarakkeet päätaulukon loppuun. Kuukautta tarvitaan taulukon ajalliseen rajaamiseen. Vuosi ja päivä vain varuulta tässä vaiheessa mukana, jos myöhemmin tarvii. load('Maalahtivedenlampotilapvm.mat') SaaDataMaalahtiDateAdded = removevars(SaaDataMaalahtiDateAdded, ["Havaintoasema","AikaPaikallinenAika00","MerkitsevAallonkorkeusm","AallokonT ulosuunta","AallokonTulosuunnanHajonta","AallokonModaalinenPeriodis"]); % Poistaa turhat sarakkeet. MLtt = table2timetable(SaaDataMaalahtiDateAdded); % Tekee taulukosta timetablen, että voidaan yhdistää ajan perusteella toisiin taulukoihin. load('Selkameriaaltopoijupvm.mat') SaaDataDateAdded = removevars(SaaDataDateAdded, ["Havaintoasema","AikaPaikallinenAika00"]); % Poistaa turhat sarakkeet. SMtt = table2timetable(SaaDataDateAdded); % Tekee taulukosta timetablen, että voidaan yhdistää ajan perusteella toisiin taulukoihin. 60 paiviapesustajaanmukaan % Tekee pesupäivätaulukon erillisellä komennolla. Tauluko ottaa huomioon jäätalvet. synkattudata = synchronize(ABtt, MLtt, SMtt, pptt, 'union') % Yhdistää kaikki sarakkeet yhdeksi taulukoksi. synkattudata.paiviapesusta = fillmissing(synkattudata.paiviapesusta, "previous"); % Lisää puuttuvat arvot. % Samalla tavalla voisi täydentää myös sääpoijujen datat, mutta silloin % talven datasta tulisi väärä. %Alla olevat koodit lisäävät puuttuvat arvot siten, että mikäli seuraavan %päivän arvo puuttuu, arvoksi merkitään NaN. NaN-rivit voidaan sitten %helposti poistaa ja täten saadaan sellaiset rivit pois dataasta, joissa ei ole tietoa sääpoijuista. puuttuvatarvot = isnan(synkattudata{:,"VedenLmptilaC_MLtt"}); aukot = diff([0; puuttuvatarvot; 0]); aukonalku = find(aukot == 1); aukonloppu = find(aukot == -1) - 1; maksimiaukko = days(1); % Määrää kuinka pitkä aika voi olla puutteellista tietoa. Voi olla myös tunteja, jos tarvii. for i = 1:length(aukonalku) if synkattudata.time(aukonloppu(i)) - synkattudata.time(aukonalku(i)) <= maksimiaukko synkattudata.VedenLmptilaC_MLtt(aukonalku(i):aukonloppu(i)) = interp1(find(~puuttuvatarvot), synkattudata.VedenLmptilaC_MLtt(~puuttuvatarvot), aukonalku(i):aukonloppu(i), 'linear'); else synkattudata.VedenLmptilaC_MLtt(aukonalku(i):aukonloppu(i)) = NaN; end end puuttuvatarvot = isnan(synkattudata{:,"VedenLmptilaC_SMtt"}); aukot = diff([0; puuttuvatarvot; 0]); aukonalku = find(aukot == 1); aukonloppu = find(aukot == -1) - 1; maksimiaukko = days(1); for i = 1:length(aukonalku) if synkattudata.time(aukonloppu(i)) - synkattudata.time(aukonalku(i)) <= maksimiaukko synkattudata.VedenLmptilaC_SMtt(aukonalku(i):aukonloppu(i)) = interp1(find(~puuttuvatarvot), synkattudata.VedenLmptilaC_SMtt(~puuttuvatarvot), aukonalku(i):aukonloppu(i), 'linear'); else synkattudata.VedenLmptilaC_SMtt(aukonalku(i):aukonloppu(i)) = NaN; end 61 end puuttuvatarvot = isnan(synkattudata{:,"MerkitsevAallonkorkeusm"}); aukot = diff([0; puuttuvatarvot; 0]); aukonalku = find(aukot == 1); aukonloppu = find(aukot == -1) - 1; maksimiaukko = days(1); for i = 1:length(aukonalku) if synkattudata.time(aukonloppu(i)) - synkattudata.time(aukonalku(i)) <= maksimiaukko synkattudata.MerkitsevAallonkorkeusm(aukonalku(i):aukonloppu(i)) = interp1(find(~puuttuvatarvot), synkattudata.MerkitsevAallonkorkeusm(~puuttuvatarvot), aukonalku(i):aukonloppu(i), 'linear'); else synkattudata.MerkitsevAallonkorkeusm(aukonalku(i):aukonloppu(i)) = NaN; end end puuttuvatarvot = isnan(synkattudata{:,"AallokonTulosuunta"}); aukot = diff([0; puuttuvatarvot; 0]); aukonalku = find(aukot == 1); aukonloppu = find(aukot == -1) - 1; maksimiaukko = days(1); for i = 1:length(aukonalku) if synkattudata.time(aukonloppu(i)) - synkattudata.time(aukonalku(i)) <= maksimiaukko synkattudata.AallokonTulosuunta(aukonalku(i):aukonloppu(i)) = interp1(find(~puuttuvatarvot), synkattudata.AallokonTulosuunta(~puuttuvatarvot), aukonalku(i):aukonloppu(i), 'linear'); else synkattudata.AallokonTulosuunta(aukonalku(i):aukonloppu(i)) = NaN; end end puuttuvatarvot = isnan(synkattudata{:,"AallokonTulosuunnanHajonta"}); aukot = diff([0; puuttuvatarvot; 0]); aukonalku = find(aukot == 1); aukonloppu = find(aukot == -1) - 1; maksimiaukko = days(1); 62 for i = 1:length(aukonalku) if synkattudata.time(aukonloppu(i)) - synkattudata.time(aukonalku(i)) <= maksimiaukko synkattudata.AallokonTulosuunnanHajonta(aukonalku(i):aukonloppu(i)) = interp1(find(~puuttuvatarvot), synkattudata.AallokonTulosuunnanHajonta(~puuttuvatarvot), aukonalku(i):aukonloppu(i), 'linear'); else synkattudata.AallokonTulosuunnanHajonta(aukonalku(i):aukonloppu(i)) = NaN; end end puuttuvatarvot = isnan(synkattudata{:,"AallokonModaalinenPeriodis"}); aukot = diff([0; puuttuvatarvot; 0]); aukonalku = find(aukot == 1); aukonloppu = find(aukot == -1) - 1; maksimiaukko = days(1); for i = 1:length(aukonalku) if synkattudata.time(aukonloppu(i)) - synkattudata.time(aukonalku(i)) <= maksimiaukko synkattudata.AallokonModaalinenPeriodis(aukonalku(i):aukonloppu(i)) = interp1(find(~puuttuvatarvot), synkattudata.AallokonModaalinenPeriodis(~puuttuvatarvot), aukonalku(i):aukonloppu(i), 'linear'); else synkattudata.AallokonModaalinenPeriodis(aukonalku(i):aukonloppu(i)) = NaN; end end synkattudata = removevars(synkattudata, ["Vuosi_SMtt", "Vuosi_MLtt", "Kuukausi_SMtt", "Kuukausi_MLtt", "Piv_SMtt", "Piv_MLtt" ]); % Poistaa tarpeettomia muuttujia. 63 paiviapesustaajanmukaan.m % Taulukon alku- ja loppupäivän määrääminen. Sama kuin moottoridatan % taulukossa. alkupvm = '1.6.2021'; loppupvm = '30.5.2024'; alku = datetime(alkupvm, 'InputFormat', 'd.M.yyyy', 'Format', 'yyyy-MM-dd'); loppu = datetime(loppupvm, 'InputFormat', 'd.M.yyyy', 'Format', 'yyyy-MM- dd'); % Luo timetable, jossa on päivämäärä ja päiviä pesusta-sarake. paivat = (alku:loppu)'; paiviapesusta = (1:length(paivat))'; pptt = timetable(paivat, paiviapesusta, 'VariableNames', {'paiviapesusta'}); % Määritetään pesupäivät ja muutetaan ne datetime muotoon. pesupaivat = ["18.7.2022", "27.7.2023", "16.11.2023", "25.7.2024"]; pesupaivat = datetime(pesupaivat, 'InputFormat', 'd.M.yyyy', 'Format','yyyy- MM-dd'); % Asetetaan pesupäivän arvoksi 0. for i = 1:length(pesupaivat) pptt.paiviapesusta(pptt.paivat == pesupaivat(i)) = 0; end % https://www.ilmatieteenlaitos.fi/jaatilastot % täältä valitaan vuosi % Assistance restrictions for ports % Etsitään satamarajoitusten alku- ja loppupäivät kullekin kaudelle. % 2023-2024 % https://assets.ctfassets.net/hli0qi7fbbos/2q1w38h4bh9dlMzBfTULhd/752e49192498 eff1cd4cee011d3164fd/MaxIceChart2024.pdf %alku2324pvm = '6.12.2023'; %loppu2324pvm = '28.4.2024'; %alku2324 = datetime(alku2324pvm,'InputFormat', 'd.M.yyyy', 'Format','yyyy- MM-dd'); %loppu2324 = datetime(loppu2324pvm, 'InputFormat', 'd.M.yyyy', 'Format','yyyy-MM-dd'); % 2022-2023 % https://assets.ctfassets.net/hli0qi7fbbos/3IWM8w7Qkp4Pt3tUsrcwVB/1a656a0e8f84 dd7b2c9f10bb5bdc7938/MaxIceChart2023.pdf %alku2223pvm = '24.12.2022'; %loppu2223pvm = '7.5.2023'; % 2021-2022 64 % https://assets.ctfassets.net/hli0qi7fbbos/7zDSuemQmposIIyLklSyJ5/c2cb780f1356 22262c3f76bf127c1c02/MaxIceChart2022.pdf %alku2122pvm = '8.12.2021'; %loppu2122pvm = '27.4.2022'; jaakausi = ["8.12.2021", "27.4.2022"; "24.12.2022", "7.5.2023" ; "6.12.2023", "28.4.2024"]; jaaalut = datetime(jaakausi(:,1), 'InputFormat', 'd.M.yyyy', 'Format','yyyy- MM-dd'); jaaloput = datetime(jaakausi(:,2), 'InputFormat', 'd.M.yyyy', 'Format','yyyy- MM-dd'); %Nollataan aikavälit for i = 1:length(jaaalut) pptt.paiviapesusta((pptt.paivat >= jaaalut(i)) & (pptt.paivat <= jaaloput(i))) = 0; end for i = 2:height(pptt) if pptt.paiviapesusta(i) ~= 0 pptt.paiviapesusta(i) = pptt.paiviapesusta(i-1)+1; end end 65 Liite 4. MATLAB-koodit: laskennalliset muuttujat Liitteessä on kaikki laskennallisten muuttujien luomiseen käytetyt koodit. Koodien muotoilussa on saatettu käyttää apuna Microsoft Copilot-tekoälysovellusta ajanjaksolla 11.12.2024–3.2.2025. Liite sisältää koodit: froudenluonti lampimatpaivatluonti nopeuseroluonti powereroluonti powersumluonti tehoteteenluonti froudenluonti.m function froude = froudenluonti(data) data.Froude = data.stw*1.852 ./ (3.6*sqrt(9.81*data.depth)); %Luo Frouden syvyysluvun nopeudesta ja syvyydestä. Solmut -> m/s froude = data end lampimatpaivatluonti.m function lampimatpaivat = lampimatpaivatluonti(data, kynnys) % Kynnys määrää sen lämpötilas-asteen, jota suuremmat huomioidaan. if ~ismember({'VedenLmptilaC_MLtt', 'vuosi', 'kuukausi', 'paiva'}, data.Properties.VariableNames) error('Sarake puuttuu.') % Tarkistetaan, onko sarakkeet olemassa. end data.lampimatpaivat = zeros(height(data),1); % Tekee nollataulukon. lparvo = 0; % Määrää lämpimänpäivän arvoksi 0. yksiloitypaiva = unique([data.vuosi, data.kuukausi, data.paiva], 'rows'); % Etsii erilaiset päivät eli ei montaa tarkistettavaa samalle päivämäärälle. 66 for p = 1:size(yksiloitypaiva,1) % Tekee seuraavan toiminnon jokaiselle yksiloitypaiva-riville. kuluvapaiva = yksiloitypaiva(p,:); % Tallentaa päivämäärän. rivitpaivalle = data(data.vuosi == kuluvapaiva(1) & ... data.kuukausi == kuluvapaiva(2) & ... data.paiva == kuluvapaiva(3),:); % Etsii ne rivit, joille päivämäärä täsmää. if any(rivitpaivalle.VedenLmptilaC_MLtt > kynnys) % Tarkistaa täyttyykö millään päivämäärään täsmänneellä rivillä ehto veden lämpötilasta. lparvo = lparvo + 1; % Jos täyttyy, niin listäään lämpimänpäivän arvoon yksi. else lparvo = 0; % Jos ei täyty, niin lämpimänpäivän arvoksi tulee nolla. end data.lampimatpaivat(data.vuosi == kuluvapaiva(1) & ... data.kuukausi == kuluvapaiva(2) & ... data.paiva == kuluvapaiva(3)) = lparvo; % Laittaa lämpimätpäivät sarakkeeseen lämpimätpäivä arvon. end lampimatpaivat = data; % Päivitetty data tallennetaan tällä nimellä. end nopeuseroluonti.m function nopeusero = nopeuseroluonti(data) data.nopeusero = abs(data.sog - data.stw); %Laskee nopeuksien erotuksen itseisarvon. nopeusero = data end powereroluonti.m function powerero = powereroluonti(data) data.PowerEro = abs(data.PowerSum - data.PowerEteen); %Laskee itseisarvon kokonaistyöntötehon ja eteenpäin suuntaavan työntötehon välille. powerero = data end 67 powersumluonti.m function powersum = powersumluonti(data) data.PowerSum = data.powerpropulsionps + data.powerpropulsionsb; %Yhdistää styyrpuurin ja paapuurin työntötehot. powersum = data end tehoteteenluonti.m function tehoteteen = tehoteteenluonti(data) kulmaS = data.unitautomationAZP_S_STEERING_ANGLE; %Styyrpuurin puolen kulma datasta. kulmaP = data.unitautomationAZP_P_STEERING_ANGLE; %Paapuurin puolen kulma datasta. kulmaSrad = deg2rad(kulmaS); %Muuttaa kulman radiaaneiksi. kulmaPrad = deg2rad(kulmaP); %Muuttaa kulman radiaaneiksi. data.PowerSEteen = data.powerpropulsionsb .* cos(kulmaSrad); %Luo muuttujan, joka on styyrpuurin puolen Azipodin eteenpäin työntävä teho. data.PowerPEteen = data.powerpropulsionps .* cos(kulmaPrad); %Luo muuttujan, joka on paapuurin puolen Azipodin eteenpäin työntävä teho. data.PowerEteen = data.PowerPEteen + data.PowerSEteen; %Luo muuttujan, joka on Azipodin eteenpäin työntävä yhteenlaskettu teho. tehoteteen = data end 68 Liite 5. MATLAB-koodit: aineiston rajaamiseen käytettävät koodit Liitteessä on kaikki aineiston rajaamiseen käytetyt koodit. Viimeisenä on yksittäisiä ko- mentoja, joita on myös käytetty aineiston rajaamiseen. Koodien muotoilussa on saatettu käyttää apuna Microsoft Copilot-tekoälysovellusta ajanjaksolla 11.12.2024–3.2.2025. Liite sisältää koodit: aallokonpoisto akunpoisto polttoaineidenpoisto ppohjauskulma ppsyvays pptehottaa pvmpoisto tehojenpoisto tehopseteenpoisto telakkapoisto yksittaisetkomennot aallokonpoisto.m function aallokkopoistettu = aallokonpoisto(data) data = removevars(data, "AallokonTulosuunta");); % Poistaa kyseisen sarakkeen. data = removevars(data, "AallokonTulosuunnanHajonta"); % Poistaa kyseisen sarakkeen. data = removevars(data, "AallokonModaalinenPeriodis"); % Poistaa kyseisen sarakkeen. aallokkopoistettu = data end 69 akunpoisto.m function akkupoistettu = akunpoisto(data) data = removevars(data, 'unitautomationPFC1_BATTERY_PACK_ACTIVE_POWER'); % Poistaa kyseisen sarakkeen. data = removevars(data, 'unitautomationPFC2_BATTERY_PACK_ACTIVE_POWER'); % Poistaa kyseisen sarakkeen. akkupoistettu = data end polttoaineidenpoisto.m function polttoainepoistettu = polttoaineidenpoisto(data) data = removevars(data, "massFlowRatefuellngenginemain1"); % Poistaa kyseisen sarakkeen. data = removevars(data, "massFlowRatefuellngenginemain2"); % Poistaa kyseisen sarakkeen. data = removevars(data, "massFlowRatefuellngenginemain3"); % Poistaa kyseisen sarakkeen. data = removevars(data, "massFlowRatefuellngenginemain4"); % Poistaa kyseisen sarakkeen. data = removevars(data, "volFlowRatefuelenginemain1"); % Poistaa kyseisen sarakkeen. data = removevars(data, "volFlowRatefuelenginemain2"); % Poistaa kyseisen sarakkeen. data = removevars(data, "volFlowRatefuelenginemain3"); % Poistaa kyseisen sarakkeen. data = removevars(data, "volFlowRatefuelenginemain4"); % Poistaa kyseisen sarakkeen. polttoainepoistettu = data end ppohjauskulma.m function ylikulmapoistettu = ppohjauskulma(data) ylikulmaS = find(data.unitautomationAZP_S_STEERING_ANGLE <= 360); %Valitse luvuksi se, jonka yli menevät poistetaan data = data(ylikulmaS,:); ylikulmaP = find(data.unitautomationAZP_P_STEERING_ANGLE <= 360); % Poisttaa yli 360 astetta suuremmat kulmat kummaltakin puolelta. data = data(ylikulmaP,:); ylikulmapoistettu = data % Myös kyseisten sarakkeiden NaN-rivit poistuvat tällä koodilla. end 70 ppsyvays.m function ylisyvays = ppsyvays(data) ylisyvalla = find(data.draught < 30); %suuremmat kuin annettu luku olevat syväydet poistetaan data = data(ylisyvalla,:); ylisyvays = data % Myös kyseisten sarakkeiden NaN-rivit poistuvat tällä koodilla. end pptehottaa.m function tehottaa = pptehottaa(data) tehotaa = find(data.PowerEteen > 0); % valitse luvuksi se, jota alemmat tehot poistetaan, miinustehot tarkoittaa peruuttamista data = data(tehotaa,:); tehottaa = data end pvmpoisto.m function pvmpoistettu = pvmpoisto(data) data = removevars(data, "vuosi"); % Poistaa kyseisen sarakkeen. data = removevars(data, "kuukausi"); % Poistaa kyseisen sarakkeen. data = removevars(data, "paiva"); % Poistaa kyseisen sarakkeen. pvmpoistettu = data end tehojenpoisto.m function tehopoistettu = tehojenpoisto(data) data = removevars(data, "powergeneratordiesel1"); % Poistaa kyseisen sarakkeen. data = removevars(data, "powergeneratordiesel2"); data = removevars(data, "powergeneratordiesel3"); data = removevars(data, "powergeneratordiesel4"); data = removevars(data, "powerpropulsionps"); data = removevars(data, "powerpropulsionsb"); data = removevars(data, "rpmpropulsionps"); data = removevars(data, "rpmpropulsionsb"); 71 data = removevars(data, "unitautomationAZP_P_STEERING_ANGLE"); data = removevars(data, "unitautomationAZP_S_STEERING_ANGLE"); tehopoistettu = data end tehopseteenpoisto.m function tehopseteenpoistettu = tehopseteenpoisto(data) data = removevars(data, "PowerPEteen"); % Poistaa kyseisen sarakkeen. data = removevars(data, "PowerSEteen"); % Poistaa kyseisen sarakkeen. tehopseteenpoistettu = data end telakkapoisto.m function telakkapoistettu = telakkapoisto(data) alkupaiva = datetime('2023-12-30 22:26:30', 'InputFormat', 'yyyy-MM-dd HH:mm:ss'); % Määrittää alkuajankohdan. loppupaiva = datetime('2024-01-06 19:16:00', 'InputFormat', 'yyyy-MM-dd HH:mm:ss'); % Määrittää loppuajankohdan. % Luo logiikkavektorin ajanjakson ulkopuolelle jääville riveille sailytettavatrivit = ~(data.time >= alkupaiva & data.time <= loppupaiva); % Käyttää logiikkavektoria timetablen rajaamiseen data = data(sailytettavatrivit, :); telakkapoistettu = data end yksittaisetkomennot.m AB = AB(timerange('2021-08-28','2024-05-30','closed'),:) % Muodostaa taulukon annettujen aikojen (alku, loppu) välille. Päät kuuluvat mukaan, % koska closed. AB = AB(AB.stw>0,:) % Poistaa rivit, joissa stw on pienempi kuin nolla. AB = AB(AB.nopeusero<=1,:) % Poistaa rivit, joissa nopeusero on yksi tai suurempi. AB = rmmissing(AB) % Poistaa rivit, joissa on NaN-arvoja. 72 Liite 6. MATLAB-koodit: tulosten laskeminen Liitteessä on kaikki tulosten laskemiseen käytetyt koodit. Koodien muotoilussa on saa- tettu käyttää apuna Microsoft Copilot-tekoälysovellusta ajanjaksolla 11.12.2024– 3.2.2025. Liite sisältää koodit: datajako koeajoanntiivis normalisoitt sarakeajo sarakeajoy datajako.m % Jakaa taulukon AB kahteen osaan satunnaisesti. ristiinvalidointi = cvpartition(height(AB), 'Holdout', 0.2); koulutusData = AB(training(ristiinvalidointi), :); testiData = AB(test(ristiinvalidointi), :); % Kouluttaa mallin ja voi lisätä potensseja mdl = fitlm(koulutusData, ['PowerEteen ~ stw + stw^2 + trim + speedwindrelative + speedwindrelative^2 + draught + VedenLmptilaC_MLtt + MerkitsevAallonkorkeusm + paiviapesusta + Froude']); % Poimi RMSE rmse = mdl.RMSE; % Poimi R-squared ja Adjusted R-squared r_squared = mdl.Rsquared.Ordinary; adj_r_squared = mdl.Rsquared.Adjusted; %Katsoo miten ennuste osuu ennusteet = predict(mdl, testiData); mse = mean((ennusteet - testiData.PowerEteen).^2) % Keskineliövirhe % Todelliset arvot testidatasta todelliset = testiData.PowerEteen; kertoimet1 = mdl.Coefficients; 73 % Kuvaajan piirtäminen figure; % Luo uusi kuvaikkuna plot(todelliset, 'o-', 'DisplayName', 'Todellinen'); % Todelliset arvot hold on; plot(ennusteet, 'x-', 'DisplayName', 'Ennuste'); % Ennustetut arvot hold off; legend('Location','northwest'); % Lisää selite kuvaajaan xlabel('Havaintojen indeksi'); % X-akselin nimi ylabel('Normalisoitu PowerEteen-arvo'); % Y-akselin nimi title('Todelliset vs Ennustetut arvot'); % Kuvaajan otsikko grid on; % Lisää ruudukko disp(mdl) koeajoanntiivis.m % 'trainlm' tai 'trainbr' % eli Levenburg-Marquardt tai Bayesian Regularization trainFcn = 'trainlm' hiddenLayerSize = 7; net = fitnet(hiddenLayerSize,trainFcn); % Setup Division of Data for Training, Validation, Testing net.divideParam.trainRatio = 70/100; net.divideParam.valRatio = 15/100; net.divideParam.testRatio = 15/100; % Train the Network [net,tr] = train(net,x,t); % Test the Network y = net(x); e = gsubtract(t,y); performance = perform(net,t,y) normalisoitt.m function normalisoit