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

  • 7
  • 0
  • 约 6页
  • 2017-02-08 发布于北京
  • 举报
多变量约束优化算实法例

1、非线性不等式约束【例1】已知 ,且满足非线性约束:求。【分析】fmincon函数要求的约束一般为 。故对约束条件要变形。【程序清单】%编写目标函数:function y=objfun(x)y=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);%编写返回约束值得函数:function[c,ceq]=confun(x)%非线性不等式约束c=[1.5+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 = -9.5474 1.0474fval =0.02362、边界约束问题【例2】已知 ,求 。且满足非线性约束:边界约束:【分析】此类问题在非线性约束的基础上增加了变量x的边界条件,在fmincon函数输入参数中加上Ib和ub 参数即可。【程序清单】%编写目标函数:function y=objfun(x)y=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);%编写返回约束值得函数:function[c,ceq]=confun(x)%非线性不等式约束c=[1.5+x(1)*x(2)-x(1)-x(2); -x(1)*x(2)-10];%线性等式约束ceq=[];x0=[-1,1];%设置下界Ib=[0,0];%无上界ub=[];%采用标准算法options=optimset(largescale,off); %这是对寻优函数搜索方式的设定,LargeScale指大规模搜索,off表示在规模搜索模式关闭。[x,fval]=fmincon(objfun,x0,[],[],[],[],Ib,ub,confun,options)【输出结果】x = 0 1.5000fval = 8.5000 [c,ceq]=confun(x)c = -0.0000 -10.0000ceq = 0 1.50003、利用梯度求解约束优化问题【例3】已知 ,且满足非线性约束: ,求 。【分析】一般来说,标准算法求解函数的最小值常使用由有限差分逼近的到的离散数字梯度,在这个过程中,为了计算目标函数约束的偏微分,所有变量被系统地加以调动。当使用梯度求解上述问题时,效率更高并且结果更精确。题目中目标函数的偏微分为:【程序清单】%编写目标函数和梯度的m文件:function [f,g]=objfun(x)f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);t=exp(x(1))*(4*x(1)^2+2*x(2)^2+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)];%编写不等式约束及其梯度的.m文件:function[c,ceq,dc,dceq]=confun(x)%不等式约束c=[1.5+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=[];% dc的列包涵着不同约束各自的偏微分,也就是说,dc的第i列是第i个约束条件对x的偏微分,在此处dc为:x0=[-1,1];%设置下界Ib=[0,0];%无上界ub=[];%采用标准算法options=optimset(largescale,off); %这是对寻优函数搜索方式的设定,LargeScale指大规模搜索,off表示在规模搜索模式关闭。options=optimset( options,GradObj,on,GradConstr,on);[x,fval]=fmincon(objfun,x0,[],[],[],[],Ib,ub,confun,options) [c,ceq]=confun(x)【输出结果】x = 0 1.5000fval = 8.5000 [c,ceq]=confun(x)c = 0 -10ceq = []4、等式约束优化【例4】已知 ,且满足非线性约束: 【分析】此问题在前述问题的基础上增加了一个等式约束,等式约束的信息可以含在MATLAB优化工具箱

文档评论(0)

1亿VIP精品文档

相关文档