简体   繁体   English

带控制变量的 GEKKO 最优控制

[英]GEKKO optimal control with control variables

Hi Everyone, I wrote the code below and normally the variable "y" should converge to "z_obj" but it's not the case.大家好,我写了下面的代码,通常变量“y”应该收敛到“z_obj”,但事实并非如此。 Here's the code and the plot I get这是我得到的代码和 plot

在此处输入图像描述

from gekko import GEKKO
import numpy as np
import matplotlib.pyplot as plt  

m = GEKKO()

m.time = np.linspace(0,10,11)
z=np.repeat(20,11)
z_obj=m.Param(value=z)
y = m.Var(14)
u=m.CV(lb=0)
u.STATUS=1
u.FSTATUS=1
t = m.Param(value=m.time)
m.Equation(y.dt()==u)
m.Equation(u.dt()<=1)
m.Equation(u.dt()>=-5)
m.Obj((y-z_obj)**2)
m.options.IMODE=6
m.solve(disp=False)
plt.plot(m.time,y.value)
plt.xlabel('time')
plt.ylabel('y')
plt.show()

To enforce rate of change constraints on the Manipulated Variable use the DMAXHI and DMAXLO options of the m.MV() type.要对操纵变量实施变化率约束,请使用m.MV()类型的DMAXHIDMAXLO选项。

MV 变化率限制

from gekko import GEKKO
import numpy as np
import matplotlib.pyplot as plt  

m = GEKKO()

m.time = np.linspace(0,10,11)
z=20
y = m.Var(14)
u=m.MV(lb=0)
u.STATUS=1; u.DMAXHI=1; u.DMAXLO=-5
t = m.Param(value=m.time)
m.Equation(y.dt()==u)
m.Obj((y-z)**2)
m.options.IMODE=6
m.solve(disp=False)
plt.subplot(2,1,1)
plt.plot(m.time,y.value,'r--',label='y')
plt.ylabel('y'); plt.legend()
plt.subplot(2,1,2)
plt.plot(m.time,u.value,'b-',label='u')
plt.ylabel('u'); plt.legend()
plt.xlabel('time')
plt.show()

Your current method is to create another m.CV() so that you have the derivatives available.您当前的方法是创建另一个m.CV()以便您可以使用衍生工具。 This also works but creates additional equations for the m.CV() .这也有效,但会为m.CV()创建额外的方程。 There is additional information on m.MV() and m.CV() types in the documentation , in the Quick Start guide , and #17 of 18 in the Gekko examples .有关m.MV()m.CV()类型的附加信息,请参见文档快速入门指南Gekko 示例中的 #17 of 18

I manage to solve it.. i must get rid of u.STATUS =1 and just Keep u.FSTATUS=1.我设法解决它.. 我必须摆脱 u.STATUS =1 并保持 u.FSTATUS = 1。 but i don't know why !但我不知道为什么! any explication please !请解释一下!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM