资源描述:
《matlab、lingo程序代码16-多目标优化问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、多目标优化与决策的基本方法基于Matlab的一种现代方法ElementaryMethodforMultiobjectiveOptimization&DecisionAModernApproachinMatlab系统工程概论单元讨论目标UnitObject教科书多目标优化问题非劣解及约束法目标规划法扩展到工程领域与非线性优化MatlabR14SP1的OptimizationToolbox详细讲解fgoalattain,大致对应目标规划法,但是扩展到非线性多目标优化的数学描述Multiobjectiveoptimizationmodel注意,这里以及之后的所有讲述同时适合于线性和非
2、线性的多目标优化多目标优化的非劣解集Noninferiorsolutionforthemodel例如:A,B点属于非劣解,因为不满足定义条件②约束法ConstraintMethod原理:选出一个主目标函数Fp,将其余目标函数转换成约束。优点:可以获得加权法在非凸空间漏掉的解,易理解。缺点:①获得合适的非劣解强烈依赖于ε,而ε计算要插值。②且对于n个目标,有rn-1个组合可选择,如何选择缺乏有效方法,每个组合都会获得不同的ε。③选择主目标函数在实际使用中随意性大,有些问题很难确定。④同加权法同样会漏解。⑤计算量大,大规模问题无法使用。……我放弃!目标规划法GoalAttainme
3、ntMethod引入目标概念:F*,令非劣解集到目标的距离(或称范数)最小,选出一个非劣解。Wiγ引入了一个松弛度的概念,松弛度最小的一个非劣解就是对于目标F*的最可行解。优点:不漏解,目标明确,计算量小。缺点:对于非线性规划设计:①运用连续二次形规划(SQP-sequentialquadraticprogramming),线性的权值松弛在局部搜索范围内,会导致拒绝可大幅改进总体目标的小步搜索。②只针对连续问题,可能只能给出局部最优解。改进:阅读MatlabOptimizationToolbox3.0.1User‘sGuide中AlgorithmImprovementsforG
4、oalAttainmentMethod一节内容。Matlab优化工具箱MatlabOptimizationToolbox优化工具箱提供了一般和大型的非线性优化函数,同时还提供了线性规划,二次规划,非线性最小二乘以及非线性方程求解的工具。主要特性:无约束非线性极小化问题约束性线性极小化、极大极小、多目标优化,半无穷极小化问题。二次规划和线性规划问题非线性最小二乘和边界曲线拟合问题非线性系统方程求解问题约束线性最小二乘问题大型问题的特殊算法fgoalattain一般用法Solvemultiobjectivegoalattainmentproblem[x,fval]=fgoalatt
5、ain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)nonlcon是一个用户定义的函数,function[c,ceq]=mycon(x),根据状态向量x计算非线性约束:c(x)<=0和非线性等式约束:ceq(x)=0其中fun(x),c(x)和ceq(x)可以为非线性函数,应该接受和返回向量,x,weight,goal,b,beq,lb和ub为向量,A和Aeq是矩阵。函数fgoalattain返回根据初始x0状态向量,经多目标优化找到的状态向量:x,以及按照这个解计算出的F(x)值向量。fgoalattain实例线性系统输出反馈极
6、点配置BC+AuxyK+线性系统理论P283页结论6.15对于完全能控和能观测n维联系LTI系统,设rank(B)=p,rank(C)=q,则采用输出反馈u=Ky+v,可队数目为min{n,p+q-1}的闭环系统极点进行“任意接近”式配置,即使其可任意地接近人给的期望极点位置。vPracticalfgoalattainseekingKA=[-0.500;0-210;01-2];B=[10;-22;01];C=[100;001];%%%Supposewewishtodesignanoutputfeedbackcontroller,x,tohave%polestotheleftof
7、thelocation[-5,-3,-1]inthecomplexplane.%Thecontrollermustnothaveanygainelementexceedinganabsolute%valueof4.goal=[-5,-3,-1]%%%Settheweightsequaltothegoalstoensuresamepercentage%under-orover-attainmentinthegoals.weight=abs(goal)%%%Initializeoutputfee