問題タブ [linear-programming]

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.

0 投票する
8 に答える
599 参照

php - PHP で上位 5 つの値を効率的に保持する

私はPHPで小さなアルゴリズムを書いています.n個の映画をレーティングで通過し、上位5つを保存します.

私の質問は、ストリームを読んでいるときに、評価の高い上位 5 つの映画を追跡する最も効率的な方法は何ですか? 現在、私は次のことを行っています。

  1. 5 つの映画を (movies[] という配列に) 読み込み、movies[][name] と movies[][rating] の 2 つのキーを使用します。
  2. array_multisort() を使用して、movies[rating] で配列を並べ替えます (現在、最高の評価は、movies[4] にあります)
  3. 次の映画で読む
  4. この新しい映画の評価 > movies[0][rating] の場合、movies[0] をこの新しい映画に置き換えます
  5. リストを並べ替える
  6. 完成するまで3~5を繰り返す

私の方法は機能しますが、読み取りのたびにリストをソートする必要があります。array_multisort() を使用するたびに、ソートするインデックスを構築するためだけに 5 つのムービーに対して for ループを実行する必要があるため、これはコストのかかる方法であると私は信じています。誰でもこれにアプローチするより良い方法を提案できますか?

0 投票する
2 に答える
1008 参照

linear-programming - GNU 線形プログラミング キット

実稼働システムに GLPK を使用したことのある人はいますか? 現在、CPLEX を使用しているアプリケーションを持っていますが、それを無料のソフトウェアに置き換えたいと考えています。

スケジューリング問題の大きな MIP (数千の変数) を解決するために使用されます。GLPK がこれを処理するのに十分成熟しているかどうかを知りたいです。

ありがとう

0 投票する
3 に答える
19942 参照

c++ - C++ の LP シンプレックス アルゴリズム

シンプレックス アルゴリズム (線形計画問題の数値解法の一般的なアルゴリズム) の堅牢な C++ ソース コードが必要です。

ウィキペディアへのリンクはご遠慮ください。テンプレートを使用し、ユーザーフレンドリーな名前を明確にし、非常にうまく機能する、C++ の優れたソースコードが必要です。

できれば、アルゴリズムは不安定な浮動小数点計算をチェックする必要があります。

0 投票する
1 に答える
1287 参照

matrix - 線形独立行列

K によってインデックス付けされた A の列が線形独立であるように、ランク m とセット K⊆{1..n} の am 行 n 列の行列 A があるとします。ここで、K を拡張して集合 L を見つけ、k⊆L と L でインデックス付けされた列も線形独立になるようにします。

これを行う 1 つの方法は、列インデックスを K に追加し始め、新しいセットが線形独立であるかどうかを、たとえばガウス消去法を使用してテストすることです。しかし、追加されたすべてのインデックスをテストする必要がないようにするためのより良い方法はありますか?

ありがとうございました

0 投票する
2 に答える
2983 参照

java - 整数線形計画法 Java: 複数のオープン ソースおよび商用ツールが利用可能です。どちらを使用しますか?

アプリケーションに整数線形計画法 API/ツールを使用する必要があります。私のアプリケーションはJavaですが、ファイル(MPSなど)を使用して入力を提供するJavaからEXE(ツール)を呼び出すことは気にしません。

私の検索分析は次のとおりです。 ILP を解決するために利用できるオープン ソースおよび商用ツールが複数あります。1. Gnu LP Kit(GLPK): これは最も古く、おそらく最も安定していて効率的だと思います。 2. IP_Solve: 良いレビューがあります。3. JavaILP: これを見つけましたが、それに関するレビューはあまりありません。5.コインOR

安定性、効率性、受容性などの点でどれが最適かを教えてください。

よろしく

0 投票する
7 に答える
3993 参照

mathematical-optimization - 整数線形計画法:例と優れたツール?

cを最小化するベクトルxを見つけます。x制約mの対象。x> = b、x整数。

サンプル入力セットは次のとおりです。

出力あり:

この種の問題を解決するための優れたツールとその使用方法の例は何ですか?

0 投票する
1 に答える
3254 参照

math - Maxima で線形システムを解く

Maxima を使用して線形システムの一般的なソルバーを作成しようとしていlinsolve(eqlist, varlist)ますが、問題の次元を明示的に指定する必要はありません。

これは機能しますが、次元を 3 に固定します。

