Python 如何在最优控制中限制SoC?

Python 如何在最优控制中限制SoC?,python,optimization,controls,gekko,Python,Optimization,Controls,Gekko,我正试图建立这个生理模型。我想模拟运动员的恢复,这类似于电动汽车的充电状态。 我不确定如何限制100%SoC 我遇到的问题是,问题变得非常严重,因为我需要获得以前的SoC来测量当前的SoC。此外,我不确定如何模拟放电率与充电率不相同的事实。 多谢各位 #卸料 W'Exp=(P-CP)*dt soc=soc-W'Exp #如果数据点的功率低于CP或CV,则W'重新组合: W'Rec=(CP-P)*dt 费率=(W'-W'Bal)/W' soc=soc+W'Rec*速率 对于第一个问题,我想SOC是

我正试图建立这个生理模型。我想模拟运动员的恢复,这类似于电动汽车的充电状态。 我不确定如何限制100%SoC

我遇到的问题是,问题变得非常严重,因为我需要获得以前的SoC来测量当前的SoC。此外,我不确定如何模拟放电率与充电率不相同的事实。 多谢各位

#卸料
W'Exp=(P-CP)*dt
soc=soc-W'Exp
#如果数据点的功率低于CP或CV,则W'重新组合:
W'Rec=(CP-P)*dt
费率=(W'-W'Bal)/W'
soc=soc+W'Rec*速率

对于第一个问题,我想SOC是一个变量。变量的上限和下限可设置如下:

m = GEKKO()    
SOC = m.Var(10, lb=0, ub=100)
10是SOC的初始值。
对于第二个问题,是否给出了
P,CP,W'Bal

查看一个Gekko实现的简单能量存储模型,该模型被发现为一个。您可以为运动员修改此模型

将numpy导入为np
将matplotlib.pyplot作为plt导入
将matplotlib.ticker作为mtick导入
从gekko进口gekko
m=GEKKO(远程=False)
t=np.linspace(0,24,24*3+1)
m、 时间=t
m、 options.SOLVER=1
m、 options.IMODE=6
m、 options.NODES=3
m、 options.CV_TYPE=1
m、 options.MAX_ITER=300
p=m.FV()#生产
p、 状态=1
s=m.Var(100,磅=0)#存储库存
存储=m.SV()#存储能量率
vy=m.SV(lb=0)#存储松弛变量
恢复=m.SV()#恢复能量率
vx=m.SV(lb=0)#恢复松弛变量
每股收益=0.7
d=MV(-20*np.sin(np.pi*t/12)+100)
m、 定期的
m、 方程([p+恢复/eps-存储>=d,
p-d==vx-vy,
商店==p-d+vy,
恢复==d-p+vx,
s、 dt()==存储-恢复/eps,
存储*恢复