問題タブ [gurobi]
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.
programming-languages - プログラミング言語の提案 - 動的および多次元配列 - cplex または gurobi
現在、私は MATLAB を使用して、私が扱ってきた問題を解決しています。私の MATLAB コードでは、CPlex または GUROBI ソルバーを呼び出して、大規模な線形計画問題を解決しています。MATLAB コードの各呼び出しで、CPlex または GUROBI が 10^5 回以上呼び出されます。これにより、計算負荷が高くなり、より大きな問題を解決するには時間がかかりすぎます。ただし、別のプログラミング言語に切り替えたいのですが、
- これらのいずれか (CPlex または GUROBI ) を呼び出すことができる、
- これらのソルバー (CPlex または GUROBI ) の 1 つ (CPlex または GUROBI ) を何度も (たとえば 10^6 回) 呼び出すことができ、各呼び出しでパフォーマンスを大幅に低下させず、実行時間を大幅に増加させることもありません。
- 動的配列を使用できます (つまり、コードを実行すると、いくつかのユーザー パラメーターが取得され、実行ごとに異なるサイズの行列が定義されます)。
- 配列の配列ではなく、多次元配列を定義できます。
この時点で、私は3つのオプションを見つけました
Fortran: まったく問題ないように見えますが、ソルバーを何度も効率的に呼び出すことができるかどうか、いくつか懸念があります。CplexでFortranしか使えないようです。私は Fortran+GUROBI をググったが、結果は心強いものではなかった。
Visual Basic .NET : Visual Basic では Cplex と GUROBI の両方を呼び出すことができるようですが、パフォーマンスについてはわかりません。
Python: CPlex および GUROBI と統合可能。
結論として、前進するためにあなたの提案をお願いします。私の好みは、GUROBI と CPlex の両方を使用できるプログラミング言語から始めることです。
python - Python を使用した Gurobi での複雑な最適化定式化の実装
次の最適化プログラムを実装したいのですが、非常に難しいことがわかりました。
最大 alpha*(C'GC/|C|) + beta*((1-Var(1-3^{-VC}))*(平均(VC)/3))
st |C| <= {0,1} の数字と C
一方、
- C は、長さ m の決定列ベクトルです。
- |C| ノルム 0 または C ベクトルの合計を表します。
- C' は C の転置を表します。
- G は非負の実数の [m,m] 行列です。
- V は非負の整数の [n,m] 行列で、n <= m です。
- alpha と beta は定数 (非負の実数) です。
- 「Var」と「mean」は分散と平均を表します。
- "number" は非負の実数定数です。
私はGurobiに慣れていません。上記の定式化を Python で実装するための助けをいただければ幸いです。
python - Pythonで定数を負のグロビ変数べき乗に解く方法
次の問題を解決するために、Python で Gurobi を使用しています。
最大 (1-Var(3^{-VC})) * (mean(VC)) st sum(C) <= 3 および {0,1} の C
一方、C は長さ n のバイナリ決定ベクトルです。V は、サイズ mxn (m<=n) の係数 (情報) 行列です。ここに私のpythonコードがあります:
次のエラーが表示されます:
どうやら、主な問題は gurobi 変数を定数のべき乗として使用する方法です。特にバグと全体的な実装全般に対処することを提案してください。
java - Gurobi の LP 緩和のための独自の切断面
私は現在、Gurobi Java インターフェイスを使用して Java で実装することにより、Gurobi で作業しています。独自の切断面を生成するコールバック関数を実装して、特定の MIP の解決プロセスを加速したいと考えています。これらの切断面は、ノードの対応する LP 緩和を強化するために、分岐限定ツリーのすべてのノードで生成する必要があります。したがって、LP緩和の最適解変数が必要です。現時点では、コールバック関数の WHERE 変数と WHAT 変数を設定して、ノードの LP 緩和の最適解変数を取得する方法がわかりません。次のGurobi のページにはより多くの情報があり、Gurobi は C で LP 緩和の解変数の超過分しか提供していないように見えます。いつも回答ありがとうございます...
mathematical-optimization - Gurobi は、数学的に不可能であるにも関わらず、無制限のモデルを報告します
Julia のすばらしい JuMP パッケージを使用して、Gurobi 6.0.4 をソルバーとして線形計画法を解いています。目的関数は決定変数の合計であり、非負として明確に定義されており、問題ではそれを最小化する必要があります。何らかの理由で、Gurobi はモデルが無限であると考えています。
変数と目的の定義は次のとおりです。
奇妙な観察 #1: これは最小化問題ですが、Gurobi の BarrierSolve メソッドのログは、反復ごとに目的関数が増加していることを明確に示しています。さらに、Gurobi は行数と列数の間で切り替えを行うようです。事前解決ステップの前に、モデルには 50,000 行と 25,000 列があります。解決前のステップ (1,000 行と 1,000 列未満を削除) の後、24,000 行と 50,000 列になりました。ログは次のようになります。
奇妙な観察 #2: BarrierSolve は最終的に status で終了しますInfeasibleOrUnbounded
。次に、InfUnbdInfo=1
Gurobi の均一 BarrierSolve メソッドを設定して使用することを提案しますBarHomogeneous=1
。これらの両方を行うと、目的関数は増加し続け (!)、バリア ログは次のようになります。
非負変数の和の最小化を伴う線形計画法がどのように無制限になるのか理解できません。これは Gurobi の問題ですか、それとも LP の設定に何か問題がありましたか? 何らかの数値エラーであると思われますが、トラブルシューティング方法がわかりません。
編集:いくつかの制約を緩め、実現可能領域を人為的に改善することで、問題の部分的な修正を見つけました。問題は実際には実行可能性の問題であり、無限の問題ではなかったようです。つまり、Gurobi は実際には双対の無限性に言及していた可能性があります。
ご協力いただきありがとうございます!
algorithm - 多目的整数計画法
整数計画法を使用して、パレート最適解を列挙したいと考えています。これを行うために gurobi または同様の単目的整数計画法ソルバーを使用するアルゴリズムを実装したいと思いますが、そのようなアルゴリズムは知りません。誰かが効率的なフロンティアを列挙するためのアルゴリズムを提案してくれませんか?