月光PRED_HORおよびCTRL_HORvs m.time

Sep 21 2020

私はオンラインMPCコントローラーを実装しようとしていますが、m.timeが正確に何をするのかについて少し混乱しています。

とm.options.IMODE = 6 #MPCとm.options.REQCTRLMODE=3、私は予測と制御の視野を定義しよう:

m.options.CTRL_HOR=10
m.options.CTRL_TIME=0.05
m.options.PRED_HOR=10
m.options.PRED_TIME=0.05

私は右のそれを理解していればctrl_horしてpred_horセットをどのように多くの将来の我々は計算タイムステップとpred_timeし、ctrl_time定義はどのくらいの1時間ステップです。しかし、問題は、定義しないとコントローラーがエラーをスローすることですm.timeが、正確には何をし、それぞれのタイムステップでctrlとpredの範囲を設定するだけでは不十分なのはなぜですか?

回答

2 JohnHedengren Sep 21 2020 at 22:16

月光はm.timeデフォルトでCTRL_HORとの代わりにを使用しますPRED_HOR。Gekkoで同等の制御/予測範囲を次のように定義できます。

import numpy as np
from gekko import GEKKO

m = GEKKO()
m.time = np.linspace(0,0.05,11)

CTRL_HOR及びPRED_HOR特性は、必要に応じときに使用されますCSV_READ=0。ただし、月光はCSVファイルを使用してパラメータと変数のデフォルト値に関する情報を挿入するため、オフにすることはお勧めしません。次のm.timeような不均一な制御/予測範囲を持つことができるため、使用もより柔軟になります。

m.time = [0,0.05,0.1,0.2,0.5,1.0]

これは、最初に細かい解決策を取り、次に定常状態の移動計画を決定するためのより大きなステップを用意するのに役立ちます。これは、リアルタイムデータを使用した実用的なTCLabMPCアプリケーションです。