3

我想用 Gekko 中状态变量的固定端点条件来解决最优控制问题。我想知道如何在 Gekko 中定义具有固定端点的最优控制问题,如下所示:

$\min \int_{0}^{1} u^2+(u-x)^2 $

$\dot{x}=x+u$

$x(0)=1$

$x(1)=4$

此外,如何检索目标函数值?

4

1 回答 1

0

您可以使用 检索目标函数值m.options.OBJFCNVAL。这是与一些基准问题类似的脚本(特别是参见 1b)。

优化方案

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()
于 2020-10-12T18:36:09.237 回答