| Opis: | To delo zajema primerjavo različnih optimizacijskih algoritmov, ki smo jih uporabili na matematičnem modelu za polnjenje baterij električnih vozil. Električno vozilo je vozilo, katerega kolesa poganja en ali več električnih motorjev, ki jih napaja večkrat polnilna baterija.
Ideja za nalogo je nastala na podlagi spreminjajočih se cen elektrike čez dan. Če uporabnik začne z maksimalno dovoljeno močjo polniti vozilo takoj, ko pride domov, ne glede na to, kakšna je cena elektrike v tistem trenutku bo cena celotnega polnjenja večja, kot bi bila, če bi vozilo delovalo v t.i. « pametnem » načinu polnjenja. V tem primeru bi se vozilo bolj polnilo v času, ko je cena električne energije manjša, na račun česar, bi se zmanjšala cena celotnega polnjenja. Glede na to, da je baterija shranjevalec energije, je mogoče uporabiti baterijo tudi kot vir električne energije v primeru, da elektriko pošljemo nazaj v omrežje (v tem primeru se baterija prazni) in takrat se cena polnjenja manjša.
Optimizacijo smo želeli narediti tako, da smo uporabili matematični model baterije in na njem uporabili optimizacijske metoda v programskem jeziku Python.
Pri tem smo morali upoštevati več zahtev:
- Vozilo lahko deluje naenkrat samo v stanju praznjenja ali samo v stanju polnjenja; ne more hkrati jemati in dajati elektrike nazaj v omrežje,
- stanje napolnjenosti baterije je vrednost med 0 in 1, ki predstavlja trenutno vrednost napolnjenosti baterije. Stanje napolnjenosti mora biti na koncu optimizacije na končni vrednosti; povedano drugače, baterija mora biti ob koncu časovne periode napolnjena,
- stanje napolnjenosti baterije mora biti zmeraj med minimalno in maksimalno dovoljeno vrednostjo,
- moč polnjenja je omejena z zahtevami omrežja in maksimalnim dovoljenim tokom polnjenja in praznjenja baterije,
- osrednji parameter, ki se optimizira je cena, ki jo želimo minimizirati.
Osredotočili smo se na dve optimizacijski knjižnici: SciPy in Pymoo. Iz teh knjižnic smo analizirali posamezne metode in uporabili le tiste, ki so primerne za reševanje našega problema. Tako nam je ostal nabor sedmih metod, ki smo jih med seboj primerjali. Ker je optimizacija odvisna od začetnih točk, ki so v našem primeru bili nastavljeni na naključno vrednost, smo vsak algoritem zagnali večkrat in nato shranili najmanjšo vrednost, saj iščemo minimalno ceno polnjenja.
Za najboljši metodi sta se izkazali metoda SLSQP iz knjižnice SciPy in metoda Genetski algoritem iz knjižnice Pymoo.
V naslednjem koraku nas je zanimalo, kaj se zgodi, če spremenimo začetne parametre pri obeh metodah. Ugotovili smo, da kljub temu, da smo spremenili začetne parametre se pri metodi SLSQP rezultati niso spremenili, saj je rezultat takšne optimizacije pri tej metodi enolično določen. Pri uporabi metode Genetski algoritem pa smo ugotovili, da najboljše rezultate optimizacije dobimo z večjim številom populacije in hkrati z večjim številom ocenjevanj oziroma ovrednotenj.
Kateri algoritem je boljši je odvisno od matematičnega modela in zastavljene naloge. V našem primeru je bolj primerna metoda SLSQP, saj moč skozi celoten časovni interval ne skače toliko, kot pri Genetskem algoritmu. Razlika pa je tudi v moči, s katero je napajana baterija – pri genetskem algoritmu moč večkrat doseže maksimalno dovoljeno vrednost, kar ima lahko negativne učinke na življenjsko dobo baterije na račun višje temperature, ki jo ta doseže. |
|---|