function []=dinamicjssp3()
%10042011
graph = input('Masukkan matrik waktu proses job pertama: \n');
machine = input('Masukkan matrik mesin job pertama: \n');
%membuat matriks simpul untuk mempermudah proses manipulasi data
nodes=zeros(size(graph,1),size(graph,2));
k=1;
for i=1:size(graph,1)
for j=1:size(graph,2)
nodes(i,j)=k;
k=k+1;
end
end
%parameter algoritma semut
Q = 1;
a = 1;
b = 1;
p =0.5;
t =0.01;
mactime=zeros(1,size(graph,2)); %semua mesin dalam keadaan bebas, setup time 0
jobtime=zeros(1,size(graph,1));
%cari rute terbaik dengan algoritma semut
[bestrute,setuptimes,machines]=ACO(graph,machine,nodes,Q,a,b,p,t,mactime,jobtime);
fprintf('makespan terkecil sebelum job baru datang adalah %d satuan waktu \n',max(bestrute));
ngraph = input('Masukkan matrik waktu proses job kedua: \n');
nmachine = input('Masukkan matrik mesin job kedua: \n');
newjobtime = input('Masukkan waktu kedatangan job kedua: \n');
%tampilkan hasil dari rute terbaik dalam bentuk diagram
subplot(2,1,1);
title({' ';' ';'Diagram hubungan waktu dengan job sebelum ada penambahan job';' '});
ylabel('Job');
xlabel('Waktu');
showmap(graph,bestrute,setuptimes,machines);
%cari dan simpan operasi yang berjalan sebelum job baru datang
column=2;
tempgraph=graph;
for i=2:size(bestrute,2)-1
if(setuptimes(1,i)<newjobtime)
selectednode(1,column)=bestrute(1,i);
selectednodesetuptime(1,column)=setuptimes(1,i);
selectednodemachines(1,column)=machines(1,i);
column=column+1;
row=ceil(bestrute(1,i)/size(graph,2));
columns=mod(bestrute(1,i),size(graph,2));
if(columns==0)
columns=3;
end
tempgraph(row,columns)=0;
end
end
selectednode(1,column)=0;
subplot(2,1,2);
title({' ';' ';'Diagram hubungan waktu dengan job setelah ada penambahan job';' '});
ylabel('Job');
xlabel('Waktu');
showmap(graph,selectednode,selectednodesetuptime,selectednodemachines);
%machine time dan jobtime yang baru
for i=2:size(selectednode,2)-1
row=ceil(selectednode(1,i)/size(graph,2));
column=mod(selectednode(1,i),size(graph,2));
if(column==0)
column=3;
end
mactime(1,machine(row,column))= selectednodesetuptime(1,i)+graph(row,column);
jobtime(1,row)= selectednodesetuptime(1,i)+graph(row,column);
end
jobtime = [jobtime newjobtime];
%susun graf baru dari operasi yang belum dikerjakan ditambah job yang
%datang
newgraph = zeros(size(graph,1),size(graph,2));
newmachine = zeros(size(graph,1),size(graph,2));
for i=1:size(tempgraph,1)
column=1;
for j=1:size(tempgraph,2)
if(tempgraph(i,j)~=0)
newgraph(i,column)=tempgraph(i,j);
newmachine(i,column)=machine(i,j);
column=column+1;
end
end
end
%membuat matriks simpul untuk mempermudah proses manipulasi data
nnodes=zeros(size(ngraph,1),size(ngraph,2));
k=1;
for i=1:size(ngraph,1)
for j=1:size(ngraph,2)
nnodes(i,j)=k;
k=k+1;
end
end
for i=1:size(ngraph,1)
jobtime = [jobtime newjobtime];
end
newgraph=[newgraph;ngraph];
newmachine=[newmachine;nmachine];
k=1;
for i=1:size(newgraph,1)
for j=1:size(newgraph,2)
newnodes(i,j)=k;
k=k+1;
end
end
%cari rute terbaik menggunakan algoritma semut
[bestrute,setuptimes,machines]=ACO(newgraph,newmachine,newnodes,Q,a,b,p,t,mactime,jobtime);
fprintf('makespan terkecil setelah job baru datang adalah %d satuan waktu \n',max(bestrute));
showmap(newgraph,bestrute,setuptimes,machines);
matlab_实现蚁群优化算法求解车间调度问题
版权申诉
4星 · 超过85%的资源 48 浏览量
2022-07-03
00:55:50
上传
评论 4
收藏 56KB ZIP 举报
wouderw
- 粉丝: 276
- 资源: 2959
最新资源
- multisim1仿真运放及三极管电路应用经典电路multisim10仿真实例源文件合集(21个).zip
- 基于Android的Fragment+ViewPager实现滑屛切换界面应用设计与实现1(源码)
- tensorflow-2.9.3-cp38-cp38-win-amd64.whl
- tensorflow-gpu-2.9.3-cp38-cp38-win-amd64.whl
- 1716994562763661.750000.jpg
- tensorflow-gpu-2.9.2-cp38-cp38-win-amd64.whl
- FSA-火烈鸟搜索优化算法
- 幸运女生眷顾.html
- 送修改教程.zip
- java-选择排序.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论6