python - 如何在 python 中为 deap 包创建一个包含不同范围随机数的列表

标签 python genetic-algorithm evolutionary-algorithm deap

我正在使用 Python 中的 DEAP 包编写一个程序,用于使用进化算法(特别是遗传算法)进行优化。

我需要在 python 中使用列表类型来创建染色体。这条染色体应该有五个不同范围的 float 基因(等位基因)。

我的主要问题是创建这样一个染色体。但是,如果我可以为此使用 deap 包的 tools.initRepeat 函数会更好。

对于所有基因都在同一范围内的情况,我们可以使用以下代码:

import random

from deap import base
from deap import creator
from deap import tools

creator.create("FitnessMax", base.Fitness, weights=(1.0,))
creator.create("Individual", list, fitness=creator.FitnessMax)

IND_SIZE=10

toolbox = base.Toolbox()
toolbox.register("attr_float", random.random)
toolbox.register("individual", tools.initRepeat, creator.Individual,
                 toolbox.attr_float, n=IND_SIZE)

我从 here 得到的.

最佳答案

我找到了一个很好的推荐here .

def genFunkyInd(icls, more_params):
    genome = list()
    param_1 = random.uniform(...)
    genome.append(param_1)
    param_2 = random.randint(...)
    genome.append(param_2)
    # etc...

    return icls(genome)

icls(代表单个类)参数应该接收创建者创建的类型,而配置范围的所有其他参数都可以像 more_params 参数或在脚本中定义常量。这是它在工具箱中的注册方式。

toolbox.register('individual', genFunkyInd, creator.Individual, more_params)

它手动为染色体创建一个类。我不知道这是否是最佳选择,但它可以用来解决我的问题。

关于python - 如何在 python 中为 deap 包创建一个包含不同范围随机数的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42841985/

相关文章:

python - 使用 PyGAD 进行遗传算法

algorithm - 遗传算法和进化算法有什么区别?

machine-learning - 计算资源有限的机器学习

java - 在 eclipse 中设置 java 配置。多个 .param 文件

python - 我可以 git 忽略整个分支来创建与实时服务器交互的本地分支,并将调试设置为 True 吗?

python - 计算 2 部词典中的所有差异并全部显示

c# - TSP遗传算法中的交叉操作

python - XOR 神经网络不学习

python - wxPython 笔记本页面

python - 如何为我的遗传算法创建环境?