找回密码
 注册
Simdroid-非首页
查看: 57|回复: 0

fmincon, 'Options LargeScale' 问题

[复制链接]
发表于 2009-12-5 12:48:39 | 显示全部楼层 |阅读模式 来自 香港
我以前用matlab 6.5编的程序,现在用matlab 2008a算,出现问题:
Warning: Options LargeScale = 'off' and Algorithm = 'trust-region-reflective' conflict.
Ignoring Algorithm and running active-set method. To run trust-region-reflective, set
LargeScale = 'on'. To run active-set without this warning, use Algorithm = 'active-set'.
> In fmincon at 395

程序如下:
options=optimset('LargeScale','off','display','off');
[x,fval]=fmincon(@myfun,x0,[],[],[],[],[],[],@mycon,options);
for i=1:m1
    for j=1:m2
        xd(i,j)=x((i-1)*m2+j);
    end
end
        %%%%%%%%%%防止调整的微小位移过大的限制程序
        for i=1:m1
            if sum(xd(i,:).^2)>1e-8   %既要求微小位移不能大于0.1mm
                disp('调整的微小距离大于0.1mm,不对')
            end
        end
        %%%%%%%%%%%%%%%  
xd;X;
Jdxyz=X+xd;                             %满足各项条件的节点坐标
%X=Jdxyz;x=zeros(m1,m2);
%for i=1:m1-1;    if m2==3
     %  ceq(i)=((X(i+1,1)+x(i*m2+1))-(X(i,1)+x((i-1)*m2+1)))^2+...
     %     ((X(i+1,2)+x(i*m2+2))-(X(i,2)+x((i-1)*m2+2)))^2+...
     %    ((X(i+1,3)+x(i*m2+3))-(X(i,3)+x((i-1)*m2+3)))^2;ceqj(i)=sqrt(ceq(i));
     %end;end;   ceqj;
return
function f=myfun(x)
f=sum(x.^2);
return
function [c,ceq]=mycon(x)
%----------从平台引入数据
X=evalin('base','Xz');
m1=evalin('base','m1z');
m2=evalin('base','m2z');
lx=evalin('base','lxz');
%----------节点限制条件的数学表示
for i=1:m1-1
    if m2==3
        ceq(i)=((X(i+1,1)+x(i*m2+1))-(X(i,1)+x((i-1)*m2+1)))^2+...
            ((X(i+1,2)+x(i*m2+2))-(X(i,2)+x((i-1)*m2+2)))^2+...
            ((X(i+1,3)+x(i*m2+3))-(X(i,3)+x((i-1)*m2+3)))^2-lx^2;
    end
end
ceq;
%c=[];
for i=1:m1
    c(i)=(X(i,1)+x((i-1)*m2+1)).^2+(X(i,2)+x((i-1)*m2+2)).^2-8.2e-7;           %要求节点与轴线间距离小于管径1mm
end

请高手指点一下,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 03:28 , Processed in 0.036602 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表