Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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_Genetic Algorithm - Fatal编程技术网

Matlab遗传算法

Matlab遗传算法,matlab,genetic-algorithm,Matlab,Genetic Algorithm,我试图用遗传算法解决一个排课问题。 几代之后,遗传算法停止了,我得到了以下信息: Optimization terminated: average change in the penalty fitness value less than options.TolFun and constraint violation is less than options.TolCon. 我做了一些搜索,据我所知,它与功能公差有关: “如果平均相对变化处于最佳状态,则算法停止 MaxStallGenera

我试图用遗传算法解决一个排课问题。 几代之后,遗传算法停止了,我得到了以下信息:

Optimization terminated: average change in the penalty fitness value less than options.TolFun 
and constraint violation is less than options.TolCon.
我做了一些搜索,据我所知,它与功能公差有关:

“如果平均相对变化处于最佳状态,则算法停止 MaxStallGenerations上的适应度函数值较小 大于或等于“公差”

这是一个正标量。 有没有办法为GA禁用此选项?
我们希望它继续尝试解决方案,直到适应度值为零或达到一定的世代数。

这确实是可能的。我总是在Matlab中运行GAs,停止标准是最大生成数。你能把你打电话的代码发到
ga()
?我很确定您的输入之一是
options
,这是
gaoptimset()
的输出,如果是这种情况,您能提供
options
结构吗?下面是选项和对ga()的调用:options=gaoptimset('PlotFcn'{@gaplotbestf,@gaplotscores}"托尔芬",0,"人口规模",4000,"世代",100000,"显示","iter";;调用:[x,fval]=ga(ObjectiveFunction,nvars,[],[],[],[],[],[],[],[],LB,UB,[],IntCon,options)我认为您可以通过将
TolFun
设置为
-inf
或设置一个新参数
StallGenLimit
(或者
maxstalgenerations
我认为在您的情况下……我正在使用Matlab R2015b)来避免这个问题作为一代人的数量本身。考虑到所有世代的所有适应值,几乎不可能有一个小的变化(低于阈值)。相反,如果您想在适应度函数上设置一个阈值,请添加
FitnessLimit
选项,并将其设置为
0
(我对
FitnessLimit
不太确定,因为我总是让我的GA达到最大生成次数)感谢您的帮助,当我将
TolFun
设置为
-inf
时,我得到了以下错误:
字段“TolFun”必须包含一个非负标量。
,但我尝试将
StallGenLimit
设置为代数,到目前为止它工作正常。是的,我的错误
TolFun
不能为负数。<代码> StallGenLimit <代码>应该做这个技巧,因为它不会考虑默认的50代,但是在评估<代码> TolFun < /代码>时,会考虑所有100000代人。在超过100000代的50代中,适应度可能不会改变,算法停止,但当然,超过100000代时不会发生。