正在展开冲刺页面
正在展开冲刺页面
演示编码、选择、交叉、变异的最小实现。
适应度函数。
近优编码。
路径、排班、组合优化。
完整可运行代码
import random
def fitness(bits):
return sum(bits)
pop = [[random.randint(0, 1) for _ in range(8)] for _ in range(20)]
for _ in range(30):
pop.sort(key=fitness, reverse=True)
nxt = pop[:4]
while len(nxt) < 20:
a, b = random.sample(pop[:10], 2)
cut = random.randint(1, 7)
child = a[:cut] + b[cut:]
if random.random() < 0.2:
i = random.randrange(8)
child[i] ^= 1
nxt.append(child)
pop = nxt
print(pop[0], fitness(pop[0]))