登录论坛

查看完整版本 : [求助]为什么matlab自动关闭!


blueye
2009-02-27, 15:55
这些天一直在关注多目标优化的研究,我编了一个程序,调用matlab的优化工具箱的fminimax函数,结果只要程序一运行matlab就自动关闭了,这是为什么?

下面把程序代码贴出来,请帮忙分析一下。

执行主文件如下:

x=zeros(1,2);
x0=x;

C1=[0.8,-0.74,0.5,-0.2;-1,0.1,0.3,-0.5];
C2=[-0.5,0.2,-0.35,0.4;0.1,0.45,-0.7,-0.61];

X=[-1,-1;-1,1;1,-1;1,1];

Bound_up=[1,1];
Bound_down=[-1,-1];

save C1 C1;
save C2 C2;
save X X;

solver=fminimax(@fun_obj,x0,[],[],[],[],Bound_down,Bound_up,@fun_nonlcon)



下面是目标函数和约束函数的代码:
目标函数:
function y=fun_obj(x)

load X;
load C1;
n=length(C1(:,1));
m=length(x);
m1=length(X);
m2=length(C1(1,:));

if(m~=m1 || m~=m2 || m1~=m2)
exit;
end

cc=1;
y=zeros(2,1);
for jj=1:m
for ii=1:n
y(jj)=y(jj)+C1(1,ii)*sqrt(abs(x-X(ii,:))^2+cc^2);
end
end


约束函数:
function y=fun_nonlcon(x)

load X;
load C2;
n=length(C2(:,1));
m=length(x);
m1=length(X);
m2=length(C2(1,:));

if(m~=m1 || m~m2 || m1~m2)
exit;
end

cc=1;
y=zeros(2,1);
for jj=1:m
for ii=1:n
y(jj)=y(jj)+C2(1,ii)*sqrt(abs(x-X(ii,:))^2+cc^2);
end
end


注,我的机器的cpu是intel的,不是AMD的!
MATLAB自动关闭问题 (http://topic.csdn.net/u/20070927/10/ca2ee7dd-d1f5-473e-8f86-fd4f3f959999.html)
我已经试过这里的方法,不行!

请大虾们给点建议吧,我都快疯了!

silas_xue
2009-03-05, 10:21
我也曾经出国这样的问题 但不是用这个函数 后来换了高的版本之后就没有问题了

wangzongxin306
2009-03-13, 16:29
可能是你的matlab版本不够高,或者是在运行时内存不够用,你把matlab的real-time关了,再试试。程序没什么问题

blueye
2009-03-16, 09:36
谢谢wangzongxin306帮顶,我用matlab2008r2试了下,没有问题。
看来真的要升级matlab了。