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 处理对象用什么,程序处理的对象是
 - 下一篇: java内部类文件,Java内部类学习