这个例子展示了一个系统的反馈和前馈增益的设计,这是一种常见的控制器设计技术。在这里,您使用极值寻优控制器跟踪给定的参考对象模型,通过自适应反馈和前馈增益的不确定动态系统。
对于这个例子,考虑下面的一阶线性系统。
在这里, 和 分别为系统的状态输入和控制输入。常数 和 是未知的。
本示例的目标是跟踪以下参考电厂模型的性能,该模型定义了所需的瞬态和稳态行为。
在这里, 参考植物的状态和 为参考信号。
控制信号的目的 是做州吗 不确定系统跟踪参考状态 .
设计的控制器包含一个反馈项, ,和前馈项, .
将这个控制信号代入未知的线性系统动力学。
你可以将这个表达式改写为如下公式所示。
理想情况下,如果系数 和 的标称系统动力学,然后你可以确定控制器增益 利用极点配置技术。这样做将产生以下匹配条件。
当您使用单个增益值作为前馈和反馈增益时,此匹配条件可能不能满足的所有可能值 和 .对于更一般的解决方案,您可以优化两个不同的增益值(多参数优化)。
对于本例,使用下面的未知系统和参考动力学。
在这种情况下,理想的控制增益为 .
为了实现对上述问题的极值寻优控制(ESC)方法,您定义一个目标函数,然后由ESC控制器使其最大化以找到控制器增益 .
对于本例,使用以下目标函数。
下图显示了极值搜索控制的设置。
成本函数由参考系统和实际系统的输出计算得到。
极值寻优控制器更新增益参数。
使用新的增益值更新控制动作。
这个控制动作被应用到实际系统中。
的firstOrderRefTracking_Esc
金宝appSimulink模型实现了这个问题配置。
mdl =“firstOrderRefTracking_Esc”;open_system (mdl)
在这个模型中,您使用极值寻求控制块来优化增益值。
系统动力学和目标子系统包括参考模型、对象(包括实际系统和控制动作)和目标函数计算。这些元素都是用MATLAB函数块实现的。
open_system ([mdl“/系统动力和目标”])
指定增益值的初始猜测值。
IC = 0;
极值搜索控制块使用调制信号来扰动参数值。然后,在计算参数更新之前,对目标函数信号中产生的变化进行解调。为这个块配置寻极值控制参数。
首先指定要调优的参数数量(N
)及学习速率(lr
).
N = 1;lr = 0.55;
通过指定解调和调制信号的频率(ω
)、阶段(phi_1
和phi_2
),其振幅(一个
和b
).
ω= 5;%迫使频率= 1;%解调振幅b = 0.1;%调制振幅phi_1 = 0;%解调相位phi_2 = 0;%调制阶段
对于本例,极值查找控制块被配置为从解调信号中去除高频噪声。设置相应的低通滤波器的截止频率。
omega_lpf = 1;
模拟模型。
sim (mdl);
要检查参考跟踪性能,请查看仿真的状态轨迹。实际的轨迹会在五秒内收敛到参考轨迹。
open_system ([mdl“/系统动力学和目标/状态”])
要检查ESC控制器的行为,首先查看目标函数,它很快达到最大值。
open_system ([mdl“/系统动力和目标/成本”])
通过最大化目标函数,ESC控制器将控制增益值优化到其理想值-2附近。增益值的波动是由极值寻优控制块的调制信号引起的。
open_system ([mdl/系统动力学和目标/增益K])
bdclose (mdl)