APMonitor - APMonitor
| Utvecklare | APMonitor |
|---|---|
| Stabil frisättning | v0.7.6 / 31 januari 2018
|
| Förvar | https://github.com/APMonitor/ |
| Operativ system | Plattformsoberoende |
| Typ | Teknisk beräkning |
| Licens | Proprietär , BSD |
| Hemsida | APMonitors produktsida |
Avancerad processövervakare (APMonitor) är ett modelleringsspråk för differentialalgebraiska ( DAE ) ekvationer. Det är en gratis webbtjänst eller lokal server för att lösa representationer av fysiska system i form av implicita DAE-modeller. APMonitor är lämplig för storskaliga problem och löser linjär programmering , heltalsprogrammering , olinjär programmering , olinjär blandad heltalsprogrammering, dynamisk simulering, rörlig horisontestimering och olinjär modellprognostisk kontroll . APMonitor löser inte problemen direkt, men anropar olinjära programmeringslösare som APOPT , BPOPT , IPOPT , MINOS och SNOPT . APMonitor API tillhandahåller exakta första och andra derivat av kontinuerliga funktioner till lösarna genom automatisk differentiering och i gles matrisform .
Programmeringsspråkintegrering
Julia , MATLAB , Python är matematiska programmeringsspråk som har APMonitor-integration via webbtjänst-API: er. Den GEKKO Optimization Suite är en ny förlängning av APMonitor med fullständig Python integration. Gränssnitten är inbyggda optimeringsverktygslådor eller moduler för både laddning och processlösningar av optimeringsproblem. APMonitor är ett objektorienterat modelleringsspråk och optimeringssvit som bygger på programmeringsspråk för att ladda, köra och hämta lösningar. APMonitor-modeller och data sammanställs vid körning och översätts till objekt som löses av en optimeringsmotor som APOPT eller IPOPT . Optimeringsmotorn är inte specificerad av APMonitor, så att flera olika optimeringsmotorer kan stängas av. Simulerings- eller optimeringsläget är också konfigurerbart för att omkonfigurera modellen för dynamisk simulering , olinjär modellprediktiv kontroll , rörlig horisontestimering eller allmänna problem i matematisk optimering .
Som ett första steg för att lösa problemet uttrycks en matematisk modell i termer av variabler och ekvationer som Hock & Schittkowski Benchmark Problem #71 som används för att testa prestandan hos olinjära programmeringslösare . Just detta optimeringsproblem har en objektiv funktion och är föremål för ojämlikhetsbegränsning och jämlikhetsbegränsning . De fyra variablerna måste ligga mellan en nedre gräns på 1 och en övre gräns på 5. De första gissningsvärdena är . Denna matematiska modell översätts till APMonitors modelleringsspråk i följande textfil.
! 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
Problemet löses sedan i Python genom att först installera APMonitor -paketet med pipinstallera APMonitor eller från följande Python -kod.
# Install APMonitor
import pip
pip.main(['install','APMonitor'])
Att installera en Python krävs bara en gång för någon modul. När paketet APMonitor är installerat importeras det och funktionen apm_solve löser optimeringsproblemet. Lösningen återförs till programmeringsspråket för vidare bearbetning och analys.
# 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']
Liknande gränssnitt är tillgängliga för MATLAB och Julia med mindre skillnader från syntaxen ovan. Att utöka kapaciteten hos ett modelleringsspråk är viktigt eftersom betydande för- eller efterbehandling av data eller lösningar ofta krävs vid lösning av komplex optimering, dynamisk simulering, uppskattning eller kontrollproblem.
DAE med högt index
Den högsta ordningen på ett derivat som är nödvändigt för att returnera en DAE till ODE -form kallas differentieringsindex . Ett vanligt sätt att hantera DAE med hög index är att differentiera ekvationerna för att sätta dem i index-1 DAE- eller ODE-form (se Pantelides-algoritmen ). Detta tillvägagångssätt kan emellertid orsaka ett antal oönskade numeriska problem som instabilitet. Medan syntaxen liknar andra modelleringsspråk som gProms, löser APMonitor DAE för alla index utan omorganisation eller differentiering. Som ett exempel visas en index-3 DAE nedan för pendelrörelsekvationerna och lägre indexarrangemang kan återföra detta ekvationssystem till ODE-form (se Index 0 till 3 Pendulum-exempel ).
Pendelrörelse (index-3 DAE-form)
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
Applikationer i APMonitor Modeling Language
Många fysiska system uttrycks naturligt genom differentiell algebraisk ekvation . Några av dessa inkluderar:
- cellkulturer
- kemiska reaktorer
- kraftvärme (kraft och värme)
- destillationskolumner
- borrautomation
- eterisk oljedestillation
- friktionsrörsvetsning
- hydratbildning i djuphavsrörledningar
- smittsam sjukdom sprids
- oscillatorer
- allvarlig slugningskontroll
- produktion av solenergi
- fasta bränsleceller
- rymdfärja lanseringssimulering
- Obemannade luftfartyg (UAV)
Modeller för en likströmsmotor och blodsockersvar hos en insulinberoende patient listas nedan. De är representativa för differential- och algebraiska ekvationer som påträffas inom många grenar av vetenskap och teknik.
Likströmsmotor (likström)
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
Blodsockersvar hos en insulinberoende patient
! 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
Se även
Referenser
externa länkar
- APMonitors hemsida
- Dynamisk optimeringskurs med APMonitor
- APMonitor -dokumentation
- APMonitor -citat
- Online lösningsmotor med IPOPT
- Jämförelse av populär modellspråksyntax
- Ladda ner APM MATLAB , APM Python eller APM Julia -klienten för APMonitor
- Ladda ner APMonitor Server (Windows)
- Ladda ner APMonitor Server (Linux)