All pastes #397776 Raw Edit

Stuff

public text v1 · immutable
·published 2007-03-16 19:41 UTC
rendered paste body
% Program to resolve RWA
% User Enters the node information in form of a n*n matrix

% n=input('Enter Matrix Information: First Number of nodes   ');

% m=[];
% m=input('Enter the transmutation matrix    ');
m=[inf 1 1 1 inf
    1 inf 1 1 inf
    1 1 inf inf 1
    1 1 inf inf inf
    inf inf 1 inf inf];
n=length(m);
n_conn=n-1;
%m_conn=input('Enter the fiber connection information as a martix where the matrix values represent represent the number of wavelenghts supported');
m_conn=[1 2 3 4
    5 6 7 8
    1 2 3 4
    5 6 7 8];

path_info=zeros(3,2);
% path_no=input('Enter the number of paths to be computed')
% path_info=input('Enter the paths to be computed')
path_no=3;
path_info=[1 3
    1 5
    2 4
    ];


cost_tot=0;
path_out=[];
path_out=zeros(path_no,n);

for i=1:path_no
    test123=pathonly(path_info(i,1), path_info(i,2), m);
    testlen=length(test123);
    cost_tot=cost_tot+costonly(path_info(i,1), path_info(i,2), m);
    for j=1:testlen
        path_out(i,j)=test123(j);
    end
end

for i=1:path_no
    for j=1:n
        if(path_out(i,j)==0)
            path_out(i,j)=inf;
        end
    end
end

%path_out is the first solution to routing without wavelength assignment


%  test=matrow(path_out,1)
%   p=[];
%   for i=1:path_no
%       p(i)=matrow(path_out,i);
%   end

%now to find the number of overlaps and the overlapping shit
mo=m;
overlap=0;
overlap_initial=0;
overlap_test=0;
path_outO=path_out;

%space out matrix
for i=path_no:path_no+1
    for j=n:n+1
        path_out(i,j)=inf;
    end
end

% path_out =[1     3   Inf   Inf   Inf     0
%            1     3     5   Inf   Inf     0
%            2     3     5   Inf   Inf   Inf
%            0     0     0     0   Inf   Inf];


for i=1:path_no
    for j=1:n
        if((path_out(i,j)==path_out(i+1,j))&(path_out(i,j+1)==path_out(i+1,j+1))&(path_out(i,j)~=inf)&(path_out(i,j+1)~=inf))
            overlap_test=overlap_test+1;

            overlap_initial(overlap_test,overlap_test)=i;
            overlap_initial(overlap_test,overlap_test+1)=j;
            overlap_initial(overlap_test,overlap_test+2)=i;
            overlap_initial(overlap_test,overlap_test+3)=j+1;
            overlap_initial(overlap_test,overlap_test+4)=i+1;
            overlap_initial(overlap_test,overlap_test+5)=j;
            overlap_initial(overlap_test,overlap_test+6)=i+1;
            overlap_initial(overlap_test,overlap_test+7)=j+1;

            display('We have a overlap at route');

            display(path_out(i,j));
            display(path_out(i,j+1));

            display('Resolving Overlap via alternate route')
            %Breaking the overlapping link

            m(path_out(i,j),path_out(i,j+1))=inf;
            m(path_out(i,j+1),path_out(i,j))=inf;
            path_test=pathonly(path_out(i,j),path_out(i,j+1),m);
            %cost_tot=cost_tot+costonly(path_out(i,j),path_out(i,j+1),m);
            len_test=length(path_test);
            path_copy=path_out;

            for k=len_test+1:n
                path_out(i,k+1)=path_copy(i,k);
            end

            for k=1:len_test
                path_out(i,k)=path_test(k);
            end



        end
    end
end


for i=1:path_no
    for j=1:n
        if((path_out(i,j)==path_out(i+1,j))&(path_out(i,j+1)==path_out(i+1,j+1))&(path_out(i,j)~=inf)&(path_out(i,j+1)~=inf))
            overlap=overlap+1;



            overlap_loc(overlap,overlap)=i;
            overlap_loc(overlap,overlap+1)=j;
            overlap_loc(overlap,overlap+2)=i;
            overlap_loc(overlap,overlap+3)=j+1;
            overlap_loc(overlap,overlap+4)=i+1;
            overlap_loc(overlap,overlap+5)=j;
            overlap_loc(overlap,overlap+6)=i+1;
            overlap_loc(overlap,overlap+7)=j+1;




        end
    end
end

if(overlap==0)

    display('All overlaps have been resolved and we have a RWA solution')

end

if(overlap~=0)
    for i=1:overlap
        if(m_conn(path_out(overlap_loc(i),overlap_loc(i+1)),path_out(overlap_loc(i+2),overlap_loc(i+4)))~=1)

            dispay('Assigning the next smallest wavelength avaliable to the data path to resolve data collision');
            m_conn(path_out(overlap_loc(i),overlap_loc(i+1)),path_out(overlap_loc(i+2),overlap_loc(i+4)))=m_conn(path_out(overlap_loc(i),overlap_loc(i+1)),path_out(overlap_loc(i+2),overlap_loc(i+4)))-1;

        end
    end


    for i=1:overlap
        if(m_conn(path_out(overlap_loc(i),overlap_loc(i+1)),path_out(overlap_loc(i+2),overlap_loc(i+4)))==1)

            display('Wait till we have the path free as it is a single mode fibre');

        end
    end

end