TDD and Machine Learning of SEPTIC MPC application
Abstract
Høsten 2021 fordypningsprosjektet implementerte med hell, funksjonalitet i Equi-nor’s MPC SEPTIC ved å ta i bruk TDD. Masteroppgaven tar dette funnet videre, ogser på hvordan kompleks funksjonalitet som involverer testing av system dynamikkkan videre bli utviklet med TDD metodologien. Testoppsettet fra fordypningsoppga-ven ble valgt å gjenbruke, og en sekvens som involverer testing av system dynamikkble valgt som basis, for å se på muligheten å utvikle system dynamikk ved hjelp avTDD.Sekvensen ble vellykket implementert ved hjelp av TDD. Det ble vist at imple-mentering av sekvens i SEPTIC congig fil, kan være kronglete, og det ble gjort etfunn eller forslag til Equinor om å legge til SR latch som en funksjon i config fi-len deres. Slik funksjon ville gjort koden svært mye enklere og mindre kronglete åimplementere sekvenser. I tillegg ble system dynamikk vellykket utviklet ved hjelpav TDD. En sentral del av dette var step_until() funksjonen og muligheten for åhente ut simuleringsverdier fra ring buffer. De to bidro til fullstendig kontroll oversimulering ved å stoppe simulering når en viss ønsket verdi er oppnådd, og deretterhente ut simuleringsverdier for videre testing av system dynamikk i pytest.En ML algoritme med LSTM celler ble laget. Den ble trent opp a av en treningdatasett hvor ventilåpningen var mellom 15% − 100%. ML modellen viste god ytelsepå ny usett data på test datasettet, og nøyaktig predikerte steady-state olje rate.En modell som er trent på hele arbeidsområde til ventilen ville vært foretrukket,men dette ville gått på bekostning av modellen sin predikasjons evne. En gain sche-duler ble videre implementert i SEPTIC. Gain scheduleren bruker kalkulerte gainsfra predikasjon fra ML modellen, og videre interpolerer datasettene av gains til engain funksjon. Implementasjon av en gain schdeuler viste litt bedre ytelse når denble brukt i simulering sammenheng, den nådde steady-state olje rate litt tidligere.Videre vil en av fordelene av en ML algoritme som kjører på siden av SEPTIC tilå predikere gains, være at ML modellen vil fange endringer i system dynamikk overtid, og alltid vær oppdatert med å sette korrekt gain til alle tider. In autumn 2021, the specialization project successfully implemented functionalitywith the use of TDD with Equinor’s in-house MPC application called SEPTIC. Themaster thesis takes the specialization project further, investigating how more com-plex functionality and system dynamics can be developed with TDD. The test setupfrom the specialization project was used, and a sequence involving system dynamicswas chosen to be developed with TDD.The sequence was successfully implemented with the use of TDD. It was foundthat sequences in SEPTIC are pretty tedious to code, and a suggestion for Equinorto implement SR latch function in their configuration file, would make the imple-mentation of the sequence much less tedious. In addition, TDD of system dynamicswas successfully developed. An essential contribution of this is a step_until() func-tion, and accessing simulation from ring buffer in SEPTIC. These two contributed tocomplete control of the simulation by stopping the simulation when a certain wantedvalue is achieved, and further accessing simulation to test the system dynamics inpytest.A machine learning algorithm with LSTM cells was made. It was trained usinga training dataset where the choke opening is between 15% − 100%. The ML modelperformed well on new unseen data on the test dataset and accurately predictedsteady-state oil rates. A model which is trained in all areas of operation would bepreferable, but this would be at the expense of the model’s performance. A gainscheduler was further implemented in SEPTIC. The gain scheduler uses calculatedgains from the Machine learning (ML) model and further interpolates datasets ofgains to a gain function. Implementation of the gain scheduler showed slightly betterperformance reaching set-point a bit faster. A possible implementation of a runningML algorithm along with SEPTIC was discussed. Further, one of the advantages ofhaving an ML algorithm running beside SEPTIC to predict gain would be that theML model would capture changes in system dynamics over time and always be upto date, setting the correct gain at all times.