我是使用Pyomo的新手,所以如果这是一个基本问题,我会提前道歉。那么,我正在使用动力学模型,我的目标是估计动力学参数。为了更好地理解Pyomo,我尝试了一个“玩具模型”,然后尝试了复杂的模型。
所以,我的玩具模型是一个简单的3个等式的ODE系统:
dX1/dt = -k1*X1
dX2/dt = k1*X1 - k2*X2
dX3/dt = k2*X2我的目标是估计参数k1和k2。我稍微更改了这个tutorial的代码,如下所示:
from pyomo.environ import *
from pyomo.dae import *
model = AbstractModel()
model.t = ContinuousSet()
model.MEAS_t = Set(within=model.t)
model.x1_meas = Param(model.MEAS_t)
model.x2_meas = Param(model.MEAS_t)
model.x3_meas = Param(model.MEAS_t)
model.x1 = Var(model.t)
model.x2 = Var(model.t)
model.x3 = Var(model.t)
model.k1 = Var(bounds=(0,3))
model.k2 = Var(bounds=(0,3))
model.x1dot = DerivativeVar(model.x1,wrt=model.t)
mode