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

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

?? vrpsavings.m

?? 物流分析工具包。Facility location: Continuous minisum facility location, alternate location-allocation (ALA)
?? M
字號:
function [rte,TC] = vrpsavings(C,varargin)
%VRPSAVINGS Clark-Wright savings algorithm for VRP route construction.
% [rte,TC] = vrpsavings(C,cap,twin,rtefeas,Sij,h)
%  [Sij,s] = vrpsavings(C,'savings')                       % Output default
%      C = n x n matrix of costs between n vertices
%    cap = {q,Q} = cell array of capacity arguments, where
%              q = n-element vector of vertex demands, with depot q(1) = 0
%              Q = maximum route load
%   twin = {ld,TW} = cell array of time window arguments
%             ld = 1, n, or (n+1)-element vector of load/unload timespans
%             TW = n or (n+1) x 2 matrix of time windows
%                = (n+1)-element cell array, if multiple windows
%rtefeas = {'rtefeasfun',P1,P2,...} = cell array specifying user-defined
%          function to test the feasibility of a single route
%    Sij = 2-column matrix of savings indices [i j]
%        = (default) indices corresponding to savings S(i,j) in
%          non-increasing order, where
%             S(i,j) = C(i,1) + C(1,j) - C(i,j), for i,j = 2:n, i ~= j
%      h = (optional) handle to vertex plot, e.g., h = PPLOT(XY,'.');
%          use 'Set Pause Time' on figure's Matlog menu to pause plot
%    rte = m-element cell array of m routes
%     TC = m-element vector of route costs
%      s = vector of savings S(i,j) corresponding to Sij
%
% See RTETC for information about the input parameters
%
% (Based on G. Clark and J.W. Wright, Oper. Res., 12, 1964, as described in
%  R.C. Larson and A.R. Odoni, Urban Operations Res., Prentice-Hall, 1981.)
%
% Example:
% vrpnc1  % Loads XY, q, Q, ld, and maxTC
% C = dists(XY,XY,2);
% h = pplot(XY,'r.');
% pplot(XY,num2cellstr(1:size(XY,1)))
% [rte,TC] = vrpsavings(C,{q,Q},{ld},{'maxTCfeas',maxTC},[],h);

