私はscipy.optimize.minimizeを使用して、使用される最初の推測にかなり敏感な 4D 関数の最小値を見つけています。少し変えると、解決策はかなり変わります。
これに似た質問がすでに SO に多数あります (例: 1、2、3 ) が、本当の答えはありません。
私の昔の質問で、zunzun.com サイトの開発者の 1 人(明らかにオンラインではなくなったようです) は、これをどのように管理したかを説明しました。
Zunzun.com は、差分進化遺伝的アルゴリズム (DE) を使用して初期パラメーター推定値を見つけ、それを scipy のレーベンバーグ-マルカート ソルバーに渡します。DE は、実際にはグローバル オプティマイザ自体として使用されるのではなく、「初期パラメータ ゲッサー」として使用されます。
このアルゴリズムに最も近いのは、ブロックを使用して最小化関数をランダムな初期推測で何度も呼び出すこの回答です。for
これにより、複数の最小化されたソリューションが生成され、最終的に最適な (最小値) ソリューションが選択されます。
zunzun dev が既に Python で実装されていると説明したようなものはありますか?