主要内容

多目标目标达到情况优化

这个例子展示了如何使用多目标目标达到情况方法解决一个极点配置问题。该算法在函数实现fgoalattain

方程描述系统的进化

考虑一个2-input 2-output不稳定的植物。描述系统的演化方程 x ( t )

d x d t = 一个 x ( t ) + B u ( t ) ,

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

y ( t ) = C x ( t )

的矩阵 一个 , B , C

= (-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];

设置权重等于目标,确保相同比例下,或over-attainment目标。

重量= 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)排序(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黑森修改8 62 -0.3675 0.0001549 1 9 69 -0.3889 0.008326 -0.0075 -0.00812黑森修改两次黑森修改10 0 1 0.00568 11 83 76 -0.3862 -0.3863 -0.998 5.561 e-13 1黑森修改局部最小值的两倍。约束满足。fgoalattain停止,因为当前的搜索方向的大小小于两倍的价值内一步满足尺寸公差和约束约束宽容的价值。

控制参数的值的解决方案是:

K
K =2×2-4.0000 -0.2564 -4.0000 -4.0000

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

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

实现因素表明目标实现的程度。负表明over-achievement成就因素,正表明裹足不前。价值attainfactor我们获得运行表明,目标已经超越了近40%:

attainfactor
attainfactor = -0.3863

通过解决颂歌进化系统

这是系统如何 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)”);

图包含一个坐标轴对象。坐标轴对象包含t, ylabel x (t)包含3类型的对象。这些对象代表x_1 (t) x_2 (t) x_3 (t)。

设定目标实现

假设我们现在需要特征值尽可能接近目标价值观、5、3、1。集options.EqualityGoalCount目标的数量应尽可能接近目标(即。不要试图超越):

所有三个目标应尽可能接近目标。

options.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 -3.469 0.02684 -0.166 0.03722 - 1黑森修改5 41 e-18 9.612 1.117 0.005703 1 -0.116黑森修改6 48 e-18 e-06 1 4.77 -5.805 3.95 e-16黑森修改7 55 e-21 e-11 1 -5.93 e-14黑森当地最低可能的修改。约束满足。fgoalattain停止,因为当前的搜索方向的大小小于两倍的价值内一步满足尺寸公差和约束约束宽容的价值。

控制参数的值在这个解决方案是:

K
K =2×2-1.5953 1.2040 -0.4201 -2.9047

闭环系统的特征值,也在输出fval举行,如下:

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

实现的因素是目标实现的程度。负表明over-achievement成就因素,正表明裹足不前。获得的低attainfactor表明特征值几乎完全满足了目标:

attainfactor
attainfactor = -5.8048 e-21

通过解决颂歌进化的新系统

这是系统如何 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)”);

图包含一个坐标轴对象。坐标轴对象包含t, ylabel x (t)包含3类型的对象。这些对象代表x_1 (t) x_2 (t) x_3 (t)。

另请参阅

相关的话题