記事"遺伝的アルゴリズム - とても簡単です!"についてのディスカッション - ページ 8 123456789101112131415...20 新しいコメント Vladimir Gomonov 2011.05.14 23:11 #71 joo:1)ストーリーテラー?うーん、残念ながらユーモアは理解できませんでした。データベースのチェックは、GetFitness(historyHromosomes) から呼び出される CheckHistoryChromosomes(chromos,historyHromosomes )という 関数で行われます。FFの繰り返し実行はありません。2)データベースとの照合は遺伝子ごとに行われる。また、各遺伝子は新しい染色体が現れるとSelectInDiscreteSpace(temp,RangeMinimum,RangeMaximum,Precision,3) によって正規化される。ですから、ここでも「おとぎ話」はありません。3) 2)を参照 1,2,3) わかった。ほぼ。正規化は本当にある。 しかし、「ギャップなしで」実数を等しく比較する理由にはまだならない。:)SelectInDiscreteSpace()は少し手直ししました。内部的にStepを修正しているのが気に食わなかった。ユーザーを修正するのは王道ではない。少なくとも今回は違う。遺伝子の変化範囲に関してStepを「不合理」にするために、ユーザーは合理的な考慮をしているかもしれない。それはこうだ:double SelectInDiscreteSpace ( double In, double InMin, double InMax, double step, int RoundMode ) { if (step==0.0) return(In); // 境界線が正しいことを確認する if ( InMax < InMin ) { double temp = InMax; InMax = InMin; InMin = temp; } // 違反した場合、違反した境界を返す。 if ( In < InMin ) return( InMin ); // if ( In > InMax ) return( InMax );// そして最後にこうする。, всё равно придётся if ( InMax == InMin || step <= 0.0 ) return( InMin ); // 与えられた尺度に合わせる // step = (InMax - InMin) / MathCeil ( (InMax - InMin) / step ); // いや、"所定のスケール "には持っていかない。 switch ( RoundMode ) { case 1: In = ( InMin + step * MathFloor ( ( In - InMin ) / step ) ); case 2: In = ( InMin + step * MathCeil ( ( In - InMin ) / step ) ); default: In = ( InMin + step * MathRound ( ( In - InMin ) / step ) ); } return fmin(In,InMax); } Andrey Dik 2011.05.15 02:26 #72 MetaDriver:SelectInDiscreteSpace()を少し修正しました。内部でステップを修正するのが気に入らない。ユーザーを修正するのは王様の仕事ではない。少なくとも今回は違う。遺伝子の変化範囲に関してStepを "不合理 "にする合理的な考慮がユーザーにはあるかもしれない。これを理解せよ:というのも、入力された数値のどちら側から数値行の値を "つかむ "かという問題がすぐに生じるからである(何が "右 "なのか、右なのか、左なのかはわからない)。だからこのようにする必要があるのだ:step = (InMax - InMin) / MathCeil ( (InMax - InMin) / step );以下は、あなたのコードと私のコードの結果の比較例です: 結果 私 あなたの で 2,2 2 2 インミン 2 InMAX 3 ステップ 0,8 結果 私の あなたの で 2,8 3 2,8 インミン 2 InMAX 3 ステップ 0,8 結果 私の あなたの で 2,2 2,25 2,3 インミン 2 InMAX 3 ステップ 0,3 Andrey Dik 2011.05.15 09:05 #73 このような正規化の意味は NormalizeDouble()とは異なるが、それを好まないオーナーは、SelectInDiscreteSpace()のように指定されたステップではなく、必要な符号に正規化を使用することができます次第です。 Vladimir Gomonov 2011.05.15 17:33 #74 joo: このような正規化の意味は NormalizeDouble()とは異なりますが、それを好まない所有者は、SelectInDiscreteSpace()のように指定されたステップではなく、必要な符号に正規化を使用することができます次第です。前の投稿と同じように、すべてクリアです。Andrei、リストされたすべての変形はここに存在する権利がある。もちろんあなたのものも。最適化中に離散性を変更するフローティングは、細心の注意を払う必要があります。--一般的にすべてについて:設定や遺伝的演算子のライブラリなどを追加すべきだし、便利な拡張や使い方をあらかじめ考えておくべきだ。私は、すべてをオブジェクトに書き換えて、プログラムとユーザーの両方により強力なインターフェイス(グラフィカルで、タブで多くの設定ができる)を作ろうと考えている。追加するものもあれば、共同最適化するものもある。より正確には、あなたのコードをベースにするか(フラグメントを使うか)、全部書き直すか、まだ考え中です。もし参加したいのであれば、個人的に書いて ほしい。公開するかどうかはわからない。いずれわかる。今のところ、僕は自分のためにやりたいんだ。 Andrey Dik 2011.05.15 22:31 #75 MetaDriver:全般的に1)良い意味で、カスタマイズや遺伝演算子のライブラリなどを追加し、便利な拡張性や使い方を事前に考えておく必要がある。2) より正確には、あなたのコードをベースにするか(フラグメントを使うか)、もう一度書き直すか、まだ考え中です。3) もし参加したいのであれば、プライベートで書いて ください。1) 逆に、コントロールの柔軟性を下げることなく、UGAパラメータの数を減らそうとしています。2) 記事のコードをそのままプロジェクトで使っている人、0から書き直した人を何人か知っている。3) プライベート・メッセージであなたに書きました。 Mykola Demko 2011.05.15 22:56 #76 MetaDriver:これは前の記事と同じで、すべて理解できる。アンドレイ、ここに挙げた選択肢はすべて存在する権利がある。もちろん、あなたのものも。最適化の過程で変化する浮動離散性には細心の注意が必要だ。--一般的なすべてについて:設定や遺伝的演算子のライブラリなどを追加すべきだし、便利な拡張や使い方をあらかじめ考えておくべきだ。私は、すべてをオブジェクトに書き換えて、プログラムとユーザーの両方により強力なインターフェイスを作ろうと考えている(グラフィカルで、タブで多くの設定ができる)。追加するものもあれば、共同最適化するものもある。より正確には、あなたのコードをベースにするか(フラグメントを使うか)、もう一度全部書き直すか、まだ考えているところです。...ウラジミール、君は乗りたいのか走りたいのか?美しいコードが欲しいのか、それともテスターのものよりもクールなGAを作りたいのか?個人的にはテスターのものはとてもクールだと思うが、パラメータが少ない。 。 Vladimir Gomonov 2011.05.16 02:30 #77 Urain:ウラジミール、乗りたいのか、運転したいのか?美しいコードが欲しいのか、それともテスターのものよりクールなGAを作りたいのか?個人的には、テスターのものはかなりクールだと思う。たった一つのニュアンスだけではパラメータが足りない。 。 私は便利なコードが欲しい。使いやすく、拡張しやすく、修正しやすく、埋め込みやすい。 Mykola Demko 2011.05.16 12:22 #78 MetaDriver:便利なコードが欲しい。使いやすく、拡張しやすく、変更しやすく、埋め込みやすい。 次に、GAのオブジェクトモデルを記述する。記述されたモデルに従って空のクラスを作り、そこにコードを詰め、相互作用を規定する。 Roman Zamozhnyy 2011.07.19 17:24 #79 175行目を NormalizeDouble((double)SumOfCurrentEpoch/MathMax(1,(double)resetCounterFF),2),これがないと、ジョブ・レポートはエラーで失敗します。 Andrey Dik 2011.07.19 21:13 #80 Rich:175行目をこれがないと、操作報告はエラーで失敗します。そうです、gen.演算子ループの最初の実行から所定のエポック数の間、改善がなかった場合、0による除算エラーが発生します。初期化時にすぐにresetCounterFF 変数に 1 を代入するのが最も単純で、論理的に正しいです:int resetCounterFF =1;// 「改善されないエポック」リセット・カウンター 123456789101112131415...20 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
1)ストーリーテラー?うーん、残念ながらユーモアは理解できませんでした。データベースのチェックは、GetFitness(historyHromosomes) から呼び出される CheckHistoryChromosomes(chromos,historyHromosomes )という 関数で行われます。FFの繰り返し実行はありません。
2)データベースとの照合は遺伝子ごとに行われる。また、各遺伝子は新しい染色体が現れるとSelectInDiscreteSpace(temp,RangeMinimum,RangeMaximum,Precision,3) によって正規化される。ですから、ここでも「おとぎ話」はありません。
3) 2)を参照
1,2,3) わかった。ほぼ。正規化は本当にある。 しかし、「ギャップなしで」実数を等しく比較する理由にはまだならない。:)
SelectInDiscreteSpace()は少し手直ししました。内部的にStepを修正しているのが気に食わなかった。ユーザーを修正するのは王道ではない。少なくとも今回は違う。
遺伝子の変化範囲に関してStepを「不合理」にするために、ユーザーは合理的な考慮をしているかもしれない。
それはこうだ:
SelectInDiscreteSpace()を少し修正しました。内部でステップを修正するのが気に入らない。ユーザーを修正するのは王様の仕事ではない。少なくとも今回は違う。
遺伝子の変化範囲に関してStepを "不合理 "にする合理的な考慮がユーザーにはあるかもしれない。
これを理解せよ:
というのも、入力された数値のどちら側から数値行の値を "つかむ "かという問題がすぐに生じるからである(何が "右 "なのか、右なのか、左なのかはわからない)。だからこのようにする必要があるのだ:
step = (InMax - InMin) / MathCeil ( (InMax - InMin) / step );以下は、あなたのコードと私のコードの結果の比較例です:
このような正規化の意味は NormalizeDouble()とは異なりますが、それを好まない所有者は、SelectInDiscreteSpace()のように指定されたステップではなく、必要な符号に正規化を使用することができます次第です。
前の投稿と同じように、すべてクリアです。
Andrei、リストされたすべての変形はここに存在する権利がある。もちろんあなたのものも。最適化中に離散性を変更するフローティングは、細心の注意を払う必要があります。
--
一般的にすべてについて:
設定や遺伝的演算子のライブラリなどを追加すべきだし、便利な拡張や使い方をあらかじめ考えておくべきだ。
私は、すべてをオブジェクトに書き換えて、プログラムとユーザーの両方により強力なインターフェイス(グラフィカルで、タブで多くの設定ができる)を作ろうと考えている。追加するものもあれば、共同最適化するものもある。
より正確には、あなたのコードをベースにするか(フラグメントを使うか)、全部書き直すか、まだ考え中です。
もし参加したいのであれば、個人的に書いて ほしい。
公開するかどうかはわからない。いずれわかる。今のところ、僕は自分のためにやりたいんだ。
全般的に
1)良い意味で、カスタマイズや遺伝演算子のライブラリなどを追加し、便利な拡張性や使い方を事前に考えておく必要がある。
2) より正確には、あなたのコードをベースにするか(フラグメントを使うか)、もう一度書き直すか、まだ考え中です。
3) もし参加したいのであれば、プライベートで書いて ください。
1) 逆に、コントロールの柔軟性を下げることなく、UGAパラメータの数を減らそうとしています。
2) 記事のコードをそのままプロジェクトで使っている人、0から書き直した人を何人か知っている。
3) プライベート・メッセージであなたに書きました。
これは前の記事と同じで、すべて理解できる。
アンドレイ、ここに挙げた選択肢はすべて存在する権利がある。もちろん、あなたのものも。最適化の過程で変化する浮動離散性には細心の注意が必要だ。
--
一般的なすべてについて:
設定や遺伝的演算子のライブラリなどを追加すべきだし、便利な拡張や使い方をあらかじめ考えておくべきだ。
私は、すべてをオブジェクトに書き換えて、プログラムとユーザーの両方により強力なインターフェイスを作ろうと考えている(グラフィカルで、タブで多くの設定ができる)。追加するものもあれば、共同最適化するものもある。
より正確には、あなたのコードをベースにするか(フラグメントを使うか)、もう一度全部書き直すか、まだ考えているところです。
...ウラジミール、君は乗りたいのか走りたいのか?
美しいコードが欲しいのか、それともテスターのものよりもクールなGAを作りたいのか?
個人的にはテスターのものはとてもクールだと思うが、パラメータが少ない。
。
ウラジミール、乗りたいのか、運転したいのか?
美しいコードが欲しいのか、それともテスターのものよりクールなGAを作りたいのか?
個人的には、テスターのものはかなりクールだと思う。たった一つのニュアンスだけではパラメータが足りない。
。
私は便利なコードが欲しい。使いやすく、拡張しやすく、修正しやすく、埋め込みやすい。
便利なコードが欲しい。使いやすく、拡張しやすく、変更しやすく、埋め込みやすい。
175行目を
これがないと、ジョブ・レポートはエラーで失敗します。
175行目を
これがないと、操作報告はエラーで失敗します。
そうです、gen.演算子ループの最初の実行から所定のエポック数の間、改善がなかった場合、0による除算エラーが発生します。
初期化時にすぐにresetCounterFF 変数に 1 を代入するのが最も単純で、論理的に正しいです: