目标规划问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9.2.6 目标规划问题
9.2.6.1 基本数学原理
前面介绍的最优化方法只有一个目标函数,是单目标最优化方法。但是,在许多实际工程问题中,往往希望多个指标都达到最优值,所以它有多个目标函数。这种问题称为多目标最优化问题。
多目标最优化问题的数学模型为:
i=1,…,m e
i=m e+1,…,m
其中F(x)为目标函数向量。
由于多目标最优化问题中各目标函数之间往往是不可公度的,因此往往没有唯一解,此时必须引进非劣解的概念(非劣解又称为有效解或帕累托解)。
定义:若x*(x*∈Ω)的邻域内不存在Δx,使得(x*+Δx)∈Ω,且
i=1,…,m
对于某些j
则称为x*非劣解。
多目标规划有许多解法,下面列出常用的几种:
1.权和法
该法将多目标向量问题转化为所有目标的加权求和的标量问题,即
加权因子的选取方法很多,有专家打分法、α方法、容限法和加权因子分解法等。
该问题可以用标准的无约束最优化算法进行求解。
2.ε约束法
ε约束法克服了权和法的某些凸性问题。它对目标函数向量中的主要目标Fp进行最小化,将其它目标用不等式约束的形式写出:
sub. i=1,…,m i≠p
3.目标达到法
目标函数系列为F(x)={F1(x), F2(x),…, F m(x)},对应地有其目标值系列。允许目标函数有正负偏差,偏差的大小由加权系数向量W={W1,W2,…,W m}控制,于是目标达到问题可以表达为标准的最优化问题:
sub. i=1,…,m
指定目标{ },定义目标点P。权重向量定义从P到可行域空间Λ(γ)的搜索方向,在优化过程中,γ的变化改变可行域的大小,约束边界变为唯一解点F1s、F2s。
4.目标达到法的改进
目标达到法的一个好处是可以将多目标最优化问题转化为非线性规划问题,但是,在序列二次规划(SQP)过程中,一维搜索的目标函数选择不是一件容易的事情,因为在很多情况下,很难决定是使目标函数变大好还是使它变小好。这导致许多目标函数创建过程的提出。可以通过将目标达到问题变为最大最小化问题来获得更合适的目标函数。
其中
i=1,…,m
9.2.6.2 相关函数介绍
fgoalattain函数
功能:求解多目标达到问题
数学模型:
其中x, weight, goal, b, beq, lb和ub为向量, A和Aeq为矩阵, c(x), ceq(x)和F(x)
为函数,返回向量。F(x), c(x)和ceq(x)可以是非线性函数。
语法:
x = fgoalattain(fun,x0,goal,weight)
x = fgoalattain(fun,x0,goal,weight,A,b)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,...
lb,ub,nonlcon,options)
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,...
lb,ub,nonlcon,options,P1,P2,...)
[x,fval] = fgoalattain(...)
[x,fval,attainfactor] = fgoalattain(...)
[x,fval,attainfactor,exitflag] = fgoalattain(...)
[x,fval,attainfactor,exitflag,output] = fgoalattain(...)
[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(...)描述:
fgoalattain求解多目标达到问题。
x = fgoalattain(fun,x0,goal,weight)试图通过变化x来使目标函数fun达到goal指
定的目标。初值为x0,weight参数指定权重。
x = fgoalattain(fun,x0,goal,weight,A,b)求解目标达到问题,约束条件为线性不等式
A*x <= b。
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)求解目标达到问题,除提供上面的线性不等式以外,还提供线性等式Aeq*x = beq 。当没有不等式存在时,设置A=[]、b=[]。
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)为设计变量x定义下界lb和上界ub集合,这样始终有lb <= x <= ub。
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon) 将目标达到问题归结为nonlcon参数定义的非线性不等式c(x)或非线性等式ceq(x)。fgoalattain函数优化的约束条件为(x) <= 0和ceq(x) = 0。若不存在边界,设置lb=[]和(或)ub=[]。
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,... options)用options中设置的优化参数进行最小化。
x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,... options,P1,P2,...) 将问题参数P1, P2等直接传递给函数fun和nonlcon。如果不需要参数A, b, Aeq, beq, lb, ub, nonlcon和options,将它们设置为空矩阵。
[x,fval] = fgoalattain(...) 返回解x处的目标函数值。
[x,fval,attainfactor] = fgoalattain(...) 返回解x处的目标达到因子。
[x,fval,attainfactor,exitflag] = fgoalattain(...)返回exitflag参数,描述计算的退出条件。
[x,fval,attainfactor,exitflag,output] = fgoalattain(...)返回包含优化信息的输出参数output。
[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(...) 返回包含拉格朗日乘子的lambda参数。
变量:
goal变量
目标希望达到的向量值。向量的长度与fun函数返回的目标数F相等。fgoalattain 函数试图通过最小化向量F中的值来达到goal参数给定的目标。
nonlcon参数:
该函数计算非线性不等式约束c(x) <=0和非线性等式约束ceq(x)=0。nonlcon函数是一个包含函数名的字符串,该函数可以是M文件、内部函数或MEX文件。
nonlcon函数需要输入向量x,返回两个变量—x处的非线性不等式向量c和x 处的非线性等式向量ceq。例如,若nonlcon='mycon',则M文件的形式如下:function [c,ceq] = mycon(x)
c = ... % 计算x处的非线性不等式。
ceq = ... % 计算x处的非线性等式。
若约束函数的梯度可以计算,且options.GradConstr设为'on',即
options = optimset('GradConstr','on')