[发明专利]一种基于改进遗传算法的传统作业车间调度方法有效
申请号: | 202010513661.X | 申请日: | 2020-06-08 |
公开(公告)号: | CN111667071B | 公开(公告)日: | 2023-06-02 |
发明(设计)人: | 陈金广;马玲叶 | 申请(专利权)人: | 西安工程大学;绍兴市柯桥区西纺纺织产业创新研究院 |
主分类号: | G06N3/126 | 分类号: | G06N3/126;G06Q10/0631;G06Q50/04 |
代理公司: | 西安弘理专利事务所 61214 | 代理人: | 燕肇琪 |
地址: | 710048 陕*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 改进 遗传 算法 传统 作业 车间 调度 方法 | ||
1.一种基于改进遗传算法的传统作业车间调度方法,其特征在于,具体按照以下步骤实施:
步骤1、设置遗传算法的基本参数:总迭代次数Iterations,当前迭代次数j,j初始化为1、种群总大小popSize以及自适应交叉和变异概率的影响因子k1,k2,k3,k4;
步骤2、根据步骤1中给定的popSize初始化种群,种群初始化后得到有popSize个染色体的初始种群;
步骤3、计算由步骤2生成的初始种群中所有染色体的适应度值;
步骤4、对步骤3中计算过适应度值的初始种群采用轮盘赌法进行选择操作,选择出(popSize-1)/2个染色体作为父代种群即Parent种群,进行后续步骤;
步骤5、对步骤4选择出的Parent种群中的染色体进行交叉操作来增加种群多样性,生成子代种群1即Children_1;
步骤6、对步骤5生成的Children_1种群中的染色体采用互换法完成变异操作,产生子代种群2即Children_2;
步骤7、记录种群Children_2中最优染色体和其适应度值;
步骤8、判断j是否大于Iterations,若j大于Iterations,根据步骤7中记录的数据画出迭代过程图和工件工序甘特图,算法结束;若j小于或等于Iterations,j+1后转至步骤3;
步骤2具体按照以下步骤实施:
步骤2.1、扩大参数popSize:将步骤1中的种群总大小扩大为原来的两倍加一个,即popSize=popSize*2+1;
步骤2.2、生成初始种群:
步骤2.2.1、定义一个包含n×m个基因的染色体,这个染色体的编码方式采用基于工序的实数编码,从染色体的第一个基因位到最后一个基因位依次遍历;
步骤2.2.2、用MATLAB中的随机函数randperm处理步骤2.2.1中生成的染色体,循环处理popSize次,生成一个有着popSize个染色体的初始种群;
步骤3具体按照以下步骤实施:
步骤3.1、计算初始种群中所有染色体的目标函数值h(i):i为初始种群中的任意一条染色体,取值范围是[1,popSize];h(i)表示染色体i的目标函数,具体如公式(1)所示:
公式(1)中,Ms(i)为按照i中的基因顺序加工完所有工件所用的时间,也称最大完工时间,h(i)为目标函数,是最大完成时间的倒数,h(i)值越大代表该调度方案越优,该染色体更应该被遗传下去;
步骤3.2、根据步骤3.1计算出的h(i)来计算i的适应度函数f(i),具体如公式(2)所示:
公式(2)中,Max表示h(i)的最大值,Min表示h(i)的最小值,f(i)越大i被选中的几率越大;
步骤5具体按照以下步骤实施:
步骤5.1、在种群Parent中按顺序选择一条染色体,作为父代1即Parent1,根据randi函数在[1,(popSize-1)/2]之间产生的随机整数,在Parent种群中选择对应序号的染色体作为父代2即Parent2;
步骤5.2、通过自适应交叉概率函数Pc得到交叉概率值,具体如公式(3)所示:
公式(3)中,gmax表示种群Parent中所有染色体的最大适应度值,gavg表示种群Parent中所有染色体的平均适应度值,g′为Parent1和Parent2中较大的适应度值,k1,k2的值在(0,1)范围中选择即可;
步骤5.3、如果由步骤5.2求得的交叉概率值大于由rand函数在(0,1)之间随机产生的值时,采用优先工序交叉法进行交叉操作:
步骤5.3.1、将工件集{1,2,3,...,n}随机划分为两个非空子集j1,j2;
步骤5.3.2、将Parent1和Parent2中包含j1工件号分别按其在染色体中的位置复制到子代1即Children1和子代2即Children2中,将Parent1和Parent2中包含j2工件号分别按其在染色体中的顺序复制到Children2和Children1中;
步骤5.3.3、得到的Children1和Children2这两条染色体即为交叉后的染色体;
步骤5.4、如果由步骤5.2求得的交叉概率值小于或等于由rand函数在(0,1)之间随机产生的值时,不进行交叉操作,将步骤5.1得到的Parent1和Parent2直接作为Children1和Children2即可;
步骤5.5、将Children1和Children2加入种群Children_1中;
步骤6具体按照以下步骤实施:
步骤6.1、在种群Children_1中按染色体顺序选择一条染色体Children1;
步骤6.2、先通过自适应变异概率函数Pm得到变异概率值,具体如公式(4)所示:
公式(4)中,gmax表示种群Children_1中所有染色体的最大适应度值,gavg表示群体Children_1中所有染色体的平均适应度值,g表示Children1的适应度值,k3,k4的值在(0,1)范围中选择即可;
步骤6.3、如果由步骤6.2求得的变异概率值大于由rand函数在(0,1)之间随机产生的值时,采用基因互换法进行变异操作:
步骤6.3.1、由randi函数随机生成两个整数作为Children1的两个基因号;
步骤6.3.2、将Children1上这两个基因号上对应的工件号进行互换,步骤6.3.1和步骤6.3.2循环4次;
步骤6.3.3、把Children1加入种群Children_2中;
步骤6.4、如果由步骤6.2求得的变异概率值小于或等于由rand函数在(0,1)之间随机产生的值时,不进行变异操作,将步骤6.1所得的Children1直接加入种群Children_2中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安工程大学;绍兴市柯桥区西纺纺织产业创新研究院,未经西安工程大学;绍兴市柯桥区西纺纺织产业创新研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010513661.X/1.html,转载请声明来源钻瓜专利网。