[英]Python GEKKO for PID Tuning
我正在學習 apmonitor.com 的(非常棒! )過程動力學和控制課程,並且有一個關於使用 GEKKO 模擬(和優化)PID 控制參數的問題。
從示例14 開始。PID_Control_Tuning我想知道如何處理物理上受限的 output (OP) 范圍的進程。 (以 TCLab 加熱器為例,它限制為滿量程 output 的 0-100%。)
如果示例中的“step”變量更改為:
step[40:] = 15.0 # Increase Step Size from 5.0 to 15.0
那么(無量綱的)output(OP)值在 time=40 是 150。
如果我使用以下方法將 LOWER 和 UPPER 邊界添加到 OP 變量:
#OP = m.Var(value=0.0) # Original
OP = m.Var(value=0.0, lb=0.0, ub=100.0)
model 無法解決並導致Exception: @error: Solution Not Found
在 GEKKO 中模擬受硬限制(如 0%-100%)限制的過程的正確方法是什么?
與 MPC 不同,PID controller 不是基於優化的算法。 如果您模擬 PID controller,則 OP 不是可以受“lb”和“ub”限制的決策變量。
在模擬 PID controller 時,您可能還想使用 Gekko 模擬模式(imode=4 或 7)。
OP 值是 PID 計算的結果。 因此,您需要讓 PID 計算 OP 值,而不考慮物理限制。 然后,您添加附加條件來處理物理限制,如下所示。 您還需要添加防飽和(重置積分)邏輯。
if OP[i]>=100: # upper limit
OP[i] = 100.0
I[i] = I[i-1] # reset integral
if OP[i]<=0: # lower limit
OP[i] = 0.0
I[i] = I[i-1] # reset integral
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.