亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bnb18.m

?? 關于數學建模所能遇到的工具箱
?? M
字號:
function [errmsg,Z,X,t,c,fail] = BNB18(fun,x0,xstat,xl,xu,A,B,Aeq,Beq,nonlcon,setts,options1,options2,maxSQPit,varargin);
%非線性整數規劃模型求解分支定界迭代算法。在MATLAB5.3中使用,需Optimization toolbox 2.0支持?
%			Minimize F(x) 
%subject to: xlb <= x <=xub
%              A*x <= B
%  				Aeq*x=Beq
%              C(x)<=0  
%			 	   Ceq(x)=0
%
%				x(i)可為連續變量,整數,或固定值
% 使用格式
%[errmsg,Z,X]=BNB18('fun',x0,xstat,xl,xu,A,B,Aeq,Beq,'nonlcon',setts)
%fun:  M文件名,表示最小化目標函數f=fun(x)
%x0:    列向量,表示變量初值
%xstat: 列向量,xstat(i)=0表示x(i)為連續變量,1表示整數,2表示固定值
%xl:   列向量,表示變量下界
%xu:    列向量,表示變量上界
%A:     矩陣, 表示線性不等式約束系數
%B:     列向量, 表示線性不等式約束上界
%Aeq:   矩陣, 表示線性等式約束系數
%Beg:   列向量, 表示線性不等式約束右端值
%nonlcon:  M文件名,表示非線性約束函數[C,Ceq]=nonlin(x),其中C(x)為不等式約束, 
%              Ceq(x)為等式約束
%setts:  算法設置
%errmsq: 返回錯誤提示
%Z:      返回目標函數最小值
%X:      返回最優解
%
%例題
%   max x1*x2*x3
%   -x1+2*x2+2*x3>=0
%   x1+2*x2+2*x3<=72
%   10<=x2<=20
%    x1-x2=10
% 先寫 M函數discfun.m
%                 function f=discfun(x)
%                 f=-x(1)*x(2)*x(3);
%求解
%    clear;x0=[25,15,10]';xstat=[1 1 1]';
%    xl=[20 10 -10]';xu=[30 20 20]';
%     A=[1 -2 -2;1 2 2];B=[0 72]';Aeq=[1 -1 0];Beq=10;
%    [err,Z,X]=BNB18('discfun',x0,xstat,xl,xu,A,B,Aeq,Beq);
%    XMAX=X',ZMAX=-Z
%
% BNB18 Finds the constrained minimum of a function of several possibly integer variables.
% Usage: [errmsg,Z,X,t,c,fail] = 
%        BNB18(fun,x0,xstatus,xlb,xub,A,B,Aeq,Beq,nonlcon,settings,options1,options2,maxSQPiter,P1,P2,...) 
%
% BNB solves problems of the form:
% Minimize F(x) subject to: xlb <= x0 <=xub
%                           A*x <= B  Aeq*x=Beq
%                           C(x)<=0  Ceq(x)=0
%                           x(i) is continuous for xstatus(i)=0  
%                           x(i) integer for xstatus(i)= 1
%                           x(i) fixed for xstatus(i)=2
%
% BNB uses:
% Optimization Toolbox Version 2.0 (R11) 09-Oct-1998
% From this toolbox fmincon.m is called. For more info type help fmincon.
%
% fun is the function to be minimized and should return a scalar. F(x)=feval(fun,x).
% x0 is the starting point for x. x0 should be a column vector.
% xstatus is a column vector describing the status of every variable x(i).
% xlb and xub are column vectors with lower and upper bounds for x.
% A and Aeq are matrices for the linear constrains.
% B and Beq are column vectors for the linear constrains.
% nonlcon is the function for the nonlinear constrains.
% [C(x);Ceq(x)]=feval(nonlcon,x). Both C(x) and Ceq(x) should be column vectors.
%
% errmsg is a string containing an error message if BNB found an error in the input.
% Z is the scalar result of the minimization, X the values of the accompanying variables. 
% t is the time elapsed while the algorithm BNB has run, c is the number of BNB cycles and
% fail is the number of unsolved leaf sub-problems.  
%
% settings is a row vector with settings for BNB:
% settings(1) (standard 0) if 1: use phase 1 by relaxation. This sometimes makes the algorithm
% faster, because phase 1 means the algorithm first checks if there is a feasible solution
% for a sub-problem before trying to find a best solution. If there is no feasible solution BNB
% will not try to find a best solution.
% settings(2) (standard 0) if 1: if the sub-problem did not converge do not branch. If a sub-
% problem did not converge this means BNB did not find a solution for it. Normally BNB will 
% branch the problem so it can try again to find a solution.
% A sub-problem that is a leaf of the branch-and-bound-three can not be branched. If such
% a problem does not converge it will be considered unfeasible and the parameter fail will be 
% raised by one.
% settings(3) (standard 0) if 1: if 1 a sub-problem that did not converge but did return a feasible
% point will be considered convergent. This might be useful if fmincon is having a hard time with
% a certain problem but you do want some results.
% options1 and options2 are options structures for phase 1 and phase 2.
% For details about the options structure type help optimset.
% maxSQPiter is a global variable used by fmincon (if modified as described in bnb18.m).
% maxSQPiter is 1000 by default.
% P1,P2,... are parameters to be passed to fun and nonlcon.
% F(x)=feval(fun,x,P1,P2,...). [C(x);Ceq(x)]=feval(nonlcon,x,P1,P2,...).
% Type edit BNB18 for more info.

