記事「母集団最適化アルゴリズム:焼きなまし(SA)アルゴリズム(第1部)」についてのディスカッション

 

新しい記事「母集団最適化アルゴリズム:焼きなまし(SA)アルゴリズム(第1部)」はパブリッシュされました:

焼きなましアルゴリズムは、金属の焼きなまし過程にヒントを得たメタヒューリスティックです。この記事では、このアルゴリズムを徹底的に分析し、この広く知られている最適化方法を取り巻く多くの一般的な信念や神話を暴露します。この記事の後半では、カスタムの等方的焼きなまし(Simulated Isotropic Annealing、SIA)アルゴリズムについて説明します。

焼きなましアルゴリズムは、1983年にScott Kirkpatrick、George Gelatt、Mario Vecchiによって開発されました。高温での液体と固体の特性を研究したところ、十分に高い初期温度と十分に長い冷却時間の条件下では、金属は液体状態に変化し、粒子は無作為に分布し、エネルギーは最小の状態に達することが判明した。この条件が満たされない場合、材料は最小ではないエネルギーを持つ準安定状態になります。これは硬化と呼ばれ、材料の急激な冷却を伴います。この場合、原子構造には対称性がありません(異方性状態、つまり結晶格子内の物質の特性が不均一になります)。

低速の焼きなまし過程では、材料も固体状態に変わりますが、原子が整然と並び対称性を持つため、この過程を使用して、複雑な問題で全体最適値を見つけることができる最適化アルゴリズムを開発することが提案されました。このアルゴリズムは、組み合わせ最適化問題を解く方法としても提案されています。

したがって、アルゴリズムの主なアイデアは、金属の焼きなまし過程の数学的類似物に基づいています。焼きなまし過程では、内部エネルギーを均等に分散させるために、金属を高温に加熱し、その後ゆっくり冷却します。これにより、金属分子がより安定した状態に移動し、金属の内部応力が緩和され、結晶間の欠陥が除去されます。「焼きなまし」という用語は、材料の属性であり、その状態に依存する熱力学的自由エネルギーにも関連しています。

焼きなまし最適化アルゴリズムでも同様の過程が使用されます。アルゴリズムは、材料の加熱と冷却に似た操作を適用します。このアルゴリズムは、初期解から作業を開始します。初期解は無作為でもよいし、以前の反復から得られたものでもいいです。そして、解の状態を変化させる操作を適用します。この操作は無作為でも制御されていてもよく、現在の状態より悪くても新しい状態を得ることができます。より悪い決定を下す確率は「冷却」機能によって決定されます。この機能は、時間の経過とともにより悪い決定を下す確率を減らし、アルゴリズムが一時的に局所的最適解から「抜け出して」、検索空間内の他の場所でより良い解決策を探すことを可能にします。

作者: Andrey Dik

 
最適化アルゴリズムに関する良い参考書です!
 
fxsaber #:
最適化アルゴリズムの良い参考書、ありがとう!

ありがとうございました。

 
驚異的な内容で、アルゴリズムをコンパクトに表現し、同時に読みやすくしているのが素晴らしい。

テスト目的関数に関連した簡単な質問があります。現在の設定の下で、エキスパートアドバイザーの過去の利益または損失を返す目的関数をどのように作成できますか?私は質問を明確に表現したことを願っています。
 
Gamuchirai Zororo Ndawana #:
ブロ驚異的な内容で、アルゴリズムをコンパクトに表現し、同時に読みやすくしているのが素晴らしい。

テスト目的関数に関連した簡単な質問があります。現在の設定の下で、エキスパートアドバイザーの過去の利益または損失を返す目的関数をどのように作成できますか?私は質問を明確に表現したことを願っています。

もしあなたがfxsaberの少し暗号化されたソースコードを掘り下げることに抵抗がなければ、fxsaberのブログで公開されているこの実装を調べてみて ください(言語翻訳が必要かもしれません)。

