yhkn.net
当前位置:首页 >> mAtlAB 非线性约束最优化问题,希望给出代码 >>

mAtlAB 非线性约束最优化问题,希望给出代码

先建立M文件fun.m定义目标函数:function f=fun(x)f=((x(1)+1)^2+4*(x(2)-1.5)^2)*((x(1)-1.2)^2+0.4*(x(2)-0.5)^2);再建立M文件mycon.m定义非线性约束:function [g,ceq]=mycon(x)g=[2*x(1)-x(1)*x(2)+5*x(2)-6;x(1)-x(2)+0.5;x(1)^2-4*x(2)^2+x(2)];ceq=0

用matlab的 fmincon()函数可以求得,该问题的极小值.即x=1.5833,y=3,z=3.9861实现上述的方法:function z =myfun(x) z=x(1).^2+(x(1)-x(2)).^2-x(1)./x(2);end[x,fval,exitflag] = fmincon(@(x) myfun(x),[1,1],[],[],[],[],[1,3],[5,10])

此题的问题描如下图.由于本经验主要是谈非线性约束下的最优化问题,对于其他线性约束就不再考虑.然后启动matlab.新建一个函数文件,用来写目标函数.在编辑器窗口中写入我们要求的目标函数,并保存,注意使函数名与文件名相同.然后再新建一个函数文件,用来编写非线性约束条件.步骤及其注意事项同上.额外需要注意的是,需要将两个函数文件放在同一个文件夹中.最后,在命令行窗口处写入fmincon命令.此处需要注意的是,对于没有的线性约束条件的位置药用空矩阵代替,并且初始条件需要满足非线性约束条件(本例中写的是[1,2]).敲下键盘上的enter建,结果得出.可以发现exitflag=1是大于0的,所以结果正确.

function aamyfun=@(x)0.00613*(x(1)^2-x(2)^2)*x(3);option=optimset('Algorithm','sqp');[x,fval]=fmincon(myfun,[1;1;11],[],[],[],[],[],[],@mycon,option)endfunction [c,ceq] = mycon(x)c(1)=41.67*x(3)/x(1)^3*(1-(x(2)/x(1))^4)-1;c(2)=2.5/x(1)^3*(1-(x(2)/x(1))^4)-1;c(3)=10-x(3);ceq=[];end

试下附件中的fminsearchbnd函数,请把fminsearchbnd.m文件放在你的工作路径中.fminsearchbnd(@(x)f(x(1),x(2),x(3)), [0;0;0], [0;0;0], [30;30;2])ans = 15.0848 20.5081 0.5452此文件下载自Fileexchange,作者:JohnD'Errico

先建立M文件fun.m定义目标函数:function f=fun(x)f=((x(1)+1)^2+4*(x(2)-1.5)^2)*((x(1)-1.2)^2+0.4*(x(2)-0.5)^2);再建立M文件mycon.m定义非线性约束:function [g,ceq]=mycon(x)g=[2*x(1)-x(1)*x(2)+5*x(2)-6;x(1)-x(2)+0.5;x(1)^2-4*x(2)^2+x(2)];ceq=0

在MATLAB的M文件编辑窗口中编入目标函数(obj_fun.m)以及非线性的约束条件(nl_con_fun.m)的M文件.在MATLAB的命令窗口中输入所需参数:A=[…];B=[…];Aeq=[…];Beq=[…];LB;UB以及X0等.最后在命令窗口中输入命令:[x,obj_value,EXITFLAG]=FMINCON('obj_fun',X0,A,B,Aeq,Beq,LB,UB,'nl_con_fun');如果 (EXITFLAG<=0),则原问题不可行或无解.如果 (EXITFLAG>0),则x与obj_value分别为最优解和目标函数的最优值.

在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function y=zhidao_wtosc(x) y=-(1/2)*(2000-(100*x(1)+250)/(2+0.01*x(

方法/步骤 此题的问题描如下图.由于本经验主要是谈非线性约束下的最优化问题,对于其他线性约束就不再考虑. 然后启动matlab.新建一个函数文件,用来写目标函数. 在编辑器窗口中写入我们要求的目标函数,并保存,注意使函数名与文件名相同.

数学模型:min z=f(x) s.t. Ax<b语法:[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub)例:min f(x)=-5x(1)-4x(2)-6x(3)s.t. x(1)-x(2)+x(3)≤20 3x(1)+2x(2)+4x(3)≤42 3x(1)+2x(2)≤30 x(1),x(2),x(3)≥0f=[-5 -4 -6]A=[1 -1 1;3 2 4;3 2 0]b=[20;42;30]lb=zeros(3,1)[x,fval]=

网站首页 | 网站地图
All rights reserved Powered by www.yhkn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com