1

在遗传算法上,将适应度函数设为数学计算以外的东西是否正确?它可以有一个递归函数和一个循环吗?

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

基本思路:

FitnessFunction(){
    fitness = RecursiveFunction();
}

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

    if(another_condition){
        return RecursiveFunction();
    }

    return fitness;
}
4

2 回答 2

2

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

于 2017-10-26T21:53:38.303 回答
2

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

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

于 2017-10-27T00:41:06.903 回答