Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matlab遗传算法停止准则最大函数求值次数_Matlab_Machine Learning_Genetic Algorithm - Fatal编程技术网

matlab遗传算法停止准则最大函数求值次数

matlab遗传算法停止准则最大函数求值次数,matlab,machine-learning,genetic-algorithm,Matlab,Machine Learning,Genetic Algorithm,我用的是遗传算法函数 ga(fitnessfcn,nvars,.....,options) 在这里,我们可以使用gaoptimset为算法设置各种参数。。。。 然而,我无法理解如何将目标函数评估的最大数量设置为该函数的停止标准 我找到了停止标准的参数生成,但它只设置了最大生成数,并且每一代都有多个函数求值 那么,有人能帮我吗?如果你说的是标准的遗传算法,假设你有N条染色体。在每一代中,通过调用评估函数来计算每个抗体的适合度。因此,对于G代,函数求值的总数以G*N为单位。因此,与其设置函数求

我用的是遗传算法函数

ga(fitnessfcn,nvars,.....,options)  
在这里,我们可以使用gaoptimset为算法设置各种参数。。。。 然而,我无法理解如何将目标函数评估的最大数量设置为该函数的停止标准

我找到了停止标准的参数生成,但它只设置了最大生成数,并且每一代都有多个函数求值


那么,有人能帮我吗?

如果你说的是标准的遗传算法,假设你有N条染色体。在每一代中,通过调用评估函数来计算每个抗体的适合度。因此,对于G代,函数求值的总数以G*N为单位。因此,与其设置函数求值的数量,不如将代数设置为

G=所需的功能评估数量/总体规模

功能评估的数量通常用于比较,而不是代数,因为:

不同的算法每一代执行不同数量的函数求值。例如,免疫系统为每个抗体创建C个克隆并对克隆进行评估,因此功能评估的数量为G*N*C 求值函数通常是算法中计算量最大的部分。
但并非所有上一代的染色体都能存活到下一代。所以,这个公式在我的情况下不起作用。即使一些染色体被拒绝,它们仍然会被评估。由于种群的大小保持不变,每代计算N条染色体。在我的例子中,我在6代中找到了解决方案,但funccount是675,这意味着函数被计算675次,即使我在6代中找到了解决方案。那怎么可能呢?