2026a

# wcgain


不确定系统的最坏情况增益

函数库: TyRobustControl

# 语法

wcg,wcu,info = wcgain(usys)
wcg,wcu,info = wcgain(usys,opts)

# 说明

wcg,wcu,info = wcgain(usys) 计算不确定系统 usys 的最坏情况峰值增益。

峰值增益指的是频率上的最大增益(H∞ 范数)。对于多输入多输出(MIMO)系统,增益指的是频率响应矩阵的最大奇异值。(有关奇异值的更多信息,请参见 sigma)输出 wcg 存储最坏情况增益的上界和下界,以及下限达到峰值的临界频率。输出 wcu 存储导致最坏情况峰值增益的不确定元素的具体值。


wcg,wcu,info = wcgain(usys, opts) 指定计算的附加选项。使用 wcOptions 创建选项。

# 示例

闭环系统最坏情况峰值增益

为了检查不确定控制系统的最坏情况性能,创建一个具有积分器标称模型的被控对象,并包括水平为 0.4 的附加未建模动态不确定性(等同于在 2.5 rad/s 时存在 100% 的模型不确定性)。然后设计比例控制器 K1,使标称闭环带宽为 0.8 rad/s。在比标称闭环带宽高 25 倍的频率处衰减 K1。对控制器 K2 进行相同设计,使标称闭环带宽为 2.0 rad/s。每种情况下构造一次闭环灵敏度函数。

using TyRobustControl
using TyControlSystems

P = uss(tf(1,[1, 0])) + ultidyn("delta",[1, 1],Bound=0.4);
BW1 = 0.8;
K1 = tf(BW1,[1/(25*BW1) 1]);
S1 = feedback(uss(1),P*K1);
BW2 = 2.0;
K2 = tf(BW2,[1/(25*BW2) 1]);
S2 = feedback(uss(1),P*K2);

评估闭环灵敏度函数的最坏情况增益:

maxgain1,wcunc1,info1 = wcgain(S1);
maxgain2,wcunc2,info2 = wcgain(S2);
maxgain1
Dict{String, Float64} with 3 entries:
  "LowerBound"        => 1.50675
  "CriticalFrequency" => 4.92388
  "UpperBound"        => 1.50675
maxgain2
Dict{String, Float64} with 3 entries:
  "LowerBound"        => 5.09653
  "CriticalFrequency" => 11.2534
  "UpperBound"        => 5.09654

计算结果表明控制器 K1 的最坏情况性能优于 K2。

# 输入参数

usys - 不确定的动态系统
USS 模型

具有不确定性的动态系统,指定为包含不确定元素的 USS 模型。

opts - 计算差值的选项
WCOptions

最坏情况计算的选项,指定为使用 wcOptions 创建的对象。可用的选项包括以下设置:

  • 提取频率相关的最差情况增益;
  • 检查最坏情况增益对每个不确定元素的敏感性;
  • 通过为底层的 mussv 计算设置某些选项来改进最坏情况增益计算的结果。

详细信息,请参阅 wcOptions

# 输出参数

wcg - 最坏峰值增益和临界频率
Dict

最坏情况峰值增益和临界频率,返回包含以下键的字典:

  • "LowerBound" - 模型的实际最坏情况峰值增益的下界,作为标量值返回。这个值是与最坏摄动 wcu 相对应的峰值增益。确切的最坏情况峰值增益保证不小于 LowerBound;
  • "UpperBound" - 模型的实际最坏情况峰值增益的上界,作为标量值返回。确切的最坏情况峰值增益保证不大于上限;
  • "CriticalFrequency" - 最坏情况峰值增益发生的频率,单位为 rad/TimeUnit,其中 TimeUnit 是 usys 的 TimeUnit 属性。
wcu - 最坏情况扰动
Dict

不确定元素的最坏情况扰动,以结构形式返回,其字段为 usys 中不确定元素的名称。每个字段都包含 usys 中相应不确定元素在发生最坏情况峰值增益时的实际值。例如,如果 usys 包含一个不确定矩阵 M 和 SISO 不确定动力学 delta,那么 wcu["M"] 是一个数值矩阵,而 wcu["delta"] 是一个 SISO 状态空间模型。

info - 关于最坏情况值的附加信息
Dict

关于最坏情况值的附加信息,作为具有以下键的字典返回:

  • "Model": 最坏情况峰值增益最大的模型索引值(适用于模型阵列 usys);

  • "Frequency": wcgain 计算结果对应的频率点,以向量形式返回:

    • 如果 WCOptions 的 VaryFrequency 选项为 false,则 Info["Frequency"] 返回关键频率,即最小裕度发生的频率。如果最小下界和最小上界在不同频率发生,则 Info["Sensitivity"] 是包含这两个频率的向量;
    • 如果 WCOptions 的 VaryFrequency 选项为 true,则 Info["Frequency"] 包含 wcgain 选择的频率。这些频率保证包含稳定裕度最小的频率。

    VaryFrequency 选项适用于 USS 模型。

  • "Bounds": 模型实际最坏情况增益的上下界,以数组形式返回。Info["Bounds"][:,1] 包含 Info["Frequency"] 中每个对应频率的下界,而 Info["Bounds"][:,2] 则包含相应的上界;

  • "WorstPerturbation": Info["Frequency"] 中的每个频率点引起最坏增益的扰动,返回字典形式。Info["WorstPerturbation"] 的键是 usys 中不确定元素的名称,每个键包含相应元素在每个频率上的最坏情况值。例如,如果 usys 包含一个不确定参数 p 和单输入单输出(SISO)的不确定动态 delta,那么 Info["WorstPerturbation"]["p"] 返回一组数值,Info["WorstPerturbation"]["delta"] 返回一组 SISO 状态空间模型;

  • "Sensitivity": 每个不确定元素对最坏情况增益的灵敏度,当 WCOptions 的 Sensitivity 选项为 true 时,以字典形式返回。Info["Sensitivity"] 的键是 usys 中不确定元素的名称。每个键包含一个百分比,表示相应元素的不确定性对最坏情况增益的影响程度。例如,如果 Info["Sensitivity"]["p"] 为 50,则 p 的不确定范围的某一分数变化将导致最坏情况增益发生一半大小的分数变化。

    如果 WCOptions 的 Sensitivity 选项为 false(默认设置),则 Info["Sensitivity"] 返回 NaN。

# 算法

计算特定频率下的最坏增益等同于计算某个适当块结构的结构奇异值 μ(μ 分析)。

对于 USS 模型,wcgain 使用一种跨频率寻找最坏情况增益的算法。该算法不依赖于频率网格,也不会受 μ 结构奇异值峰值的负面影响。

对于 UFRD 模型,wcgain 会计算每个频率点的 μ 下限和上限。这种计算方法无法保证各频率点之间的误差,而且如果不确定性导致剧烈共振,计算结果可能不准确。

一般来说,状态空间模型算法比频率网格方法更快、更安全。但在某些情况下,状态空间算法需要进行大量的 μ 计算。在这种情况下,如果最坏情况下的增益随频率平滑变化,将频率网格指定为向量 w 作为函数输入会提高计算速度(暂不支持该输入)。这种平滑变化是具有动态不确定性的系统的典型特征。

# 另请参阅

mussv | wcOptions | robstab