这个例子展示了如何使用多目标目标达成方法解决极点配置问题。该算法在函数中实现fgoalattain
.
考虑一个2输入2输出不稳定的设备。描述系统演化的方程。 是
哪里 是输入(控制)信号。系统的输出为
矩阵 , , 是
A=[-0.50;0-210;01-2];B=[10;-22;01];C=[10;01];
假设控制信号 是否与输出成正比 :
对于某些矩阵 .
这意味着系统的进化 是:
优化的目标是设计 要具有以下两个属性:
1.特征值的实部 小于[-5,-3,-1]。(在控制文献中,这被称为极点配置。)
2.abs( ) <= 4(每个元素 介于-4和4之间)
为了解决优化问题,首先设定多目标目标:
[-5, -3, -1];
将权重设置为与目标相等,以确保目标实现率相同。
体重=绝对值(目标);
初始化输出反馈控制器
K0=[-1-1;-1-1];
设置控制器的上限和下限
lb=repmat(-4,尺寸(K0))
磅=2×24 -4 -4 -4
ub=repmat(4,尺寸(K0))
乌兰巴托=2×24 4 4 4
设置优化显示参数以在每次迭代时给出输出:
选择= optimoptions (“fgoalattain”,“显示”,“国际热核实验堆”);
创建一个向量值函数eigfun,返回闭环系统的特征值。此函数需要附加参数(即矩阵 , , );最方便的传递方式是通过匿名函数:
eigfun = @(K) sort(eig(A+B*K*C));
开始我们称之为fgoalattain
:
[K,~,可达因子]=...fgoalattain(eigfun,K0,目标,重量,[],[],[],[],[],[],[],[],[],磅,ub,[],选项);
达到最大线搜索方向Iter F计数因子约束步长导数程序0 6 0 1.88521 1 13 1.031 0.02998 1 0.745 2 20 0.3525 0.06863 1-0.613 3 3 27-0.1706 0.1071-0.223 Hessian修改4 34-0.2236 0.06654 1-0.234 Hessian修改两次5 41-0.3568 0.007894 1-0.0812 6 48-0.3645 0.000145 1-0.164 Hessian修改d 7 55-0.3645 0 1-0.00515 Hessian修改8 62-0.3675 0.0001548 1-0.00812 Hessian修改两次9 69-0.3889 0.008327 1-0.00751 Hessian修改10 76-0.3862 0 1 0.00568 11 83-0.3863 4.926e-13 1-0.998 Hessian修改两次局部最小值。满足约束条件。由于当前搜索方向的大小,fgoalattain停止小于步长公差值的两倍,且满足的约束在约束公差值范围内。
求解时的控制参数值为:
K
K =2×2-4.0000 -0.2564
闭环系统的特征值在eigfun(K)中如下(它们也在输出fval中)
艾格芬(K)
ans=3×1-6.9313 -4.1588 -1.4099
实现因素表示目标实现的水平。消极的成就因素表示成就过大,积极的成就不足。我们在这次运行中获得的价值获取因素表明,目标已经超出了近40%:
attainfactor
attainfactor = -0.3863
系统是这样的 使用计算出的反馈矩阵,从时间0演变为时间4 ,从点x(0)=[1;1;1]开始。
首先解微分方程:
[*, xvals] =数值(@ (u, x) ((A + B * K * C) * x), [0, 4], [1; 1; 1]);
然后绘制结果:
绘图(时间、xVAL)图例(‘x_1(t)’,‘x_2(t)’,“x_3 (t)”,“位置”,“最好的”)包含(“不”); 伊拉贝尔(‘x(t)’);
假设我们现在要求特征值尽可能接近目标值[-5,-3,-1]。集options.EqualityGoalCount
目标的数量应尽可能接近目标(即,不要试图超过目标):
这三个目标都应该尽可能接近目标。
options.EqualityGoalCount=3;
我们准备调用优化求解器:
[K,fval,可达因子,exitflag,输出,λ]=...fgoalattain(eigfun,K0,目标,重量,[],[],[],[],[],[],[],[],[],磅,ub,[],选项);
达到最大线搜索定向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中,如下所示:
艾格芬(K)
ans=3×1-5.0000 -3.0000 -1.0000
成就因子是目标成就的水平。负成就因子表示成就过高,正成就因子表示成就不足。获得的低成就因子表示特征值几乎完全满足目标:
attainfactor
attainfactor = -1.5813 e-21
系统是这样的 使用新计算的反馈矩阵,从时间0发展到时间4 ,从点x(0)=[1;1;1]开始。
首先解微分方程:
[*, xvals] =数值(@ (u, x) ((A + B * K * C) * x), [0, 4], [1; 1; 1]);
然后绘制结果:
绘图(时间、xVAL)图例(‘x_1(t)’,‘x_2(t)’,“x_3 (t)”,“位置”,“最好的”)包含(“不”); 伊拉贝尔(‘x(t)’);