有人知道解决随机最优控制问题的python软件包吗?
我找到了可以解决控制问题的Gekko,但是找不到用于解决随机问题的方法。
答案 0 :(得分:3)
下面是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)还概述了其他最佳控制包。其中一些可能具有随机优化功能。我还找到了StoDynProg Python程序包,用于解决随机最优控制问题,但是一段时间未进行更新,因此我没有经验。 Victor Zavala分享了stochastic optimal control of gas networks的工作,而Fengqi You分享了optimization under uncertainty的工作,它们也可能提供他们使用的灵感和工具集。