APMonitor - APMonitor

APMonitor
Logo APMonitor2.2.png
Vývojáři APMonitor
Stabilní uvolnění
v0.7.6 / 31. ledna 2018 ( 31. 1. 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í:

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