Strategie voor Nuna ZuidAfrika Bachelorproject
Technische Universiteit Delft
Chantal Posthoorn
Technische Universiteit Delft Faculteit Elektrotechniek, Wiskunde en Informatica Delft Institute of Applied Mathematics
Strategie voor Nuna Zuid-Afrika (Engelse titel: Strategy for Nuna South-Africa)
Verslag ten behoeve van het Delft Institute of Applied Mathematics als onderdeel ter verkrijging
van de graad van
BACHELOR OF SCIENCE in TECHNISCHE WISKUNDE
door
Chantal Posthoorn Delft, Nederland Juli 2014
Copyright © 2014 door Chantal Posthoorn. Alle rechten voorbehouden.
BSc verslag TECHNISCHE WISKUNDE
“Strategie voor Nuna Zuid-Afrika” (Engelse titel: “Strategy for Nuna South-Africa”)
Chantal Posthoorn
Technische Universiteit Delft
Begeleider Prof.dr.ir. K.I. Aardal Overige commissieleden Dr.ing. D. Jeltsema MSc Dr.ir. M. Keijzer
Juli, 2014
Delft
S AMENVATTING Het Nuon Solar Team gaat voor het eerst meedoen met een nieuwe race: de SASOL solar challenge in ZuidAfrika. Deze race is totaal anders opgebouwd dan het wereld kampioenschap dat elke twee jaar wordt gereden in Australië. Het doel in Zuid-Afrika is om zoveel mogelijk kilometers af te leggen in een gegeven tijd, terwijl in Australië het doel was om een gegeven aantal kilometers af te leggen in een zo kort mogelijke tijd. Daarom is het nodig dat er een nieuwe strategie wordt ontwikkeld voor de race in Zuid-Afrika. In dit project is een model gemaakt voor de lange termijn strategie.
Het doel van de race in Zuid-Afrika is zo veel mogelijk kilometers afleggen in een gegeven tijd. De race bestaat uit acht etappes en in elke etappe is er de mogelijkheid een extra rondje te rijden. Dit extra rondje mag zo vaak mogelijk gereden worden en ligt op een vaste plek op de route. Dit betekent dus dat de afstand gemaximaliseerd kan worden door het aantal extra gereden rondjes per dag te optimaliseren.
De strategie is bepaald door de volgende drie stappen te doorlopen: de data analyseren, de race modelleren en het optimaliseren. De data bestaan uit twee soorten: de route data en de weersvoorspellingen. Deze datasets zijn geanalyseerd en vervolgens gebruikt bij het modelleren van de race. Bij het modelleren van de race zijn eerst de route en de weersvoorspellingen op een juiste manier ingeladen. Daarna zijn de energieinkomsten en het energieverbruik gemodelleerd zodat hiermee op elk moment van de race de Battery State of Charge (BSOC) kan worden voorspeld. Vervolgens is er geoptimaliseerd met behulp van NOMAD. Dit is een algoritme gemaakt voor op simulatie gebaseerde optimalisatie. De doelfunctie van de optimalisatie is de totaal gereden afstand met als beslissingsvariabelen het aantal extra rondjes dat wordt gereden per etappe. Er is maar één voorwaarde: de BSOC moet altijd boven de ondergrens van de batterij liggen.
Deze optimalisatie is vervolgens uitgevoerd voor meerdere weersvoorspellingen. Voor de weersvoorspelling van 23-04-2014 geeft dit dat er 4535 kilometer afgelegd kan worden tijdens de race en er een gemiddelde snelheid van 56 km/h wordt behaald. Deze snelheid is erg laag, maar dit komt omdat het weer in Zuid-Afrika in april veel slechter is dan in september.
Als laatste zijn in dit verslag nog aanbevelingen te vinden voor hoe de strategie verbeterd en uitgebreid kan worden zodat Nuna straks kan winnen in Zuid-Afrika.
v
V OORWOORD Dit verslag is geschreven voor het afronden van mijn Bachelor of Science graad en daarnaast ook voor het Nuon Solar Team. Het Nuon Solar Team is een dreamteam van de TU Delft en bouwt elke twee jaar een nieuwe zonnewagen de Nuna. Dit jaar (2014) gaat het team voor het eerst mee doen met een andere race dan het wereldkampioenschap namelijk de SASOL solar challenge in Zuid-Afrika. Ik heb een kwartaal lang full time bij dit team mogen werken en ben betrokken geweest bij de rest van het team. Hierdoor heb ik veel geleerd van wat werken bij het Nuon Solar Team echt inhoudt en hoeveel er komt kijken bij het voorbereiden van een race. Ondanks het feit dat er geen nieuwe auto werd gebouwd moest er toch heel veel veranderen aan de auto. Ook heb ik gezien hoe ik mijn wiskundige vaardigheden in de praktijk kon gebruiken. In dit project moest een bestaande strategie aangepast worden voor een totaal andere race. Daarmee heb ik ook geleerd om code die gemaakt is door anderen te bestuderen en aan te passen. Dit project had ik nooit kunnen doen zonder de begeleiding van Rune van der Meijden, de strateeg van Nuna7. Hij heeft mij geholpen met alle vragen die ik had over de strategie en zijn programma was de basis van mijn project. Verder wil ik ook mevr. Aardal graag bedanken voor de algemene begeleiding van mijn project. Als laatste wil ik ook nog het hele Nuon Solar team bedanken voor dat ik een kwartaal lang bij hun op kantoor heb mogen zitten en bij het team betrokken kon zijn. Chantal Posthoorn Delft, Juli 2014
vii
I NHOUDSOPGAVE Samenvatting
v
1 Inleiding
1
2 Probleemstelling
3
3 Concentrators 3.1 Aannames. . . . 3.2 Modelleren . . . 3.3 Optimaliseren. . 3.4 Andere factoren .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
7 7 7 8 9
4 Data 11 4.1 Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.2 Weersvoorspelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5 Modelleren 13 5.1 Route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.2 Weersvoorspelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.3 Race simulatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6 Optimaliseren 6.1 BONMIN . 6.2 SCIP. . . . 6.3 NOMAD. . 6.4 Resultaten
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
17 17 17 18 18
7 Conclusie en Aanbevelingen 21 7.1 Concentrators. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 7.2 De strategie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Bibliografie
23
ix
1 I NLEIDING Het Nuon Solar Team doet sinds 2001 elke twee jaar mee aan de World Solar challenge in Australië. Voor deze race bouwt het team om het jaar een nieuwe zonne auto. Dit jaar heeft het team besloten mee te doen aan een nieuwe race: De SASOL solar Challenge (SASC) in Zuid-Afrika. Ze zullen deze race gaan rijden met de Nuna 7s, dit is de bestaande auto Nuna7 die aangepast wordt voor alle nieuwe regels en uitdagingen in Zuid-Afrika. Naast het aanpassen van de auto voor de weg in Zuid-Afrika, heeft de race ook een ander doel. In plaats van een vaste afstand die in de snelste tijd moet worden afgelegd, is het de bedoeling dat in een gegeven tijd de meeste kilometers gereden worden.
Om te bepalen welke snelheid er gereden moet worden om te winnen is een strategie nodig. Voor de race in Australië bestaat deze al, maar voor Zuid-Afrika nog niet. Het doel van dit project is om een strategie te maken voor de race in Zuid-Afrika. Omdat ik maar een beperkte tijd heb focus ik mij op de lange termijn strategie. Naast de lange termijn strategie is er ook de korte en middellange termijn strategie. Hiervoor geldt dat deze laatste twee al bestaan voor Australië en met enkele kleine aanpassingen ook gebruikt worden voor de race in Zuid-Afrika. Voordat ik de lange termijn strategie ging bepalen heb ik mij bezig gehouden met een kleiner probleem: het wel of niet meenemen van de concentrators naar Zuid-Afrika. Dit kleinere probleem is een voorbereiding voor de strategie, maar wel met meer aannames zodat ik sneller resultaten kon boeken.
De strategie bedenken begint met het duidelijk definiëren van het probleem. Dit zal ik doen in hoofdstuk 2. Zoals al eerder gezegd heb ik eerst bepaald of de concentrators moeten worden meegenomen naar ZuidAfrika- dit zal ik in hoofdstuk 3 uitleggen. Nadat ik het probleem van de concentrators had opgelost ben ik verder gegaan met het bepalen van de strategie. Om dit te kunnen doen moet eerst de data worden geanalyseerd, wat in hoofdstuk 4 vermeld wordt. Vervolgens zullen de stappen voor het modelleren van de race worden uitgelegd in hoofdstuk 5. In hoofdstuk 6 zullen dan de optimalisatie en de resultaten worden uitgelegd. En tenslotte zal ik in hoofdstuk 7 de conclusie trekken en aangeven welke aanbevelingen ik doe om de strategie te verbeteren. In de appendix zijn alle matlab files te vinden die ik heb gemaakt en gebruikt voor dit project. De waarden in de functie loadNuna7 zijn niet hetzelfde als degene die ik heb gebruikt, dit omdat deze waarden belangrijk kunnen zijn voor de concurrentie.
1
2 P ROBLEEMSTELLING De SASOL Solar Challenge in Zuid-Afrika is een race van Pretoria naar Kaapstad in 8 etappes met als doel zo veel mogelijk kilometers afleggen binnen de tijd. De indeling en regels van de race zullen hieronder worden beschreven. Daarna zal worden beschreven hoe dit doel geschreven kan worden al wiskundig probleem.
Elke etappe begint om 08:00 uur en eindigt als men over de finishlijn rijdt. Het is alleen toegestaan om van zonsopgang tot aan de start van de etappe en gedurende de etappe statisch te laden. Dit betekent dat als de finishlijn gepasseerd is er de rest van de dag niet meer statisch geladen mag worden. Statisch laden is het richten van het zonnepaneel richting de zon als de auto stil staat, hierdoor gaat het effectieve oppervlak omhoog en zijn er meer energie-inkomsten. Ook kunnen bij het statisch laden de concentrators worden ingezet, dit zijn bakken met lenzen die het zonlicht op een heel kleine oppervlakte aan zonnecellen projecteert waardoor deze heel veel energie binnen krijgen en er dus nog meer energie-inkomsten zijn.
De lengte van elke etappe is verschillend en ligt tussen de 222 en 278 kilometer. Dit is de minimale afstand die elk team moet afleggen tijdens een etappe. Tijdens elke etappe is er een control stop van 30 minuten. Hierbij moet de auto 30 minuten stilstaan en is het toegestaan om statisch te laden. Verder is er elke etappe een extra rondje (loop) van 53 tot 136 kilometer lang. Deze wordt zo vaak mogelijk gereden door elk team om de totaal afgelegde afstand te maximaliseren. In tabel 2.1 is de exacte routedata te vinden en in figuur 2.1 is een plaatje van de route op Google Earth te zien. Elke etappe heeft een andere kleur en de rode lijnen zijn de extra rondjes die gereden kunnen worden. Zoals te zien is in de tabel hoeft het extra rondje niet aan het eind van de etappe te liggen. Hierdoor kunnen er alleen gehele rondjes gereden worden.
Zoals eerder gezegd begint elke etappe om 08:00 uur en is de finish op een gegeven locatie, maar als er na 17:30 gefinisht wordt krijgt het team een straf. Deze straf is voor een finishtijd tussen 17:30 en 17:45 per minuut 1 km van de totaal gereden afstand af en voor een finish na 17:45 per minuut 2 km van de totaal gereden afstand af.
Tot nu toe is beschreven wat de regels zijn voor tijdens de race die van belang zijn bij de strategie. De volgende stap is nu om het wiskundige probleem op te stellen. Het is de bedoeling om de afstand te maximaliseren, dit kan door elke dag zoveel mogelijk gehele extra rondjes te rijden. Dit is een geheeltallig maximalisatie probleem. Om dit om te zetten in een wiskunde formulering moeten eerst de variabelen en constanten gedefinieerd worden:
D xi di
de verzameling racedagen aantal rondjes op dag i , lengte van rondje op dag i , 3
= {1, 2, . . . , 8} i ∈D i ∈D
4
2. P ROBLEEMSTELLING
Figuur 2.1: Route overzicht
Hierin zijn x i de beslissingsvariabelen en zijn d i gegeven constantes, hiermee heb ik de volgende doelfunctie opgesteld: P max s = 2021 + i ∈D x i d i (2.1) De voorwaarden voor dit probleem zijn dat x i ∈ N en dat de Battery State of Charge (BSOC) boven de ondergrens van de batterij blijft. De BSOC is de term die gebruikt wordt om aan te geven hoe vol de accu nog is. Verder geldt dat de BSOC een black box functie is afhankelijk van de vector [x 1 , x 2 , . . . , x 8 ]. In hoofdstuk 5 zal worden uitgelegd hoe de BSOC wordt bepaald. Doordat het een geheeltallig niet-lineair optimalisatie probleem is is het niet algebraïsch op te lossen. In hoofdstuk 6 zal ik hier meer over uit leggen.
Van-Naar Pretoria - Kroonstad Kroonstad - Bloemfontein Bloemfontein - Colesberg Colesberg - Graaff-Reinet Graaff-Reinet - Port Elizabeth Port Elizabeth - Knysna Knysna - Swellendam Swellendam - Kaapstad
Tabel 2.1: Route data
Dag 1 Dag 2 Dag 3 Dag 4 Dag 5 Dag 6 Dag 7 Dag 8
Afstand(km) 260 244 222 253 272 268 278 223
Stad Control Stop Sasolburg Winburg Edenburg Middelburg Jansenville Stormsrivier Riversdale Caledon
Control Stop 134 119 108 143 86 179 189 111
Loop Stop 134 119 108 122 86 179 223 111
Loop afstand(km) 84 135 52 125 65 58 75 94
5
3 C ONCENTRATORS In dit hoofdstuk zal worden uitgelegd hoe ik heb bepaald of het rendabel is om de concentrators mee te nemen naar Zuid-Afrika en wat er gebeurt met het aantal kilometers dat afgelegd kan worden als er dingen aan de auto veranderen. Concentrators zijn bakken met een grote glazen plaat waar lenzen in zitten die het zonlicht focussen op een klein oppervlakte aan zonnecellen. Deze concentrators bevinden zich binnen in de auto en kunnen daardoor alleen gebruikt worden als de top vleugel van de auto getild wordt, oftewel tijdens het statisch laden. Deze concentrators leveren dus extra energie op tijdens het statisch laden, maar ze verhogen ook het gewicht van de auto waardoor de auto meer energie verbruikt.
3.1. A ANNAMES Om te kunnen uitrekenen of het rendabel is om de concentrators mee te nemen moest ik een aantal aannames doen. De belangrijkste aanname is dat de snelheid gedurende de hele race constant is. Daarnaast heb ik voor de CloudFraction, de mate van bewolking, drie verschillende waarden genomen 0.7, 0.8 en 0.9. En ook voor de wind-coëfficiënt drie verschillende waarden: -10, 0, 10. Dit is gedaan zodat er 9 verschillende scenario’s voor het weer zijn, omdat ik op dit moment nog geen goede weersvoorspelling heb voor Zuid-Afrika. Met deze 9 scenario’s wordt zowel heel slecht weer als heel goed weer gedekt. Het is zo dat hoe hoger de CloudFraction, hoe zonniger het is en hoe hoger de windwaarde, hoe harder de tegenwind is.
3.2. M ODELLEREN Voor de bepaling of het rendabel is om de concentrators mee te nemen is de Battery State Of Charge (BSOC) nodig. Deze geeft aan hoe vol de batterij nog is op elk gegeven tijdstip. Hiermee kan bepaald worden welke gemiddelde snelheid nodig is om precies het einde van de race te halen zodat de batterij dan leeg is. En als we de gemiddelde snelheid weten kunnen we bereken hoeveel kilometer er is afgelegd.
De eerste stap om de BSOC uit te rekenen is de totale route bepalen gegeven een vaste snelheid. Hiervoor gebruik ik een functie die de route laadt - later zal hier meer over worden uitgelegd. Deze functie heeft als invoer een constante snelheid, de grootte van de integratiestappen, beginafstand op de hoofdroute en eindafstand op de hoofdroute. Deze functie laadt bij de integratiegrootte het bijbehorende routebestand en voegt vervolgens de extra rondjes en control stops in de route en geeft dan nieuwe vectoren terug voor de afstand, breedtegraad, lengtegraad, hoogte, richting, actie en het aantal extra rondjes.
Daarna moeten de energie-inkomsten en het energieverbruik worden berekend. Voor de inkomsten is de zonnehoogte en de CloudFraction van groot belang. De CloudFraction is een constant getal voor heel de race en er zullen 3 verschillende CloudFraction getallen worden gebruikt. De zonnehoogte kan bepaald worden doormiddel van de breedtegraad, lengtegraad en tijd. Voor het verbruik is de tegenwind en de efficiëntie van Nuna van belang. De efficiëntie van Nuna wordt voor een groot deel bepaald door de rolweerstand en deze is afhankelijk van het gewicht van Nuna. Zodra Nuna zwaarder wordt is er een hogere rolweerstand en dus 7
8
3. C ONCENTRATORS
meer energie verbruik.
Naast energie-inkomsten en -verbruik is er ook nog de potentiële energie, dit is de energie verkregen door het hoogteverschil. Deze energie kan een positieve bijdrage hebben op het energieverbruik als er bergafwaarts wordt gereden of een negatieve bijdrage bij het berg oprijden. Bij het berekenen van de potentiële energie wordt ook rekening gehouden met motorverliezen.
Nu hebben we functies om de energie-inkomsten, het energieverbruik en de potentiële energie te berekenen. Deze kunnen we vervolgens gebruiken om de BSOC uit te rekenen als we de hele race doorlopen. Om nu de beste gemiddelde snelheid te bepalen voor de gehele race willen we dat de BSOC aan het einde zo dicht mogelijk bij de ondergrens van de batterij ligt en dat de batterij nooit boven de onder- en bovengrens komt.
3.3. O PTIMALISEREN Om tot een optimale snelheid te komen heb ik een eenvoudige while loop gebruikt, dit omdat er maar één variabele is namelijk de snelheid. Vervolgens heb ik dit gedaan voor elke combinatie van CloudFraction en wind. In de tabellen 3.1 en 3.2 zijn de uitkomsten hiervan te zien.
CloudFraction 0,7 0,7 0,7 0,8 0,8 0,8 0,9 0,9 0,9
Wind -10 0 10 -10 0 10 -10 0 10
Snelheid (km/h) 78,4 73,3 67,8 82,6 77,3 71,8 86,4 81,0 75,4
Totale Afstand (km) 5644 5276 4883 5941 5564 5165 6216 5829 5424
BSOC 337,1 335,7 340,3 336,4 334,6 333,0 334,6 333,9 332,9
Snelheid (km/h) 78,3 73,1 67,7 82,3 77,1 71,5 86,1 80,7 75,1
Totale Afstand (km) 5634 5265 4874 5925 5548 5149 6197 5812 5406
BSOC 334,0 332,8 331,2 333,8 332,6 331,0 331,0 331,6 330,1
Tabel 3.1: Met concentrators
CloudFraction 0,7 0,7 0,7 0,8 0,8 0,8 0,9 0,9 0,9
Wind -10 0 10 -10 0 10 -10 0 10
Tabel 3.2: Zonder concentrators
Uit deze tabellen volgt dat de gemiddelde afgelegde afstand 5550 km is als de concentrators worden meegenomen. Als de concentrators niet worden meegenomen is de gemiddelde afgelegde afstand 5535 km. Dit is een verschil van 15 km. Het is dus voordelig om de concentrators mee te nemen naar Zuid-Afrika, ondanks dat er minder uren zijn waarin statisch geladen kan worden.
3.4. A NDERE FACTOREN
9
3.4. A NDERE FACTOREN De berekening die is toegepast voor de concentrators kan ook toegepast worden om te bekijken of andere factoren die de auto veranderen invloed hebben op de totale afstand die gereden kan worden. De belangrijkste factoren zijn het gewicht, de efficiëntie van het zonnepaneel en de grootte van de batterij. Ik heb dan ook de berekening uitgevoerd voor als de auto 10 kg zwaarder wordt, als het paneel 1 procentpunt beter wordt of als de accu 1 kWh groter wordt. Het gemiddelde verschil van deze factoren ten opzichte van Nuna met concentrators is weer gegeven in tabel 3.3. Dit betekent dat als Nuna 10 kg zwaarder wordt er 38 kilometer minder gereden kan worden, als het paneel 1% beter wordt er 113 kilometer extra gereden kan worden en als de accu 1 kWh groter wordt er 35 kilometer meer kan worden gereden.
+10 kg +1% paneel +1 kWh Tabel 3.3: Verschil
Snelheid (km/h) 0,518 -1,554 -0,486
Totale Afstand (km) 37,85 -112,56 -34,64
BSOC -1,852 1,822 -0,281
4 D ATA Voordat er gemodelleerd kan worden is er data nodig. Voor dit probleem zijn er twee soorten data nodig: de route en de weersvoorspellingen. In dit hoofdstuk zal ik uitleggen in welke vorm deze data geleverd worden en in het volgende hoofdstuk zal worden uitgelegd hoe deze data gebruikt worden bij het modelleren.
4.1. R OUTE De route wordt aangeleverd in een matlab bestand, in dit bestand zitten verschillende matlab structures. In figuur 4.1 is in een plaatje te zien hoe zo’n matlab structure er uit ziet. Er is een structure voor de hoofdroute (mainroute), een voor de control stops, een voor de dag stops, een voor de extra rondjes (loops) en een voor de stops van de rondje (loopstops). In de structure van de hoofdroute zitten vijf vectoren (velden): een voor de afstand , lengtegraad (longitude), breedtegraad (latitude), hoogte (altitude) en richting (heading). Voor de extra rondjes geldt dat dit een 1 × 8 structure is met zes velden, deze velden zijn hetzelfde als bij de hoofdroute, maar dan ook met een extra veld voor de startafstand van het rondje. Dit betekent dus dat er voor elke rondje afzonderlijk een vector bestaat voor de afstand, lengtegraad, breedtegraad enz. Voor de control stops, dagstops en stops van de extra rondjes geldt dat dit 1×8 structures zijn met drie velden, namelijk de afstand, lengtegraad en breedtegraad van elke stop. Voor de route data zijn er zijn drie verschillende matlab bestanden. Deze verschillen in hoe nauwkeurig de route is. De eerste is op 1 km nauwkeurig, de tweede op 100 m en de derde op 10 m. Deze zijn gemaakt zodat de weersvoorspelling straks op verschillende nauwkeurigheden kan worden geïnterpoleerd. Omdat de focus van dit project op de lange termijn strategie ligt, zal ik in dit project vooral gebruik maken van de route-data op 1 km nauwkeurig.
4.2. W EERSVOORSPELLING De weersvoorspelling wordt ook aangeleverd in een matlab bestand Hiervoor geldt dat er maar twee matlabstructures in zitten. Een structure met de weersvoorspelling voor de hoofdroute en een met de weersvoorspelling per rondje. Voor de strategie voor Nuna zijn er drie factoren van het weer die belangrijk zijn: de zonnehoogte, de hoeveelheid bewolking en de wind. De zonnehoogte is de hoek van de zon ten op zichte van de horizon in graden en de hoeveelheid bewolking wordt gegeven door de shortwave radiation. Dit is de hoeveelheid licht die door de atmosfeer heen de auto kan bereiken en omgezet kan worden in energie. De wind wordt gesplitst in twee componenten de uwind, dit is de wind van west naar oost, en de vwind,dit is de wind van zuid naar noord. Al deze data zijn gegeven op tijdsintervallen van een kwartier en per kilometer. Hierdoor zijn alle factoren matrices.
De weersvoorspellingen die gebruikt zijn voor dit project zijn de actuele voorspellingen, dus niet de weersvoorspelling voor tijdens de race. Omdat dit verslag in juni is geschreven betekent dit dat het in Zuid-Afrika herfst is en het weer dus een stuk slechter zal zijn dan tijdens de werkelijke race in september. Hierdoor kan het dus zijn dat de snelheden die voorspeld worden lager zullen zijn dan de snelheden die verwacht worden tijdens de race in Zuid-Afrika. 11
12
Figuur 4.1: Structure van de Route voor de extra rondjes (Loops)
4. D ATA
5 M ODELLEREN Het doel van het modelleren is weten hoeveel energie er binnenkomt en hoeveel er verbruikt wordt, zodat hiermee op elk moment de Battery State of Charge (BSOC) kan worden bepaald en dit gebruikt kan worden om te bepalen hoe snel er gereden moet worden om zo veel mogelijk kilometers af te leggen. Voordat de energie-inkomsten en het verbruik berekend kunnen worden is het nodig om exact te weten wat de route en de weersvoorspelling zijn voor het stuk van de race dat gemodelleerd moet worden. In dit hoofdstuk zal ik uitleggen op welke manier ik de route en de weersvoorspelling aanpas naar de gewenste vectoren, en hoe ik deze dan vervolgens gebruik om de race te simuleren.
5.1. R OUTE Het moet op elk moment van de race mogelijk zijn om de strategie opnieuw te bepalen of voor maar een deel van de race de strategie te bepalen. De route moet dan worden bepaald vanaf een gegeven beginpunt tot een gegeven eindpunt. Verder is de route ook afhankelijk van het aantal rondjes per dag, omdat er elke dag extra rondjes gereden kunnen worden. Daarom heb ik een functie gemaakt waar het aantal rondjes per dag, de integratie-grootte en het begin- en eindpunt worden ingevoerd. Deze functie geeft alle vectoren terug die nodig zijn voor de route voor latere berekeningen.
Voor de invoer van de integratie-grootte zijn drie mogelijkheden: 1, 0.1 en 0.01. Dit is de route op 1 km nauwkeurig, 100 m nauwkeurig en 10 m nauwkeurig. Deze zijn er zodat er later op verschillende nauwkeurigheden kan worden geïnterpoleerd. Voor het begin- en eindpunt geldt dat dit vectoren zijn die bestaan uit een afstand en tijdstip. Voor het beginpunt komt hier ook nog een index bij. Deze index is omdat het beginpunt op verschillende plekken in de route kan liggen, namelijk op de hoofdroute of in een rondje. De afstand voor het beginpunt is de afstand die dag afgelegd, vandaar dat ook het tijdstip nodig is, want deze bevat de datum en tijd op het beginpunt. De afstand voor het eindpunt is de afstand op de hoofdroute, en het tijdstip moet altijd aan het eind van een dag zijn. Dit kan eventueel later nog veranderd worden. Ik heb mijn functie zo gemaakt dat deze makkelijk uitgebreid kan worden naar andere wensen voor bijvoorbeeld de middellange termijn strategie.
Nu kan het juiste routebestand worden ingeladen en is het de bedoeling dat er een nieuwe structure wordt gemaakt voor de gehele route - in plaats van verschillende structures voor de extra rondjes en de hoofdroute. Dit wordt gedaan door in de vectoren van de hoofdroute op de juiste plek de rondjes in te voegen, dit ziet er als volgt uit voor 1 dag, waarbij n extra rondjes gereden worden: £ ¤ £ ¤ £ ¤ £ ¤ rondje 1 rondje 2 rondje n hoofdroute deel 1 ··· hoofdroute deel 2 Naast het invoegen van de rondjes, moeten ook de control stops s en de nachten worden ingevoerd. Dit gebeurt op een zelfde manier als voor de rondjes. Deze manier wordt toegepast voor de hoogte, lengtegraad en breedtegraad vectoren. Voor de afstand vector wordt bijna hetzelfde gedaan alleen begint deze altijd op 0 en loopt door tot het aantal kilometer dat gereden wordt. Naast deze standaard-vectoren wordt er ook nog 13
14
5. M ODELLEREN
een nieuwe vector gemaakt voor de actie. Hiermee wordt bedoeld in welke actie de auto is. Dit kan zijn: rijdend, stilstaan bij control stop of stilstaan in de nacht. Deze verschillende acties zijn nodig om later de energie-inkomsten goed te kunnen berekenen.
5.2. W EERSVOORSPELLING Er zijn meestal verschillende weersvoorspellingen, daarom moet het mogelijk zijn om elke keer als de optimalisatie opnieuw wordt uitgevoerd een andere weersvoorspelling te kiezen. En net zoals met de route moeten de hoofdroute en extra rondjes structures samengevoegd worden tot één structure. Deze samenvoeging gebeurt op dezelfde manier als bij de route. Pas later zal de weersvoorspelling worden geïnterpoleerd.
5.3. R ACE SIMULATIE Om de race te kunnen simuleren is natuurlijk de route nodig. Daarnaast zijn ook de weersvoorspelling, de constanten van Nuna7s en het aantal rondjes dat gereden wordt van belang. Als deze allemaal geladen zijn wordt als eerste de snelheid per dag bepaald aan de hand van het aantal rondjes dat per dag gereden wordt. Nu zijn op elk moment de snelheid en de afstand bekent dus kunnen we een vector maken met de tijdsintervallen. Deze zijn tijdens het rijden gelijk aan het verschil in de afstand vector gedeeld door de snelheid en bij de control stop zal het tijdsinterval 30 minuten zijn, omdat een control stop verplicht 30 minuten duurt. Voor de nacht zijn de tijdsintervallen vijf minuten lang, ik heb hiervoor gekozen omdat per vijf minuten het weer niet zoveel zal veranderen en als ze korter genomen worden krijg je te veel intervallen waar niks mee gedaan wordt.
Met behulp van deze tijdsintervallen kan er in combinatie met de starttijd een tijdsvector gemaakt worden. Nu is alleen nog de vraag op welke tijd de nacht begint. Ik heb ervoor gekozen deze om 05.00 uur te laten beginnen. De nacht loopt door tot 08.00 uur, het tijdstip dat de race begint. Dit is omdat na de finish van een etappe er niet meer geladen mag worden, maar voor de start van de volgende etappe wel weer. In Zuid-Afrika komt de zon tussen 05.30 en 06.00 uur op, dus als er vanaf 05.00 uur wordt begonnen met modelleren van de energie-inkomsten zit de zonsopgang er altijd in.
Nu er een vector voor de tijd is, is het mogelijk om de energie-inkomsten te modelleren. Omdat de weersvoorspellingen per kwartier en per kilometer zijn gegeven moeten deze eerst worden geïnterpoleerd naar de gewenste tijds- en afstandsintervallen. Dit wordt gedaan met behulp van lineaire interpolatie. Nu kan het vermogen per tijdsinterval berekend worden met een formule die uit drie delen bestaat: een deel voor het rijden, een deel voor het laden bij een control stop en het derde deel voor het laden ’s nachts. De formule voor de energie-inkomsten per tijdsinterval is als volgt [1]: ½ P in =
AW η p sin(γ) 0
voor voor
0° ≤ γ ≤ 180° 180° ≤ γ ≤ 360°
(5.1)
Waarbij: A W ηp γ
= = = =
oppervlakte van het zonnepaneel shortwave radiation efficiëntie van het zonnepaneel zonnehoogte
Voor het statisch laden geldt dat de zon altijd loodrecht op het paneel staat, dus dan geldt dat sin(γ) = 1, vandaar dat bij het modelleren de nachten en control stops apart worden genomen. Nu is het vermogen per tijdsinterval bekend en kunnen, door met de tijdsintervallen te vermenigvuldigen, de energie-inkomsten worden bepaald.
Voor het energieverbruik is natuurlijk vooral de efficiëntie van Nuna van belang en daarnaast ook de wind deze moet net zoals de andere weersvoorspellingen geïnterpoleerd worden. Dit gebeurt dan ook op dezelfde manier als bij de energie-inkomsten. Om te berekenen hoeveel vermogen de motor moet leveren moeten
5.3. R ACE SIMULATIE
15
eerst de krachten die op Nuna werken worden bepaald. Deze krachten zijn: de luchtweerstand (F a ), de rolweerstand (F r ), de zwaartekracht (F g ) en de kracht geleverd door de motor (F m ). De krachten moeten in evenwicht zijn dus er geldt: F m (F a , F r , F g ) = F a + F r + F g (5.2) Nu kan het vermogen dat de motor moet leveren uitgedrukt worden door: P m (F a , F r , F g , v) =
1 (F a + F r + F g )v ηm
(5.3)
waarbij η m de motor efficiëntie is en v de snelheid. Voor de berekening van de luchtweerstand, rolweerstand en zwaartekracht zie [1]. In de gebruikte matlab functie wordt potentiele energie ten gevolgen van de zwaartekracht apart uitgerekend, dit omdat de motor extra energie verliest met het omzetten van potentiële energie naar kinetische energie en andersom.
De laatste stap van de simulatie is de Battery State Of Charge uitrekenen. Dit wordt gedaan door de BSOC van het vorige tijdstip te nemen en daarbij de energie inkomsten op te tellen en het verbruik en de potentiële energie van af te trekken. De enige uitzondering is als de BSOC boven de bovengrens van de batterij uit komt: dan is de BSOC natuurlijk gelijk aan deze bovengrens.
6 O PTIMALISEREN Het probleem dat geoptimaliseerd moet worden is een niet-lineair geheeltallig optimalisatie probleem. Voor dit soort problemen zijn meerdere algoritmes te vinden die een oplossing zoeken. Voor Matlab is er een handige toolbox die veel optimaliserings algoritmes bevat, de OPTI toolbox [2]. Deze toolbox heb ik dan ook gebruikt om het probleem op te lossen. Mijn probleem valt onder de categorie Mixed Integer Nonlinear Programming (MINLP), in de OPTI toolbox zijn hiervoor drie verschillende oplos-methodes te vinden: BONMIN, SCIP en NOMAD. Ik heb gekozen voor NOMAD en in dit hoofdstuk zal ik kort uitleggen hoe elke solver werkt en waarom ik deze wel of niet heb gekozen.
6.1. BONMIN BONMIN (Basic Open Source Nonlinear Mixed Integer Programming) [3] lost MINLP problemen op van de vorm: min odv
f (x) gL xL xi xi
g (x) x Z R
≤ ≤ ∈ ∈
≤ ≤ : :
gU xU i ∈I i 6∈ I
(6.1)
Waarbij f : Rn → R en g : Rn → Rm twee keer continu differentieerbare functies zijn. In mijn geval is g (x) de functie van de Battery State of Charge (BSOC). Dit is een functie in Matlab die ook weer andere functies aanroept en is dus helemaal niet continu differentieerbaar. Dus is het niet mogelijk om BONMIN te gebruiken voor mijn probleem.
6.2. SCIP SCIP (Solving Constraint Integer Programs) [4] kan veel verschillende programma’s oplossen waaronder dus ook een MINLP. Het moet wel zo zijn dat de doelfunctie van een MINLP een lineaire functie is en de nietlineaire voorwaarden moeten van de vorm: lhs ≤ f (x) ≤ rhs zijn waarbij de functie f (x) een algebraïsche expressie is die geschreven kan worden als binaire boom met op de eind-knopen constanten en variabelen en op de rest van de knopen operatoren. SCIP ondersteunt de volgende operatoren: optelling, aftrekking, vermenigvuldiging, deling, machtsverheffing en logaritme. Zoals in vergelijking 2.1 te zien is, is bij dit probleem de doelfunctie een lineaire functie dus aan deze voorwaarde van SCIP wordt voldaan. Alleen geldt voor de voorwaarden dat de functie voor de BSOC niet gemakkelijk als binaire boom geschreven kan worden en verder geldt ook dat in een van de functies die gebruikt wordt om de BSOC uit te rekenen ook de sinus wordt gebruik en triometrische functies worden niet ondersteund door SCIP. Doordat de voorwaarden van mijn probleem te ingewikkeld zijn kan dus ook SCIP niet worden gebruikt voor dit probleem.
17
18
6. O PTIMALISEREN
6.3. NOMAD NOMAD (Nonlinear Optimization by Mesh Adaptive Direct Search) [5] is gemaakt voor op simulatie gebaseerde optimalisatie, dat is precies wat ik heb gedaan. Verder werkt NOMAD ook voor black box functies, dit zijn functies waarvoor vaak geldt dat deze geen bruikbare eigenschappen hebben zoals bijvoorbeeld een afgeleide. Omdat NOMAD dus werkt voor functies die geen specifieke eigenschappen hoeven te hebben kan ik dit programma gebruiken voor mijn probleem. Er geldt dat het NOMAD algoritme altijd de optimale oplossing geeft voor een probleem, tenzij voor het bereiken van de optimale oplossing er al een van de limieten is bereikt. Deze limieten kunnen bijvoorbeeld de mesh grootte of de zelf bepaalde onder- of bovengrens zijn. De basis van NOMAD is het Mesh Adaptive Direct Search (MADS) algoritme. MADS is een iteratief algoritme waarbij een black box functie op verschillende trial points wordt geëvalueerd op een mesh, dit is een discretisatie van de ruimte van variabelen Rn . De grofheid van deze mesh, in iteratie k van het algoritme, wordt gegeven door een parameter voor de mesh grootte. De resultaten van de evaluaties van de trial points worden onderzocht om vervolgens een nieuwe verzameling trial points te genereren. Een verdere uitleg van het MADS algoritme kan gevonden worden in [6]. Met behulp van de OPTI toolbox heb ik NOMAD vrij eenvoudig kunnen toepassen op mijn model. Deze OPTI toolbox zorgt ervoor dat alle parameters standaard staan ingesteld tenzij men ze aanpast. Ik heb ervoor gekozen om te werken met een ondergrens en bovengrens voor mijn oplossing, dit omdat er dan veel sneller een oplossing gevonden kan worden en het goed in te schatten is hoeveel rondjes per dag ongeveer realistisch is. Verder is er maar één voorwaarde: de BSOC moet altijd boven de ondergrens van de batterij blijven. Omdat de lengte van de BSOC afhankelijk is van het aantal rondjes dat gereden wordt heb ik ervoor gekozen om als voorwaarde te nemen min(BSOC - ondergrens batterij) ≥ 0. Nu kan met een startwaarde voor het aantal rondjes bepaald worden wat het optimale aantal rondjes is.
6.4. R ESULTATEN Ik heb mijn optimalisatie meerdere keren uitgevoerd voor verschillende weersvoorspellingen. Er zijn alleen actuele weersvoorspellingen, dat betekent dat ik nu alleen maar weersvoorspellingen heb van april tot juni 2014. Deze periode is het in Zuid-Afrika herfst, terwijl de race eind september gereden wordt en het daar dan dus lente is. Doordat het seizoen totaal anders is zijn ook de snelheden die worden voorspeld niet realistisch voor tijdens de race. Hieronder zal ik de resultaten van de optimalisatie met de weersvoorspelling van 23-042014 laten zien. Ik heb deze datum gekozen omdat hier de weersvoorspelling nog het beste weer voorspelde. De optimalisatie gebeurt zoals eerder al gezegd met NOMAD. De uitkomst van de optimalisatie is een vector met het aantal rondjes per dag dat gereden moet worden. Hiermee kan dan vervolgens ook de gemiddelde snelheid per dag worden berekend. In tabel 6.1 is hier een overzicht van te vinden. Verder geeft de doelfunctie nu dat er een afstand van 4532 kilometer kan worden afgelegd.
dag 1 dag 2 dag 3 dag 4 dag 5 dag 6 dag 7 dag 8
Aantal rondjes 4 2 7 2 5 5 4 4
Snelheid (km/h) 66,31 58,29 64,58 55,82 65,87 62,79 63,79 66,20
Tabel 6.1: Uitkomst optimalisatie, weersvoorspelling: 23-04-2014
Naast het aantal rondjes per dag, is het ook handig om te kunnen zien wat dit voor invloed heeft op de Battery State of Charge (BSOC), de energie-inkomsten en het energieverbruik. In figuur 6.1 is te zien wat er met de BSOC gebeurt gedurende de race. Het is duidelijk te zien wanneer de nachten en de control stops zijn. Voor de nacht geldt dat de BSOC op hetzelfde niveau blijft, behalve voor het allerlaatste stukje, daar stijgt de BSOC licht, omdat er ’s ochtends voor de race begint statisch kan worden
6.4. R ESULTATEN
19
Figuur 6.1: BSOC verloop met weersvoorspelling van 23-04-2014
Figuur 6.2: Het geleverde vermogen uitgezet tegen de tijd met weersvoorspelling van 23-04-2014
geladen. De control stops zijn duidelijk te zien, omdat hier de BSOC in een korte tijd hard om hoog gaat. Dit is ook goed te verklaren, omdat tijdens de control stop er statisch geladen kan worden en geen energie verbruikt wordt. Deze stijging in energie-inkomsten is terug te zien in figuur 6.2, waarbij op het tijdstip van de control stop een uitschieter zit. In figuur 6.3 heb ik de shortwave vanuit de weersvoorspelling geplot tegen de tijd, hiermee kan je goed zien hoe afhankelijk de energie-inkomsten zijn van de shortwave voorspellingen.
Tenslotte is in figuur 6.4 te zien hoeveel vermogen er gevraagd wordt op elk tijdstip, deze grafiek oscilleert hevig. Dit komt omdat het vermogen dat gevraagd wordt door de motor ook erg afhankelijk is van het hoogteverschil. Het hoogteverschil is per kilometer verschillend en is daarom een oscillerende grafiek. Dat het vermogen lineair afneemt aan het einde van elke dag heeft te maken met de manier van plotten, dit zou een verticale lijn moeten zijn, maar doordat de nacht pas om 05.00 uur begint en daar dus voor het eerst het gevraagde vermogen 0 is, wordt er een lineair afnemende lijn getrokken.
Figuur 6.3: shortwave ten opzichte van de tijd met weersvoorspelling van 23-04-2014
20
Figuur 6.4: Het gevraagde vermogen uitgezet tegen de tijd met weersvoorspelling van 23-04-2014
6. O PTIMALISEREN
7 C ONCLUSIE EN A ANBEVELINGEN Het doel van dit project was de strategie voor Nuna in Zuid-Afrika te bepalen, waarbij de focus vooral op de lange termijn strategie lag. Naast dit doel was er ook een ander vraagstuk: is het rendabel om de concentrators mee te nemen? In dit hoofdstuk zal ik mijn conclusies hierover trekken en aanbevelingen doen om te zorgen dat Nuna straks de beste strategie heeft in Zuid-Afrika.
7.1. C ONCENTRATORS Voor de concentrators geldt dat het rendabel is om ze mee naar Zuid-Afrika te nemen. Alle berekeningen zijn voor negen verschillende weer-scenario’s uitgevoerd. Als de concentrators meegenomen worden kan er gemiddeld 5550 km worden afgelegd, terwijl als de concentrators niet worden mee genomen er 5535 km afgelegd kan worden. Dit is maar een verschil van 15 km, maar als er naar de afzonderlijke weer-scenario’s wordt gekeken is er te zien dat het in elk scenario voordelig is om de concentrators mee te nemen.
Om een goede beslissing te maken over de concentrators moet er nog vervolgonderzoek gedaan worden. Dit zou kunnen door in plaats van een constante snelheid voor de gehele race aan te nemen, een constante snelheid per dag te gebruiken. Daarnaast heb ik ook aannames voor het weer gedaan en maar negen verschillende scenario’s voor het weer gebruikt. Om een realistischer beeld te krijgen zou er onderzoek gedaan moeten worden naar de weersomstandigheden tijdens de race. Op basis daarvan kan dan vervolgens een weersvoorspelling gedaan worden en gekeken worden hoeveel kilometers er afgelegd kunnen worden met concentrators en zonder concentrators .
7.2. D E STRATEGIE Voor de race in Zuid-Afrika bestaat de lange termijn strategie uit het bepalen hoeveel extra rondjes er elke dag gereden moeten worden om uiteindelijk zo veel mogelijk kilometers af te leggen. Dit is een maximalisatie probleem. Om dit probleem op te lossen is eerst de race gemodelleerd in Matlab en vervolgens is de afstand gemaximaliseerd met behulp van NOMAD.
Ik heb ervoor gekozen om alles te modelleren in Matlab, omdat ik veel functies heb gebaseerd op de bestaande functies voor de strategie in Australië. Deze strategie voor Australië was volledig in Matlab geprogrammeerd en ik heb deze lijn doorgezet voor de strategie in Zuid-Afrika. In hoofstuk 5 is te vinden hoe ik alle aspecten van de race heb gemodelleerd in Matlab en de bijbehorende Matlab codes zijn te vinden in de appendix.
De optimalisatie is gebeurd met NOMAD en geïmplementeerd met behulp van de OPTI toolbox in Matlab. De OPTI toolbox is een uitgebreide toolbox voor optimalisatie-programma’s in Matlab. NOMAD is een van de 21
22
7. C ONCLUSIE EN A ANBEVELINGEN
algoritmes die geïmplementeerd kan worden door de OPTI toolbox en is de enige in deze toolbox die geschikt is voor geheeltallige optimalisatie met een black box functie. In hoofdstuk 6 is meer informatie te vinden over dit algoritme en waarom ik voor NOMAD heb gekozen.
De lange termijn strategie geeft met de weersvoorspelling van 23-04-2014 aan dat er 4532 kilometer afgelegd kan worden tijdens de gehele race, dit betekent dat er gemiddeld 56 km/h gereden wordt. Vergeleken met de 90 km/h die gemiddeld in Australië gereden werd is dit heel langzaam. Er zijn meerdere oorzaken voor deze daling in gemiddelde snelheid. De belangrijkste oorzaak is dat de weersvoorspelling van april is gebruikt en het in Zuid-Afrika dus herfst is. Daarnaast is ook de efficiëntie van de auto achteruit gegaan, doordat het zonnepaneel slechter is geworden, duurt de race langer en zijn moeten er meer bergen op woorden gereden. De strategie werkt wel, maar kan nog worden verbeterd en uitgebreid.
Voor de strategie heb ik nog de volgende aanbevelingen, zodat Nuna straks kan winnen in Zuid-Afrika: • Als er betere weersvoorspelling worden gebruikt zal de strategie ook beter worden. Ook kan het samenvoegen van meerdere weersvoorspelling zorgen voor een meer accurate strategie. • In dit project is een strategie bepaald die alleen werkt voor de gehele race. Tijdens de race kan veel veranderen en is het dus belangrijk dat er op elk moment een nieuwe strategie bepaald kan worden. De functie om de route te laden is zodanig gemaakt dat het mogelijk is om op elk moment van de race de route te laden. Alleen de race-simulatie moet dan nog aangepast worden zodat deze ook werkt op elk moment van de race. • Voor de optimalisatie geldt dat hier niet voldoende tijd voor was en er dus geen grondig onderzoek naar gedaan kon worden. Hier zou nog een vervolg onderzoek op gedaan kunnen worden. • Aan de visualisatie van de strategie is in dit project niet veel aandacht aan besteed. Het is wel handig om een goede visualisatie te hebben voor tijdens de race. Van deze aanbevelingen is vooral de tweede erg belangrijk om straks een goede race te kunnen rijden. Ik raad daarom aan om met deze uitbreiding van de strategie te beginnen en daarna pas de andere aspecten te gaan verbeteren.
B IBLIOGRAFIE [1] V. de Geus, Optimization and control strategy of the nuna solarcar, (2008). [2] J. Currie and D. I. Wilson, OPTI: Lowering the Barrier Between Open Source Optimizers and the Industrial MATLAB User, in Foundations of Computer-Aided Process Operations, edited by N. Sahinidis and J. Pinto (Savannah, Georgia, USA, 2012). [3] P. Bonami and J. Lee, Bonmin users’ manual, https://projects.coin-or.org/Bonmin/browser/ stable/1.7/Bonmin/doc/BONMIN_UsersManual.pdf?format=raw (2013). [4] T. Achterberg, Scip: Solving constraint integer programs, Mathematical Programming Computation 1, 1 (2009), http://mpc.zib.de/index.php/MPC/article/view/4. [5] M. Abramson, C. Audet, G. Couture, J. Dennis, Jr., S. Le Digabel, and C. Tribes, The NOMAD project, Software available at http://www.gerad.ca/nomad. [6] C. Audet and J. E. Dennis Jr, Mesh adaptive direct search algorithms for constrained optimization, SIAM Journal on optimization 17, 188 (2006). [7] C. Audet, S. Le Digabel, and C. Tribes, NOMAD user guide, Tech. Rep. G-2009-37 (Les cahiers du GERAD, 2009). [8] S. Le Digabel, Algorithm 909: NOMAD: Nonlinear optimization with the MADS algorithm, ACM Transactions on Mathematical Software 37, 1 (2011). [9] D. Carroll, The Winning Solar Car: A Design Guide for Solar Race Car Teams, R: Society of Automotive Engineers (SAE International, 2003). [10] P. Pudney and U. of South Australia, Optimal Energy Management for Solar-powered Cars (University of South Australia).
23