⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dwij2final.m

📁 钢管订购和运输的最优规划 程序使用说明: 两种方法进行 1
💻 M
字号:
function [C,LAMDA]=Dwij2final(w1)
%here w1 is waiting for Dwij2's return value wtemp as nargin w1
C=ones(7,14)*Inf;
LAMDA=zeros(7,38);
for D=1:7
    T=ones(1,38)*Inf;
    P=zeros(1,38);
    lamda=zeros(1,38);
    S=zeros(1,38);
    k=D;
    S(D)=k;
    i=1;
    lamda(D)=-1;
    while(1)
        if(length(find(S==0))==0)%判断S是否都已经解决
            break;
         end
         sub=0;
         Lsub=0;
        sub=find(w1(k,:)~=0);%查找k行所有的相临的节点,得到点的标号;
       % [k,sub,S(sub),S(sub)==0,find(S(sub)==0)]
        
        
       if(~isempty(sub))
        if(length(find(S(sub)==0))~=0)%对相临节点还没便历过的
        for j=1:length(sub)  %对每一个相临节点遍历,
            if(S(sub(j))==0)%只有没检查时才检查,如果已经检查过了就不检查
                %开始计算费用,进行运费的计算,直接相加就可以了
                    Lsub(1)=sub(j);
                    Lsub(2)=k;
                    v=3;
                    ktemp=k;
                    while(lamda(ktemp)~=-1)%统计到起点为止
                         Lsub(v)=lamda(ktemp);
                         ktemp=Lsub(v);
                         v=v+1;
                    end
                    costsum=0;%记录路线中的铁路费用
                    totalcost=0;
                    for ii=1:length(Lsub)-1%所有的相加,求出 总费用                  
                       costsum=w1(Lsub(ii),Lsub(ii+1))+costsum;
                    end
                    totalcost=costsum;%                 
                    if(T(sub(j))>totalcost)%如果T标号中的对应点比求出的总费用大,则替换T标号中的内容
                     T(sub(j))=totalcost;
                     lamda(sub(j))=k;
                 	  end
            end%end if S
         end%end forj     
     		end%end if length
     end %end if sub~=null
      [Tv,Tvsub]=min(T);
          if(Tv<Inf)
			  	T(Tvsub)=Inf;
            P(Tvsub)=Tv;%相应的最小值存入相应的P标号当中
            S(Tvsub)=Tvsub;%同时把这个找到的最小值的相临的点放入S中
            k=Tvsub;%把找到的相临的点作为下一个起始点
        else
            break;% out while所有点都找到的时候就结束此问题的一个工厂起点的搜索
        end%end if Tv
        i=i+1;%i递增继续
    end%end while
    C(D,:)=P([25:38]);
%     lamdalength=size(lamda,2);
%     LAMDA(D,lamdalength)=0;
if(size(lamda,2)~=38)
    lamda(1,38)=0;
end 
LAMDA(D,:)=lamda;
end%end for D

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -