求高人指教matlab中的fmincon函数!!!为什么就是没得最优结果呢?不晓得哪里错了 10

首先编写目标函数M文件pszdq1.m,返回x处的函数值f。functionf=myfun(x)f=813645.95*3*(x(6)^2-x(5)^2)/(421509... 首先编写目标函数M文件pszdq1.m,返回x处的函数值f。
function f=myfun(x)
f=813645.95*3*(x(6)^2-x(5)^2)/(42150950*x(1)^2*x(2)*1.57*x(4)*x(3)^2*(x(6)^3-x(5)^3));
由于约束条件中有非线性约束,所以需要编写一个描述非线性约束条件的M文件pszdqc.m如下:
function[c,ceq]=mycon(x)
c(1)=1.1*0.5*3.14*x(4)*x(3)^2*(x(6)^3-x(5)^3)/(3*(x(6)^2-x(5)^2))-0.8*1400*9.8*2.286*0.298/2;
c(2)=4*3.14*x(3)^2*x(4)*x(6)*(x(6)^3-x(5)^3)/(3*(x(6)^2-x(5)^2)*(x(6)+x(5))*(x(6)^3-x(5)^3+2*x(6)*x(5)*(x(6)-x(5))))-7*10^6;
c(3)=0.6*9.8*1400*27.8^2*2.286/(2*x(7)*(x(2)^2-x(1)^2)*27.8)-6;
c(4)=1400*8.33^2*2.286/(7233*444*3.14*x(1)^2*x(2))-(15+273.15);
c(5)=1.27-x(6)/x(5);
c(6)=x(6)/x(5)-1.63;
ceq=[];
然后设置线性约束的系数;
A=[0,0,0,1,0,0,0;1,0,0,0,0,0,0;-0.5,0,0,0,0,1,0;0,0,0,0,-1,0,0;0,0,0.5,0,-0.5,-0.5,0];
b=[101000;0.77*0.356;-2;-0.073;-0.073];
给定初值和变量下限约束,并调用优化过程。
x0=[0.267;0.02;0.055;10*10^6;0.13;0.11;0.8726];
lb=zeros(7,1);
options=optimset('LargeScale','off'); [x,fval,exitflag,output,lambda]=fmincon(@pszdq1,x0,A,b,[],[],lb,[],@pszdqc,options);
展开
 我来答
paifu90
2012-05-17 · TA获得超过107个赞
知道答主
回答量:31
采纳率:0%
帮助的人:22.1万
展开全部
优化问题都很复杂的,你确定你的函数有最优解吗?有没有可能你要的是最大值但函数求的是最小值?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式