記事"遺伝的アルゴリズム - とても簡単です!"についてのディスカッション - ページ 16

 
Alexey_74:

アンドリュー、もうひとつ質問だ。

このような変数の値は、ほとんどの最適化問題に適していると言えますか?

そうです。

この設定は、検索性(検索フィールドのカバー率)を高めるために、ある程度の「予備」を持っています。より正確な値(ただし、大域的極限がまったく見つからない確率は低下します)を求めるには、突然変異パラメータと区間境界シフトの係数を小さくすればよいのです。

 
Alexey_74:

アンドリュー、もうひとつ質問だ。

このような変数の値は、ほとんどの最適化問題に適していると言えるのでしょうか?いくつかの情報源で言われているように、「...90%の問題は従来のパーセプトロンを使って解くことができる」とあります。

ZAGASTE GA :)

このアルゴリズムはシングルスレッドで、エキスパート・アドバイザーに簡単に組み込むことができる。

 

素晴らしい。

アンドレイ、あのね、自分の不謹慎さに驚いているんだけど、ちょっと「批判」を言わせてもらうよ ))

ServiceFunction()関数は、UGAコードの3箇所で呼び出されている。しかし、これは何の役にも立たない。もちろん、画面上でダイナミクスを見ることはできるが、あまりに速いので、いずれにせよ見て評価することはできない。UGA()本体の中でその呼び出しを削除することができる。UGA()を呼び出した後に一度呼び出すだけで十分です。

"...そしてヴァイオリニストは不要である。彼は余分な燃料を消費するだけである" (kin dza dza (c))

  ts=GetTickCount();
  UGA( ... );
  ts=GetTickCount()-ts;
  ServiceFunction();
 
繰り返しになるが、それは重要なことではない。だからこそサービス機能なのであって、デバッグやビジュアライゼーション、あるいは他の何かに使うこともできるし、誰が好き好んで使うわけでもない。:)
 

ある実験をした。周波数」47、81、187の3つの正弦波の和を作ったんだ。こうなった。

それから、相関係数の値が1.0になった時点で中断はしたが、直接探索(3サイクル、2ネスト)で探索を開始した。相関係数が1.0になった時点で中断した。しかし、この方法では375秒(6分強)で終わった。

GAは2秒でやってくれた。))

しかし、疑問がある。結果はこうだ。

下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.8817841970012523233890533447266e+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:

....

アンドリュー、あなたの製品に改めて感謝します。私は近い将来、あなたの記事の別の1つを信用したいと思います。エリート選択のGA。))

ありがとうございます。:)

続編があることは間違いない。

そして、最適なものが見つかるといいね!人生でも、仕事でも、恋愛でも...。すべてにおいて。

 
聞くのが怖いんだけど...。))私の理解は正しいですか?次世代アルゴリズムはDLLとして形式化できる?
 
はい