用户:姚国栋udn0查看:0 回复:0 评论:0 创建时间:2024-02-02T18:41:07
【作品展示】

【作品介绍】
基因编辑软件模拟
【作品源代码】
import random
import operator
import numpy as np
import matplotlib.pyplot as plt
from deap import creator, base, tools, algorithms
# 定义问题
creator.create("FitnessMax", base.Fitness, weights=(1.0,))
creator.create("Individual", list, fitness=creator.FitnessMax)
toolbox = base.Toolbox()
toolbox.register("attr_bool", random.randint, 0, 1)
toolbox.register("individual", tools.initRepeat, creator.Individual, toolbox.attr_bool, 10)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)
# 定义适应度函数
def evalOneMax(individual):
return sum(individual),
toolbox.register("evaluate", evalOneMax)
toolbox.register("mate", tools.cxTwoPoint)
toolbox.register("mutate", tools.mutFlipBit, indpb=0.05)
toolbox.register("select", tools.selTournament, tournsize=3)
if __name__ == "__main__":
population = toolbox.population(n=300)
CXPB, MUTPB, NGEN = 0.5, 0.2, 40
print("Start of evolution")
fitnesses = list(map(toolbox.evaluate, population))
for ind, fit in zip(population, fitnesses):
ind.fitness.values = fit
print(" Evaluated %i individuals" % len(population))
for g in range(NGEN):
print("-- Generation %i --" % g)
offspring = algorithms.varAnd(population, toolbox, cxpb=CXPB, mutpb=MUTPB)
fits = toolbox.map(toolbox.evaluate, offspring)
for ind, fit in zip(offspring, fits):
ind.fitness.values = fit
print(" Evaluated %i individuals" % len(offspring))
population = toolbox.select(offspring, k=len(population))
top10 = tools.selBest(population, k=10)
print(" Top 10 individuals:")
print(top10)
print("-- End of (successful) evolution --")
best_ind = tools.selBest(population, k=1)[0]
print("Best individual is %s, %s" % (best_ind, best_ind.fitness.values))
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn