記事「ALGLIBライブラリの最適化手法(第2回):」についてのディスカッション - ページ 3

 
メガシティ

 

LBFGのための複雑なものは何も入っていないようだ。

より高度だと思われるadamやrmspropは まだ試していない。でも、これなら間違いなくできるだろう。

 
Maxim Dmitrievsky #:
メガシティ

Maxim Dmitrievsky#:
lbfgsの複雑なところは何もないようです。

あなたはテストベンチのソースも lbfgs も提供していません。ここでpythonとそのモジュールをガッツリ使う人はいないでしょう。すべてのMQL5のソースコードは、この記事で(そして今は記事のコメントで)結果を再現するために提供されています。

 
Andrey Dik #:

あなたはテストベンチのソースもlbfgsも提供していません。誰もここでpythonとそのモジュールの内部を暴こうとはしない。結果を再現するためのMQL5のソースコードはすべてこの記事(そして現在は記事へのコメント)で提供されています。

https://colab.research.google.com/drive/1bF0rFG94phR-au51wpAhi_0WLUUfgNIy?usp=sharing

再生」ボタンを数回押す

私は記事を書いている人間ではないので、意図的に何かをクラックすることはない。信頼できる認識されたライブラリ、特にSciPyを 使用しています。

Optimization and root finding (scipy.optimize)#
  • docs.scipy.org
Optimization and root finding ()# SciPy provides functions for minimizing (or maximizing) objective functions, possibly subject to constraints. It includes solvers for nonlinear problems (with support for both local and global optimization algorithms), linear programming, constrained and nonlinear least-squares, root finding, and curve fitting...
 

メガシティのアダムが最上階に住み着いた。

メモ帳にコードを追加した。必要であれば、後でグラデーション・ソルバを追加するつもりだ。



 
Andrey Dik #:

ここに新しい(アーカイブにある)テスト機能クラスのカーネルがある:

任意の次元の多次元(つまり、配列の1次元に多数のセルがある多次元空間)配列をargsに投げるだけで、このメソッドは配列から2次元関数に引数をばらまきます。奇数次元の配列を投げれば、1つのセルは捨てられ、計算に参加しないことは明らかである。つまり、これは偶数次元の多次元テスト関数である。

後日、1次元のものをベースにしたものをリリースする予定である。そうすれば、より実用的で、より明確にグラフを構築することが可能になるだろう。

コメントされたコードは、関数をある角度だけ回転させる機能である。これは多くのAOにとって頭の痛い問題である。まだどこにも使われていない。

長い間考える気もない。結果を再現するには、記事のような関数が必要だ。

問題はまったくないと思う。ただ問題の計算量が増えるだけだ。
 

メガシティでは境界線の取り方が間違っている。正しいメガシティはこのように見えるはずだ。この画像はMQL5(この表のアルゴリズムがテストされている)で作られている:

その上、2次元関数の結果は指標ではない。その上、平均値を数える必要があります(母集団シミュレーションを使用する場合でも、すべての母集団間の平均値を見る必要があります - 別個のテスト)。あなたのテストでは、FFの実行回数も制限されていません。

上のコードを見て ください。そこには勾配法をテストする正しいスキームがあります。

 
Andrey Dik #:

メガシティでは境界線の取り方が間違っている。正しいMegacityはこのように見えるはずだ。この画像はMQL5(表のアルゴリズムがテストされている)で作られている:

その上、2次元関数の結果は指標ではない。その上、平均値を数える必要があります(母集団シミュレーションを使用する場合でも、すべての母集団間の平均値を見る必要があります - 別個のテスト)。あなたのテストでは、FFの実行回数も制限されません。

上のコードを見て ください。そこには勾配法をテストする正しいスキームがあります。

記事には、私が最適化したph-iのグラフが描かれている。あるものから別のものに変える意味がわからない。これはもっと単純に見える。どうして彼らは1000次元のf-iについて言うのに、いつも3次元のものを最適化するのだろう?
 
Maxim Dmitrievsky #:
記事の中では、まさに私が最適化した関数のグラフが描かれている。コロコロ変える意味がわからない。これはもっと簡単そうだ。どうして1000次元のf-iieと言われているのに、最適化されるのはいつも3次元なのだろう?

これだ:

は、これにはまったく対応していない:


1000次元のf-i」については、この議論の前の投稿を 参照のこと。

2次元関数は繰り返し複製されるので、2次元関数の3次元結果(1000次元空間は可視化できない)をプロットし、対応する3次元空間に多次元空間からの点をプロットすることができる。

Обсуждение статьи "Методы оптимизации библиотеки Alglib (Часть II)" - Скиньте код сложной ф-ии на 1000 параметров. Используйте скрипт из этой статьи, чтобы имитировать популяцию. Запустите 50 раз градиентные методы с
Обсуждение статьи "Методы оптимизации библиотеки Alglib (Часть II)" - Скиньте код сложной ф-ии на 1000 параметров. Используйте скрипт из этой статьи, чтобы имитировать популяцию. Запустите 50 раз градиентные методы с
  • 2024.11.01
  • Maxim Dmitrievsky
  • www.mql5.com
Повышение размерности можно достичь путем дублирования одномерных бенчмарков или двумерных полученная сумма делится на количество тестовых функций. таком образом всегда известны мин и макс тестовой функции независимо от размерности
 
Andrey Dik #:

これだ:

これとは全然違う:


1000次元のf-i」については、このディスカッションの前の投稿を 参照のこと。

2次元関数は繰り返し複製されるので、2次元関数の3次元結果(1000次元空間は可視化できない)をプロットし、対応する3次元空間に多次元空間からの点をプロットすることができる。

ここで テスト関数を見た。写真で見ると一致している。

多次元関数のトリックはまだ理解していない。

Популяционные алгоритмы оптимизации
Популяционные алгоритмы оптимизации
  • www.mql5.com
Вводная статья об алгоритмах оптимизации (АО). Классификация. В статье предпринята попытка создать тестовый стенд (набор функций), который послужит в дальнейшем для сравнения АО между собой, и, даже, возможно, выявления самого универсального алгоритма из всех широко известных.