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

 
Graff:
皆さん!差し支えなければ、UGAライブラリの使用例を教えてください。
どのような例(どのようなトピック)に興味がありますか?
 
joo:
どのような例(どのようなトピック)に興味がありますか?
記事の例では、UGAがどのように機能するのかよくわからないので、UGAを使った例があれば教えてください。記事にはジグザグを使った例がありますが、他のインジケータ(RSI、CCI...)を使った例はありますか?
 
Graff:
記事中の例では、UGAがどのように機能するのかがはっきりしないので、UGAを使用するものがあれば教えてください。記事中にはジグザグを使用した例がありますが、他のインジケータ(RSI、CCI...)を使用した例はありますか?

次のようなスクリプトを書いてください:

1)インジケーターを計算する ために必要なインストゥルメントをデータ配列にロードする。

2) パラメータを指定してインディケータを計算する。

3) インジケータのシグナルに基づいて、エントリー/エグジットポイントを決定する。

4) 興味のある統計指標(スプレッド、ドローダウンなどを考慮した獲得ピップ数)の計算。


2)、3)、4)は、GAの1つの反復のステップであり、個人のFFの計算である。そのようなスクリプトを書いてください、そして私は、あなたがUGAをそれに「ねじ込む」のを助けようとします。


追記もし誰かがこのライブラリ(または他の類似のライブラリ)を使って真剣に研究に取り組んでいるなら、おそらくこれらの開発は私的なものでしょう(取引とは直接関係のないものの研究に時間を費やしている)。

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
zsazsa:

素晴らしい記事だ!ありがとうございます。

1) NNのトレーニングの最適化にUGAを使おうとしたようですが、うまくいきましたか?成功しましたか?

2) この場合の染色体の遺伝子は何でしたか?

3) MT5 と GA の統合をサポートする既存の NN 実装はありますか?

1) はい。
2) ネットワークのニューロンの重みとバイアスを染色体の遺伝子として表現しました。
3)ニューラルネットワークの 独自の実装を書きました。
 

アンドレイ、こんにちは。科学的方法」(UGA_script.mq5とskin.mqhの例)を使って、ライブラリの使い方を学ぼうとしています。もし差し支えなければ、平面上の点の集合があり、それらを特定のカーネルに割り当てる(分類する)必要がある場合、コホネンネットワークの学習 問題を解くための入力パラメータを正しく設定する方法を追加で紹介してください。すなわち、座標(x,y)を持つN個の点、M個のカーネル(学習後に「シフト」される)、FF関数-「近接度測定」。UGA_script.mq5で理解したところでは、パラメータは次のように設定する必要があります。(設定方法がよくわからない), GeneCount_P=2*M (各核に2つの座標), Epoch_P= ??????? (設定方法がよくわからない).(設定方法がわかりません)。よろしくお願いします。

 
kogriv:

アンドレイ、こんにちは。科学的方法」(UGA_script.mq5とskin.mqhの例)を使って、ライブラリの使い方を学ぼうとしています。もし差し支えなければ、平面上の点の集合があり、それらを特定のカーネルに割り当てる(分類する)必要がある場合、コホネンネットワークの学習問題を解くための入力パラメータを正しく設定する方法を追加で紹介してください。すなわち、座標(x,y)を持つN個の点、M個のカーネル(学習後に「シフト」される)、FF関数-「近接度測定」。UGA_script.mq5で理解しているように、パラメータは以下のように設定する:

1) ChromosomeCount_P= ?(設定方法がわからない)、

2) GeneCount_P=2*M (各核に2座標)、

3) Epoch_P=?(設定方法がわからない)。

よろしくお願いします。

1)最初は50に設定し、足りなければ値を増やす(やりすぎは禁物、200-300まで。)

2) はい。

3) 50~100で始め、足りなければ値を増やす(やりすぎず、200~1000まで。)

この数値は経験的なもので、収束速度か結果の正確さ(これらは一般的に、相互に排他的な要件です。)

 

ライブラリを見て回っているところだ。

アンドリュー、なぜ母集団から重複を取り除く前にフィットネス関数を計算しなければならないのか理解できない。コストがかかる。

