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<