% E.C. Kuipers
% e-mail E.C.Kuipers@cpedu.rug.nl 
% FI-Lab
% Applied Physics
% Rijksuniversiteit Groningen

% To get rid of bugs and to stop fmincon from hanging make the following chances:
%
% In optim/private/nlconst.m ($Revision: 1.20 $  $Date: 1998/08/24 13:46:15 $):
% Get EXITFLAG independent of verbosity.
% After the lines:                 disp('  less than 2*options.TolFun but constraints are not satisfied.')    
%                               end
%                               EXITFLAG = -1;   
%                            end
%                         end
%                         status=1;
% add the line: if (strncmp(howqp, 'i',1) & mg > 0), EXITFLAG = -1; end;
%
% In optim/private/qpsub.m ($Revision: 1.21 $  $Date: 1998/09/01 21:37:56 $):
% Stop qpsub from hanging.
% After the line: %   Andy Grace 7-9-90. Mary Ann Branch 9-30-96.
% add the line: global maxSQPiter; 
% and changed the line: maxSQPiters = Inf;
% to the line: if exist('maxSQPiter','var'), maxSQPiters = maxSQPiter; else maxSQPiters=inf; end; 
% I guess there was a reason to put maxSQPiters at infinity, but this works fine for me.
global maxSQPiter;
% STEP 0 CHECKING INPUTZ=[]; X=[]; t=0; c=0; fail=0;
if nargin<2, errmsg='BNB needs at least 2 input arguments.'; return; end;if isempty(fun), errmsg='No fun found.'; return; end;if isempty(x0), errmsg='No x0 found.'; return;
elseif size(x0,2)>1, errmsg='x0 must be a column vector.'; return; end;
xstatus=zeros(size(x0));
if nargin>2 & ~isempty(xstat)
   if all(size(xstat)<=size(x0))
      xstatus(1:size(xstat))=xstat;
   else errmsg='xstatus must be a column vector the same size as x0.'; return;
   end;
   if any(xstatus~=round(xstatus) | xstatus<0 | 2<xstatus)
      errmsg='xstatus must consist of the integers 0,1 en 2.'; return;
   end;
end;
xlb=zeros(size(x0));
xlb(find(xstatus==0))=-inf;
if nargin>3 & ~isempty(xl)
   if all(size(xl)<=size(x0))
      xlb(1:size(xl,1))=xl;
   else errmsg='xlb must be a column vector the same size as x0.'; return;
   end;
end;
if any(x0<xlb)
   errmsg='x0 must be in the range xlb <= x0.'; return;
elseif any(xstatus==1 & (~isfinite(xlb) | xlb~=round(xlb)))
   errmsg='xlb(i) must be an integer if x(i) is an integer variabele.'; return;
