matlab optimization terminated,求助Optimization terminated. 的问题
小弟按照课本写了的一个这样的程序
%利用分支定界法实现整数线性规划
%调用格式为[intx,intf]=Intprog(f,A,b,Aeq,beq,lb,up)
%f,A,b,Aeq,lb,up与linprog函数中意义相同
%intx为目标函数最小值时的变量
%intf目标函数的最小值
function [x,intf]=Intprog(f,A,b,Aeq,beq,lb,up)
x=NaN;intf=NaN;
NFlb=zeros(size(lb));
NFup=zeros(size(up));
NFlb(:,1)=lb;
NFup(:,1)=up;
F=inf;
while 1
sz=size(NFlb);
k=sz(2);
opt=optimset('TolX',1.0e-9);
%求解线性规划
[xm,fv,exitflag]=linprog(f,A,b,Aeq,beq,NFlb(:,1),NFup(:,1),[],opt);
if exitflag==-2 %不存在最优解
xm=NaN;
fv=NaN;
end
if xm==NaN
fv=inf;
end
if fv~=inf
if fv
if max(abs(round(xm)-xm))<1.0e-7 %判断各个分量是否为整数
F=fv;
x=xm;
tmpNFlb=NFlb(:,2:k); %去掉第一列
tmpNFup=NFup(:,2:k); %去掉第一列
NFlb=tmpNFlb;
NFup=tmpNFup;
if isempty(NFlb)==0
continue;
else
if x~=NaN
intf=F;
return;
else
disp('不存在最优解');
x=NaN;
intf=NaN;
return;
end
end
else
lb1=NFlb(:,1);
up1=NFup(:,1);
tmpNFlb=NFlb(:,2:k); %去掉第一列
tmpNFup=NFup(:,2:k); %去掉第一列
NFlb=tmpNFlb;
NFup=tmpNFup;
[barr,index]=find(abs(xm-round(xm))>=1.0e-7);
%任意找一个非整数变量
p=barr(1);
newlb=lb1;
newup=up1;
newlb(p)=max(floor(xm(p))+1,lb1(p));%更新求解表
newup(p)=max(floor(xm(p)),up1(p));%更新求解表
NFlb=[NFlb newlb lb1];
NFup=[NFup up1 newup];
continue;
end
else %fv大于F
tmpNFlb=NFlb(:,2:k); %去掉第一列
tmpNFup=NFup(:,2:k); %去掉第一列
NFlb=tmpNFlb;
NFup=tmpNFup;
if isempty(NFlb)==0
continue;
else
if x~=NaN
intf=F;
return;
else
disp('不存在最优解');
x=NaN;
intf=NaN;
return;
end
end
end
else %fv为无穷大
tmpNFlb=NFlb(:,2:k); %去掉第一列
tmpNFup=NFup(:,2:k); %去掉第一列
NFlb=tmpNFlb;
NFup=tmpNFup;
if isempty(NFlb)==0
continue;
else
if x~=NaN
intf=F;
return;
else
disp('不存在最优解');
x=NaN;
intf=NaN;
return;
end
end
end
end
最后在运行时输入f=[4;7;3]
A=[-1 -3 -1;-3 -1 -2]
b=[-5;-8]
[x,intf]=Intprog(f,A,b,[],[],[0;0;0],[inf;inf;inf])
课本中求出了结果,为什么我运行的过程中不断的出现
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
Optimization terminated.
最终按ctrl+c停止程序后,有这样的提示;
Error in ==> optim\private\lipsol>direction at 1363
dy(perm,1) = Rinf \ (Rinf' \ full(rhs(perm)));
Error in ==> optim\private\lipsol at 862
[dx,dy,dz,ds,dw,Sherman_OK,Mdense,Rinf,cgiter] = ...
Error in ==> linprog at 205
[x,fval,lambda,exitflag,output] = lipsol(f,A,B,Aeq,Beq,lb,ub,options,defaultopt,computeLambda);
Error in ==> Intprog at 18
[xm,fv,exitflag]=linprog(f,A,b,Aeq,beq,NFlb(:,1),NFup(:,1),[],opt);
Error in ==> Untitled at 4
[x,intf]=Intprog(f,A,b,[],[],[0;0;0],[inf;inf;inf]);
哪路大侠可以指导一下啊!(最不能理解的是课本Optimization terminated.出现了5次结果就出来了,我的一直没有结果)
总结
以上是生活随笔为你收集整理的matlab optimization terminated,求助Optimization terminated. 的问题的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: php 处理对象用什么,程序处理的对象是
- 下一篇: matlab中服从高斯分布的矩阵_推荐基