PROPT
Utvecklare | Tomlab Optimization Inc. |
---|---|
Stabil frisättning | 7.8 / 16 december 2011
|
Operativ system | TOMLAB - OS-stöd |
Typ | Teknisk beräkning |
Licens | Proprietär |
Hemsida | PROPT produktsida |
PROPT MATLAB Optimal Control Software är en ny generations plattform för att lösa tillämpad optimal styrning (med ODE eller DAE -formulering) och problem med parameteruppskattning .
Plattformen utvecklades av MATLAB Programming Contest Winner, Per Rutquist 2008. Den senaste versionen har stöd för binära och heltalsvariabler samt en automatiserad skalningsmodul.
Beskrivning
PROPT är en kombinerad modellerings- , kompilerings- och lösamotor, byggd på TomSym -modelleringsklassen, för generering av mycket komplexa optimala kontrollproblem. PROPT använder en pseudospektral kollokationsmetod (med Gauss- eller Chebyshev-punkter) för att lösa optimala kontrollproblem. Detta innebär att lösningen har formen av ett polynom och detta polynom uppfyller DAE och vägbegränsningarna vid samlokaliseringspunkterna.
Generellt har PROPT följande huvudfunktioner:
- Beräkning av de konstanta matriserna som används för differentieringen och integrationen av polynomen som används för att approximera lösningen på banaoptimeringsproblemet .
- Källomvandling för att omvandla användartillförda uttryck till MATLAB-kod för kostnadsfunktionen och begränsningsfunktionen som skickas till en ickelinjär programmeringslösare i TOMLAB . Källtransformationspaketet TomSym genererar automatiskt första och andra ordningens derivator.
- Funktionalitet för att plotta och beräkna en mängd information för lösningen av problemet.
- Automatisk detektering av följande:
- Linjärt och kvadratiskt mål.
- Enkla gränser, linjära och olinjära begränsningar.
- Ej optimerade uttryck.
- Integrerat stöd för icke-släta (hybrid) optimala kontrollproblem.
- Modul för automatisk skalning av svåra utrymmesrelaterade problem.
- Stöd för binära och heltalsvariabler, kontroller eller tillstånd.
Modellering
PROPT-systemet använder TomSyms symboliska källtransformationsmotor för att modellera optimala kontrollproblem. Det är möjligt att definiera oberoende variabler, beroende funktioner, skalärer och konstantparametrar:
0
0
0
toms tf toms t p = tomPhase ( 'p' , t , , tf , 30 ); x0 = { tf == 20 }; cbox = { 10 <= tf <= 40 }; toms z1 cbox = { cbox ; <= z1 <= 500 }; x0 = { x0 ; z1 == }; ki0 = [ 1e3 ; 1e7 ; 10 ; le-3 ];
stater och kontroller
Stater och kontroller skiljer sig bara åt i den meningen att stater behöver vara kontinuerliga mellan faserna.
0
tomStates x1 x0 = { icollocate ({ x1 == })}; tomControls u1 cbox = { - 2 <= samlokalisera ( u1 ) <= 1 }; x0 = { x0 ; samlokalisera ( u1 == - 0,01 )};
Gräns, väg, händelse och integrerade begränsningar
En mängd olika begränsningar för gränser, vägar, händelser och integrerade begränsningar visas nedan:
cbnd = initial ( x1 == 1 ); % Startpunkt för x1 cbnd = slutlig ( x1 == 1 ); % slutpunkt för x1 cbnd = slutlig ( x2 == 2 ); % Slutpunkt för x2 pathc = samlokalisera ( x3 >= 0,5 ); % Sökvägsbegränsning för x3 intc = { integrera ( x2 ) == 1 }; % Integral begränsning för x2 cbnd = final ( x3 >= 0,5 ); % slutlig händelsebegränsning för x3 cbnd = initial ( x1 <= 2,0 ); % Initial händelsebegränsning x1
Enfas optimal styrning exempel
Van der Pol Oscillator
Minimera:
Med förbehåll för:
För att lösa problemet med PROPT kan följande kod användas (med 60 samlokaliseringspunkter):
0
0 0
0 0
toms t p = tomPhase ( 'p' , t , , 5 , 60 ); setPhase ( p ); tomStates x1 x2 x3 tomControls u % Initial gissning x0 = { icollocate ({ x1 == ; x2 == 1 ; x3 == }) samlokalisera ( u == - 0,01 )}; % Box begränsningar cbox = { - 10 <= icollocate ( x1 ) <= 10 - 10 <= icollocate ( x2 ) <= 10 - 10 <= icollocate ( x3 ) <= 10 - 0,3 <= collocate ( u ) <= 1 }; % Gränsbegränsningar cbnd = initial ({ x1 == ; x2 == 1 ; x3 == }); % ODEs och sökvägsbegränsningar ceq = samlokalisera ({ dot ( x1 ) == ( 1 - x2 .^ 2 ) .* x1 - x2 + u dot ( x2 ) == x1 ; dot ( x3 ) == x1 .^ 2 + x2 .^ 2 + u .^ 2 }); % Målsättning = slutlig ( x3 ); % Lös problemet alternativ = struct ; alternativ . name = 'Van Der Pol' ; lösning = ezsolve ( objektiv , { cbox , cbnd , ceq }, x0 , optioner );
Flerfas optimal styrning exempel
Endimensionell raket med fri sluttid och obestämd fasförskjutning
Minimera:
Med förbehåll för:
Problemet löses med PROPT genom att skapa två faser och koppla ihop dem:
0
0
0
0
0
0
0
0 0
toms t toms tCut tp2 p1 = tomPhase ( 'p1' , t , , tCut , 20 ); p2 = tomPhase ( 'p2' , t , tCut , tp2 , 20 ); tf = tCut + tp2 ; x1p1 = tomState ( p1 , 'x1p1' ); x2p1 = tomState ( p1 , 'x2p1' ); x1p2 = tomState ( p2 , 'x1p2' ); x2p2 = tomState ( p2 , 'x2p2' ); % Initial gissning x0 = { tCut == 10 tf == 15 icollocate ( p1 ,{ x1p1 == 50 * tCut / 10 ; x2p1 == ;}) icollocate ( p2 ,{ x1p2 == 50 + 50 * t / 100 ; x2p2 == ;})}; % Box-begränsningar cbox = { 1 <= tCut <= tf - 0,00001 tf <= 100 <= icollocate ( p1 , x1p1 ) <= icollocate ( p1 , x2p1 ) <= icollocate ( p2 , x1p2 ) <= icollocate ( p2 icol , x2p1 ) )}; % Gränsrestriktioner cbnd = { initial ( p1 ,{ x1p1 == ; x2p1 == ;}) final ( p2 , x1p2 == 100 )}; % ODEs och sökvägsbegränsningar a = 2 ; g = 1 ; ceq = { collocate ( p1 , { dot ( p1 , x1p1 ) == x2p1 dot ( p1 , x2p1 ) == a - g }) collocate ( p2 , { dot ( p2 , x1p2 ) == x2p2 dot ( p2 , x2p2 ) == - g })}; % Objektiv mål = tCut ; % Länkfaslänk = { slutlig ( pl , xlpl ) == initial ( p2 , xlp2 ) final ( pl , x2pl ) == initial ( p2 , x2p2 )} ; %% Lös problemet alternativ = struct ; alternativ . name = 'One Dim Rocket' ; constr = { cbox , cbnd , ceq , länk }; lösning = ezsolve ( objektiv , constr , x0 , optioner );
Exempel på parameteruppskattning
Problem med parameteruppskattning
Minimera:
Med förbehåll för:
I koden nedan löses problemet med ett fint rutnät (10 samlokaliseringspunkter). Denna lösning finjusteras sedan med hjälp av 40 samlokaliseringspunkter:
0
0 0
toms t p1 p2 x1meas = [ 0,264 ; 0,594 ; 0,801 ; 0,959 ]; tmeas = [ 1 ; 2 ; 3 ; 5 ]; % Box-begränsningar cbox = { - 1,5 <= p1 <= 1,5 - 1,5 <= p2 <= 1,5 }; %% Lös problemet genom att använda ett successivt större antal samlokaliseringspunkter för n =[ 10 40 ] p = tomPhase ( 'p' , t , , 6 , n ); setPhase ( p ); tomStates x1 x2 % Initial gissning om n == 10 x0 = { p1 == ; p2 == }; annars x0 = { p1 == p1opt ; p2 == p2opt icollocate ({ x1 == x1opt ; x2 == x2opt })}; slut % Gränsrestriktioner cbnd = initial ({ x1 == p1 ; x2 == p2 }); % ODEs och sökvägsbegränsningar x1err = summa (( atPoints ( tmeas , x1 ) - x1meas ) .^ 2 ); ceq = samlokalisera ({ punkt ( x1 ) == x2 ; punkt ( x2 ) == 1 - 2 * x2 - x1 }); % Målet mål = x1fel ; %% Lös problemet alternativ = struct ; alternativ . name = 'Parameteruppskattning' ; alternativ . solver = 'snopt' ; lösning = ezsolve ( objektiv , { cbox , cbnd , ceq }, x0 , optioner ); % Optimal x, p för startpunkt x1opt = subs ( x1 , lösning ); x2opt = subs ( x2 , lösning ); p1opt = subs ( p1 , lösning ); p2opt = subs ( p2 , lösning ); slutet
Optimala kontrollproblem stöds
- Aerodynamisk bana kontroll
- Bang-bang kontroll
- Kemiteknik
- Dynamiska system
- Generellt optimal kontroll
- Storskalig linjär styrning
- Flerfasig systemkontroll
- Maskinteknisk design
- Icke differentierbar kontroll
- Parametrar uppskattning för dynamiska system
- Singular kontroll