2024-04-28 21:34:16 发布
网友
有没有人知道一个python包可以解决随机最优控制问题?在
我已经找到了解决控制问题的Gekko,但我找不到一种方法来解决随机问题。在
下面是一个使用Gekko的stochastic model predictive control的最小示例,其中参数K是随机选择的。对模型的10个实例进行了整体优化,以使40(目标)的平方误差最小。在
import numpy as np from gekko import GEKKO import matplotlib.pyplot as plt # uncertain parameter n = 10 K = np.random.rand(n)+1.0 m = GEKKO() m.time = np.linspace(0,20,41) # manipulated variable p = m.MV(value=0, lb=0, ub=100) p.STATUS = 1 p.DCOST = 0.1 p.DMAX = 20 # controlled variable v = m.Array(m.CV,n) for i in range(n): v[i].STATUS = 1 v[i].SP = 40 v[i].TAU = 5 m.Equation(10*v[i].dt() == -v[i] + K[i]*p) # solve optimal control problem m.options.IMODE = 6 m.options.CV_TYPE = 2 m.solve() # plot results plt.figure() plt.subplot(2,1,1) plt.plot(m.time,p.value,'b-',LineWidth=2) plt.ylabel('MV') plt.subplot(2,1,2) plt.plot([0,m.time[-1]],[40,40],'k-',LineWidth=3) for i in range(n): plt.plot(m.time,v[i].value,':',LineWidth=2) plt.ylabel('CV') plt.xlabel('Time') plt.show()
Gekko paper (see Section 4)还提供了其他最优控制包的概述。其中一些可能具有随机优化能力。我还发现了用于解决随机最优控制问题的StoDynProgPython包,但是它已经有一段时间没有更新了,我也没有使用它的经验。Victor Zavala分享了stochastic optimal control of gas networks的工作,Fengqi You分享了optimization under uncertainty的工作,这也可能为他们提供灵感和工具集。在
下面是一个使用Gekko的stochastic model predictive control的最小示例,其中参数K是随机选择的。对模型的10个实例进行了整体优化,以使40(目标)的平方误差最小。在
Gekko paper (see Section 4)还提供了其他最优控制包的概述。其中一些可能具有随机优化能力。我还发现了用于解决随机最优控制问题的StoDynProgPython包,但是它已经有一段时间没有更新了,我也没有使用它的经验。Victor Zavala分享了stochastic optimal control of gas networks的工作,Fengqi You分享了optimization under uncertainty的工作,这也可能为他们提供灵感和工具集。在
相关问题 更多 >
编程相关推荐