登录论坛

查看完整版本 : [MATLAB工具箱] 循环调用fmincon工具箱问题


lijun19841022
2009-09-10, 22:11
请大侠给看看我的程序出的问题:

%目标函数m文件:
function f=fun3(x,r)
f=8/(4.4^2)*x(2)*(x(1)-1)*2/3.14*acos(exp((-1.5)*(22-r)/22/sin(atan((1-x(1))/(0.2*r)/(1+x(2))))))*((0.2*r)^3);

**************************

%约束方程m文件:
function [c,ceq]=mycon(x,r)
c=[];
ceq=x(1)*(1-x(1))*2/3.14*acos(exp((-1.5)*(22-r)/22/sin(atan((1-x(1))/(0.2*r)/(1+x(2))))))-x(2)*(1+x(2))*((0.2*r)^2);

*****************************
命令窗口输入:
for r=0:2:22;
b0=10/4.4*exp(12*r/22);
options = optimset('LargeScale','off'); % run medium-scale algorithm
x = fmincon(@(x)fun3(x,r),[0.1776;b0],[],[],[],[],[],[],
@(x)mycon(x,r),options)
a=x(1);
b=x(2);
disp(['a=',num2str(a),',b=',num2str(b)]);
end
********************
运行结果:
Optimization terminated: first-order optimality measure less
than options.TolFun and maximum constraint violation is less
than options.TolCon.

x =

-0.000000000022446
2.272727272727273

a=-2.2446e-011,b=2.2727
Optimization terminated: first-order optimality measure less than options.TolFun
and maximum constraint violation is less than options.TolCon.

x =

0.323692417924452
0.722322735147062

a=0.32369,b=0.72232
Optimization terminated: first-order optimality measure less than options.TolFun
and maximum constraint violation is less than options.TolCon.

x =

0.343711550580153
0.260882339173652

a=0.34371,b=0.26088
Optimization terminated: magnitude of directional derivative in search
direction less than 2*options.TolFun and maximum constraint violation
is less than options.TolCon.

x =

0.349775935555869
0.132437721439401

a=0.34978,b=0.13244
Optimization terminated: first-order optimality measure less than options.TolFun
and maximum constraint violation is less than options.TolCon.

x =

0.351895342659175
0.079118454212966

a=0.3519,b=0.079118
Optimization terminated: first-order optimality measure less than options.TolFun
and maximum constraint violation is less than options.TolCon.

x =

0.353768090625213
0.052213108339198

a=0.35377,b=0.052213

***************
问题:r从0—22,步长为2,应该出12个结果,但运行后只出来6个,左下角显示continue entering statement,好像是陷入了死循环,估计是程序有漏洞,请大侠给看看,感激不尽啊!我的email:[email protected]

QQ:370154016