Tek*_*kin 3 python genetic-algorithm evolutionary-algorithm deap
我正在 Python 中使用 DEAP 包编写一个程序,用于使用进化算法(特别是遗传算法)进行优化。
我需要使用 python 中的列表类型创建染色体。该染色体应该有五个不同范围的浮动基因(等位基因)。
我的主要问题是创造这样的染色体。但是,如果我可以使用 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)
Run Code Online (Sandbox Code Playgroud)
我从这里得到的。
我在这里找到了一个很好的推荐。
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)
Run Code Online (Sandbox Code Playgroud)
(icls代表单个类)参数应该接收创建者创建的类型,而配置范围的所有其他参数可以像参数一样传递more_params或使用脚本中定义的常量传递。以下是它在工具箱中的注册方式。
toolbox.register('individual', genFunkyInd, creator.Individual, more_params)
Run Code Online (Sandbox Code Playgroud)
它手动创建染色体的类。我不知道这是否是最好的选择,但它可以用来解决我的问题。
| 归档时间: |
|
| 查看次数: |
1554 次 |
| 最近记录: |