文章 "遗传算法 - 很简单!" - 页 16

 
Alexey_74:

安德鲁,还有一个问题。

我们能说这些变量的这些值适合大多数优化问题吗?

可以。

这些设置都有一定的 "保留",以增加可搜索性(搜索范围)。为了获得更精确的数值(但找到全局极值的概率会降低),可以降低突变参数和区间边界移动系数。

 
Alexey_74:

安德鲁,还有一个问题。

我们能说这些变量的这些值适合大多数优化问题吗?正如某些资料中所说"...90%的问题可以用传统感知器解决"。

ZAGASTE GA)

该算法是单线程的,可以轻松内置到专家顾问中,在测试器中运行,并组织 GA 之间的竞赛。

 

太好了

安德烈,你知道,我对自己的无礼感到惊讶,但我必须提出一些 "批评" ))

在 UGA 代码中,有三处调用了 ServiceFunction()函数。但这并没有什么用。当然,你可以在屏幕上看到动态效果,但它的速度太快,无论如何你都无法看到和评估它。您可以在 UGA() 主体中删除对它的调用。在调用 UGA() 之后再调用一次就足够了。

"......小提琴手是多余的,他只会消耗额外的燃料"(kin dza dza (c)

  ts=GetTickCount();
  UGA( ... );
  ts=GetTickCount()-ts;
  ServiceFunction();
 
这就是为什么它是一个服务功能,您可以将其用于调试、可视化或其他用途,也可以完全不使用,谁会喜欢呢?:)
 

我做了一个实验。我将 "频率 "为 47、81、187 的三个正弦波相加。我得到了以下结果

然后我开始直接枚举搜索(3 个循环,2 个嵌套),不过在相关系数 = 1.0 时会中断。如果没有这个条件,所有这些无意义的工作都会花费更长的时间。但这样做只用了 375 秒(6 分钟多一点)。

而 GA 只用了 2 秒钟。))

但还有一个问题。结果是这样的

最后两位数:2747--FF 调用次数;506--相关系数 r 等于 1.0 时的 "状态 "数。事实证明,该算法本可以运行得更快,因为 r 不能大于 1.0,而且在第一次达到 r=1 后,任务即被视为完成。但算法达到 r=1.0 状态的次数为 506 次。

参数如下

参数

和这个 FF。

void FitnessFunction(int chromos)
{
  int cnt = 1;

  while(cnt<=GeneCount)
  {
    F1=Colony[cnt][chromos]; cnt++;
    F2=Colony[cnt][chromos]; cnt++;
    F3=Colony[cnt][chromos]; cnt++;

    Fill(sum);
    r=Pirson(sin,sum,nobs);
    if(r>0.99999999) count++;
  }
  AmountStartsFF++;

  Colony[0][chromos]=r;
}

问题--有没有办法向算法解释,(有时)提前终止是可能的(必要的)。还是我们不应该断然这样做,而应该等待达到收敛?

 

我一直想知道 "多少 "这个问题的答案。这一次,我在气势上加了 50 个正弦波。数值范围 是 1-500。因此,如果我没记错的话,直接搜索的结果是 500^50,即 8.88178419700121252323333890533447266e+134 次迭代(如果我的计算器没有骗我)。显然,这不可能换算成秒(分钟、小时、天、年)。只有遥远的后代才能看到结果。GA 只用了 1 小时。20分钟。哇此外, 结果表明 50 个正弦波之和与动量的相关系数为 0.5275。为什么是"另外"?因为我以前没有机会检查这一点。而在某些情况下,这表明了一些想法.....。

我并没有刻意去研究正弦曲线,只是因为我对它了如指掌。此外,既然目标是实现连续信号的最大相似性,那么结果就是这种相似性,换句话说,结果是毫不含糊的,此外,也很容易验证。

安德烈,非常感谢你的产品。我希望在不久的将来能读到你的另一篇文章。带有精英选择的 GA。))

Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Типы char, short, int и long - Документация по MQL5
 
Alexey_74:
...

问题--有没有办法向算法解释(有时)可以提前终止?或者说不应该这样做,我们应该等到收敛后再终止?

这是可能的。甚至是必要的。如果你对所研究的函数有所了解(如你的问题:FF<=1),就应该积极利用这些信息来避免不必要的计算,从而缩短搜索时间。

在本实现中,没有从外部控制算法的杠杆,但添加一个控制强制停止标志的函数就足够了。

在下一代算法中,从外部控制算法的可能性将大大增加(一般来说,算法是在外部控制下启动的,而不是像现在这样--FF 是由算法本身启动的,因此在不进行修改的情况下,不可能在自动优化猫头鹰中使用该算法)。

 
Alexey_74:

....

安德鲁,再次感谢您的产品。我希望在不久的将来能再看到您的一篇文章。GA 与精英选择。))

谢谢您的感谢。:)

肯定会有续集的。

祝你找到最佳状态!在生活、工作、生活...一切的一切

 
我不敢问....))我的理解正确吗?下一代算法可以形式化为 DLL?