end;
xlb(find(xstatus==2))=x0(find(xstatus==2));
xub=ones(size(x0));
xub(find(xstatus==0))=inf;
if nargin>4 & ~isempty(xu)
   if all(size(xu)<=size(x0))
      xub(1:size(xu,1))=xu;
   else errmsg='xub must be a column vector the same size as x0.'; return;
   end;
end;
if any(x0>xub)
   errmsg='x0 must be in the range x0 <=xub.'; return;
elseif any(xstatus==1 & (~isfinite(xub) | xub~=round(xub)))
   errmsg='xub(i) must be an integer if x(i) is an integer variabale.'; return;
end;
xub(find(xstatus==2))=x0(find(xstatus==2));
if nargin>5
   if ~isempty(A) & size(A,2)~=size(x0,1), errmsg='Matrix A not correct.'; return; end;
else A=[]; end;
if nargin>6
   if ~isempty(B) & any(size(B)~=[size(A,1) 1]), errmsg='Column vector B not correct.'; return; end;
else B=[]; end;
if isempty(A) & ~isempty(B), errmsg='A and B should only be nonempty together.'; return; end;
if isempty(B) & ~isempty(A), B=zeros(size(A,1),1); end;
if nargin>7 & ~isempty(Aeq)
   if size(Aeq,2)~=size(x0,1), errmsg='Matrix Aeq not correct.'; return; end;
else Aeq=[]; end;
if nargin>8
   if ~isempty(Beq) & any(size(Beq)~=[size(Aeq,1) 1]), errmsg='Column vector Beq not correct.'; return; end;
else Beq=[]; end;
if isempty(Aeq) & ~isempty(Beq), errmsg='Aeq and Beq should only be nonempty together'; return; end;
if isempty(Beq) & ~isempty(Aeq), Beq=zeros(size(Aeq,1),1); end;
if nargin<10, nonlcon=''; end;
settings = [0 0 0];if nargin>10 & ~isempty(setts)
   if all(size(setts)<=size(settings))
      settings(setts~=0)=setts(setts~=0);
   else errmsg='settings should be a row vector of length 3.'; return; end;
end;
if nargin<12, options1=[]; end;
options1=optimset(optimset('fmincon'),options1);
if nargin<13, options2=[]; end;
options2=optimset(optimset('fmincon'),options2);
if nargin<14, maxSQPiter=1000; 
elseif isnumeric(maxSQPit) & all(size(maxSQPit))==1 & maxSQPit>0 & round(maxSQPit)==maxSQPit
   maxSQPiter=maxSQPit;
else errmsg='maxSQPiter must be an integer >0'; return; end;
eval(['z=',fun,'(x0,varargin{:});'],'errmsg=''fun caused error.''; return;');
if ~isempty(nonlcon)
   eval(['[C, Ceq]=',nonlcon,'(x0,varargin{:});'],'errmsg=''nonlcon caused error.''; return;');
   if size(C,2)>1 | size(Ceq,2)>1, errmsg='C en Ceq must be column vectors.'; return; end;
end;

% STEP 1 INITIALISATIONcurrentwarningstate=warning;
warning off;
tic;lx = size(x0,1);z_incumbent=inf;x_incumbent=inf*ones(size(x0));I = ceil(sum(log2(xub(find(xstatus==1))-xlb(find(xstatus==1))+1))+size(find(xstatus==1),1)+1);stackx0=zeros(lx,I);stackx0(:,1)=x0;
stackxlb=zeros(lx,I);stackxlb(:,1)=xlb;stackxub=zeros(lx,I);stackxub(:,1)=xub;stacksize=1;xchoice=zeros(size(x0));
if ~isempty(Aeq)
   j=0;
   for i=1:size(Aeq,1)
      if Beq(i)==1 & all(Aeq(i,:)==0 | Aeq(i,:)==1)
         J=find(Aeq(i,:)==1);
         if all(xstatus(J)~=0 & xchoice(J)==0 & xlb(J)==0 & xub(J)==1)
            if all(xstatus(J)~=2) | all(x0(J(find(xstatus(J)==2)))==0)
               j=j+1;
               xchoice(J)=j;
               if sum(x0(J))==0, errmsg='x0 not correct.'; return; end;
            end;
         end;
      end;
   end;
