前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >遗传算法求解混合流水车间调度问题(HFSP)三:算法实现二

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

作者头像
mwangblog
发布2018-12-25 10:35:00
9770
发布2018-12-25 10:35:00
举报
文章被收录于专栏:mwangblogmwangblogmwangblog

初始化种群的函数:

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 mwangblog 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档