AI人工智能 遗传算法

AI人工智能 遗传算法概述

什么是遗传算法?

遗传算法(GA)是基于自然选择和遗传学概念的基于搜索的算法。遗传算法是称为进化计算的更大分支的一个子集。

GAs 由 John Holland 及其在密歇根大学的学生和同事开发,最着名的是 David E.Goldberg。自那以来,它一直在尝试各种优化问题并取得了很高的成功。

在 GAs 中,我们为给定问题提供了一系列可能的解决方案。这些解决方案然后经历重组和突变(如在自然遗传学中),产生新的儿童,并且该过程在各代重复。每个个体(或候选解决方案)都被分配一个适应值(基于其目标函数值),并且适合者个体被赋予更高的配偶并产生更适合个体的机会。这符合达尔文适者生存理论。

传算法在本质上具有充分的随机性,但它们比随机局部搜索(我们只是尝试随机解决方案,追踪迄今为止最好的)的性能好得多,因为它们也在利用历史信息。

如何使用遗传算法优化问题

优化是使设计,状况,资源和系统尽可能有效。 以下框图显示了优化过程

在这里插入图片描述

GA 机制优化过程的阶段

1- 随机生成初始群体。
第2- 选择具有最佳适应值的初始解决方案。
第3- 使用变异和交叉算子重组选定的解决方案。
第4- 将后代插入群体。
第5- 现在,如果停止条件得到满足,则返回具有最佳适应值的解。 否则,请转到第2步。

安装必要的软件包
要在 Python 中使用遗传算法来解决这个问题,我们将使用一个称为 DEAP 的功能强大的 GA 包。 它是用于快速建立原型和测试思想的新型演化计算框架库。在命令提示符下使用以下命令来安装此软件包

pip install deap

如果您使用的是anaconda环境,则可以使用以下命令安装 deap

conda install -c conda-forge deap

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

生成位模式

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

import random
from deap import base, creator, tools

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

def eval_func(individual):
   target_sum = 15
   return len(individual) - abs(sum(individual) - target_sum)

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

def create_toolbox(num_bits):
   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, num_bits)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)

注册计算操作符

toolbox.register("evaluate", eval_func)

现在,注册交叉运算符

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

注册一个可变运算符

toolbox.register("mutate", tools.mutFlipBit, indpb = 0.05)

定义育种操作符

toolbox.register("select", tools.selTournament, tournsize = 3)
return toolbox
if __name__ == "__main__":
   num_bits = 45
   toolbox = create_toolbox(num_bits)
   random.seed(7)
   population = toolbox.population<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马里亚纳海沟网

你的打赏是我最大鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值