遗传算法:编码√-解码(根据车间环境写)-判断(根据所选目标写)-选择√-交叉√-变异√
遗传算法解车间调度问题的边角程序基本如下,核心代码是解码,根据车间约束条件写。其中有一个适应度函数根据车间目标写。
编码
import random
def code(workpeice_number, process_number):
a = [i for i in range(workpeice_number)] * process_number
random.shuffle(a)
return a
轮盘赌选择
def roulette_selection(population):
new_pop = []
temp_fitness =[]
for i in population:
temp_fitness.append(get_fitness(i))
#
# 精英保留策略在此位置写比较好
#
max_fitness = max(temp_fitness)
min_fitness = min(temp_fitness)
for i in range(len(population)):
temp_fitness[i] /= max_fitness - min_fitness
temp = 0
while len(new_pop) != len(population):
if temp_fitness[temp] > random.random()