[仅交流,有瑕疵]遗传算法求解混合流水车间调度问题(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

计算适应度值的函数:

function fitness = calfitness(objvalue)
% 计算适应度值
% objvalue      input  目标函数值
% fitness       output 适应度值
fitness = 1 ./ objvalue;
end

制作加工流程矩阵的函数,该矩阵行代表机器,按照工序进行排序(假设工序1有两个机器,则第1行为工序1机器1,第2行为工序1机器2,第3行为工序2机器1……),列代表时间:

function gantt = 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容