多目标目标实现优化
这个例子展示了如何使用多目标目标实现方法解决极点放置问题。该算法在函数中实现fgoalattain
.
描述系统演化的方程
考虑一个2输入2输出的不稳定装置。描述系统演化的方程 是
在哪里 是输入(控制)信号。系统输出为
的矩阵 , , 是
A = [-0.5 0 0];0 -2 10;[0 1 -2];B = [10];2 2;[0 1];C = [1 0 0];[0 0 1];
优化目标
假设控制信号 是否与输出成正比 :
对于某个矩阵 .
这意味着系统的演化 是:
优化的目的是设计 具有以下两个属性:
1.特征值的实部 小于[-5,-3,-1]。(这在对照文献中称为极点放置。)
2.abs ( ) <= 4(的每个元素 在-4到4之间)
为了解决优化问题,首先设定多目标目标:
目标= [-5,-3,-1];
设定与目标相等的权重,以确保目标未完成或超额完成的百分比相同。
重量=腹肌(目标);
初始化输出反馈控制器
K0 = [-1 -1;1 1];
设置控制器的上界和下界
lb = repmat(-4,size(K0))
磅=2×2-4 -4 -4 -4
b = repmat(4,size(0))
乌兰巴托=2×24 4 4 4
设置优化显示参数,在每次迭代时给出输出:
选项= optimoptions(“fgoalattain”,“显示”,“通路”);
创建一个向量值函数igfun,返回闭环系统的特征值。这个函数需要额外的参数(即矩阵) , , );传递这些最方便的方法是通过匿名函数:
@(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 76 -0.3862 0 1 0.00568 11 83 -0.3863 5.561e-13 1 -0.998 Hessian修正两次可能的局部最小值。约束满足。由于当前搜索方向的大小小于步长容差值的两倍,并且在约束容差值内满足约束条件,因此停止搜索。
控制参数在解处的值为:
K
K =2×2-0.2564 -4.0000 -4.0000
闭环系统的特征值在igfun(K)中如下(它们也保存在输出fval中)
eigfun (K)
ans =3×1-6.9313 -4.1588 -1.4099
成就因子表示目标实现的程度。负成就因子表示成就过高,正成就因子表示成就不足。我们在这次运行中获得的价值实现因子表明,目标已经超额完成了近40%:
attainfactor
Attainfactor = -0.3863
通过求解ODE的系统演化
这个系统是这样的 使用计算的反馈矩阵,从时间0进化到时间4 ,从点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)”);
准确地设定要实现的目标
假设我们现在要求特征值尽可能接近目标值[-5,-3,-1]。集选项。EqualityGoalCount
对于应该尽可能接近目标的目标数量(即,不要试图超额完成):
所有三个目标都应该尽可能接近目标。
选项。EqualityGoalCount = 3;
呼叫优化求解器
我们准备调用优化求解器:
[K fval attainfactor, exitflag,输出,λ)=…fgoalattain (eigfun K0、目标体重 ,[],[],[],[], 磅,乌兰巴托,[]选项);
最大值线搜索方向Iter F-count因子约束步长导数程序06 0 1.88521 1 13 1.031 0.02998 1 0.745 2 20 0.3525 0.06863 1 -0.613 3 27 0.1528 -0.009105 1 -0.22 Hessian修改4 34 0.02684 0.03722 1 -0.166 Hessian修改5 41 -3.469e-18 0.0057031 1 -0.116 Hessian修改6 48 1.117e-18 9.612e-06 1 3.95e-16 Hessian修改7 55 -5.805e-21 4.77e-11 1 -5.93e-14 Hessian修改局部最小可能值。约束满足。由于当前搜索方向的大小小于步长容差值的两倍,并且在约束容差值内满足约束条件,因此停止搜索。
在此解下控制参数的值为:
K
K =2×2-1.5953 1.2040 -0.4201 -2.9047
此时闭环系统的特征值也保存在输出fval中,如下所示:
eigfun (K)
ans =3×1-5万-3万-1万
成就因素是目标实现的程度。负成就因子表示成就过高,正成就因子表示成就不足。得到的低达致因子表明特征值几乎完全达到了目标:
attainfactor
Attainfactor = -5.8048e-21
通过求解ODE的新系统演化
这个系统是这样的 使用新计算的反馈矩阵,从时间0进化到时间4 ,从点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)”);