void CycleOfOperators
(
...........
.......
)
{
 ................................
...............

  //子孫コロニーの各個体のフィットネスを決定する。
  GetFitness(historyHromosomes);
................................
..........................
  //次の繁殖のために母集団を準備する
  RemovalDuplicates();
}// 関数終了

私なら子孫生成の段階でクローンの存在をコントロールします。(実際にそうするつもりだ)。

 
MetaDriver:

1)アンドリュー、なぜ集団から重複を取り除く前にフィットネス関数を計算しなければならないのか理解できない。コストがかかります。

2) 私なら子孫生成の段階でクローンの存在をコントロールします。(実際にそうします)。

1) FF計算を繰り返さない。過去の染色体データベースでチェックするからである。

2) 新しいコロニーが集団に定着する際に、1つだけニュアンスが異なる点がある。しかし、それについては黙っておこう。:)あなたがより正しいと思う方法でやって、その結果を教えてください。


追記 一般的に、このコメントとは関係ないが、ランダムGAの探索は多くの異なる戦略に従うことができ、それぞれのバリエーションはある程度注目に値する。結果(収束率、探索精度、局所極値へのはまり 具合)は、使用する探索戦略にほぼ直接依存する。

 
joo:

1)過去の染色体データベースをチェックし、その個体について過去に一度でもFFが行われたことがあれば、データベースからその値を採用するので、FFの計算を繰り返すことはない。

2) 新しいコロニーを集団に定着させる場合、1つだけニュアンスが異なる点がある。しかし、それについては黙っておこう。:)あなたがより正しいと思うことをして、その結果を私に教えてください。

1) これはこれは。ストーリーテラー:) そこには少なくとも1つの間違いがある。

これは、実数の比較は......うーん......数学者だけが行う方法だ。

        if (Colony[Ge][chromos]!=historyHromosomes[Ge][Ch1])
          break;

このような比較では、浮動小数点以下の15桁の差が遺伝子を異なると認識する。 そして、運命だから常に差がある。;)

少なくともこうでなければならない:

        if (fabs(Colony[Ge][chromos]-historyHromosomes[Ge][Ch1]) > delta)  // 例:0.00001 < デルタ < 0.00000000001
          break;

遺伝子のアルゴリズムとは別に重複の除去をテストしたことは間違いないでしょうから、この断片が機能していると錯覚しているのでしょう。


2)すべてがいかに神秘的であるか...薄いものは薄く、破れたものは破れている。)

ニュアンスの有無にかかわらず、そこではすべてが解決可能だ。 よし、私がどうやったかお見せしよう。

 
MetaDriver:

1) これはこれは。ストーリーテラー:)

2) 少なくとも一つ間違いがある。実数を比較するのは、数学者だけだ。このような比較では、浮動小数点以下の15桁の差が遺伝子を異なると認識する。 そして、運命だから、常に差がある。;)

少なくともこうでなければならない:

3)重複の除去も全く同じです。 遺伝子アルゴリズムとは別に重複の除去をテストしたことは間違いないでしょうから、この断片が機能していると錯覚しているのでしょう。

4)すべてがいかに神秘的であるか...薄いものは薄く、破れたものは破れている。)ニュアンスの有無にかかわらず、そこではすべてが解決可能なのだ。 さて、私がどうやったかお見せしよう。

1)ストーリーテラー?うーん、残念ながらユーモアは理解できなかった。データベースのチェックは、GetFitness(historyHromosomes) から呼ばれる CheckHistoryChromosomes(chromos,historyHromosomes )という 関数で行われます。FFを繰り返し実行することはありません。

2)データベースとの照合は遺伝子ごとに行われる。また、各遺伝子の正規化は、新しい染色体が現れたときにSelectInDiscreteSpace(temp,RangeMinimum,RangeMaximum,Precision,3) で行う。ですから、ここにも「おとぎ話」はありません。

3) 2)を参照。

4) 謎はない。コードはオープンで透明。確かにニュアンスはある(それは実装の問題ではなく、収束の質に関係している)。