問題タブ [levenberg-marquardt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
optimization - Levenberg-Marquardtアルゴリズムの制限
Levenberg-Marquardtアルゴリズムを使用して、6つのパラメーターの非線形関数を最小化します。最小化ごとに約50のデータポイントがありますが、十分に正確な結果が得られません。私のパラメータが数桁異なるという事実は、非常に重要である可能性がありますか?はいの場合、どこで解決策を探す必要がありますか?いいえの場合、あなたの仕事で遭遇したLMAのどのような制限がありますか(私のアプリケーションで他の問題を見つけるのに役立つかもしれません)?助けてくれて本当にありがとうございます。
編集:私が解決しようとしている問題は、最良の変換を決定することですT:
3Dポイントのセットを3Dラインの束に合わせます。詳細には、3Dポイントの座標と、対応する3Dラインの方程式のセットがあり、これらのポイントを通過する必要があります(理想的な状況では)。LMAは、変換された3Dポイントから対応する3Dラインまでの距離の合計を最小化します。変換関数は次のとおりです。
この説明が少し役立つことを願っています...
Edit2:
いくつかの例示的なデータを以下に貼り付けます。3D線は、中心点と方向ベクトルによって記述されます。すべての線の中心点は(0,0,0)であり、各ベクトルの「uz」座標は1に等しくなります。方向ベクトルの「ux」座標のセット:
方向ベクトルの「uy」座標のセット:
および(xyzxyzxyz ...)形式の3Dポイントのセット:
これは、回転が非常に小さい「簡単な」モデル化されたデータの一種です。
java - Java での Levenberg–Marquardt (LMA) 実装 (Python scipy.optimise.leastsq を置き換える)
Java でのレーベンバーグ・マルカート アルゴリズムの適切な実装を誰か提案してもらえませんか? 私はパフォーマンスよりも完全性と正確性を好みます。
ありがとう。
algorithm - Excelソルバーに代わるC++の最適化アルゴリズムを探しています
Excelソルバーは何千もの最適化で実行するのが非常に遅いため(スプレッドシートをインターフェイスとして使用するため)、C ++で同様の(問題固有の)ソルバーを実装しようとしています(Visual Studio 2010を使用して、Winで) 7 64ビットプラットフォーム)。私はVBAのDeclareステートメントを介してDLLを含め、すでにこれを行った経験があるので、これは問題ではありません。
私の問題は、経験的データと、非線形であるが滑らかなターゲット関数との間の二乗誤差の合計を最小化することであり、問題には、非負性(X> = 0)または正の制約(たとえば、X> = 0.000000001)が含まれます。 、Xは決定変数を示します。
堅牢で実績のある実装を探しています。確立されたライブラリの一部である可能性があります。たとえば、私はすでにALGLIBが何を保管しているかを調べましたが(http://www.alglib.net/optimization/を参照)、それらのアルゴリズムの1つだけが制限付き制約を受け入れるようです。でも、それが何の価値があるのかわからないので、意見を集めようとしています。
または、別の注意点として、たとえば、私の制約を満たさないすべての中間解を拒否することによって、ALGLIBのLevenberg-Marquardtアルゴリズムをそのような基本的な制約で拡張することをお勧めしますか?(それはそれをしないと思いますが、それでも尋ねる価値があります)
c - C 用非線形最小二乗最適化ライブラリ
目的関数 (Levenberg-Marquardt アルゴリズムが望ましい) の最適化を行い、ボックス制約、線形不等式制約、および非線形不等式制約をサポートする C のライブラリを探しています。
すでにいくつかのライブラリを試しましたが、アプリケーションに必要な制約タイプを採用しているライブラリはありません。
私は現在NLoptを調査していますが、提供されているアルゴリズムのいずれかで最小二乗法を達成できるかどうかはわかりません。
この問題の全範囲の制約をサポートする単一のライブラリがないとは信じがたいので、グーグル検索中にどこかで間違いを犯したと思います。
私は最近、C から Matlab 関数を呼び出すことができることを発見しました。これで問題は非常に簡単に解決されますが、C から Matlab 関数を呼び出す必要はありません。私の経験では高速ではありません。
どんな助けでも大歓迎です。
c# - Levenberg–MarquardtアルゴリズムのC#実装
非線形最小二乗近似のためのLevenberg–MarquardtアルゴリズムのC#実装を探しています。
c# - 一連の非線形方程式のパラメーターを同時に最適化する
未知数(m)が多数ある方程式(n)が多数あります。ここで、mはnよりも大きくなります。n個の方程式と多数の観測値を使用してmの値を見つけようとしています。
C#でのLevenberg-Marquardtの実装をいくつか見てきましたが、複数の方程式を解くものは見つかりませんでした。たとえば、http://kniaz.net/software/LMA.aspxを調べたところ、パラメータとして1つの方程式しか受け取らないことを除けば、私が望むもののようです。同時。同様に、このパッケージ:http ://www.alglib.net/には、LMの優れた実装が含まれていますが、単一の方程式のみが含まれています。
C#に優れた実装があるのか、それともこれを実行できるC#コードで使用できるのか疑問に思いました。方程式の1次差分も計算するのはコストがかかるため、小さな有限差分を使用してそれらを近似できるようにしたいと考えています。
さらに、LMがどのように機能し、どのように実装するかについて、わかりやすくわかりやすい説明はありますか?私は自分でそれを実装するためにいくつかの数学の教科書を読んでみましたが、私は数学がかなり無知なので、説明のほとんどが私に失われています。
編集:
私の問題の詳細:
1)方程式は動的に形成され、問題が実行されるたびに変化する可能性があります
2)開始パラメータについてはよくわかりません。グローバルな最小値を見つけるために、ランダム化された開始パラメーターを使用して複数回実行することを計画しています。
編集2:
もう1つの質問、私はこの論文を読んでいます:http: //ananth.in/docs/lmtut.pdfそして私はセクション2の下で次を見ました:
x =(x1; x2 ... xn)はベクトルであり、各rjはℜnからℜまでの関数です。rjは残差と呼ばれ、m>=nであると想定されます。
関数よりも多くのパラメーターがある場合、LMが機能しないということですか?たとえば、関数のAとBを解きたい場合は、次のようにします。
Y = AX + B
パラメータベクトルのサイズが2(AとB)で、関数数が1であるため、これは不可能ですか?
math - モーション最適化/バンドル調整から構造内の欠落データを処理する方法
私はモーションアプリケーションの構造に取り組んでおり、オブジェクトに配置された多数のマーカーを追跡して、オブジェクトの剛体構造を決定しています。
このアプリは基本的に、複数のカメラビューに対して標準のLevenberg-Marquardt最適化を使用し、予想されるマーカーポイントと各ビューから2Dで取得されたマーカーポイントの違いを最小限に抑えています。
各マーカーポイントと各ビューについて、次の関数が最小化されます。
ここで、calculatedXY値は、最適化によって検出する必要のある未知のパラメーターの数に依存し、observedXYは2Dのマーカーポイントの位置です。合計で、私が最小化しようとしている上記のような機能の数(マーカーポイント*ビュー)があります。
すべてのマーカーポイントを確認するカメラのシミュレーションをコーディングしましたが、実行中に照明、オクルージョン、またはカメラビューに表示されないためにポイントが表示されない場合の処理方法を考えていました。アプリの実際の実行では、Webカメラを使用してオブジェクトを表示するため、すべてのマーカーが一度に表示されるわけではなく、コンピュータービジョンアルゴリズムの堅牢性によっては、を検出できない場合があります。常にマーカー。
マーカーポイントが観測できない場合は、差分値を0(シグマ二乗差= 0)に設定することを考えましたが、結果が歪む可能性はありますか?
私が気付いたもう1つのことは、ビューが多すぎるとアルゴリズムがそれほど良くないことです。ビューが多すぎると、悪い解決策を推定する可能性が高くなります。これは、ビューが多すぎる場合に極小値に達する可能性が高くなるため、バンドル調整の一般的な問題ですか?
matlab - レーベンバーグ・マルカート最適化
関数を最適化するためのニュートン法へのレーベンバーグ・マルカート修正を含む .m (matlab) ファイルを見つけることができる場所を知っている人はいますか?
ありがとう
c++ - C ++数学:複雑な関数のフィッティングが機能しない
私はこのフィッティング操作を10日以上機能させるように努めてきました。Levenberg-Marquardtアルゴリズムを使用してフィッティングするためのC++クラスを作成し、単純な多項式でテストしたところ、フィッティングは成功しました。しかし、実験に必要な実際の実験機能では、機能していません。
私がMathematicaでフィッティングしたのと同じ関数で、そこでそれを実行しても問題ありませんでした(ただし、フィッティングごとに12秒という遅いので、C ++を使用しています)。私のプログラムは狂ったように振る舞い、フィットすると間違った結果を返します。私が使っている機能をチェックして、何か問題がないか教えてください。
以下は、クラスで使用しているフィッティングの手順です。繰り返しになりますが、これは多項式で機能したので、ここで非常に深い間違いを犯して、いくつかの特殊関数とのみ競合する可能性があります...それが私の仮定です。
私が使用する初期値は、正しい値に非常に近いものです。
追加情報が必要な場合は、お知らせください。どんな助けでも非常に高く評価されています。
python - Python: Levenberg Marquardt アルゴリズムの並列化
理論的予測を実験データに適合させるコードが少しあり、理論を実験に適合させるために LMA (Levenberg-Marquardt Algorithm) を実行したいと考えています。ただし、計算は簡単ではなく、各モデルは単一のプロセッサで計算するのに約 10 ~ 30 分かかります。クラスター コンピューター (この計算にはまだ 1 ~ 2 分かかります)。
現在、この送信スクリプトは Python 内の呼び出し可能な関数内に設定されています。したがって、scipy LMA (scipy.optimise.leastsq) を使用して設定するのは比較的簡単です。ただし、scipy LMA は、個々の計算を渡すと思います (私は、LMA が一度にすべての計算セットを送信してから、戻りを待つことを好みます。Python 送信スクリプトは次のようになります。
「value_parameters」は、モデルごとに計算される変数を含む次元 [number_iterations][number_parameters] のネストされたリストです。「number_parameters」は、適合されるパラメーターの数であり、「number_iterations」は数です。計算されるモデルの数 (したがって、各ステップで勾配を測定するために、LMA は 2*number_parameters モデルを計算します)、「fitness_parameter」は最小化する必要がある値です (次元 [反復] を持ちます)。
今、明らかに、私は自分の LMA を書くことができましたが、それは少し車輪を再発明することです - 私のニーズを満たす何かがあるかどうか (または scipy LMA をこのように使用できるかどうか) を考えていました。
開始点は最小値の近くにある必要があるため、Gauss-Newton アルゴリズムも機能するはずです。フィットを制限する機能 (つまり、フィットしたパラメーターの最大値と最小値を設定する) は便利ですが、必須ではありません。