Gekko PRED_HOR dan CTRL_HOR vs m.time

Sep 21 2020

Saya mencoba menerapkan pengontrol MPC online dan saya agak bingung tentang apa sebenarnya fungsi m.time.

Dengan m.options.IMODE = 6 #MPCdan m.options.REQCTRLMODE=3, saya mencoba mendefinisikan prediksi dan cakrawala kontrol:

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

Jika saya memahaminya dengan benar ctrl_hordan pred_hormenetapkan berapa banyak langkah waktu yang akan datang yang kita hitung dan pred_timedan ctrl_timemenentukan berapa lama satu langkah waktu. Tetapi masalahnya adalah bahwa pengontrol mengeluarkan kesalahan jika saya tidak mendefinisikan m.time, tetapi apa sebenarnya yang dilakukannya dan mengapa tidak cukup untuk mengatur cakrawala ctrl dan pred dengan langkah waktu masing-masing?

Jawaban

2 JohnHedengren Sep 21 2020 at 22:16

Gekko menggunakan m.timesecara default, bukan CTRL_HORdan PRED_HOR. Anda dapat menentukan cakrawala kontrol / prediksi yang setara di Gekko dengan:

import numpy as np
from gekko import GEKKO

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

Properti CTRL_HORdan PRED_HORsecara opsional digunakan saat CSV_READ=0. Namun, Gekko menggunakan file CSV untuk memasukkan informasi tentang nilai default untuk parameter dan variabel jadi saya tidak menyarankan Anda untuk mematikannya. Penggunaan m.timejuga lebih fleksibel karena Anda dapat memiliki cakrawala kontrol / prediksi yang tidak seragam seperti:

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

Ini membantu untuk memiliki resolusi yang bagus di awal dan kemudian langkah-langkah yang lebih besar untuk menentukan rencana pemindahan kondisi-mapan. Berikut adalah aplikasi MPC TCLab praktis dengan data real-time.