問題タブ [mathprog]
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.
model - Glpkを使用した線形計画モデリングの構文エラー
これが私の完全な問題です:
情報:
*最大 総投資額:125ドル
*ペイオフは、購入したユニットの合計xペイオフ/ユニットです。
*投資あたりのコスト:バイインコスト+コスト/ユニットx少なくとも1つのユニットを購入した場合のユニット数
*費用は投資あたりの費用の合計です
制約:
*2と5の両方に投資することはできません。
* 2と3の少なくとも1つを投資する場合にのみ、1に投資できます。
*3,4,5のうち少なくとも2つを投資する必要があります。
*最大ユニット数を超えて投資することはできません。
問題:利益の最大化:見返り-コスト
私のモデリング:
この構文エラーが発生します:
手伝ってくれませんか。
linear-programming - セットの GLPK Mathprog グループ
次元、要求、複数選択制約を含むナップサック問題: 一般化と定式化間の変換で説明されているように、複数選択ナップザック問題 (MCKP) を解決できるモデルをコーディングしようとしています(ここにあります。図 8 と 9 を参照してください)。基本的なナップザック問題の GMPL モデルの例をここで見つけることができます。ナップザックの問題の簡単な説明を探している人は、次の図を読んでください。
あなたは冒険家で、宝の山に出くわしました。それぞれが重み「w」と利益「p」を持つ何百もの素晴らしいアイテム「i」があります。耐荷重が 'c' のナップザックがあり、ナップザックに詰め込みすぎずに最大の利益を得たいとします。最も利益を上げられるアイテムの最適な組み合わせは何ですか?
コード内:
ここで、「I」は商品のバスケットで、x[i] はバイナリ変数です (0 = 選択されていない、1 = 選択されている)
私が問題を抱えている問題は、複数のグループの追加です。MCKP では、各グループからアイテムを 1 つだけ選択する必要があります。たとえば、3 つのグループから選択するとします。それらは次のように表すことができます (実際の値は無視してください)。
各グループを反復処理する方法と、変数 x を定義する方法について混乱しています。次のようになると思います。
ここで、i は j グループのアイテムのインデックスです。これは、一連のセットを定義することを前提としています。
次に、アイテムのグループを反復処理します。
しかし、GMPL は順序集合をサポートしていないと思うので心配です。この関連する質問を見たことがあります。答えは、セット内でセットを定義することを示唆しています。ただし、この特定のシナリオでどのように適用されるかはわかりません。
明確にするために、私の主な質問: GMPL では、セットのセット (この場合、各グループがアイテムのセットを持つグループのセット) を反復処理するにはどうすればよいですか?
c++ - MathProg から C++ への変換
混合整数問題に対する私の理解が正しいかどうかを確認するために、MathProg 言語を使用して問題を作成しました。しばらくして私はそれを理解することができたので、この解決策は正しいと推測できます.
しかし、実際に必要なのは、C++ コードで実装されたまったく同じルーチンです。GLPK C API に関して問題を書き直すのにしばらく時間がかかりましたが、単体テスト中に、実行可能なソリューションがないため、その C++ バージョンではソリューションが返されないことがわかりました。
明らかに、私はいくつかの間違いを犯したので、どこを見つける必要があります。
たとえば、C++ コードによって生成されたモデルと MathProg モデルによって生成されたモデルを比較するために使用できるデバッグまたはプレビューの方法はありますか? 何かを台無しにする可能性のあるすべての場所を単純に通過することは、何らかの解決策になりますが、まったく効果がありません.
linear-programming - または、GLPSOL AMPL/MathProg を使用した線形計画法の条件付け
いくつかの制約に応じて、2 つのタスクのうち小さい方を選択する最適化モデルを作成したいと考えています。
ここで、T1 と T2 はタスクの期間を表し、doT1 はこれらのタスクを実行するためのフラグを表します。必要に応じて、この最適化でそのうちの 1 つだけを選択するようにします。
制約を入れると
glpsol で線形形式の乗算が許可されていないというエラー メッセージが表示されます。
線形計画法で OR 条件を表現することはできますか?
linear-programming - GMPLコードの問題
GLPSOL ソルバーを使用して、次の問題を解決しようとしていました。
フレッドは、今後 5 年間で 5000 ドルを投資する必要があります。毎年初めに、彼は 1 年または 2 年の定期預金にお金を投資することができます。銀行は、1 年定期預金で 4%、2 年定期預金で合計 9% の利息を支払います。さらに、West World Limited は、2 年目の初めから 3 年間の証明書を提供します。これらの証明書は 15% (合計) を返します。フレッドが毎年利用できるお金を再投資する場合、線形計画を作成して、5 年目の終わりに手持ちの総現金を最大化する方法を彼に示します。
次の LP モデルを思いつきました。
x ijが j 年にオプション i に投資された金額であるため、
z = 1,04x 15 + 1,09x 24 + 1,15x 33を最大化しよ
うとします。
- x 11 + x 12 <= 5000
- × 31 =× 34=× 35=0
- x 12 + x 22 + x 32 <= 1,04 x 11
- x 13 + x 23 + x 33 <= 1,04 x 12 + 1,09 x 21
- x 14 + x 24 <= 1,04 x 13 + 1,09 x 22
- x 15 <= 1,04 x 14 + 1,09 x 23 + 1,15 x 32
- x ij >= 0
そしてそれをGMPLで書き込もうとしました:
ただし、次のエラーが発生します。
inv.mod:14: x 乗算宣言
コンテキスト: ...[ 1 , 5 ] + 1.09 * x [ 2 , 4 ] + 1.15 * x [ 3 , 3 ] ; st x
MathProg モデル処理エラー
これについて何か考えている人はいますか?
c - GLPK の MathProg ソリューションへのプログラムによるアクセス
C API を使用して記述できないと思われる MathProg で表現された問題があります。具体的には、変数間に制約があります。MathProg ファイルを生成して GLPK に渡しました。正しいソリューションが見つかりますが、このソリューションにプログラムでアクセスする方法がわかりません。返されたglp_prob
構造体には行も列もありません。ソルバーによって出力されたソリューションを解析することもできますが、もっと良い方法があることを願っています。
あるいは、C API を使用して変数間の制約を表現することが可能であれば、これも私の問題を解決すると思います。私のMathProgコードは以下です。