Optimization - самостоятельная оптимизация торгового советника.
Optimization - самостоятельная оптимизация торгового советника.
  • 2024.03.26
  • www.mql5.com
После появления своего тикового тестера логичным продолжением было применить его на множестве алгоритмов оптимизации . Другими словами, научиться оптимизировать торговые советники самостоятельно - без
 
Gamuchirai Zororo Ndawana #:
素晴らしい内容で、アルゴリズムをコンパクトにまとめ、同時に読みやすくしているのが素晴らしい。

テスト目的関数に関連した質問をしたいと思います。現在の設定におけるEAの過去の利益または損失を返す目的関数を作成し、利益のためにEAのパラメータを最適化するにはどうすればよいでしょうか。質問が明確に表現できていれば幸いです。

記事を気に入っていただけて嬉しいです。Stanislav Korotkyの コメントでお役に立てたなら幸いです。

TesterStatistics()はOnTester()で使用するカスタムフィットネス関数をコンパイルするのに便利かもしれません。

 

これらのアルゴリズムをEAに実装する方法の例はありますか?

ありがとうございます。

 
SergioTForex #:

これらのアルゴリズムをEAに実装する方法の例はありますか?

ありがとうございます。

https://www.mql5.com/ja/articles/14183
Использование алгоритмов оптимизации для настройки параметров советника "на лету"
Использование алгоритмов оптимизации для настройки параметров советника "на лету"
  • www.mql5.com
В статье рассматриваются практические аспекты использования алгоритмов оптимизации для поиска наилучших параметров советников "на лету", виртуализация торговых операций и логики советника. Данная статья может быть использована как своеобразная инструкция для внедрения алгоритмов оптимизации в торгового советника.
 

正しく指摘されているように、アニーリングの主な利点は実装の単純さにある。従って、このアルゴリズムの母集団修正は並列化を懇願しているに過ぎない。

MQL5では並列アルゴリズムが簡単に書けるという著者の発言を記憶していたが、彼の記事でそれを確認したことはまだない。間違っていたら訂正してほしい。

追記私が言いたいのは、標準オプティマイザに実装されているような通常の並列化であって、複数のプログラムインスタンスを起動するトリックではない。もちろん、外部DLLを 使わずにMQL5で実装すること。

 
Aleksey Nikolayev 外部DLLを 使わずにMQL5で実装すること。

コードレベルでの並列化が必要なら、OpenCLが広く使われている。ニューラルネットワークに関するGizlykの記事や 彼の教科書を見て ほしい。

標準的なオプティマイザで行われるような、プログラム全体のレベルでの最適化と並列化が必要であれば、EAインスタンスのエージェントへの並列化を使用しているBoosterの 例を見ることができます(外部DLLを使用せずに純粋なMQL5が使用されています)。

MQL5では、C#のように別々の関数にトライテを作成することや、他の形式のコード並列化はサポートされていません。

Нейросети в алготрейдинге — практическое пособие по использованию машинного обучения в алгоритмическом трейдинге
Нейросети в алготрейдинге — практическое пособие по использованию машинного обучения в алгоритмическом трейдинге
  • www.mql5.com
В эпоху цифровых технологий и искусственного интеллекта алгоритмическая торговля преобразует финансовые рынки, предлагая новые стратегии для...
 
Andrey Dik #:
MQL5では、C#のように別々の関数にトライテイトを作成することや、その他のコード並列化はサポートされていません。
その通り。
Andrey Dik#:
OpenCLの応用

OpenCLは、コーディングする上でも、実際に使用する上でも、非常に不便な技術だ。これは、例えば標準のオプティマイザーがOpenCLを使用しないという事実からも明らかだ。

Andrey Dik#:
Boosterの 例を見てみよう。

このアプローチは、複数回の最適化(不定回数、場合によってはその都度のパラメータセットも不定)を行う必要がある場合には、ほとんど適用できない。例えば、アンサンブルMOモデルなどである。