首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gene包python -定义自定义适应度函数

Gene包python -定义自定义适应度函数
EN

Stack Overflow用户
提问于 2021-09-29 18:43:35
回答 1查看 322关注 0票数 0

我正在使用python中的基因AI包来测试遗传算法(base.py)。

我想要我自己的健身功能所以我写了

代码语言:javascript
复制
def my_fitness(chromosome):   
    fitness = mean_absolute_percentage_error(chromosome, [0.5 0.5 0.5 0.5])
    return fitness

然后按照文档编写了以下代码:

代码语言:javascript
复制
    from geneal.genetic_algorithms import ContinuousGenAlgSolver
    from geneal.applications.fitness_functions.continuous import fitness_functions_continuous
    
    solver = ContinuousGenAlgSolver(
    n_genes=4, 
    fitness_function=my_fitness(chromosome),
    pop_size=10,
    max_gen=200,
    mutation_rate=0.1,
    selection_rate=0.6,
    selection_strategy="roulette_wheel",
    problem_type=float, # Defines the possible values as float numbers
    variables_limits=(-10, 10) # Defines the limits of all variables between -10 and 10. 
                               # Alternatively one can pass an array of tuples defining the limits
                               # for each variable: [(-10, 10), (0, 5), (0, 5), (-20, 20)]
)

solver.solve()

我还不清楚如何使用我自己的健身功能。获得染色体未定义的错误(显然!)如何在这个包中使用自己的健身功能。请出示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-03 09:41:57

健身功能有两个要求:

  • 它必须得到通过,只有一个论点-染色体。如果是二进制遗传算法求解器,染色体是由1和0组成的数字数组,如果是连续遗传算法求解器,则是0到9之间的数字序列。这个数组的大小由初始化求解器的基因数来定义,并且数组上的每个位置对应于一个不同的变量。
  • 它必须返回一个实数。

这个函数的内部工作方式由您来决定。然后,在初始化期间将其传递给对象,例如:

代码语言:javascript
复制
from geneal.genetic_algorithms import ContinuousGenAlgSolver
from geneal.applications.fitness_functions.continuous import fitness_functions_continuous
    
    solver = ContinuousGenAlgSolver(
    n_genes=4, 
    fitness_function=my_fitness,
    pop_size=10,
    max_gen=200,
    mutation_rate=0.1,
    selection_rate=0.6,
    selection_strategy="roulette_wheel",
    problem_type=float, # Defines the possible values as float numbers
    variables_limits=(-10, 10) # Defines the limits of all variables between -10 and 10. 
                               # Alternatively one can pass an array of tuples defining the limits
                               # for each variable: [(-10, 10), (0, 5), (0, 5), (-20, 20)]
)

我建议您查看包中提供的示例,以便更好地了解如何定义自定义适应度函数:示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69381860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档