自动秒收录

AI人工智能使用遗传算法实现解决方案


文章编号:2710 / 分类:技术教程 / 更新时间:2024-05-17 14:45:07 / 浏览:

恭喜您成为首批注册用户

本节向您介绍使用遗传算法实现解决方案。

以下示例显示了如何根据OneMax问题生成一个包含15个字符串的位串。

如下所示导入必要的软件包-

importrandomfromdeapimportbase,creator,tools

定义评估函数。这是创建遗传算法的第一步。

defeval_func(individual):target_sum=15returnlen(individual)-abs(sum(individual)-target_sum)

现在,使用正确的参数创建工具箱-

toolbox.register("evaluate",eval_func)

现在,注册交叉运算符-

toolbox.register("mate",tools.cxTwoPoint)

注册一个可变运算符-

fitnesses=list(map(toolbox.evaluate,population))forind,fitinzip(population,fitnesses):ind.fitness.values=fitprint('\nEvaluated',len(population),'individuals')

经过几代人的创建和迭代-

offspring=toolbox.select(population,len(population))

现在,克隆选定的个人-

offspring=list(map(toolbox.clone,offspring))

对后代应用交叉和变异-

forchild1,child2inzip(offspring[::2],offspring[1::2]):ifrandom.random()

删除孩子的适应值

formutantinoffspring:ifrandom.random()

评估与无效的健身个体-

population[:]=offspring

打印当代人的统计数据-

这是遗传编程中最著名的问题之一。所有符号回归问题都使用任意数据分布,并尝试用符号公式来拟合最准确的数据。通常,像RMSE(均方根误差)这样的度量用于度量个体的适应度。这是一个经典的回归问题,这里我们使用方程:5x3-6x28x=1。我们需要按照上述示例中的所有步骤进行操作,但主要部分是创建基元集,因为它们是个人的构建基块,因此可以开始评估。这里将使用经典的基元集。

以下Python代码详细解释了这一点-

importoperatorimportmathimportrandomimportnumpyasnpfromdeapimportalgorithms,base,creator,tools,gpdefdivision_operator(numerator,denominator):ifdenominator==0:return1returnnumerator/denominatordefeval_func(individual,points):func=toolbox.compile(expr=individual)returnmath.fsum(mse)/len(points),defcreate_toolbox():pset=gp.PrimitiveSet("MAIN",1)pset.addPrimitive(operator.add,2)pset.addPrimitive(operator.sub,2)pset.addPrimitive(operator.mul,2)pset.addPrimitive(division_operator,2)pset.addPrimitive(operator.neg,1)pset.addPrimitive(math.cos,1)pset.addPrimitive(math.sin,1)pset.addEphemeralConstant("rand101",lambda:random.randint(-1,1))pset.renameArguments(ARG0='x')creator.create("FitnessMin",base.Fitness,weights=(-1.0,))creator.create("Individual",gp.PrimitiveTree,fitness=creator.FitnessMin)toolbox=base.Toolbox()toolbox.register("expr",gp.genHalfAndHalf,pset=pset,min_=1,max_=2)toolbox.expr)toolbox.register("population",tools.initRepeat,list,toolbox.individual)toolbox.register("compile",gp.compile,pset=pset)toolbox.register("evaluate",eval_func,points=[x/10.forxinrange(-10,10)])toolbox.register("select",tools.selTournament,tournsize=3)toolbox.register("mate",gp.cxOnePoint)toolbox.register("expr_mut",gp.genFull,min_=0,max_=2)toolbox.register("mutate",gp.mutUniform,expr=toolbox.expr_mut,pset=pset)toolbox.decorate("mate",gp.staticLimit(key=operator.attrgetter("height"),max_value=17))toolbox.decorate("mutate",gp.staticLimit(key=operator.attrgetter("height"),max_value=17))returntoolboxif__name__=="__main__":random.seed(7)toolbox=create_toolbox()population=toolbox.population(n=450)hall_of_fame=tools.HallOfFame(1)stats_fit=tools.Statistics(lambdax:x.fitness.values)stats_size=tools.Statistics(len)mstats=tools.MultiStatistics(fitness=stats_fit,size=stats_size)mstats.register("avg",np.mean)mstats.register("std",np.std)mstats.register("min",np.min)mstats.register("max",np.max)probab_crossover=0.4probab_mutate=0.2number_gen=10population,log=algorithms.eaSimple(population,toolbox,probab_crossover,probab_mutate,number_gen,stats=mstats,halloffame=hall_of_fame,verbose=True)以上内容是否对您有帮助:在文档使用的过程中是否遇到以下问题:

    AI人工智能使用遗传算法实现解决方案

    更多建议:

    违法和不良信息举报电话:173-0602-2364|


    相关标签: AI人工智能使用遗传算法实现解决方案

    本文地址:https://www.badfl.com/article/ea7f3610e7aa4573aeb9.html

    上一篇:AI人工智能读取,写入和显示图像...
    下一篇:AI人工智能遗传算法概述...

    发表评论

    温馨提示

    做上本站友情链接,在您站上点击一次,即可自动收录并自动排在本站第一位!
    <a href="https://www.badfl.com/" target="_blank">自动秒收录</a>