1 / 6
文档名称:

多变量约束优化算法实例.docx

格式:docx   大小:26KB   页数:6页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

多变量约束优化算法实例.docx

上传人:guoxiachuanyue 2022/11/26 文件大小:26 KB

下载得到文件列表

多变量约束优化算法实例.docx

文档介绍

文档介绍:该【多变量约束优化算法实例 】是由【guoxiachuanyue】上传分享,文档一共【6】页,该文档可以免费在线阅读,需要了解更多关于【多变量约束优化算法实例 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。1、非线性不等式约束
【例1】已知f(x)=exi*(4X]2+2x22+4X]X2+2x?+1),且满足非线性约
束:
求minf(x)。
x
(xx—x—x<-
{1212xx>-10
12
分析】fmincon函数要求的约束一般为c(x)<0。故对约束条件要变形。
程序清单】
%编写目标函数:functiony=objfun(x)
y=exp(x(1))*(4*x(1)A2+2*x(2F2+4*x(1)*x(2)+2*x(2)+1);
%编写返回约束值得函数:
function[c,ceq]=confun(x)
%非线性不等式约束
c=[+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];
%线性等式约束
ceq=[];
x0=[-1,1];
%采用标准算法
options=optimset('largescale','off');%这是对寻优函数搜索方式的设定
LargeScale指大规模搜索,off表示在规模搜索模式关闭。
[x,fval]=fmincon('objfun',x0,[],[],[],[],[],[],'confun',options)
【输出结果】
x=
-
fval=

2、边界约束问题
【例2】已知f(x)=exi*(4x/+2x22+4xix2+2x?+1),求minf(x)。
x
厂士(xx—x—xS—
且满足非线性约束:{12xx1>—10
12
(x>0
边界约束:[x1>0
【分析】此类问题在非线性约束的基础上增加了变量x的边界条件,在fmineon函数输入参数中加上Ib和ub参数即可。
【程序清单】
%编写目标函数:
functiony=objfun(x)
y=exp(x(1))*(4*x(1)A2+2*x(2F2+4*x(1)*x(2)+2*x(2)+1);
%编写返回约束值得函数:
function[c,ceq]=confun(x)
%非线性不等式约束
e=[+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];
%线性等式约束
eeq=[];
x0=[-1,1];
%设置下界
Ib=[0,0];
%无上界
ub=[];
%采用标准算法
options=optimset('largeseale','off');%这是对寻优函数搜索方式的设定,LargeSeale指大规模搜索,off表示在规模搜索模式关闭。
[x,fval]=fmineon('objfun',x0,[],[],[],[],Ib,ub,'eonfun',options)
输出结果】
x=

fval=

>>[c,ceq]=confun(x)
c=
-
-
ceq=

3、利用梯度求解约束优化问题
【例3】已知f(x)=exi*(4x/+2x22+4x】x2+2x?+1),且满足非线性约+(xx—x—xS-*、
束:{12xx1>-—10,求minf(x)。
12x
【分析】一般来说,标准算法求解函数的最小值常使用由有限差分逼近的到的离散数字梯度,在这个过程中,为了计算目标函数约束的偏微分,所有变量被系统地加以调动。当使用梯度求解上述问题时,效率更高并且结果更精确。
dfex1*dx=[
(8*x(1)+4*x(2))
题目中目标函数的偏微分为:
(4x12+2x22+4x1x2+2x2+1)+ex1*
ex1*(4x1+4x2+2)
程序清单】
%编写目标函数和梯度的m文件:function[f,g]=objfun(x)
f=exp(x(1))*(4*x(1)^2+2*x(2)T+4*x(1)*x(2)+2*x(2)+1);
t=exp(x(1))*(4*x(1)A2+2*x(2F2+4*x(1)*x(2)+2*x(2)+1);
%g中包涵着目标函数的偏微分信息
g=[t+exp(x(1))*(8*x(1)+4*x(2));exp(x(1))*(4*x(1)+4*x(2)+2)];
x=
x=
%:
function[c,ceq,dc,dceq]=confun(x)
%不等式约束
c=[+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];
%约束的梯度
dc=[x(2)-1,-x(2);x(1)-1,-x(1)];
%没有非线性约束
ceq=[];
dceq=[];
%de的列包涵着不同约束各自的偏微分,也就是说,de的第i列是第i个约束条
de】
件对x的偏微分,在此处de为:
Ox】de】
dx1込
=
x-】-x
2】]
x-】-x
】2
-dx2
dx2
--
x0=[-1,1];
%设置下界
Ib=[0,0];
%无上界
ub=[];
%采用标准算法
options=optimset('largeseale','off');%这是对寻优函数搜索方式的设定
LargeSeale指大规模搜索,off表示在规模搜索模式关闭。
options=optimset(options,'GradObj','on','GradConstr','on');
[x,fval]=fmineon('objfun',x0,[],[],[],[],Ib,ub,'eonfun',options)
>>[e,eeq]=eonfun(x)
【输出结果】

ceq=x(1)八2+x(2)-1;%是否可以加[]ceq=[x(1)八2+x(2)-1];
fval=

>>[c,ceq]=confun(x)c=
0
-10
ceq=
[]
4、等式约束优化
【例4】已知f(x)=exi*(4x/+2x22+4x】x2+2x?+1),且满足非线性约X1X2-X1-X2^-1'5
束:{x1x2>-10求minf(x)。
x12+x2-1=0x
【分析】
此问题在前述问题的基础上增加了一个等式约束,等式约束的信息可以含在
MATLAB优化工具箱函数的输入参数:矩阵Aeq和向量b中,为符合优化函数的
调用形式,将约束转化为
【程序清单】
xx—x—x+<01212
-10-xx<0
12
x2+x-1=0
12
%编写目标函数:functionf=objfun(x)
f=exp(x(1))*(4*x(1)^2+2*x(2)T+4*x(1)*x(2)+2*x(2)+1);
%编写返回约束值得函数:
function[c,ceq]=confun(x)
%非线性不等式约束
c=[+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];
%线性等式约束
x0=[-1,1];
%无边界约束
Ib=[];
ceq=x(1)八2+x(2)-1;%是否可以加[]ceq=[x(1)八2+x(2)-1];
ub=[];
%采用标准算法
options=optimset('largescale','off');%这是对寻优函数搜索方式的设定
LargeScale指大规模搜索,off表示在规模搜索模式关闭。
[x,fval]=fmincon('objfun',x0,[],[],[],[],Ib,ub,'confun',options)
【输出结果】
x=
-
fval=

>>[c,ceq]=confun(x)
c=

-
ceq=