遗传算法:我的适应度函数会不会太复杂了?
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 实施。
在遗传算法中,使适应度函数不是数学运算是否正确?它可以有一个递归函数和一个循环吗?
问题是我正在评估我是否可以在我的论文中使用遗传算法,我正在考虑的这个适应度函数可能有点复杂。但也许不会,我只需要确保程序可以处理这样的功能并且不会造成瓶颈,对吧?。
基本思路:
FitnessFunction(){
fitness = RecursiveFunction();
}
RecursiveFunction(){
do{
//Do something
}while(other_condition);
if(another_condition){
return RecursiveFunction();
}
return fitness;
}
只要您的函数 returns 具有适合度值(看起来确实如此),我认为这没有问题。事实上,一般来说,GA 和进化计算非常适合复杂的适应度函数,这些函数在许多情况下是不可微的,因此很难与梯度下降等其他训练方法一起使用。
这将是一个瓶颈,但这是预料之中的。评估函数通常占用大部分执行时间,因为相比之下遗传算子(交叉、变异)是非常简单的操作。我看过GA,评估函数是模拟房屋结构受震,应该没问题。
然而,值得您隔离、测量时间并尝试尽可能优化功能。考虑到它将 运行 用于成百上千的个人、许多代人,并且您将多次重复整个过程,调整参数和您的 GA 实施。