初始化种群的函数:
function pop= initpop(popsize, piecesize)
%初始化种群
%popsize input 种群规模
%piecesize input 工件数量
%pop output 种群
pop =zeros(popsize, piecesize);
for i =1:popsize
pop(i, :) = randperm(piecesize);
end
end
计算适应度值的函数:
functionfitness = calfitness(objvalue)
%计算适应度值
%objvalue input 目标函数值
%fitness output 适应度值
fitness = 1./ objvalue;
end
制作加工流程矩阵的函数,该矩阵行代表机器,按照工序进行排序(假设工序1有两个机器,则第1行为工序1机器1,第2行为工序1机器2,第3行为工序2机器1……),列代表时间:
functiongantt = makegantt(ptr, per, equsize)
%制作加工流程矩阵
%ptr input 工件时间记录
%per input 工件设备记录
%equsize input 工序设备数量
%gantt output 加工流程矩阵
finaltime =max(max(ptr));
[piecesize,prosize] = size(per);
cumsumequ =cumsum(equsize);
gantt =zeros(sum(equsize), finaltime);
for pro =1:prosize
for i = 1:piecesize
if pro == 1
equ = per(i, pro);
else
equ = cumsumequ(pro - 1) + per(i,pro);
end
starttime = ptr(i, pro*2-1);
endtime = ptr(i, pro*2);
gantt(equ, starttime:endtime) = i;
end
end
end
生成两个随机数的函数:
function [rl,ru] = makerlru(maxnum)
%制作两个随机整数, rl < ru
%maxnum input 最大数
%rl output 小随机数
%ru output 大随机数
r1 =randi(maxnum);
r2 =randi(maxnum);
while r2 ==r1
r2 = randi(maxnum);
end
rl = min([r1,r2]);
ru = max([r1,r2]);
end