linsolve( [ eq[0],eq[1],eq[2] ], [ a[0],a[1],a[2] ])

これはしません:

これを機能させる方法についての洞察はありますか?


問題の背後にある背景: この線形システムは、整数ベキの有限総和、つまり、有限数の平方、立方体、または一般ベキの和を解くときに発生しpます。有限二乗和は簡単ですが、一般的な解は驚くほど複雑です。議論は次の場所にあります:再帰関係による有限和、パート 2

0 投票する
2 に答える
795 参照

objective-c - 制約ソルバーとしてのNSPredicate?

私は、以前よりも少し複雑なインターフェイス要素の動的レイアウトを含むプロジェクトに取り組んでいます。私はいつも、そのようなものに近いかどうかをチェックし、その場合はそれをある方向にx%移動するなど、複雑なコードを書くのは愚かだと感じます。それはプログラミングのやり方ではありません。プログラミングは可能な限り宣言型でなければなりません!

私がやろうとしていることはかなり単純なので、何か新しいことを試す良い機会になると思い、単純な制約ソルバーNSPredicateとして使用することを考えました。私はこれまで非常に単純なタスクにしか使用していませんが、それがはるかに多くの機能を備えていることを知っています。 NSPredicate

ここで役立つ可能性のあるアイデア、経験、例、警告、洞察はありますか?

非常に簡単な例を挙げますので、具体的な答えがあります。NSPredicate次の制約を解決するにはどうすればよいですか。

(「viewBの左端がviewBの右端から20ピクセル以内に収まらない限り、viewBは座標300の水平方向の中心に配置する必要があります。この場合、viewAの左端はviewBの右端の右20ピクセルに固定され、viewAの水平方向の中心は権利。")

viewA.rightEdge変化する可能性がありviewB.width、それらは「入力変数」です。

編集:どのソリューションでも、おそらくNSExpressionメソッドを使用する必要があり-(id)expressionValueWithObject:(id)object context:(NSMutableDictionary *)contextます。 この答えは適切です。

0 投票する
3 に答える
1064 参照

linear-programming - 多数の制約と「ウォーム スタート」に使用する線形計画法パッケージ

湾曲した凸空間で線形関数を最大化することを含む「連続」線形計画問題があります。典型的な LP 問題では、凸空間は多面体ですが、この場合、凸空間は区分的に湾曲しています。つまり、面、エッジ、および頂点がありますが、エッジは直線ではなく、面は平坦ではありません。 . 有限数の線形不等式によって指定される代わりに、私は連続的に無限の数を持っています。私は現在、ポリトープで表面を近似することでこれに対処しています。これは、連続無限制約を非常に大きな有限数の制約に離散化することを意味します。

また、根本的な問題に対する小さな摂動の下で答えがどのように変化するかを知りたい状況にもあります。したがって、近くの解に基づいてソルバーに初期条件を提供できるようにしたいと考えています。この機能は「ウォーム スタート」と呼ばれるものだと思います。

誰かが私がそこにあるさまざまな LP パッケージを区別するのを手伝ってくれますか? 速度 (多数の制約の場合)、高精度の演算、およびウォーム スタートなどの使いやすさにはあまり関心がありません。

ありがとう!

編集: これまでの質問回答者との会話から判断すると、私が解決しようとしている問題についてより明確にする必要があります。簡略化されたバージョンは次のとおりです。

単一の実変数 y の N 個の固定関数 f_i(y) があります。制約に従って \sum_{i=1}^N x_i f_i(0) を最小化する x_i (i=1,...,N) を見つけたい:

  • \sum_{i=1}^N x_i f_i(1) = 1、および
  • \sum_{i=1}^N x_i f_i(y) >= 0 for all y>2

より簡潔に言えば、関数 F(y)=\sum_{i=1}^N x_i f_i(y) を定義すると、F(1)=1 という条件に従って F(0) を最小化し、 F(y) は区間全体 [2,infinity) で正です。この後者の正の条件は、実際には、各 y に対して 1 つずつ、x_i に対する無限の数の線形制約であることに注意してください。y はラベルと考えることができます。これは最適化変数ではありません。特定の y_0 は、x_i の空間で半空間 F(y_0) >= 0 に私を制限します。y_0 を 2 から無限大の間で変化させると、これらの半空間が連続的に変化し、湾曲した凸形状が形成されます。この形状のジオメトリは、関数 f_i に暗黙のうちに (そして複雑な方法で) 依存します。