【问题标题】:Genetic Algorithms: Can my Fitness Function be too complicated?遗传算法:我的健身功能会不会太复杂?
【发布时间】:2018-04-07 17:53:21
【问题描述】:

在遗传算法中,将适应度函数设为数学表达式以外的其他东西是否正确?里面会不会有递归函数和循环?

问题是我正在评估我是否可以在我的论文中使用遗传算法,而我正在考虑的这个适应度函数可能有点复杂。但也许不是,我只需要确保程序可以处理这样的功能并且不会造成瓶颈,对吧?

基本思路:

FitnessFunction(){
    fitness = RecursiveFunction();
}

RecursiveFunction(){
    do{
        //Do something
    }while(other_condition);

    if(another_condition){
        return RecursiveFunction();
    }

    return fitness;
}

【问题讨论】:

  • 这个没问题。它只是会很慢,可能效率不够。

标签: genetic-algorithm evolutionary-algorithm fitness


【解决方案1】:

这将是一个瓶颈,但这是意料之中的。评估函数通常占用大部分执行时间,因为相比之下遗传算子(交叉、变异)是非常简单的操作。我见过 GA,其中评估函数是模拟房屋结构接收地震,所以你应该没问题。

但是,值得您隔离,测量时间并尝试尽可能优化功能。考虑到它会为成百上千的个体运行许多代,并且您将重复整个过程,调整参数和您的 GA 实现。

【讨论】:

    【解决方案2】:

    只要您的函数返回一个适应度值(看起来确实如此),我认为这没有问题。事实上,遗传算法和进化计算通常非常适合复杂的适应度函数,这些函数在许多情况下是不可微的,因此很难与梯度下降等其他训练方法一起使用。

    【讨论】:

      猜你喜欢
      • 2011-08-07
      • 2019-11-23
      • 2010-12-23
      • 2023-01-19
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      相关资源
      最近更新 更多