4

我正在研究一个 MPC 问题,其中单个线性模型在预测范围内的每个时间步预测控制变量(见下文,其中 u 是操纵变量,y 是控制变量)。每次窗口移动时,预测范围内的每个线性模型的系数都会根据当前状态变量而变化。

y[i+1] = A[i]@u[i]+B[i]
y[i+2] = A[i+1]@u[i:i+2]+B[i+1]
...
y[i+n] = A[i+n-1]@u[i:i+n]+B[i+n-1]

A 和 B 是由当前状态的函数确定的矩阵列表。我基本上想在每个时间步的开始(优化之前)暂停控制器,并根据系统的反馈重新计算这些系数矩阵。是否可以使用 MPC 模式 (IMODE=6) 在 Gekko 中执行此操作,还是我需要管理 Gekko 之外的时间?

4

2 回答 2

4

你可以通过运行两者来做到这一点MHE and MPC in a row。您希望MHE(imode=5)在每个时间步运行以估计模型参数 A 和 B。然后,在执行MPC(mode=6)计算之前使用新的 A 和 B 更新 MPC 模型。

这是一个使用 MHE 和 MPC 组合进行 TCLab 温度控制的示例。 https://apmonitor.com/do/index.php/Main/TCLabH

您可能需要使用可在此页面上找到的 ARX 类型的模型更改此示例中的模型。 https://apmonitor.com/do/index.php/Main/NonlinearControl

于 2020-12-21T23:38:44.920 回答
2

这是针对您在评论中的后续问题。

只是为了澄清一下,用于 MPC 预测的 ARX 模型结构是否在所有模拟时间步骤中都发生了变化?或者,当您没有足够的过去数据时,它是否仅在模拟开始时发生?

如果是后者,GEKKO 会自动为您处理。

这是 ARX 模型的结构。

在此处输入图像描述

na: # CV 系数
nb: # MV 系数
nk: CV 和 MV 之间的时间延迟长度

Gekko 会自动调整模拟开始时的 na 和 nb ,t < na or t < nb结果与上述原始问题中的公式相同。

于 2020-12-23T18:51:39.410 回答