29
Initialization within OpenModelica Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences

Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

Embed Size (px)

Citation preview

Page 1: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

Initialization within OpenModelica

Lennart A. Ochel, M.Sc.

Bielefeld University of Applied Sciences

Page 2: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 3: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

Initialization within OpenModelica

Outline

Conclusion and Outlook

Numeric Method

Modelica andInitialization

Symbolic Method

MathematicalRepresentation

04/02/2013 3

Page 4: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 5: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 6: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

Initialization within OpenModelica

Mathematical Representation

04/02/2013 6

Page 7: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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⊤

𝑧 𝑡 ≔ 𝑥 𝑡 𝑦 𝑡 ⊤

Page 8: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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⊤

𝑧 𝑡 ≔ 𝑥 𝑡 𝑦 𝑡 ⊤

Page 9: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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⊤

𝑧 𝑡 ≔ 𝑥 𝑡 𝑦 𝑡 ⊤

Page 10: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

Initialization within OpenModelica

Numeric Method

04/02/2013 10

Page 11: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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]

Page 12: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 13: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 14: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 15: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

Initialization within OpenModelica

Symbolic Method

04/02/2013 15

Page 16: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 17: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 18: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 19: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 20: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 21: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 22: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 23: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 24: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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)

Page 25: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 26: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

Initialization within OpenModelica

Conclusion and Outlook

04/02/2013 26

Page 27: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 28: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

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

Page 29: Initialization within OpenModelica · Lennart A. Ochel, M.Sc. Bielefeld University of Applied Sciences. Initialization within OpenModelica Motivation for Initialization 04/02/2013

Initialization within OpenModelica

Questions?

04/02/2013 29