天天看點

蟻群算法matlab排程,求蟻群算法解決工廠中的房間排程問題的程式

clc;clear all;

M=[ 2   0   1   3   5   4

1   2   4   5   0   3

2   3   5   0   1   4

1   0   2   3   4   5

2   1   4   5   0   3

1   3   5   0   4   2 ];

T=[ 1   3   6   7   3   6

8   5   10  10  10  4

5   4   8   9   1   7

5   5   5   3   8   9

9   3   5   4   3   1

3   3   9   10  4   1 ];

M=M+1;Q=100;n=size(T,1);m=300;Tau=ones(67,67);s=1;z=10000;nd=100;

K=cumsum(T,2);

%K(:,2:end)=K(:,1:end-1);

%K(:,1)=0;

E=1./K;

Eta=zeros(1,200);

for i=1:6

for j=1:6

Eta(i*10+j)=E(i,j);

end

end

Tabu=cell(1,m);

for i=1:6

Tau(:,i*10+7)=0;

end

LC1=zeros(nd);

LC2=zeros(nd);

for kk=1:nd

for i=1:m

Tabu{i}=;

E(i,:)=[11 21 31 41 51 61];

end

for j=1:36

%    S=ones(1,m);

for i=1:m

P=Tau(Tabu{i}(end),E(i,:)).^2+Eta(E(i,:));

c=Dlun(P);

Tabu{i}=[Tabu{i},E(i,c)];

%S(i)=E(i,c);

E(i,c)=E(i,c)+1;

end

end

for i=1:m

X=floor(Tabu{i}/10);

X(1)=[];

cost=COST1(X,T,M);

Zp(i)=cost;

end

zmin=min(Zp)

F=find(Zp==zmin);

zmax=max(Zp)

G=find(Zp==zmax);

z=min(min(Zp),z);

me=mean(Zp);

LC1(kk)=z;

LC2(kk)=me;

Delta_Tau=zeros(67,67);

for i=1:m

for j=1:36

Delta_Tau(Tabu{i}(j),Tabu{i}(j+1))=Delta_Tau(Tabu{i}(j),Tabu{i}(j+1))+Q/(Zp(i)-40)/(Zp(i)-40);

end

end

for j=1:36

Delta_Tau(Tabu{F(1)}(j),Tabu{F(1)}(j+1))=Delta_Tau(Tabu{F(1)}(j),Tabu{F(1)}(j+1))-Q/(Zp(F(1))-40)/(Zp(i)-40);

% Delta_Tau(Tabu{G(1)}(j),Tabu{G(1)}(j+1))=Delta_Tau(Tabu{G(1)}(j),Tabu{G(1)}(j+1))-Q/(Zp(G(1))-40)/(Zp(i)-40);

end

Tau=max(0.9*Tau+Delta_Tau,0);

%    z,me

end

axis([0 1000 50 200]);

hold on

plot(LC1,'-k','LineWidth',1.2);

plot(LC2,':k');

hold off

蟻群算法matlab排程,求蟻群算法解決工廠中的房間排程問題的程式

2011-6-14 22:34 上傳

點選檔案名下載下傳附件

1.86 KB, 下載下傳次數: 10163

蟻群算法求解工廠中的房間排程問題