end;
errx=optimget(options2,'TolX');
errcon=optimget(options2,'TolCon');
fail=0;
c=0;% STEP 2 TERMINIATIONwhile stacksize>0   c=c+1;
      % STEP 3 LOADING OF CSP   x0=stackx0(:,stacksize);   xlb=stackxlb(:,stacksize);   xub=stackxub(:,stacksize);   x0(find(x0<xlb))=xlb(find(x0<xlb));   x0(find(x0>xub))=xub(find(x0>xub));   stacksize=stacksize-1;         % STEP 4 RELAXATION
   
   % PHASE 1
   con=BNBCON(x0,A,B,Aeq,Beq,xlb,xub,nonlcon,varargin{:});
   if abs(con)>errcon & settings(1)~=0
      [x1 dummy feasflag]=fmincon('0',x0,A,B,Aeq,Beq,xlb,xub,nonlcon,options1,varargin{:});
      if settings(3) & feasflag==0
         con=BNBCON(x1,A,B,Aeq,Beq,xlb,xub,nonlcon,varargin{:});
         if con<errcon, feasflag=1; end;
      end;
   else x1=x0; feasflag=1; end;
   
   % PHASE 2
   if feasflag>0
      [x z convflag]=fmincon(fun,x1,A,B,Aeq,Beq,xlb,xub,nonlcon,options2,varargin{:});
      if settings(3) & convflag==0
         con=BNBCON(x,A,B,Aeq,Beq,xlb,xub,nonlcon,varargin{:});
         if con<errcon, convflag=1; end;
      end;
   else convflag=feasflag; end;
      % STEP 5 FATHOMING   K = find(xstatus==1 & xlb~=xub);   separation=1;   if convflag<0 | (convflag==0 & settings(2))
      % FC 1
      separation=0;
   elseif z>=z_incumbent & convflag>0
      % FC 2      separation=0;   elseif all(abs(round(x(K))-x(K))<errx) & convflag>0
      % FC 3      z_incumbent = z;      x_incumbent = x;
      separation = 0;	end;      % STEP 6 SELECTION
   if separation == 1 & ~isempty(K)
      dzsep=-1;      for i=1:size(K,1)         dxsepc = abs(round(x(K(i)))-x(K(i)));         if dxsepc>=errx | convflag==0
            xsepc = x; xsepc(K(i))=round(x(K(i)));            dzsepc = abs(feval(fun,xsepc,varargin{:})-z);            if dzsepc>dzsep               dzsep=dzsepc;               ixsep=K(i);            end;         end;      end;            % STEP 7 SEPARATION
      if xchoice(ixsep)==0
                  % XCHOICE==0         branch=1;         domain=[xlb(ixsep) xub(ixsep)];         while branch==1            xboundary=(domain(1)+domain(2))/2;            if x(ixsep)<xboundary               domainA=[domain(1) floor(xboundary)];               domainB=[floor(xboundary+1) domain(2)];            else               domainA=[floor(xboundary+1) domain(2)];               domainB=[domain(1) floor(xboundary)];            end;            stacksize=stacksize+1;            stackx0(:,stacksize)=x;            stackxlb(:,stacksize)=xlb;            stackxlb(ixsep,stacksize)=domainB(1);            stackxub(:,stacksize)=xub;            stackxub(ixsep,stacksize)=domainB(2);            if domainA(1)==domainA(2) 
               stacksize=stacksize+1;               stackx0(:,stacksize)=x;               stackxlb(:,stacksize)=xlb;               stackxlb(ixsep,stacksize)=domainA(1);               stackxub(:,stacksize)=xub;               stackxub(ixsep,stacksize)=domainA(2);               branch=0;            else               domain=domainA;               branch=1;            end;         end;      else                  % XCHOICE~=0         L=find(xchoice==xchoice(ixsep));         M=intersect(K,L);         [dummy,N]=sort(x(M));         part1=M(N(1:floor(size(N)/2))); part2=M(N(floor(size(N)/2)+1:size(N)));         stacksize=stacksize+1;         stackx0(:,stacksize)=x;
         O = (1-sum(stackx0(part1,stacksize)))/size(part1,1);
         stackx0(part1,stacksize)=stackx0(part1,stacksize)+O;
         stackxlb(:,stacksize)=xlb;         stackxub(:,stacksize)=xub;         stackxub(part2,stacksize)=0;         stacksize=stacksize+1;         stackx0(:,stacksize)=x;
         O = (1-sum(stackx0(part2,stacksize)))/size(part2,1);
         stackx0(part2,stacksize)=stackx0(part2,stacksize)+O;
         stackxlb(:,stacksize)=xlb;         stackxub(:,stacksize)=xub;         stackxub(part1,stacksize)=0;         if size(part2,1)==1, stackxlb(part2,stacksize)=1; end;
      end;
   elseif separation==1 & isempty(K)
      fail=fail+1;
   end;
end;

% STEP 8 OUTPUT  
t=toc;Z = z_incumbent;X = x_incumbent;
errmsg='';
eval(['warning ',currentwarningstate]);

function CON=BNBCON(x,A,B,Aeq,Beq,xlb,xub,nonlcon,varargin);
if isempty(A), CON1=[]; else CON1 = max(A*x-B,0); end;
if isempty(Aeq), CON2=[]; else CON2 = abs(Aeq*x-Beq); end;
CON3 = max(xlb-x,0);
CON4 = max(x-xub,0);
if isempty(nonlcon)
   CON5=[]; CON6=[];
else
   [C Ceq]=feval(nonlcon,x,varargin{:});
   CON5 = max(C,0);
   CON6 = abs(Ceq);
end;
CON  = max([CON1; CON2; CON3; CON4; CON5; CON6]);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区四区不卡 | 国产女人aaa级久久久级| 久久精品一区二区| 亚洲欧洲无码一区二区三区| 一区二区高清视频在线观看| 免费成人在线观看视频| 国产99精品在线观看| 一本久道中文字幕精品亚洲嫩| 欧美乱熟臀69xxxxxx| 精品国产免费视频| 亚洲免费观看高清| 久久国产视频网| 色素色在线综合| 精品欧美一区二区久久| 成人欧美一区二区三区视频网页| 日韩高清一区在线| 99re66热这里只有精品3直播 | 亚洲成人在线观看视频| 国产精品18久久久久| 欧美色图激情小说| 国产日韩亚洲欧美综合| 偷拍自拍另类欧美| 成人永久免费视频| 日韩欧美国产精品一区| 亚洲免费在线播放| 国产剧情一区在线| 欧美伦理影视网| 亚洲天堂福利av| 国产一区激情在线| 5858s免费视频成人| 亚洲日本丝袜连裤袜办公室| 美国三级日本三级久久99| 色妞www精品视频| 国产三级欧美三级| 奇米影视在线99精品| 一道本成人在线| 久久久精品蜜桃| 日韩精品欧美精品| 91麻豆免费视频| 久久久99免费| 日本亚洲欧美天堂免费| 欧美在线色视频| 国产精品高清亚洲| 国产高清在线观看免费不卡| 欧美一区二区黄色| 亚洲成人福利片| 色婷婷亚洲综合| 中文字幕中文字幕在线一区| 韩日精品视频一区| 日韩欧美一二三区| 亚洲国产精品一区二区久久恐怖片| 不卡的av电影| 中文字幕的久久| 国产乱国产乱300精品| 欧美成人女星排行榜| 午夜免费久久看| 欧美影视一区二区三区| 亚洲女人小视频在线观看| 不卡区在线中文字幕| 国产欧美久久久精品影院| 国产乱码精品一区二区三区忘忧草 | 欧美午夜不卡在线观看免费| 亚洲男人的天堂在线观看| 波多野洁衣一区| 亚洲欧洲av色图| 99国产一区二区三精品乱码| 国产精品国产三级国产三级人妇 | 久久亚洲二区三区| 黄色小说综合网站| 久久色.com| 国产米奇在线777精品观看| 欧美xxxxxxxx| 国产伦精品一区二区三区免费| 欧美电影免费提供在线观看| 麻豆高清免费国产一区| 精品久久久久久无| 国产精品综合一区二区| 国产色综合一区| 成人午夜电影网站| 亚洲欧洲精品成人久久奇米网| 99久久综合狠狠综合久久| 综合在线观看色| 91精彩视频在线| 亚洲aaa精品| 日韩亚洲欧美一区| 国产一区二区三区日韩| 欧美国产乱子伦 | 亚洲一二三区视频在线观看| 欧美日韩精品高清| 毛片基地黄久久久久久天堂| 精品精品国产高清a毛片牛牛| 国产精品一卡二卡| 1000部国产精品成人观看| 在线视频中文字幕一区二区| 午夜精品aaa| 精品久久久久香蕉网| 国产精品1024久久| 亚洲免费av高清| 欧美日高清视频| 国产一区免费电影| 亚洲丝袜自拍清纯另类| 在线视频一区二区三区| 免费在线观看不卡| 欧美国产日韩在线观看| 在线亚洲一区二区| 美女视频黄免费的久久 | 国产一区二区按摩在线观看| 中文字幕精品一区二区精品绿巨人| 色婷婷精品大在线视频| 男人的j进女人的j一区| 中文字幕成人网| 欧美在线视频全部完| 麻豆精品久久久| 亚洲三级免费电影| 日韩网站在线看片你懂的| 丰满亚洲少妇av| 亚洲国产精品欧美一二99| 精品少妇一区二区三区视频免付费 | 欧美日本乱大交xxxxx| 国产另类ts人妖一区二区| 亚洲免费在线视频一区 二区| 欧美一区二区三区视频在线观看| 国产美女av一区二区三区| 亚洲男帅同性gay1069| 日韩欧美一区二区视频| 94-欧美-setu| 捆绑调教美女网站视频一区| 国产精品久久久久久久浪潮网站| 欧美人动与zoxxxx乱| 国产不卡在线一区| 亚洲成人精品在线观看| 欧美国产精品中文字幕| 7777精品伊人久久久大香线蕉完整版 | 色丁香久综合在线久综合在线观看| 久久不见久久见免费视频1| 夜夜亚洲天天久久| 国产清纯在线一区二区www| 欧美日韩成人在线| 99九九99九九九视频精品| 激情欧美一区二区| 婷婷成人激情在线网| 国产精品午夜电影| 欧美成人一区二区三区片免费| 色婷婷久久一区二区三区麻豆| 国产精品一区二区三区乱码 | 日韩欧美区一区二| 欧美在线观看18| 成人av免费在线播放| 国产一区免费电影| 日本不卡中文字幕| 亚洲国产人成综合网站| 成人欧美一区二区三区白人| 久久久精品影视| 欧美tickle裸体挠脚心vk| 91.麻豆视频| 欧美伊人久久久久久久久影院| 成人av在线看| 国产成a人亚洲精| 国产一区二区三区免费| 麻豆成人av在线| 奇米影视7777精品一区二区| 亚洲一区av在线| 亚洲综合激情另类小说区| 亚洲男人电影天堂| 亚洲天堂2016| 亚洲欧洲精品天堂一级| 国产精品毛片a∨一区二区三区| 久久久久88色偷偷免费| 精品国产一区二区三区忘忧草 | 精品影院一区二区久久久| 日本网站在线观看一区二区三区| 亚洲国产日产av| 亚洲福利一二三区| 亚州成人在线电影| 五月婷婷色综合| 日韩精品国产精品| 蜜桃视频一区二区三区| 欧美a级理论片| 人禽交欧美网站| 美洲天堂一区二卡三卡四卡视频| 亚洲电影视频在线| 五月激情六月综合| 日本视频免费一区| 理论电影国产精品| 精品一区二区精品| 国产专区综合网| 粉嫩绯色av一区二区在线观看 | 综合欧美亚洲日本| 亚洲欧美另类综合偷拍| 亚洲美女区一区| 午夜精品久久久久久久99水蜜桃| 亚洲高清视频在线| 日本麻豆一区二区三区视频| 蜜桃视频一区二区三区在线观看| 精品一区二区三区在线视频| 国产黄人亚洲片| 91影视在线播放| 欧美老人xxxx18| 欧美www视频| 国产精品久久久久久亚洲伦|