Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied...
-
Upload
trankhuong -
Category
Documents
-
view
220 -
download
0
Transcript of Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied...
Initialization within OpenModelica
Lennart A. Ochel, M.Sc.
Bielefeld University of Applied Sciences
Initialization within OpenModelica
Motivation for Initialization
04/02/2013 2
ordinary differential equations• initial value problem
high-level description of parameters
high-level descripton of discrete variables
Initialization within OpenModelica
Outline
Conclusion and Outlook
Numeric Method
Modelica andInitialization
Symbolic Method
MathematicalRepresentation
04/02/2013 3
Initialization within OpenModelica
Modelica and Initialization
model InitSampleModelResistor R1(R=270); Resistor R2(R=470); Capacitor C(C=1e-6); Inductor L(L=1e-3); Vsource A(U(fixed=false, start=1));Ground g;
initial equationder(L.i1) = 0;der(C.v) = 0;R1.v = 2;
equationconnect(A.p, R1.p); connect(A.p, R2.p); connect(A.n, C.n); connect(A.n, L.n); connect(A.n, g.p); connect(R1.n, C.p); connect(R2.p, L.p);
end InitSampleModel;
04/02/2013 4
Example
Initialization within OpenModelica
Modelica and Initialization
model InitSampleModelResistor R1(R=270); Resistor R2(R=470); Capacitor C(C=1e-6); Inductor L(L=1e-3); Vsource A(U(fixed=false, start=1));Ground g;
initial equationder(L.i1) = 0;der(C.v) = 0;R1.v = 2;
equationconnect(A.p, R1.p); connect(A.p, R2.p); connect(A.n, C.n); connect(A.n, L.n); connect(A.n, g.p); connect(R1.n, C.p); connect(R2.p, L.p);
end InitSampleModel;
• initial equation
• initial algorithm
• initial()
• homotopy(…)
• variable-attributes
• fixed
• start
• nominal
• min/max
04/02/2013 5
Example Linguistic Devices
Initialization within OpenModelica
Mathematical Representation
04/02/2013 6
Initialization within OpenModelica
Mathematical Representation
name description
𝑥 𝑡 vector of all states
𝑥 𝑡 vector of all derived states
𝑦 𝑡 vector of all algebraic variables
d 𝑡 vector of all discrete variables
𝑝 vector of all parameters
𝑡 simulation time
𝑡0 initialization time
0 =!𝐹 𝑥 𝑡 , 𝑥 𝑡 , 𝑦 𝑡 , 𝑑 𝑡 , 𝑑𝑝𝑟𝑒 𝑡𝑒 , 𝑝, 𝑡
𝑧 𝑡 = 𝑓 𝑥 𝑡 , 𝑑 𝑡 , 𝑑𝑝𝑟𝑒 𝑡𝑒 , 𝑝, 𝑡⇔ 𝑧 𝑡 = 𝑓 𝜔, 𝑑 𝑡 , 𝑝𝑓𝑖𝑥𝑒𝑑, 𝑡
0 =!𝑟𝑒𝑠 ≔ 𝐻 𝑥 𝑡0 , 𝑥 𝑡0 , 𝑦 𝑡0 , 𝑑 𝑡0 , 𝑑𝑝𝑟𝑒 𝑡0 , 𝑝, 𝑡0
⇔ 0 =!𝑟𝑒𝑠 ≔ 𝐻 𝜔, z 𝑡0 , 𝑑 𝑡0 , 𝑝𝑓𝑖𝑥𝑒𝑑, 𝑡0
04/02/2013 7
Variables Equation Systems
𝑝 ≔ 𝑝𝑓𝑖𝑥𝑒𝑑 𝑝𝑓𝑟𝑒𝑒 ⊤
𝜔 ≔ 𝑥 𝑡0 𝑝𝑓𝑟𝑒𝑒 𝑑𝑝𝑟𝑒 𝑡0⊤
𝑧 𝑡 ≔ 𝑥 𝑡 𝑦 𝑡 ⊤
Initialization within OpenModelica
Mathematical Representation
0 =! 𝐹 𝑥 𝑡0 , 𝑥 𝑡0 , 𝑦 𝑡0 , 𝑑 𝑡0 , 𝑑𝑝𝑟𝑒 𝑡0 , 𝑝, 𝑡0
𝐻 𝑥 𝑡0 , 𝑥 𝑡0 , 𝑦 𝑡0 , 𝑑 𝑡0 , 𝑑𝑝𝑟𝑒 𝑡0 , 𝑝, 𝑡0
min𝜔,𝑧 𝑡0
𝑓 𝜔, 𝑧 𝑡0 , 𝑑 𝑡0 , 𝑑𝑝𝑟𝑒 𝑡0 , 𝑝𝑓𝑖𝑥𝑒𝑑, 𝑡0
s.t.𝑔 𝜔, 𝑧(𝑡0), 𝑑 𝑡0 , 𝑑𝑝𝑟𝑒 𝑡0 , 𝑝𝑓𝑖𝑥𝑒𝑑, 𝑡0 = 0
𝜔𝑚𝑖𝑛 ≤ 𝜔 ≤ 𝜔𝑚𝑎𝑥
𝑧𝑚𝑖𝑛 ≤ 𝑧 ≤ 𝑧𝑚𝑎𝑥
04/02/2013 8
Non-linear System of Equations Non-linear Optimization
𝑝 ≔ 𝑝𝑓𝑖𝑥𝑒𝑑 𝑝𝑓𝑟𝑒𝑒 ⊤
𝜔 ≔ 𝑥 𝑡0 𝑝𝑓𝑟𝑒𝑒 𝑑𝑝𝑟𝑒 𝑡0⊤
𝑧 𝑡 ≔ 𝑥 𝑡 𝑦 𝑡 ⊤
Initialization within OpenModelica
Mathematical Representation
0 =! 𝐻 𝜔, z 𝑡0 , 𝑑 𝑡0 , 𝑝𝑓𝑖𝑥𝑒𝑑, 𝑡0
with𝑧 𝑡0 ≔ 𝑓 𝜔, 𝑑 𝑡0 , 𝑝𝑓𝑖𝑥𝑒𝑑, 𝑡0
min𝜔
𝑖
𝐻𝑖 𝜔, z 𝑡0 , 𝑑 𝑡0 , 𝑝𝑓𝑖𝑥𝑒𝑑, 𝑡02→ 0
s.t.𝑧 𝑡0 = 𝑓(𝜔, 𝑑 𝑡0 , 𝑝𝑓𝑖𝑥𝑒𝑑, 𝑡0)
𝜔𝑚𝑖𝑛 ≤ 𝜔 ≤ 𝜔𝑚𝑎𝑥
04/02/2013 9
Non-linear System of Equations Non-linear Optimization
𝑝 ≔ 𝑝𝑓𝑖𝑥𝑒𝑑 𝑝𝑓𝑟𝑒𝑒 ⊤
𝜔 ≔ 𝑥 𝑡0 𝑝𝑓𝑟𝑒𝑒 𝑑𝑝𝑟𝑒 𝑡0⊤
𝑧 𝑡 ≔ 𝑥 𝑡 𝑦 𝑡 ⊤
Initialization within OpenModelica
Numeric Method
04/02/2013 10
Initialization within OpenModelica
Numerical Method
model forest
Real foxes;
Real rabbits;
Real population;
Real value;
[…]
initial equation
der(foxes) = 20;
value = 11000;
equation
der(rabbits) = rabbits*g_r – rabbits*foxes*d_rf;
der(foxes) = -foxes*d_f + rabbits*foxes*d_rf*g_fr;
population = foxes+rabbits;
value = priceFox*foxes + priceRabbit*rabbits;
end forest;
04/02/2013 11
Example [-iim=numeric –iom=nelder_mead_ex]
Initialization within OpenModelica
Numerical Method
model forest
Real foxes;
Real rabbits;
Real population(start=350);
Real value;
[…]
initial equation
der(foxes) = 20;
value = 11000;
equation
der(rabbits) = rabbits*g_r – rabbits*foxes*d_rf;
der(foxes) = -foxes*d_f + rabbits*foxes*d_rf*g_fr;
population = foxes+rabbits;
value = priceFox*foxes + priceRabbit*rabbits;
end forest;
04/02/2013 12
Example [-iim=numeric –iom=nelder_mead_ex]population ≈ 847.078
population ≈ 308.522
Initialization within OpenModelica
Numerical Method
04/02/2013 13
Global Homotopy
0
100
200
300
400
500
600
700
800
900
1000
0 100 200 300 400 500 600 700 800 900 1000
foxes
rabitts
Real population(start=350); Lösungen
0
50
100
150
200
250
300
350
400
0 0,2 0,4 0,6 0,8 1
lambda
rabbits foxes population
solution
Initialization within OpenModelica
Numerical Method
04/02/2013 14
Global Homotopy
0
100
200
300
400
500
600
700
800
900
1000
0 100 200 300 400 500 600 700 800 900 1000
foxes
rabitts
Real population(start=350); Real population(start=850); Lösungen
0
50
100
150
200
250
300
350
400
0 0,2 0,4 0,6 0,8 1
lambda
rabbits foxes population
-100
0
100
200
300
400
500
600
700
800
900
0 0,2 0,4 0,6 0,8 1
lambda
solution
Initialization within OpenModelica
Symbolic Method
04/02/2013 15
Initialization within OpenModelica
Symbolic Method
model forest
Real foxes;
Real rabbits;
Real population;
Real value;
[…]
initial equation
der(foxes) = 20;
value = 11000;
equation
der(rabbits) = rabbits*g_r – rabbits*foxes*d_rf;
der(foxes) = -foxes*d_f + rabbits*foxes*d_rf*g_fr;
population = foxes+rabbits;
value = priceFox*foxes + priceRabbit*rabbits;
end forest;
04/02/2013 16
Example Matching (time-dependent system)
der(foxes)
der(rabbits)
population
value
f1
f2
f3
f4
f1
f2
f3
f4
Initialization within OpenModelica
Symbolic Method
model forest
Real foxes;
Real rabbits;
Real population;
Real value;
[…]
initial equation
der(foxes) = 20;
value = 11000;
equation
der(rabbits) = rabbits*g_r – rabbits*foxes*d_rf;
der(foxes) = -foxes*d_f + rabbits*foxes*d_rf*g_fr;
population = foxes+rabbits;
value = priceFox*foxes + priceRabbit*rabbits;
end forest;
04/02/2013 17
Example Matching (initial system)
der(foxes)
der(rabbits)
population
value
foxes
rabbits
f1
f2
f3
f4
i1
i2
i1
i2
f1
f2
f3
f4
Initialization within OpenModelica
Symbolic Method
model forest
Real foxes;
Real rabbits;
Real population;
Real value;
[…]
initial equation
der(foxes) = 20;
value = 11000;
equation
der(rabbits) = rabbits*g_r – rabbits*foxes*d_rf;
der(foxes) = -foxes*d_f + rabbits*foxes*d_rf*g_fr;
population = foxes+rabbits;
value = priceFox*foxes + priceRabbit*rabbits;
end forest;
04/02/2013 18
Example Matching (initial system)
i1
i2
f1
f2
f3
f4
der(foxes)
der(rabbits)
population
value
foxes
rabbits
f1
f2
f3
f4
i1
i2
Initialization within OpenModelica
Symbolic Method
model forest
Real foxes;
Real rabbits;
Real population;
Real value;
[…]
initial equation
der(foxes) = 20;
value = 11000;
equation
der(rabbits) = rabbits*g_r – rabbits*foxes*d_rf;
der(foxes) = -foxes*d_f + rabbits*foxes*d_rf*g_fr;
population = foxes+rabbits;
value = priceFox*foxes + priceRabbit*rabbits;
end forest;
04/02/2013 19
Example Strong Components
der(foxes) | i1
der(rabbits) | f1
population | f3
value | i2
foxes | f2
rabbits | f4
i1
i2
f1
f2
f3
f4
Initialization within OpenModelica
Symbolic Method
model InitWhenModel
Real lastTime;Real interval(start=0);Boolean condition(start=false, fixed=true);Integer counter(start=0);
equation
condition = time – pre(lastTime) >= interval;when condition then
lastTime = time;counter = pre(counter) + 1;interval = pre(interval) + counter;
end when;
end InitWhenModel;
04/02/2013 20
Example 2
Initialization within OpenModelica
Symbolic Method
model InitWhenModel
Real lastTime;Real interval(start=0);Boolean condition(start=false, fixed=true);Integer counter(start=0);
equation
condition = time – pre(lastTime) >= interval;when condition then
lastTime = time;counter = pre(counter) + 1;interval = pre(interval) + counter;
end when;
end InitWhenModel;
pre(condition) = false; // start-expression
lastTime = pre(lastTime);
counter = pre(counter)
interval = pre(interval)
04/02/2013 21
Example 2 Discrete Initialization
Initialization within OpenModelica
Symbolic Method
model InitWhenModel
Real lastTime;Real interval(start=0);Boolean condition(start=false, fixed=true);Integer counter(start=0);
equation
condition = time – pre(lastTime) >= interval;when condition then
lastTime = time;counter = pre(counter) + 1;interval = pre(interval) + counter;
end when;
end InitWhenModel;
pre(condition) = false; // start-expression
lastTime = pre(lastTime);
counter = pre(counter)
interval = pre(interval)
condition = time – pre(lastTime) >= interval; // true
04/02/2013 22
Example 2 Initial System - under-determined
Initialization within OpenModelica
Symbolic Method
model InitWhenModel
Real lastTime;Real interval(start=0);Boolean condition(start=false, fixed=true);Integer counter(start=0);
equation
condition = time – pre(lastTime) >= interval;when condition then
lastTime = time;counter = pre(counter) + 1;interval = pre(interval) + counter;
end when;
end InitWhenModel;
pre(condition) = false; // start-expression
lastTime = pre(lastTime);
counter = pre(counter)
interval = pre(interval)
condition = time – pre(lastTime) >= interval; // true
04/02/2013 23
Example 2 Initial System - under-determined
lastTime(fixed=true)
counter(fixed=true)
Interval(fixed=true)
Additional Information needed
Initialization within OpenModelica
Symbolic Method
model InitWhenModel
Real lastTime(fixed=true);Real interval(start=0, fixed=true);Boolean condition(start=false, fixed=true);Integer counter(start=0, fixed=true);
equation
condition = time – pre(lastTime) >= interval;when condition then
lastTime = time;counter = pre(counter) + 1;interval = pre(interval) + counter;
end when;
end InitWhenModel;
04/02/2013 24
Example 2 Initial System
pre(lastTime) = 0.0; // start-expression
pre(interval) = 0.0; // start-expression
pre(condition) = false; // start-expression
pre(counter) = 0; // start-expression
condition = time – pre(lastTime) >= interval; // true
lastTime = pre(lastTime);
counter = pre(counter)
interval = pre(interval)
Initialization within OpenModelica
Symbolic Method
model InitWhenModel
Real lastTime;Real interval(start=0);Boolean condition(start=false, fixed=true);Integer counter(start=0);
equation
condition = time – pre(lastTime) >= interval;when {initial(), condition} then
lastTime = time;counter = pre(counter) + 1;interval = pre(interval) + counter;
end when;
end InitWhenModel;
pre(condition) = false; // start-expression
condition = time – pre(lastTime) >= interval; // true
lastTime = time;
counter = pre(counter) + 1;
interval = pre(interval) + counter;
04/02/2013 25
Example 2 Initial System
lastTime(fixed=true)
counter(fixed=true)
Interval(fixed=true)
Additional Information needed
Initialization within OpenModelica
Conclusion and Outlook
04/02/2013 26
Initialization within OpenModelica
Initialization within OpenModelica
• numeric method is not useable for
discrete system-parts
• global-homotopy is quite user-intuitive
• symbolic method is very fast and
accurate
04/02/2013 27
Conclusion
Initialization within OpenModelica
Initialization within OpenModelica
• numeric method is not useable for
discrete system-parts
• global-homotopy is quite user-intuitive
• symbolic method is very fast and
accurate
• introduce the global-homotopy-benefit
within the symbolic method
• introduce handling for over-determined
systems into the symbolic method
04/02/2013 28
Conclusion Outlook
Initialization within OpenModelica
Questions?
04/02/2013 29