首页
学习
活动
专区
圈层
工具
发布

遗传算法求解混合流水车间调度问题(HFSP)三:算法实现二

初始化种群的函数:

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

下一篇
举报
领券