clc;
m=input('enter number of jobs');
n=input('enter number of operations for each job');
pop=input('enter no of chromosomes in population');
crp=input('enter crossover rate');
mrp=input('enter mutation rate');
o=m*n;
a=zeros(pop,o);
for i=1:pop
x=zeros(1,m);
j=1;
while(j<=o)
out=randi([1,m],1,1);
x(1,out)=x(1,out)+1;
if (x(1,out)<=n)
a(i,j)=out;
j=j+1;
end;
end;
end;
disp (a);
p=zeros(m,n);
for i=1:m
for j=1:n
p(i,j)=input('enter precedence matrix\bp(i,j)\b');
end;
end;
disp (p);
t=zeros(m,n);
for i=1:m
for j=1:n
t(i,j)=input('enter processing time matrix\bp(i,j)\b');
end;
end;
disp (t);
b=a;
count1=zeros(pop,m);% this gives number of operations completed on job
count2=zeros(pop,n);% this gives number of operations completed on machine
st=zeros(m,n);% In this matrix,each row gives starting times of a job
ct=zeros(m,n);%In this matrix,each row gives completion times of a job
ctm=zeros(n,m);%in this matrix, each row gives completion times of machine
stm=zeros(n,m);%in this matrix, each row gives starting times of machine
mak=zeros(1,pop);
for j=1:pop
for i=1:o
if (count1(j,(b(j,i)))<=n)
count1(j,b(j,i))=count1(j,b(j,i))+1;
end;
if ((count2(j,(p((b(j,i)),count1(j,b(j,i))))))<=m)
count2(j,(p(b(j,i),count1(j,b(j,i)))))=count2(j,(p(b(j,i),count1(j,b(j,i)))))+1;
end;
if (count1(j,b(j,i))==1&&count2(j,(p((b(j,i)),count1(j,b(j,i)))))==1)
st(b(j,i),count1(j,b(j,i)))=0;
ct(b(j,i),count1(j,b(j,i)))=st(b(j,i),count1(j,b(j,i)))+t(b(j,i),count1(j,b(j,i)));
else
if(count1(j,b(j,i))==1)
st(b(j,i),count1(j,b(j,i)))= ctm(p(b(j,i),count1(j,b(j,i))),(count2(j,(p(b(j,i),count1(j,b(j,i))))))-1);
ct(b(j,i),count1(j,b(j,i)))=st(b(j,i),count1(j,b(j,i)))+t(b(j,i),count1(j,b(j,i)));
else
if (count2(j,(p(b(j,i),count1(j,b(j,i)))))==1)
st(b(j,i),count1(j,b(j,i)))=max(ct(b(j,i),(count1(j,b(j,i))-1)),ctm(p(b(j,i),count1(j,b(j,i))),count2(j,(p(b(j,i),count1(j,b(j,i)))))));
ct(b(j,i),count1(j,b(j,i)))=st(b(j,i),count1(j,b(j,i)))+t(b(j,i),count1(j,b(j,i)));
else
st(b(j,i),count1(j,b(j,i)))=max(ct(b(j,i),(count1(j,b(j,i))-1)),ctm(p(b(j,i),count1(j,b(j,i))),(count2(j,(p(b(j,i),count1(j,b(j,i))))))-1));
ct(b(j,i),count1(j,b(j,i)))=st(b(j,i),count1(j,b(j,i)))+t(b(j,i),count1(j,b(j,i)));
end;
end;
end;
if (count1(j,b(j,i))==1&&count2(j,(p((b(j,i)),count1(j,b(j,i)))))==1)
stm((p(b(j,i),count1(j,b(j,i)))),(count2(j,(p(b(j,i),count1(j,b(j,i)))))))=0;
ctm((p(b(j,i),count1(j,b(j,i)))),(count2(j,(p(b(j,i),count1(j,b(j,i)))))))=stm((p(b(j,i),count1(j,b(j,i)))),count2(j,(p(b(j,i),count1(j,b(j,i))))))+t(b(j,i),count1(j,b(j,i)));
else
if(count1(j,b(j,i))==1)
stm((p(b(j,i),count1(j,b(j,i)))),(count2(j,(p(b(j,i),count1(j,b(j,i))))))) =ctm(p(b(j,i),count1(j,b(j,i))),(count2(j,(p(b(j,i),count1(j,b(j,i)))))-1));
ctm((p(b(j,i),count1(j,b(j,i)))),(count2(j,(p(b(j,i),count1(j,b(j,i)))))))=stm((p(b(j,i),count1(j,b(j,i)))),count2(j,(p(b(j,i),count1(j,b(j,i))))))+t(b(j,i),count1(j,b(j,i)));
else
if (count2(j,(p(b(j,i),count1(j,b(j,i)))))==1)
stm((p(b(j,i),count1(j,b(j,i)))),(count2(j,(p(b(j,i),count1(j,b(j,i)))))))=ct(b(j,i),(count1(j,b(j,i))-1));
ctm((p(b(j,i),count1(1,b(j,i)))),(count2(j,(p(b(j,i),count1(j,b(j,i)))))))=stm((p(b(j,i),count1(j,b(j,i)))),count2(j,(p(b(j,i),count1(j,b(j,i))))))+t(b(j,i),count1(j,b(j,i)));
else
stm((p(b(j,i),count1(j,(b(j,i))))),(count2(j,(p(b(j,i),(count1(j,b(j,i))))))))=max(ct((b(j,i)),((count1(j,b(j,i)))-1)),ctm((p(b(j,i),count1(j,b(j,i)))),(count2(j,(p((b(j,i)),(count1(j,b(j,i))))))-1)));
ctm((p(b(j,i),count1(j,b(j,i)))),count2(j,(p((b(j,i)),count1(j,b(j,i))))))=stm((p(b(j,i),count1(j,b(j,i)))),count2(j,(p(b(j,i),count1(j,b(j,i))))))+t(b(j,i),count1(j,b(j,i)));
end;
end;
end;
end;
mak(1,j)=max(max(ct));
end;
disp(mak);
b(:,o+1)=mak;
%disp(b);
c=zeros(pop,o+1);
%tournament selection
for i=1:pop
r1=randi([1,pop],1,1);
r2=randi([1,pop],1,1);
while(r1==r2)
r1=randi([1,pop],1,1);
r2=randi([1,pop],1,1);
continue;
end
if(b(r1,o+1)<b(r2,o+1))
c(i,:)=b(r1,:);
end
c(i,:)=b(r2,:);
end;
end;
display(c);
%cross over operator
d=zeros(1,2);
e=zeros(2,o);
j=1;
accept=0;
for i=1:pop
ra=rand(0,1);
if(ra<=crp)
d(1,j)=i;
j++;
accept=accept+1
end
if (accept==2)
e(1,:)=c(d(1,1),:);
e(2,:)=c(d(2,2),:);
crossover(e(1,:),e(2,:));
end
disp(d);
Kinonoyomeo
- 粉丝: 93
- 资源: 1万+
最新资源
- VB失业保险管理信息系统(源代码+系统)(2024zt).7z
- VB食品公司进销存管理系统(源代码+系统)(2024j9).7z
- VB实验室设备管理信息系统设计(论文+源代码+答辩PPT)(2024ci).7z
- vb门诊管理系统设计(论文+源代码)(2024fw).7z
- VB评语管理系统设计(源代码+可执行程序+论文+开题报告+外文翻译+答辩ppt)(2024fu).7z
- VB排课系统程序设计(论文+源代码)(20248k).7z
- vb评语生成系统设计(论文+源代码)(2024ee).7z
- VB期刊信息管理系统(论文+源代码+答辩PPT)(2024vi).7z
- vb企业档案管理系统设计(论文+源代码)(20248h).7z
- vb企业人事工资管理系统(源代码+论文)(2024cs).7z
- vb企业人事管理系统(论文+源代码+开题报告+中期报告+实习报告)(2024bn).7z
- vb企业考勤管理系统(论文+源代码+开题报告+答辩PPT)(2024w2).7z
- vb企业人事管理系统.(源代码+论文)(2024h9).7z
- vb企业人事管理信息系统设计与实现(源代码+论文)(20248r).7z
- VB企业人事管理系统设计与实现(开题报告+源代码+系统)(2024v3).7z
- VB企业生产管理系统设计(论文+源代码+开题报告+答辩PPT)(2024ei).7z
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0