問題タブ [quadratic]
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.
r - solve.QP は正定値二次関数を最大化できません
私は原則的にsolve.QP(quadprog)で解決できるはずの非常に単純な二次問題を持っています:
max x^2+3*y^2 subject to x>=0, y>=0, x+y <=1
問題は、最大化を必要な最小化に変えると、行列が (明らかに) 負定値になることです。小さな固有値や丸めに関する問題ではありません。
solve.QP は一般的なソルバーだと思っていましたが、オンライン資料を読んで努力したにもかかわらず、solve.QP を使用してコンパクトな領域 (線形制約によって定義された) で正定値二次形式を最大化できないようです。
本当?
私はこれと同様の問題を他の関数で解決できることを知っていますが(正常constrOptim
に動作します)、ラグランジュ乗数をマキシマイザーに接続したいと思っていました。
(非常に効率的な)solve.QPを使用して上記の問題を解決し、正の定義性に関連する非対称の制限を克服する方法を提案できますか?
java - Javaで数学クラスを使用する
二次方程式double
を計算するためにの累乗を計算しようとしています
コードは次のとおりです。
なぜこのエラーですか?
ありがとう。
c++ - C ++ Eigenライブラリ-二次計画法、固定vs動的、パフォーマンス
二次計画法を検討していて、さまざまなライブラリを見てきました。QuadProg ++のさまざまなEigenバリアント(KDEフォーラム、Benjamin Stephens、StackOverflowの投稿)を見てきました。テストと同じように、GitHubで入手可能なwingsitのEigenバリアントをフォークして、テンプレートを介してパフォーマンスを測定するためのコンパイル時サイズの問題を実装しました。
wingsitのコードからの動的サイズ(MatrixXD / VectorXD)の場合よりも、テンプレートの場合の方がパフォーマンスが悪いことがわかりました。これは簡単な質問ではないことは知っていますが、これがなぜそうなるのか、誰かが理由を知ることができますか?
注:問題のサイズ/反復回数を増やす必要があります。可能な場合はそれを投稿します。
編集:Ubuntu12.04でGCC4.6.3を使用しています。これらは私が使用しているフラグです(wingsitのコードから変更されています):
c++ - CGAL二次計画法ソルバー、目的関数に「x ^ 4」を入力する方法は?と制約の中で?
私は次のような関数を最小化しようとしています:
および次のような制約:
目的関数に「x^2」を入力するには、次のようにします。
しかし、「x ^ 4」はどうですか?
「x<=a」のような制約を追加するには:
しかし、「x ^ 2 <= a」はどうですか?
python - 3 変数の暗黙的な二次システムを解く
3 つの変数と可変数の方程式を持つ連立方程式を解こうとしています。
基本的に、システムは 5 ~ 12 の方程式の長さであり、方程式の数に関係なく、3 つの変数について解こうとしています。
次のようになります。
私はA、B、C、そして右側全体を知っています。A、B、C および右辺はすべて長さ n の配列で、n は 5 から 12 の間でランダムに変化します。したがって、サイズが変化する連立方程式が得られます。numpy の lstsq 関数を使用して、次のようなことを行う必要があると思います。
ただし、x、y、z は暗黙的であることがわかっているため、これは機能しません。したがって、これを機能させるには P から取り出す必要があります。ヘルプ!
java - 二次方程式をプログラムしようとしていますか?
私はJavaを初めて使用します。最初のプロジェクトの1つは、電卓を作成することです。
二次方程式をプログラムしようとしました。エラーはありませんでしたが、間違った答えが返ってきました。
代用a=1, b=4, c=4
すると-4と-4になります。
代用a=1, b=1, c=-12
すると、2.5と-4.5になります。
数学的な誤りかもしれませんが、式は正しいと思います。
linear-algebra - CGALを使用した二次計画法の最大化
私はいくつかの二次計画問題を解決するためにCGALを使用しています。
(-無限大)から
。までの値x^2
を取るために最小化したいと仮定します。これは、次のようにすることで簡単に解決できます。x
-oo
+oo
もちろん0
、結果として返されます。ここで、を最大化したいとし
x^2
ます。そのためには、を最小化する必要があり-x^2
ます。しかし、以下はCGALでは「機能」しません。
現在の行列D = [-2]
は正半定値ではないため(二次計画問題のAPIは、Dが正半定値であることを「要求」します)。上記のスニペットを実行すると、の0
代わりに間違った結果が返され-oo
ます。
x^2
CGALのように目的関数を最大化するにはどうすればよいですか?
matlab - 二次計画法の問題
私は二次計画法をやろうとしています。アフィニティ マトリックスA
があり、特定の関数を最大化する必要がありますx'*A*x
。これは基本的にフィーチャ マッチング、つまりポイントとラベルのマッチングに関連しています。
これは基本的に、重み付きグラフの支配的なセットと二次関数の局所最大化数との間の接続を確立することに関連しています。
の対象となる
この問題を解決するために、Pavan and Pelillo IEEE PAMI 2007 によって与えられたレプリケーター方程式と呼ばれる方法を見つけました。
初期化x(1)
が与えられると、離散レプリケータ方程式を使用して局所解 x *を取得できます。
レプリケーター方程式を使用すると、正しい結果が得られます。ただし、このようにmatlabのquadprog関数を使用して解決しようとすると
正しい値が得られません。7 つのポイントと 7 つのラベルを一致させたいとします。アフィニティ マトリックスを定義してから、上記を使用します。ただし、レプリケーター方程式を使用すると、正しい結果が得られます。しかし、quadprog だけを使用しても正しい結果が得られません。助言がありますか?
私は何か間違ったことをしていますか?
haskell - 二次ふるいと n 乗
ウィキペディアのページで指定されている基本的なアルゴリズムに従って、Haskell に 2 次ふるいを実装しました。ほとんどの整数でうまく機能しますが、n乗である数値Nの因数分解を見つけることができません。偶数乗 (平方) の場合、アルゴリズムはループし、奇数乗の場合、N を法とする平方であるいくつかの滑らかな数を見つけます (私はこれをテストして確認しました)。些細な要因。
ウィキペディアのアルゴリズムを文字どおりに実装したことは十分に確信しています。n乗を処理できないバージョンのアルゴリズムに問題がありますか、それとも私のアルゴリズムにバグがありますか?
なんらかの理由で、 stackoverflowでコードのフォーマットに問題が発生しています。
matlab - 制約付きのmatlabで非凹二次関数を解く
制約付きのmatlabで非凹二次関数を解決するにはどうすればよいですか? quadprog を使用してみましたが、動作しません
関数 f=x'Ax を、xs の合計が 1 かつ 0<=x<=1 に等しいという制約で最適化する必要があります。私の機能は凹型ではありません。だから私はただ最大化する必要があります。グローバルの方が優れていても、局所的な最大値を見つけても問題ありません。
matlab の quadprog 関数を使ってみました。しかし、その成果は芳しくありません。終了するかどうかはわかりませんが、結果はそれほどうまくいきません。回数を繰り返すだけのものが欲しいので、それを伝えて結果を教えてくれます
私はこのようなものを実装しようとしています
さて、私の問題のシナリオは、一連のポイントとラベルがあることです。したがって、仕事はポイントをラベルと一致させることです。考えられるすべての (ノード、ラベル) ペアでグラフを定義します。サイズのアフィニティ マトリックスを定義します (number_node_label のペア、number_node_label のペア)
そして、xs = 1 の合計という制約で関数 x'Ax を最大化したいと考えています。すべての xs >=0 つまり、点はシンプレックスにあります。
私のアフィニティマトリックスについて
A(u,v) ここで、u と v はポイントとラベルのペアの 1 つです。つまり、u=point1,label1 v=point2, label2 とします。
A(u,v) = exp(-abs(||point1-point2||-||label1-label2||)) / シグマ A(u,v) = 0 if u==v
レプリケーター方程式のようなものが欲しい