2024-04-28 19:46:20 发布
网友
我想在Gekko中解决一个状态变量具有固定端点条件的最优控制问题。我想知道如何在Gekko中定义一个具有固定终点的最优控制问题,如下所示:
$\min \int_{0}^{1} u^2+(u-x)^2 $ $\dot{x}=x+u$ $x(0)=1$ $x(1)=4$
此外,如何检索目标函数值
您可以使用m.options.OBJFCNVAL检索目标函数值。这里有一个类似于Benchmark problems的脚本(具体请参见1b)
m.options.OBJFCNVAL
import numpy as np from gekko import GEKKO m = GEKKO() nt = 101; m.time = np.linspace(0,1,nt) x = m.Var(1) u = m.Var() p = np.zeros(nt); p[-1] = 1.0; final = m.Param(value=p) m.Equation(x.dt()==x+u) m.Equation(final*(x-4)==0) m.Minimize(m.integral(u**2+(u-x)**2)*final) m.options.IMODE = 6; m.solve() print('Objective: ' + str(m.options.OBJFCNVAL)) import matplotlib.pyplot as plt plt.plot(m.time,x.value,'k:',LineWidth=2,label=r'$x$') plt.plot(m.time,u.value,'b ',LineWidth=2,label=r'$u$') plt.legend(loc='best'); plt.xlabel('Time') plt.show()
您可以使用
m.options.OBJFCNVAL
检索目标函数值。这里有一个类似于Benchmark problems的脚本(具体请参见1b)相关问题 更多 >
编程相关推荐