如何解决模式 9 不可行 GEKKO
我在模式 6 中成功执行了此模拟,这是一个微藻模型。我想和模式9比较。但是模式9总是不可行的。有什么建议吗? 关于如何修复模式 9? 我尝试了不同的初始条件,但 ti 不起作用
#%% Bennatia Model Dynamic Optimization
#v 2.1
from gekko import GEKKO
import numpy as np
#Initialize model
m = GEKKO (remote=True)
#% Parameters
mu_ = m.Param(value=2,name="u");
rho_m = m.Param(value=9.3,name="rhom");
K_Q = m.Param(value=1.8,name="KQ");
K_s = m.Param(value=0.105,name="KS");
S_in = m.Param(value=100,name="S_in");
K_sI = m.Param(value=150,name="KsI");
K_iI = m.Param(value=2000,name="KiI");
mu_I = m.Param(value=0.6461,name="muI");
# Define Dilution rate as Manipulated variable
D = m.MV(value=0.1,lb=0.001,ub=2);
# Manipulated variable
D.STATUS = 1 # allow optimizer to change
D.dcosT = 0.1 # smooth out D movement
D.DMAX = 0.1 # slow down D
#%% Variables
# Constrains Equations
# x > 0,Q < 8.9969,Q > 1.8,s > 0,s < 120
x = m.Var(value=0.2,lb=0,ub=100,name ='x');
Q = m.Var(value=1.8,lb=1.8,ub=8.9969,name = 'Q');
s = m.Var(value=0.01,name = 's') ;
mu = m.Var(value=0.1,ub=2,name = 'mut');
#time
#t=m.Var(value=0) #for time optimization
tf = 60
nt =15*tf+1
m.time = np.linspace(0,tf,nt)
t = m.Param(value=m.time); # For maximun value
#%% Equations
# m.Equation(t.dt() == 1) # For time optimization only
#For implicit form x.dt() Q.dt() s.dt()
m.Equation(mu == mu_*(1 - K_Q/(Q) )*mu_I);
m.Equation(x.dt() == mu*x - D*x);
m.Equation(Q.dt() == rho_m*((s)/ ((s)+ K_s)) - mu*Q);
m.Equation(s.dt() == (S_in - s)*D - rho_m*((s)/ ((s)+ K_s)) * x);
m.Maximize(D*x)
#%% Solver options
m.options.SENSITIVITY = 1 # sensitivity analysis
m.options.IMODE = 9 # Mode 6 is working
m.solve(disp=True,GUI=True)
m.solve();
print(m.path)
我查看了不可行性文件,但无法理解问题所在。感谢任何指导。
解决方法
在 Gekko 中,有 9 solution modes 由 IMODE
控制:
- 稳态模拟 (SS)
- 模型参数更新 (MPU)
- 实时优化 (RTO)
- 动态模拟 (SIM)
- 移动视界估计 (EST)
- 非线性控制/动态优化 (CTL)
- 顺序动态模拟 (SQS)
- 顺序动态估计 (SQE)
- 顺序动态优化 (SQO)
模式 4 & 7、5 & 8 和 6 & 9 应该给出相同的解决方案,但它们使用不同的解决方案方法。模式 6 和 9 是同时和混合顺序解决方案方法。一般来说,我不推荐 IMODE=8
和 IMODE=9
,因为它们经常找不到解决方案。如果您使用 IMODE=6
获得解决方案,您可以停在那里,或者使用该解决方案来初始化 IMODE=9
的解决方案。
感谢您的回答,我在哪里可以找到与这种混合顺序方法相关的内容,我只是想证明为什么经常失败。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。