遗传算法:我的适应度函数会不会太复杂了?

Genetic Algorithms: Can my Fitness Function be too complicated?

在遗传算法中,使适应度函数不是数学运算是否正确?它可以有一个递归函数和一个循环吗?

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

基本思路:

FitnessFunction(){
    fitness = RecursiveFunction();
}

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

    if(another_condition){
        return RecursiveFunction();
    }

    return fitness;
}

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

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

然而,值得您隔离、测量时间并尝试尽可能优化功能。考虑到它将 运行 用于成百上千的个人、许多代人,并且您将多次重复整个过程,调整参数和您的 GA 实施。