MT開発者向けではない!?INIT_PARAMETERS_INCORRECTを何に置き換えたらいいのでしょうか? - ページ 2

 

OnTesterInitで独自の最適化セットを作成し、オプティマイザに1つのsinput int NumPassだけが最適化されていると思わせることができる。

このことが最終的な結果にどのような影響を与えるか、つまり望ましい大域的(局所的)極限が見つかるかどうかについては、何とも言えません。

例を挙げるのはまだ早いので、Documentationをご覧ください。そこそこよく書けている。

 
fxsaber:

1つのレシピは、開発者がINCORRECTパスの結果を、以前カウントされたCORRECTパスに最も近いものとしてカウントさせることである。これにより、最適化面の穴が均等になります。

これこそ開発者の反感を買う。この場合、集団の中の他の個体は「生き残る」ことになります。そして、遺伝子が誤差を伴って働き始めるのです。

 

有効な鎖だけを番号で出力する関数を書いてみてはどうでしょうか?

まず思い浮かぶのは117649の値の表で、遺伝子がその表から数字を探すようにします。

 
Sergey Savinkin:

これこそ開発者の反感を買う。この場合、集団の中の他の個体は「生き残る」ことになる。そして、遺伝子が誤作動を起こすようになるのです。

私もこのようなアルゴリズムには反対です。INCORRECTは、許容できないパラメータセットであり、「最も近い許容できる」ものに置き換えることはできない。

 
Sergey Savinkin:

これこそ開発者の反感を買う。この場合、集団の中の他の個体は「生き残る」ことになる。そして、遺伝子がエラーを起こすようになるのです。

実際の遺伝学はほとんど間違っていて、それが当たり前になっています。この分野の適切な調査がなければ、私は提案されたオプションについて何も主張しないでしょう。

 
Georgiy Merts:

有効な鎖だけを番号で返す関数はどうでしょうか?

まず思い浮かぶのは117649の値の表で、遺伝子がその表の中の数字を探すようにします。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MT開発者向けではありませんINIT_PARAMETERS_INCORRECTを何に置き換えたらいいのでしょうか?

fxsaber さん 2018.07.10 16:22

OnTesterInitで最適化セットを作成し、オプティマイザに、1つのsinput int NumPassだけが最適化されていると思わせることができます。

このことが最終的な結果にどのような影響を与えるか、つまり必要な大域的(局所的)極限が見つかるかどうかを判断することは困難である。

最終的な仕上がりに対する満足度の基準に強く依存します。


y = x^2 の完全な列挙に従えば、明らかである。次に、行をランダムにシャッフルし、シャッフルに基づいた新しいセットを作成します。そうすると、GA は放物線の頂点を見つけることができません。

 
fxsaber:

明らかにy=x^2の完全な列挙をトレースすれば。次に、オプティマイズの行をランダムにシャッフルし、シャッフルに基づいた新しいセットを作成します。GAでは放物線の頂点を見つけることができません。

そう、ここで、これらの非常にINCORRECTがフィットネス関数空間を「引き裂きすぎる」ことが判明したのです。

残念ながら、入力パラメータを再設計する以外に方法はありません。 ご指摘の OnTick() のスキップは、INCORRECT パラメータを置き換えるだけの松葉杖で、実際には遺伝的アルゴリズムは とにかく「殺されて」しまいます。 遺伝では結果関数に「勾配」が必要なので、それを使って最大値に移動させることは可能ですが、「勾配」がなければ、遺伝的アルゴリズムは成立しません。しかし、有効な値よりもINCORRECTの方が多い場合、この最大値はどのように求めるのでしょうか?

フルブルートフォース以外では何もできないし、フルブルートフォースでも非常に不安定な解を見つけることになるのではないでしょうか。
 

入力パラメーターの設定には、ちょっとしたコツが必要です。

ごく一般的な例を挙げることができる。毎日の取引間隔を最適化する場合、毎日の開始時刻と終了時刻の2つの入力パラメータが最も一般的です。

しかし、これは例えば開始時間や期間を指定するよりも、GAにとってはるかに悪いことです。一見同じように見えるが、GAにはない。2つ目のケースでは、GAの方がうまくいくでしょう。より良い」というのは、かなり主観的な評価ですが。

 

Georgiy Merts:

INCORRECTが有効な値よりも多い場合、この最大値はどのように見つけるのでしょうか?

上と同じ放物線を考えてみましょう。ある入力パラメータの値の90%のテスト区間でINCORRECTを起こしたとする。現在のGAは、そのような作業でクラッシュしてしまいます。しかし、提案されたオプションで進めば、GAは問題なく動作します。


これらの質問については、@Andrey Dikが助けて くれると思います。しかし、通常のGAに対する建設的な批判もうまくいかなかった......。

 
fxsaber:

上と同じ放物線をとる。一つの入力パラメータの値の90%のテスト区間でINCORRECTを出したとする。今のGAは、そんなことをしたら死んでしまう。しかし、提案されたバリアントで進めば、GAは問題なく動作します。

どうやって?不正解を最も近い修正に置き換えることで、「?まさに不正をどう流通させるかにかかっていると思います。最も近い補正-がトップから離れることは十分にあり得ることです。

そうすると、間違ったパラメータのセットではなく、正しい結果が得られるということがわかりますが、これも私の意見としては、やってはいけないことです。最大値を取得しても、パラメータのセットが正しくないのでは?