% Copyright (c) 1994-2006 by Michael G. Kay
% Matlog Version 9 13-Jan-2006 (http://www.ie.ncsu.edu/kay/matlog)

% Input Error Checking ****************************************************
error(nargchk(1,6,nargin))

if length(varargin) < 5, [varargin{length(varargin)+1:5}] = deal([]); end
[cap,twin,rtefeas,Sij,h] = deal(varargin{:});

outputdef = 0;
if strcmpi('savings',cap), cap = []; outputdef = 1; end

try  % Use for error checking and to store input arguments
   rteTC([],C,cap,twin,rtefeas);
catch
   errstr = lasterr;
   idx = find(double(errstr) == 10);
   error(errstr(idx(1)+1:end))
end

n = length(C);

if isempty(Sij), [Sij,s] = savings(C); end
if isempty(h), h = NaN; end

if outputdef, rte = Sij; TC = s; return, end

if size(Sij,2) ~= 2 | any(Sij(:,1) == Sij(:,2)) | any(Sij(:,1) < 1) ...
      | any(Sij(:,2) < 1) | any(Sij(:,1) > n) | any(Sij(:,2) > n)
   error('Incorrect savings indices "Sij".')
elseif (~ishandle(h) & ~isnan(h)) | (ishandle(h) & (length(h) ~= 1 | ...
      ~strcmp(get(h,'Type'),'line') | ...
      ~strcmp(get(h,'LineStyle'),'none') | ...
      length(get(h,'XData')) ~= n | length(get(h,'YData')) ~= n))
   error('Invalid handle "h".')
end
% End (Input Error Checking) **********************************************

if ishandle(h)
   axes(get(h,'Parent'))
   delete(findobj(gca,'Tag','rteplot'))
   XY = [get(h,'XData')' get(h,'YData')'];
   if strcmp(get(gca,'Tag'),'proj'), XY = invproj(XY); end
   title('Savings Algorithm for VRP Route Construction')
   pplot(XY(1,:),'rs','Tag','rteplot')
   if isempty(pauseplot('get')), pauseplot(Inf), end
end

% Internal variable definitions:
%
%       S(i,j) = savings associated with adding edge (i,j) to a route
%            s = current edge
%    i(s) = is = beginning vtx of edge 's'
%    j(s) = js = ending vtx of edge 's'
% intvtx(i(s)) = 1, if vtx i(s) is interior vtx of a route
%        b(is) = route that vtx 'is' is beginning vtx in
%              = 0, if 'is' not beginning vtx
%        e(is) = route that vtx 'is' is ending vtx in
%              = 0, if 'is' not ending vtx
%           ir = max{b(is),e(is)} = route that vtx 'is' is beginning or
%                                   ending vtx in
%              = 0, if vtx 'is' not beginning or ending vtx
%           nr = no. of current route
%        r{nr} = route 'nr'
%    nvtxinrte = no. vtx in all routes created so far

% Create multi-vertex routes (single-vertex routes created later)
i = Sij(:,1); j = Sij(:,2);
[intvtx,b,e,qr] = deal(zeros(1,n));
nr = 0;
s = 1;
while s <= length(i)
   
   % Both vtx i & j not interior
   if ~intvtx(i(s)) & ~intvtx(j(s))             
      is = i(s);
      js = j(s);
      ir = b(is) + e(is);
      jr = b(js) + e(js);
      replot = 1;
      
      % Make new rte using vtx i & j
      if ~ir & ~jr & isfinite(rteTC(add1s([is js])))        
         nr = nr + 1;
         r{nr} = [is js];
         b(is) = nr;
         e(js) = nr;
         str = sprintf('Make New Route %d using Vertices %d and %d',...
            nr,is,js);
         
         % Add vtx j to rte i
      elseif ir & ~jr & e(is) & isfinite(rteTC(add1s([r{ir} js])))      
         r{ir} = [r{ir} js];
         e(js) = ir;
         intvtx(is) = 1;
         str = sprintf('Add Vertex %d to End of Route %d',js,ir);
         
         % Add  vtx i to rte j
      elseif ~ir & jr & b(js) & isfinite(rteTC(add1s([is r{jr}])))    
         r{jr} = [is r{jr}];
         b(is) = jr;         
         intvtx(js) = 1;
         str = sprintf('Add Vertex %d to Beginning of Route %d',is,jr);
        
         % Combine rte i & j
      elseif ir & jr & ir ~= jr & e(is) & b(js) & ...
            isfinite(rteTC(add1s([r{ir} r{jr}])))    
         e(r{jr}(end)) = ir;
         r{ir} = [r{ir} r{jr}];
         r{jr} = [];
         intvtx([is js]) = 1;
         str = sprintf('Combine Routes %d and %d',ir,jr);
        
         % Can't make new route
      else
         replot = 0;
      end   % Make new rte using vtx i & j
      
      if ishandle(h) & replot == 1
         rr = r;
         for k = 1:nr, rr{k} = [1 rr{k} 1]; end
         str = sprintf('VRP Savings: %s, TC = %f',str,sum(rteTC(rr)));
         fprintf('%s\n',str), title(str)
         delete(findobj(gca,'Tag','rteplot'))
         pplot(XY(1,:),'rs','Tag','rteplot')
         pplot(rr,XY,'m','Tag','rteplot')
         pauseplot
      end
      
   end   % Both vtx i & j not interior
   
   s = s + 1;
   b(1) = 0; e(1) = 0;   % Re-set in case is = 1 or js = 1 was added to rte
   
end   % while

% Create single-vertex routes
for s = find(~b(2:end) & ~e(2:end)) + 1
   nr = nr + 1;
   r{nr} = s;
   if ~isfinite(add1s(s))
      if nargout < 4
         error(['Route [1 ',num2str(s),' 1] infeasible.'])
      else
         XFlg = -1; rte = add1s(s); TC = []; return
      end
   end
end
if nr == 0, rte = 1; end   % Depot-only route
XFlg = 1;

% Remove empty routes in 'r' to make 'rte'
m = 0;
for k = 1:nr
   if ~isempty(r{k})
      m = m + 1;
      rte{m} = add1s(r{k});
   end
end

if nargout > 1, TC = rteTC(rte); else TC = []; end

if ishandle(h) && nargout > 1
   str = sprintf('VRP Savings: Final TC = %f and %d Routes',...
      sum(TC),length(TC));
   fprintf('%s\n\n',str)
   title(str)
   delete(findobj(gca,'Tag','rteplot'))
   pplot(XY(1,:),'rs','Tag','rteplot')
   pplot(rte,XY,'m','Tag','rteplot')
   pauseplot
end


% *************************************************************************
% *************************************************************************
% *************************************************************************
function rte = add1s(rte)
%ADDLS Add depot to begin and end of route.

if rte(1) ~= 1, rte = [1 rte]; end
if rte(end) ~= 1, rte = [rte 1]; end


% *************************************************************************
% *************************************************************************
% *************************************************************************
function [Sij,s] = savings(C)
%SAVINGS Ordered savings.

n = length(C);

[i,j,s] = argsort(...
   C(2:end,1)*ones(1,n-1) + ones(n-1,1)*C(1,2:end) - C(2:end,2:end));
Sij = flipud([i j s]);
Sij(Sij(:,1) == Sij(:,2),:) = [];
s = Sij(:,3);
Sij = Sij(:,[1 2]) + 1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美国毛片一区二区| 丝袜美腿成人在线| 精品99久久久久久| 日韩一级在线观看| 精品国产不卡一区二区三区| 7878成人国产在线观看| 在线不卡中文字幕| 日韩欧美亚洲另类制服综合在线| 日韩欧美你懂的| 精品国产不卡一区二区三区| 国产喷白浆一区二区三区| 中文久久乱码一区二区| 综合激情成人伊人| 亚洲福利国产精品| 麻豆精品新av中文字幕| 国产在线精品一区二区不卡了| 国产精品自在在线| 白白色 亚洲乱淫| 91精品91久久久中77777| 欧美三级视频在线播放| 日韩写真欧美这视频| 久久久久久久久久久久久久久99 | 九九久久精品视频| 国产经典欧美精品| 在线视频中文字幕一区二区| 欧美日韩午夜影院| 精品福利av导航| 亚洲欧美区自拍先锋| 亚洲成人av中文| 国产精品18久久久| 欧美色区777第一页| 久久色在线观看| 亚洲精品视频一区二区| 美日韩一级片在线观看| av在线播放一区二区三区| 欧美日韩免费一区二区三区| 国产女主播一区| 天天色综合成人网| 波多野结衣一区二区三区| 欧美久久久久久蜜桃| 欧美国产乱子伦 | 国内精品自线一区二区三区视频| www.av亚洲| 日韩午夜av电影| 亚洲精品乱码久久久久久黑人 | 国产综合久久久久久鬼色 | 久久久天堂av| 亚洲一区二区成人在线观看| 国产一区二区0| 日韩欧美aaaaaa| 亚洲成人精品一区| 91亚洲大成网污www| 精品国产一区二区三区av性色 | 欧美电影一区二区| 亚洲精品一二三四区| 国产高清亚洲一区| 日韩丝袜情趣美女图片| 一区二区三区精品视频在线| 国产一区二区三区免费观看| 日韩视频在线永久播放| 亚洲一区在线看| 日本电影欧美片| 国产精品久久一级| 国产·精品毛片| 国产天堂亚洲国产碰碰| 日韩av午夜在线观看| 欧美性生活大片视频| 亚洲区小说区图片区qvod| 成人黄色一级视频| 国产偷国产偷精品高清尤物| 国产在线精品一区二区夜色| 精品美女在线播放| 久久99这里只有精品| 欧美α欧美αv大片| 精品一区在线看| 精品少妇一区二区三区免费观看 | 在线成人av影院| 午夜国产精品一区| 91精品国产一区二区三区| 图片区日韩欧美亚洲| 欧美一区二区福利在线| 久久精品国产亚洲一区二区三区| 欧美一级夜夜爽| 美国三级日本三级久久99| 精品国产乱码久久久久久闺蜜| 国产原创一区二区三区| 国产精品久久夜| 精品污污网站免费看| 日本免费在线视频不卡一不卡二 | 日韩毛片视频在线看| 色婷婷综合久色| 青草av.久久免费一区| 日韩欧美久久一区| 成人美女视频在线观看| 亚洲欧美激情视频在线观看一区二区三区 | 久久精品99久久久| 久久精品视频一区二区三区| 99国产精品久久久久久久久久久| 亚洲伦理在线精品| 欧美高清视频www夜色资源网| 国产在线国偷精品免费看| 亚洲视频综合在线| 欧美一区二区三区思思人| 国产高清久久久| 亚洲一区二区三区美女| 欧美va亚洲va香蕉在线| 99re这里只有精品6| 日本午夜一区二区| 中文字幕中文字幕一区二区| 欧美日韩一二三| 成人免费毛片片v| 日韩av一区二区三区四区| 国产精品福利一区| 欧美mv日韩mv国产网站app| 色综合欧美在线| 国产高清成人在线| 午夜视频久久久久久| 国产精品嫩草影院com| 日韩亚洲欧美一区二区三区| 色婷婷综合久久久久中文| 激情深爱一区二区| 亚洲国产精品一区二区久久| 久久久久久久一区| 日韩三级av在线播放| 在线观看视频一区二区欧美日韩| 国产精品一二二区| 麻豆一区二区99久久久久| 艳妇臀荡乳欲伦亚洲一区| 亚洲国产精品成人综合色在线婷婷| 欧美日韩小视频| 欧美性大战xxxxx久久久| 白白色 亚洲乱淫| 国产成人小视频| 国产激情精品久久久第一区二区 | 欧美国产日本视频| 精品国产一区二区三区四区四| 精品视频免费在线| 色一区在线观看| 99re热这里只有精品免费视频 | 一本到三区不卡视频| 国产成人在线色| 极品销魂美女一区二区三区| 日韩中文字幕1| 日本欧美在线观看| 午夜精品久久久久久久99水蜜桃| 悠悠色在线精品| 亚洲大型综合色站| 亚洲国产成人av网| 日日夜夜精品视频免费| 亚洲电影在线播放| 午夜免费欧美电影| 天天色综合天天| 老司机免费视频一区二区三区| 日韩一区欧美二区| 人妖欧美一区二区| 国产一区日韩二区欧美三区| 久久97超碰色| 韩国成人福利片在线播放| 国产老女人精品毛片久久| 精品在线观看视频| 国产成人亚洲精品青草天美| av一区二区三区四区| 色天使色偷偷av一区二区| 欧美女孩性生活视频| 在线成人免费观看| 精品国产麻豆免费人成网站| 久久久久久久综合色一本| 国产精品久久久久久久久快鸭| 中文字幕综合网| 日韩电影在线免费观看| 国产一区二区福利| 99久久er热在这里只有精品15 | 韩国理伦片一区二区三区在线播放| 美脚の诱脚舐め脚责91| 国产精品一区二区果冻传媒| 99久久精品国产观看| 欧美日本免费一区二区三区| 精品欧美一区二区在线观看| 国产日韩三级在线| 亚洲精品日韩综合观看成人91| 婷婷久久综合九色综合绿巨人| 久久精品国产第一区二区三区| 懂色av一区二区在线播放| 欧美视频在线播放| 久久久国产午夜精品| 亚洲女子a中天字幕| 欧美aaaaaa午夜精品| 波多野洁衣一区| 日韩免费高清av| 亚洲精品一二三四区| 国产乱人伦精品一区二区在线观看 | 久久亚洲精华国产精华液| 最近日韩中文字幕| 国产在线播精品第三| 欧美三级三级三级爽爽爽| 中文字幕国产精品一区二区| 欧美aⅴ一区二区三区视频| 97se亚洲国产综合自在线不卡 | 成人欧美一区二区三区小说| 日日夜夜精品视频天天综合网|