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

 
Urain:

....

一般に、GAが見つけるのは厳密な解ではなく、ロバストな解であることを理解すべきである。つまり、可能な解のフィールドと比較して、かなり成功した解を見つけるのである。

テスト関数は「敗北」する。敗北しなければならない。

というわけで、あなたの言うことはすべて正しい。

 
joo:

テスト機能は "敗北 "する。敗北しなければならない。

しかし、あなたはすべて正しいことを言っている。

そうそう、詳しく説明しなかったが、だからこそテスト関数なのだ。

テストにさえ合格しなければ、アルゴリズムが未知のフィールドで何を見つけるか想像するのは難しい。

 

ありがとう、うまくいったよ。

マイナスと掛け算がごっちゃになるなんて、僕がバカだったんだ。

 
ivandurak:

ありがとう

アルゴリズムのことですか?おめでとう
 

近似誤差を最小化するためにフィットネス関数の同じ値で異なる変数を最適化する必要がある場合、UGAを正しくねじ込むにはどうすればいいのだろう?古典的な問題です。例えば、4つのニューロンを持つ5パスの2層ニューラルネットワークは、0.0001の精度で[-1...1]の範囲でバイアスと一緒に22の係数を探索し、同時に同じターゲット関数で5個*2パラメータ= 5...50の範囲で10変数の入力指標のパラメータを選択する必要があります。または別々に、ただし0.01のステップで。

もちろん、重みの範囲で指標の値をエンコードすることもできます。しかし、それは少し違います。

そしてもうひとつ質問。遺伝子をスキップする条件をUGAに渡すことは可能ですか?つまり、例えば、指標を担当する遺伝子は、G23< G24 G25<G26 のような条件に対応しなければならない。

 
miklelv:

近似誤差を最小化するためにフィットネス関数の同じ値で異なる変数を最適化する必要がある場合、UGAを正しくねじ込むにはどうすればいいのだろう?古典的な問題です。例えば、4つのニューロンを持つ5パスの2層ニューラルネットワークは、0.0001の精度で[-1...1]の範囲でバイアスと一緒に22の係数を探索し、同時に同じターゲット関数で5個*2パラメータ= 5...50の範囲で10変数の入力指標のパラメータを選択する必要があります。または別々に、ただし0.01のステップで。

もちろん、重みの範囲で指標の値をエンコードすることもできます。しかし、それは少し違います。

そしてもうひとつ質問。遺伝子をスキップする条件をUGAに渡すことは可能ですか?つまり、例えば、指標を担当する遺伝子は、G23< G24 G25< G26 のような条件に対応していなければならない。

それだけだ、

ほとんどのパラメーターが機能する範囲があり、残りは単純にシフトとスケーリングによって調整される。

この記事のコードが、消費者のくしゃみのために磨き上げられた商業的な開発ではないことはご理解いただけるだろう。

各パラメータに設定範囲を作りたいという願望はある。


遺伝子の範囲を [-1;1] --> (int)NormaliseDouble(((gene+1)/2)*45+5 ,0) --> [5;50] とする。

同じ結果を出す遺伝子が多数存在することに同意するが、ここでは遺伝子を組み合わせるための精度セッターを作ることができる。例えば、0から1000番目の遺伝子の精度は3桁、1000から1010の精度は0桁である。

 
miklelv:

そして、もうひとつ質問がある。遺伝子スキップの条件をUGAに渡すことは可能ですか?例えば、指標となる遺伝子はG23<G24 G25<G26 のような条件を満たさなければならない。

パラメータ1=G23 パラメータ2=G23+G24。
 
her.human:
パラメータ1=G23 パラメータ2=G23+G24。

範囲を変換する場合、論理的なチェックを入れて変換した方がよい。

そうでないと、壊れた範囲の一部と別の部分との間につながりがなくなります。ここでは、遺伝子は異なる染色体から借用されることを理解する必要があり、それに応じて、2番目の遺伝子は、新しい染色体の2番目の遺伝子の生産のためだけに借用することができます。

1つのパラメーターが2つの遺伝子で表される場合、それらの間に関連性はない。

 
Urain:

論理的なチェックを行いながら変換を行う方がよい。

そうでないと、壊れた範囲の一部と別の部分との間につながりがなくなる。遺伝子は異なる染色体から借用されるものであり、それに応じて、2番目の遺伝子は新しい染色体の2番目の遺伝子を作るためだけに借用されることを理解すべきである。

1つのパラメーターが2つの遺伝子で表される場合、それらの間につながりはない。

その方がいいかもしれない。

私は単純な変形を提案した。GAなら問題なく処理できる。

一般に、遺伝子は常に借用されるわけではなく、新しい遺伝子が生成されることもある。

 
コメントありがとう。確かにコーディングしやすくなりました。私はNeuroshellのPrediction Wizardをmqlで再現しようとしています。そこでは、5...50の範囲でそれぞれ2〜4パラメータを持つ20指標の1サイクルで200〜2000バーの履歴に2〜3秒のために、この20最高の指標(例えば、5個)から選択されたものから形成されています。これはすべてVBbasicで書かれている。クールなアルゴリズムに違いない。UGAで十分です。