www.5129.net > 使用mAtlAB的FminCon优化解决非线性问题,一直报错,求大神解答,小白在线求解答!快速解答有...

使用mAtlAB的FminCon优化解决非线性问题,一直报错,求大神解答,小白在线求解答!快速解答有...

b与A维度不正确,A有14行,对应的b应该有14个参数b=[0 0 0 0 0 0 0 0 D./2-(D+d)./47-160]; 这句应该改成b=[0 0 0 0 0 0 0 0 D./2 -(D+d)./4 7 -1 6 0]; 即把(D./2)(-(D+d)./4)(7)(-1)(6)(0)拆开.这样懂了吧!

这道题我试了fmincon函数,效果不明显,所以改用全局搜索函数GlobalSearch.另外说明一下,这都是求极小值的函数,如果要求m的最大值,那就先求出-m的最小值,其相反数即为最大值.下面给出优化过程:先在m文件中创建约束函数

目标函数(Objective function)应该设置为@(x)-x(1)*x(2)*x(3),像你现在的目标函数是需要三个输入参数的,而fmincon调用它的时候只会提供一个参数,所以导致输入参数不足. 另外,像这种简单的优化问题,其实也可以直接用命令行调用:fmincon(@(x)-x(1)*x(2)*x(3),[10 10 10],[-1 -2 -2;1 2 2],[0 72])

首先需要明确,优化问题一般都要求可行域为闭集,也就是说,不等式约束一般包括等号(“<”应为“<=”),否则,很可能无解. 参考代码: function zd684249545205932052% x(1)-x(4)分别表示a~df=@(x)-(x(1)*x(2)^3-(x(1)-x(4))*(x(2)-2*x(

1、首先,你的参数写错位了A后面应该有b吧?缺少一个参数,是造成目前报错的直接原因. 2、没有非线性约束,则该位置的参数也写成空矩阵 []. 3、传递附加参数的做法,除了你现在使用的参数补位方法外,目前更多的使用匿名函数或嵌套函数的做法. 匿名函数:amr=; bmr=; fmincon(@(x)EE(x,amr,bmr),.) 嵌套函数:function main amr=; bmr=; fmincon(@EE,.) function y=EE(x) . % 此处可使用amr、bmr等诸函数中定义的变量 end end

求解代码如下:function zd1381661017193379500 fmincon(@(x)4*(x(1)-5)^2+(x(2)-6)^2,[5 6],[],[],[],[],[],[],@noncon) function [c,ceq] = noncon(x) c(1)=-(x(1)^2+x(2)^2-64); c(2)=x(2)-x(1)-10; c(3)=x(1)-10; ceq = [];保存成M文件运行即可. 运行输出如

错误是没有定义函数或者'mtimes'有关输入的参数类型有问题

可这样改:%对r进行优化function optimizerfminconra=15;lb=14;ub=16;A=[];b=[];Aeq=[];beq=[];Opt=fmincon(@Goalfunc,ra,A,b,Aeq,beq,lb,ub)%Opt=fminunc(@Goalfunc,15,A,b,Aeq,beq,lb,ub)%目标函数function f=Goalfunc(ra)ticf=ra(1)^2;toc

clear%调整一下初值即可clclb=[-1 -1 -1]';ub=[1 1 1]';[x,fval,exitflag] = fmincon(@(x) x(1)-x(2)*x(3),[0.2,0.5,0.5]',[],[],[],[],lb,ub)

这个和我昨天回答的另一个问题比较接近(链接见参考资料).1、关于Trust-region-reflective算法的警告fmincon默认使用Trust-region-reflective算法,但该类方法对于有些情况不适用(例如存在非线性约束的情况),所以用警告的方式提示你使

相关搜索:

网站地图

All rights reserved Powered by www.5129.net

copyright ©right 2010-2021。
www.5129.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com