initialization within openmodelica · lennart a. ochel, m.sc. bielefeld university of applied...

Post on 21-Aug-2019

215 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related