多阶段决策优化最短路径问题的矩阵表示的matlab程序(续)1

更新时间:2023-06-04 08:43:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

多阶段决策优化最短路径问题的矩阵表示的matlab程序(续)

function []=fdmin(M,w)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

径%%%%%%%%%%%%%%%%%%%%%%%%%%%

n=size(M);count=0;

for i=1:n(1)

f(i,1)=min(M(i,:));

end 寻找最小值及其路

[minf k]=min(f); %显示最小值和其第一次经过的是Bk路径

%disp(' B');

disp('最小值所在的所有位置:')

disp(' 行 列')

for i=1:n(1)

for j=1:n(2)

if M(i,j)==minf

%disp(['B',num2str(i)]);

disp([i,j]);

count=count+1;

a(2*count-1)=i;

a(2*count)=j;

end

end

end

disp(['最小值为:',num2str(minf),' 其相应路径共有:',num2str(count),' 条!']);

%disp(['最小值所在的行和列分别为:',num2str(a)]);

c=1;

for i=length(w):-1:3

c=c*w(i);

nw(i-2)=c; %每一元素重复的次数

end

nw;

w(3:length(w));

%---------------------------------------------------------------------

for i=1:length(a)/2

if length(w)>3

aa=a(2*i);

for j=2:length(nw)

ci(j-1)=fix(aa/nw(j));

cr(j-1)=mod(aa,nw(j));

if cr(j-1)==0

wzc(i,j-1)=ci(j-1); %C(j)

wzc(i,j:length(nw))=w((j+2):length(w)); %D()--最后一个%% break; % %结果算出除A-B-C外都是最后一位 else %if cr(j-1)~=0

wzc(i,j-1)=ci(j-1)+1;

aa=cr(j-1);

end

end

nwzc=size(wzc);

disp(['第',num2str(i),'条路径为:']);

disp(['A->B',num2str(a(2*i-1)),'->']);

for j=1:nwzc(2)-1

disp([char(66+j),num2str(wzc(i,j)),'->']);

end

disp([char(66+nwzc(2))]); %如果结果是多个那就取消该句话即可 else

disp(['第',num2str(i),'条路径为:']);

disp(['A->B',num2str(a(2*i-1)),'->']);

disp([char(65+length(w))]);

end

end

function []=fdmins(M,w)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

径%%%%%%%%%%%%%%%%%%%%%%%%%%%

n=size(M);count=0;

for i=1:n(1)

f(i,1)=min(M(i,:));

end 寻找最小值及其路

[minf k]=min(f); %显示最小值和其第一次经过的是Bk路径

%disp(' B');

disp('最小值所在的所有位置:')

disp(' 行 列')

for i=1:n(1)

for j=1:n(2)

if M(i,j)==minf

%disp(['B',num2str(i)]);

disp([i,j]);

count=count+1;

a(2*count-1)=i;

a(2*count)=j;

end

end

end

disp(['最小值为:',num2str(minf),' 其相应路径共有:',num2str(count),' 条!']);

%disp(['最小值所在的行和列分别为:',num2str(a)]);

c=1;

for i=length(w):-1:3

c=c*w(i);

nw(i-2)=c; %每一元素重复的次数

end

nw;

w(3:length(w));

%---------------------------------------------------------------------

for i=1:length(a)/2

if length(w)>3

aa=a(2*i);

for j=2:length(nw)

ci(j-1)=fix(aa/nw(j));

cr(j-1)=mod(aa,nw(j));

if cr(j-1)==0

wzc(i,j-1)=ci(j-1); %C(j)

wzc(i,j:length(nw))=w((j+2):length(w)); %D()--最后一个%% break; % %结果算出除A-B-C外都是最后一位 else %if cr(j-1)~=0

wzc(i,j-1)=ci(j-1)+1;

aa=cr(j-1);

end

end

nwzc=size(wzc);

disp(['第',num2str(i),'条路径为:']);

disp(['S1->S2',char(44),num2str(a(2*i-1)),'->']);

for j=1:nwzc(2)-1

disp([char(83),num2str(j+2),char(44),num2str(wzc(i,j)),'->']); end

disp([char(83),num2str(length(w))]); %如果结果是多个那就取消该句话即可

else

disp(['第',num2str(i),'条路径为:']);

disp(['S1->S2',char(44),num2str(a(2*i-1)),'->']);

disp([char(83),num2str(length(w))]); end

end

本文来源:https://www.bwwdw.com/article/wcl1.html

Top