亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美精品一区二区三区一线天视频| 欧美性猛交xxxxxx富婆| 一区二区三区自拍| 久久亚洲综合av| 日本精品视频一区二区三区| 激情六月婷婷久久| 亚洲国产cao| 国产精品传媒视频| 精品日产卡一卡二卡麻豆| 在线免费观看一区| 国产成人啪午夜精品网站男同| 五月天欧美精品| 专区另类欧美日韩| 久久久久久久久久久久久久久99| 欧美日韩亚洲另类| 色呦呦网站一区| 成人免费高清在线观看| 精品一区二区三区不卡| 视频一区在线播放| 亚洲福利视频导航| 亚洲欧美日韩久久| 18欧美乱大交hd1984| 久久精品一区四区| 久久一二三国产| 精品国产一区二区三区四区四| 欧美久久久久久蜜桃| 在线视频中文字幕一区二区| 成人av在线资源| 成人中文字幕合集| 国产成+人+日韩+欧美+亚洲| 国产一区二区三区免费播放| 免费xxxx性欧美18vr| 婷婷开心久久网| 成人av午夜电影| 国产精品自拍三区| 精品一区二区三区在线观看国产| 日本亚洲三级在线| 曰韩精品一区二区| 蜜臀av亚洲一区中文字幕| 欧美午夜视频网站| 国产成人福利片| 风流少妇一区二区| 成人午夜伦理影院| 成人夜色视频网站在线观看| 成人一级视频在线观看| 成人一级片在线观看| 粉嫩久久99精品久久久久久夜| 国产不卡视频在线观看| 成人黄色小视频| 一本色道久久综合精品竹菊| 91久久线看在观草草青青| 91在线免费看| 在线精品国精品国产尤物884a| 欧美私人免费视频| 56国语精品自产拍在线观看| 欧美哺乳videos| 国产欧美日韩在线| 亚洲视频电影在线| 亚洲电影一区二区三区| 日本午夜精品一区二区三区电影| 精品一区二区三区在线视频| 成人高清视频免费观看| 色妞www精品视频| 91精品一区二区三区在线观看| 国产精品久久久久久久久快鸭| 日韩欧美国产综合在线一区二区三区 | 3d动漫精品啪啪1区2区免费| 国产美女一区二区| 丁香另类激情小说| 色综合久久中文字幕综合网| 欧美精品粉嫩高潮一区二区| 日韩欧美一区二区不卡| 国产欧美日韩在线观看| 一区二区三区在线免费视频 | 国产精品福利一区| 一区二区三区久久| 久久精品国产精品青草| 99久精品国产| 欧美精品 国产精品| 精品久久国产97色综合| 亚洲女同一区二区| 麻豆国产一区二区| 色综合久久久久网| 精品国产1区二区| 欧美日韩视频在线第一区| 青青国产91久久久久久| 亚洲精品高清视频在线观看| 午夜精品福利在线| 国产一区不卡视频| 欧美午夜影院一区| 中文成人综合网| 欧美aaaaa成人免费观看视频| 成人免费观看视频| 欧美r级在线观看| 亚洲综合av网| 成人性视频免费网站| 91麻豆精品国产自产在线观看一区 | 亚洲国产精品久久艾草纯爱| 国产老肥熟一区二区三区| 欧美性生活一区| 国产精品免费网站在线观看| 麻豆精品国产传媒mv男同| 一本色道a无线码一区v| 国产色产综合色产在线视频| 午夜精品久久久| 日本韩国欧美国产| 中文在线免费一区三区高中清不卡| 日本人妖一区二区| 欧美亚州韩日在线看免费版国语版| 欧美极品aⅴ影院| 久久精品国产亚洲a| 欧美日韩一区二区在线观看视频| 国产精品美女久久久久久2018| 久久99国产精品久久99果冻传媒 | 精品国产精品网麻豆系列| 亚洲电影在线免费观看| 色婷婷国产精品| 国产精品久久久久久一区二区三区 | 亚洲一区二区三区国产| av在线综合网| 精品一区二区三区免费毛片爱| 91精品国产乱码| 一区二区三区在线观看国产| 日本美女一区二区| 成人性视频免费网站| 久久免费精品国产久精品久久久久| 日韩精品久久理论片| 欧美中文字幕亚洲一区二区va在线| 欧美国产精品中文字幕| 国产盗摄一区二区| 亚洲精品在线三区| 国内精品国产成人| 精品1区2区在线观看| 国产一区二区毛片| 久久综合狠狠综合| 国产精品亚洲成人| 国产日韩精品一区二区浪潮av| 国产乱码精品一区二区三区av| 久久网站最新地址| 国产成人小视频| 国产精品九色蝌蚪自拍| av影院午夜一区| 亚洲男人天堂av网| 色婷婷激情一区二区三区| 一区二区三区鲁丝不卡| 欧美剧情片在线观看| 日韩经典一区二区| 精品捆绑美女sm三区| 国产在线精品一区在线观看麻豆| 最新中文字幕一区二区三区| 国产99久久久精品| 国产日产欧产精品推荐色| 国产乱码精品1区2区3区| 欧美经典一区二区| 色哟哟一区二区在线观看| 亚洲一区二区精品视频| 欧美一区午夜视频在线观看| 激情av综合网| 国产精品久久网站| 欧美吻胸吃奶大尺度电影| 日韩国产精品久久| 国产夜色精品一区二区av| 不卡电影免费在线播放一区| 一区二区三区精品视频在线| 制服丝袜亚洲精品中文字幕| 国产精品中文字幕欧美| 国产精品白丝在线| 欧美日韩在线综合| 国产美女一区二区| 亚洲码国产岛国毛片在线| 欧美夫妻性生活| 国产99久久久国产精品免费看 | 亚洲精品一区二区三区福利| 成人一区二区三区视频在线观看| 一区二区三区中文字幕电影| 91精品国产91热久久久做人人| 国产麻豆精品久久一二三| 亚洲精品日韩综合观看成人91| 欧美一区二区三区在线视频| 国产馆精品极品| 亚洲午夜av在线| 欧美韩国一区二区| 欧美日韩国产影片| 国产91精品一区二区麻豆网站| 亚洲一二三四在线| 国产欧美日韩亚州综合| 欧美色手机在线观看| 国产成人精品一区二区三区网站观看| 亚洲欧美日韩在线播放| 欧美α欧美αv大片| 色8久久精品久久久久久蜜| 国产美女在线观看一区| 午夜影院在线观看欧美| 国产精品久久久久一区二区三区 | 亚洲综合色噜噜狠狠| www国产精品av| 欧美日本一区二区三区四区| 国产**成人网毛片九色| 久久99精品一区二区三区| 亚洲国产视频在线|