APMonitor - APMonitor
| Vývojáři | APMonitor |
|---|---|
| Stabilní uvolnění | v0.7.6 / 31. ledna 2018
|
| Úložiště | https://github.com/APMonitor/ |
| Operační systém | Cross-platform |
| Typ | Technické výpočty |
| Licence | Proprietární , BSD |
| webová stránka | Stránka produktu APMonitor |
Advanced process monitor (APMonitor) je modelovací jazyk pro diferenciální algebraické rovnice ( DAE ). Jedná se o bezplatnou webovou službu nebo místní server pro řešení reprezentací fyzických systémů ve formě implicitních modelů DAE. APMonitor je vhodný pro rozsáhlé problémy a řeší lineární programování , celočíselné programování , nelineární programování , nelineární smíšené celočíselné programování, dynamickou simulaci, odhad pohyblivého horizontu a prediktivní řízení nelineárního modelu . APMonitor neřeší problémy přímo, ale volá nelineární programovací řešiče jako APOPT , BPOPT , IPOPT , MINOS a SNOPT . Rozhraní APMonitor API poskytuje řešitelům přesné první a druhé deriváty spojitých funkcí pomocí automatické diferenciace a ve formě řídké matice .
Integrace programovacího jazyka
Julia , MATLAB , Python jsou matematické programovací jazyky, které mají integraci APMonitor prostřednictvím rozhraní API webových služeb. GEKKO Optimization Suite je nedávné rozšíření APMonitor s úplnou integraci Python. Rozhraní jsou integrované optimalizační sady nástrojů nebo moduly pro načítání a procesní řešení problémů s optimalizací. APMonitor je objektově orientovaný modelovací jazyk a sada pro optimalizaci, která při načítání, spouštění a načítání řešení spoléhá na programovací jazyky. Modely a data APMonitor jsou kompilovány za běhu a převedeny do objektů, které jsou řešeny optimalizačním modulem, jako je APOPT nebo IPOPT . Optimalizační modul není specifikován APMonitor, což umožňuje vypnout několik různých optimalizačních motorů. Režim simulace nebo optimalizace je také konfigurovatelný pro rekonfiguraci modelu pro dynamickou simulaci , prediktivní řízení nelineárního modelu , odhad pohyblivého horizontu nebo obecné problémy v matematické optimalizaci .
Jako první krok při řešení problému je matematický model vyjádřen pomocí proměnných a rovnic, jako je Hock & Schittkowski Benchmark Problém č. 71 sloužící k testování výkonu nelineárních programovacích řešičů. Tento konkrétní optimalizační problém má objektivní funkci a podléhá omezení nerovnosti a omezení rovnosti . Čtyři proměnné musí být mezi dolní hranicí 1 a horní hranicí 5. Počáteční odhadované hodnoty jsou . Tento matematický model je přeložen do modelovacího jazyka APMonitor v následujícím textovém souboru.
! file saved as hs71.apm
Variables
x1 = 1, >=1, <=5
x2 = 5, >=1, <=5
x3 = 5, >=1, <=5
x4 = 1, >=1, <=5
End Variables
Equations
minimize x1*x4*(x1+x2+x3) + x3
x1*x2*x3*x4 > 25
x1^2 + x2^2 + x3^2 + x4^2 = 40
End Equations
Problém je pak v Pythonu vyřešen nejprve instalací balíčku APMonitor pomocí pip install APMonitor nebo z následujícího kódu Pythonu.
# Install APMonitor
import pip
pip.main(['install','APMonitor'])
Instalace Pythonu je pro jakýkoli modul vyžadována pouze jednou. Jakmile je balíček APMonitor nainstalován, je importován a funkce apm_solve řeší problém s optimalizací. Řešení se vrátí do programovacího jazyka pro další zpracování a analýzu.
# Python example for solving an optimization problem
from APMonitor.apm import *
# Solve optimization problem
sol = apm_solve('hs71', 3)
# Access solution
x1 = sol['x1']
x2 = sol['x2']
Podobná rozhraní jsou k dispozici pro MATLAB a Julia s drobnými odlišnostmi od výše uvedené syntaxe. Rozšíření schopností modelovacího jazyka je důležité, protože při řešení komplexní optimalizace, dynamické simulace, odhadu nebo problémů s řízením je často vyžadováno výrazné před nebo následné zpracování dat nebo řešení.
DAE s vysokým indexem
Nejvyšší pořadí derivátu, které je nutné k vrácení formuláře DAE do ODE, se nazývá diferenciační index . Standardní způsob, jak se vypořádat s DAE s vysokým indexem, je diferencovat rovnice tak, aby byly ve formě DAE nebo ODE indexu 1 (viz algoritmus Pantelides ). Tento přístup však může způsobit řadu nežádoucích numerických problémů, jako je nestabilita. Zatímco syntaxe je podobná jiným modelovacím jazykům, jako je gProms, APMonitor řeší DAE jakéhokoli indexu bez přeskupení nebo rozlišení. Jako příklad je níže uveden DAE indexu-3 pro rovnice pohybu kyvadla a nižší uspořádání indexů může vrátit tento systém rovnic do formy ODE (viz příklad indexu 0 až 3 kyvadla ).
Pohyb kyvadla (formulář DAE index-3)
Model pendulum
Parameters
m = 1
g = 9.81
s = 1
End Parameters
Variables
x = 0
y = -s
v = 1
w = 0
lam = m*(1+s*g)/2*s^2
End Variables
Equations
x^2 + y^2 = s^2
$x = v
$y = w
m*$v = -2*x*lam
m*$w = -m*g - 2*y*lam
End Equations
End Model
Aplikace v modelovacím jazyce APMonitor
Mnoho fyzikálních systémů je přirozeně vyjádřeno diferenciální algebraickou rovnicí . Některé z nich zahrnují:
- buněčné kultury
- chemické reaktory
- kogenerace (energie a teplo)
- destilační kolony
- automatizace vrtání
- parní destilace silice
- svařování třením za míchání
- tvorba hydrátu v hlubinných potrubích
- šíření infekčních chorob
- oscilátory
- přísná kontrola tlouknutí
- výroba sluneční tepelné energie
- palivové články z pevného oxidu
- simulace startu raketoplánu
- Bezpilotní vzdušné prostředky (UAV)
Níže jsou uvedeny modely pro stejnosměrný motor (DC) a odpověď na glykémii pacienta závislého na inzulínu. Jsou reprezentativní pro diferenciální a algebraické rovnice, se kterými se setkáváme v mnoha oborech vědy a techniky.
Stejnosměrný motor (DC)
Parameters
! motor parameters (dc motor)
v = 36 ! input voltage to the motor (volts)
rm = 0.1 ! motor resistance (ohms)
lm = 0.01 ! motor inductance (henrys)
kb = 6.5e-4 ! back emf constant (volt·s/rad)
kt = 0.1 ! torque constant (N·m/a)
jm = 1.0e-4 ! rotor inertia (kg m²)
bm = 1.0e-5 ! mechanical damping (linear model of friction: bm * dth)
! load parameters
jl = 1000*jm ! load inertia (1000 times the rotor)
bl = 1.0e-3 ! load damping (friction)
k = 1.0e2 ! spring constant for motor shaft to load
b = 0.1 ! spring damping for motor shaft to load
End Parameters
Variables
i = 0 ! motor electric current (amperes)
dth_m = 0 ! rotor angular velocity sometimes called omega (radians/sec)
th_m = 0 ! rotor angle, theta (radians)
dth_l = 0 ! wheel angular velocity (rad/s)
th_l = 0 ! wheel angle (radians)
End Variables
Equations
lm*$i - v = -rm*i - kb *$th_m
jm*$dth_m = kt*i - (bm+b)*$th_m - k*th_m + b *$th_l + k*th_l
jl*$dth_l = b *$th_m + k*th_m - (b+bl)*$th_l - k*th_l
dth_m = $th_m
dth_l = $th_l
End Equations
Odezva glukózy v krvi pacienta závislého na inzulínu
! Model source:
! A. Roy and R.S. Parker. “Dynamic Modeling of Free Fatty
! Acids, Glucose, and Insulin: An Extended Minimal Model,”
! Diabetes Technology and Therapeutics 8(6), 617-626, 2006.
Parameters
p1 = 0.068 ! 1/min
p2 = 0.037 ! 1/min
p3 = 0.000012 ! 1/min
p4 = 1.3 ! mL/(min·µU)
p5 = 0.000568 ! 1/mL
p6 = 0.00006 ! 1/(min·µmol)
p7 = 0.03 ! 1/min
p8 = 4.5 ! mL/(min·µU)
k1 = 0.02 ! 1/min
k2 = 0.03 ! 1/min
pF2 = 0.17 ! 1/min
pF3 = 0.00001 ! 1/min
n = 0.142 ! 1/min
VolG = 117 ! dL
VolF = 11.7 ! L
! basal parameters for Type-I diabetic
Ib = 0 ! Insulin (µU/mL)
Xb = 0 ! Remote insulin (µU/mL)
Gb = 98 ! Blood Glucose (mg/dL)
Yb = 0 ! Insulin for Lipogenesis (µU/mL)
Fb = 380 ! Plasma Free Fatty Acid (µmol/L)
Zb = 380 ! Remote Free Fatty Acid (µmol/L)
! insulin infusion rate
u1 = 3 ! µU/min
! glucose uptake rate
u2 = 300 ! mg/min
! external lipid infusion
u3 = 0 ! mg/min
End parameters
Intermediates
p9 = 0.00021 * exp(-0.0055*G) ! dL/(min*mg)
End Intermediates
Variables
I = Ib
X = Xb
G = Gb
Y = Yb
F = Fb
Z = Zb
End variables
Equations
! Insulin dynamics
$I = -n*I + p5*u1
! Remote insulin compartment dynamics
$X = -p2*X + p3*I
! Glucose dynamics
$G = -p1*G - p4*X*G + p6*G*Z + p1*Gb - p6*Gb*Zb + u2/VolG
! Insulin dynamics for lipogenesis
$Y = -pF2*Y + pF3*I
! Plasma-free fatty acid (FFA) dynamics
$F = -p7*(F-Fb) - p8*Y*F + p9 * (F*G-Fb*Gb) + u3/VolF
! Remote FFA dynamics
$Z = -k2*(Z-Zb) + k1*(F-Fb)
End Equations
Viz také
Reference
externí odkazy
- Domovská stránka APMonitor
- Kurz dynamické optimalizace s APMonitor
- Dokumentace APMonitor
- Citace APMonitor
- Online nástroj pro řešení s IPOPT
- Porovnání populární syntaxe modelovacího jazyka
- Stáhněte si klienta APM MATLAB , APM Python nebo APM Julia pro APMonitor
- Stáhnout APMonitor Server (Windows)
- Stáhnout APMonitor Server (Linux)