主要内容

多目标目标实现优化

这个例子说明了如何使用多目标目标实现方法来解决极点配置问题。该算法在函数中实现fgoalattain

描述系统演化的方程

考虑一个两输入两输出不稳定的设备。描述系统演化的方程 x t

d x d t 一个 x t + B u t

在哪里 u t 为输入(控制)信号。系统的输出为

y t C x t

的矩阵 一个 B , C

A = [-0.5 0 0;2 0 10;0 1 -2];B = [1 0;2 2;0 1];C = [1 0 0;0 0 1];

优化目标

假设控制信号 u t 是否与输出成正比 y t

u t K y t

对于一些矩阵 K

这意味着系统的进化 x t 是:

d x d t 一个 x t + B K C x t 一个 + B K C x t

优化的目标是设计 K 具有以下两个属性:

1.特征值的实部 一个 + B K C 小于[-5,-3,-1]。(在控制文献中,这被称为极点配置。)

2.abs ( K ) <= 4(每个元素 K 介于-4和4之间)

为了求解优化,首先设定多目标目标:

[-5, -3, -1];

设定与目标相等的权重,以确保目标未达到或超额完成的百分比相同。

重量= abs(目标);

初始化输出反馈控制器

K0 = [-1 -1;1 1];

设置控制器上下限

磅= repmat(4、大小(K0))
磅=2×24 -4 -4 -4
乌兰巴托= repmat(4、大小(K0))
乌兰巴托=2×24 4 4 4

设置优化显示参数,在每次迭代时给出输出:

选择= optimoptions (“fgoalattain”“显示”“通路”);

创建一个向量值函数eigfun,它返回闭环系统的特征值。这个函数需要额外的参数(即矩阵) 一个 B , C );最方便的传递方式是通过匿名函数:

eigfun = @(K) sort(eig(A+B*K*C));

调用优化解算器

为了开始优化,我们调用fgoalattain

[K ~ attainfactor] =...fgoalattain (eigfun K0、目标体重 ,[],[],[],[], 磅,乌兰巴托,[]选项);
达到最大线搜索定向Iter F-count因素约束steplength导数过程0 6 0 1.88521 1 13 20 0.3525 0.06863 - 1 -0.613 1.031 0.745 0.02998 - 1 2 3 27 -0.223 -0.1706 0.1071 1黑森修改4 34 -0.234 -0.2236 0.06654 1黑森修改两次5 41 -0.3568 0.007894 -0.0812 6 48 -0.3645 0.000145 1 -0.164黑森修改7 55 -0.3645 0 1 -0.00515 Hessian modified 8 62 -0.3675 0.0001548 1 -0.00812 Hessian modified twice 9 69 -0.3889 0.008327 1 -0.00751 Hessian modified 10 76 -0.3862 0 1 0.00568 11 83 -0.3863 4.926e-13 1 -0.998 Hessian modified twice Local minimum possible. Constraints satisfied. fgoalattain stopped because the size of the current search direction is less than twice the value of the step size tolerance and constraints are satisfied to within the value of the constraint tolerance.

求解时的控制参数值为:

K
K =2×2-4.0000 -0.2564

闭环系统的特征值在eigfun(K)中如下(它们也在输出fval中)

eigfun (K)
ans =3×1-6.9313 -4.1588 -1.4099

实现因素表示目标实现的水平。消极的成就因素表示成就过大,积极的成就不足。我们在这次运行中获得的价值获取因素表明,目标已经超出了近40%:

attainfactor
attainfactor = -0.3863

通过解到ODE的系统演化

系统是这样的 x t 使用计算的反馈矩阵,从时间0演化到时间4 K ,从点x(0) =[1;1;1]开始。

首先解微分方程:

[*, xvals] =数值(@ (u, x) ((A + B * K * C) * x), [0, 4], [1; 1; 1]);

然后绘制结果:

情节,xvals传奇(“x_1 (t)”“x_2 (t)”“x_3 (t)”“位置”“最佳”)包含(“t”);ylabel (“x (t)”);

图中包含一个轴对象。轴对象包含3个类型为line的对象。这些对象代表x_1(t) x_2(t) x_3(t)

准确设定目标

假设我们现在要求特征值尽可能接近目标值[-5,-3,-1]。集选项。EqualityGoalCount目标的数量应尽可能接近目标(即,不要试图超过目标):

这三个目标都应该尽可能接近目标。

选项。EqualityGoalCount = 3;

调用优化解算器

我们准备调用优化求解器:

[K fval attainfactor, exitflag,输出,λ)=...fgoalattain (eigfun K0、目标体重 ,[],[],[],[], 磅,乌兰巴托,[]选项);
达到最大线搜索定向Iter F-count因素约束steplength导数过程0 6 0 1.88521 1 13 20 0.3525 0.06863 - 1 -0.613 1.031 0.745 0.02998 - 1 2 3 27 -0.22 0.1528 -0.009105 1黑森修改4 34 -0.166 0.02684 0.03722 1黑森修改5 41 0 9.646 4.237 0.005702 1 -0.116黑森修改6 48 e-19 e-06 e-17 1 3.654.797e-11 1 -2.24e-14 Hessian修改的局部最小可能。约束满足。Fgoalattain停止是因为当前搜索方向的大小小于步长公差值的两倍,并且约束条件满足到约束公差值之内。

该解决方案下的控制参数值为:

K
K =2×2-1.5954 1.2040 -0.4201 -2.9046

此时闭环系统的特征值也在输出fval中,如下所示:

eigfun (K)
ans =3×1-5.0000 -3.0000 -1.0000

成就因素是目标实现的水平。消极的成就因素表示成就过大,积极的成就不足。得到的低损伤系数表明特征值几乎完全满足目标:

attainfactor
attainfactor = -1.5813 e-21

通过求解ODE的新系统演化

系统是这样的 x t 使用新的计算反馈矩阵,从时间0演化到时间4 K ,从点x(0) =[1;1;1]开始。

首先解微分方程:

[*, xvals] =数值(@ (u, x) ((A + B * K * C) * x), [0, 4], [1; 1; 1]);

然后绘制结果:

情节,xvals传奇(“x_1 (t)”“x_2 (t)”“x_3 (t)”“位置”“最佳”)包含(“t”);ylabel (“x (t)”);

图中包含一个轴对象。轴对象包含3个类型为line的对象。这些对象代表x_1(t) x_2(t) x_3(t)

另请参阅

相关的话题