遗传算法java车间调度_车间调度问题(part3: 遗传算法)

本篇博客介绍如何利用遗传算法解决车间调度问题,包括遗传算法的流程、交叉和变异操作。通过交叉方法Generalized Order Crossover (GOX)和变异操作,生成新的解并迭代优化,以找到最佳调度方案。
摘要由CSDN通过智能技术生成

在前两篇博客里面,我们重点讲解了利用随机搜索的方法解决车间调度问题,流程图如下:

wEJ4a4hd4On5gAAAABJRU5ErkJggg==

在本篇博客中,我们将介绍如何利用遗传算法来解决车间调度问题。具体的算法流程图如下:

jx4+j3Ti5XF5eXl5SUqIc56mMWCwmk8lmZmazs7NrtkGZkJAQDAbzqmdByUEgmxsoOZ2zpuSkUinIcaX5OqAmwIojjcqIxWI2mz0zMyOVSlVyfMhkMolEojk3v1Qq1VB5QOVqUqlUee2B+lkKhUIikahcUCaTyWQyDXmT5XL5momV1ZmZmZmenn7Vs6DkIJDNDZSczllTcm8WhUIhl8vXVObmQy6Xv1JNcACUHASyuYGS0znrLDnIKwElB4Fsbv4fNWS5ro1JWNgAAAAASUVORK5CYII=

与上面流程图相对应的遗传算法的整体代码如下:

import random

1 """pop是种群,种群中的每个个体是一个二元组,格式为:(该可行解的总完成时间, 可行解编码列表)"""

2 pop = [(ComputeStartTimes(g, I)[-1], g) for g inInitPopulation(ps, I)]3 for it in range(1, mit+1):"""mit是迭代次数,由用户指定"""

4 #Random ordering of the population

5 random.shuffle(pop)"""把pop中各个个体的顺序打乱"""

6 hpop = len(pop) / 2"""hpop是种群的一半"""

7 for i in range(hpop):"""遍历种群的前半部分份"""

8 if random() < 0.3:"""若[0,1]之间的随机数 < 0.3(0.3是交叉概率,用户自行指定)"""

9 #Create two new elements

10 ch1 = Crossover(pop[i][1], pop[hpop + i][1], I)"""通过交叉生成一个新解"""

11 ch2 = Crossover(pop[hpop + i][1], pop[i][1], I)"""通过交叉生成一个新解"""

12 if random() < 0.1:"""若[0,1]之间的随机数 < 0.1(0.1是变异概率,用户自行指定)"""

13 ch1 = Mutation(ch1)"""对第一个新解进行变异"""

14 if random() < 0.1:"""若[0,1]之间的随机数 <

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值