問題タブ [opl]
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.
javascript - cplex/opl でのセットの初期化
私は現在、cplex で実装されているマルチキャパシティテッド ロット サイジング問題に基づいて、バイヤーとサプライヤー間の交渉を確立することに取り組んでいます。小規模なシナリオでは、バイヤーはアイテム 1 ~ 4 を生産し、サプライヤはアイテム 5 ~ 7 を供給する責任があります。
私がやりたいことは、3つのセットを作成することです:
私の質問は、cplex/opl にかなり慣れていないため、モデルでそれらを操作するために、それぞれのアイテムでセットを初期化する方法です。次の方法で内部的に初期化できると思います:
私は正しいですか?ただし、スクリプトと for ループを介してセットを別の方法で初期化できますか?
前述のように、最終的には、最初の 4 つの項目がバイヤーの操作に割り当てられ、項目 5 ~ 7 がサプライヤーの操作に割り当てられ、次にそれらすべてに関する一連の操作を含む 3 つのセットが必要です。
事前に助けてくれてありがとう。
variables - CPLEX では、forall ループ構文で変数を使用するにはどうすればよいですか?
以下のように、cplex forall 構文で変数を使用したい..
しかし、このスクリプトを実行した後、(j+3) が原因で構文エラーが発生しました... このアルゴリズムを使用するには、どのようにスクリプトを作成すればよいですか?
javascript - OPL スクリプトの累乗関数
OPL スクリプト (execute{} ブロック) でマトリックスを初期化しようとしています。各要素は浮動小数点乗数 (> 0) に設定する必要があります。{}
pow 関数はスクリプトで認識されないため、^ 演算子を試しました... しかし、期待したものではありません: リファレンスには、「^ は OPL では power を意味し、スクリプトではビットごとの xor を意味します」と書かれています。
したがって、今のところ、機能するが浮動小数点数を受け入れない for() ループを使用しました。
OPL スクリプトの pow() に相当するものはありますか? 他にどうすればいいですか?for() ブロックはスクリプト ブロックの外では認識されないことに注意してください (execute{})
mathematical-optimization - 線形計画法の和と条件 - Cplex // OPL
OPL の合計に条件を適用する、またはこの問題を回避する簡単な方法はありますか?
たとえば、次のようなことは可能ですか:
この問題を回避するために私が見つけた唯一の方法は、範囲外の例外を回避するためにデータセットを拡張することですが、私の場合は意味がないので、前に合計に条件を適用したいと思います.
java - Java での Ilog OPL 要素のインターフェースに失敗しました
私はJava OPLインターフェースにかなり慣れていないので、CPLEXが解決した後に決定変数の値を取得する方法に関する問題に直面しています。具体的には、OPL モデル ファイルとデータ ファイルを統合する次のコードがあります。
ここで、sw は、cplex.solve() ステップから取得される「ダブル」ベクトル決定変数です。ただし、次のようなエラーが表示されます。
宣言エラーなのか、それとも OPL のライブラリの一部が不足しているのかを教えてください (CPLEx インストール キットの oplall.jar ファイルしか持っていません)。
よろしく、
プラヴィーン
c++ - 決定変数へのアクセス方法: OPL/Cplex && C++
C++ コードで OPL/Cplex ライブラリを使用していますが、
私の file.mod では、この決定変数をデカールしました: dvar int+ x[nodes][nodes][1..nb_max][lambdas];
Cplex がモデルを解いたので、次のように目標値を正常に回復しました。
私の質問は、多次元配列「x」を回復するにはどうすればよいですか? で試しました
IloIntVar x = opl.getElement("x").asIntVar; IloIntVar xvar =x.get(0);//最初の項目
しかし、次のエラーが発生します!
エラー: '' から非スカラー型 'IloIntVar' への変換が要求されました エラー: 'class IloIntVar' には 'get' という名前のメンバーがありません
私は OPL の初心者です。よろしくお願いします。
java - Java Cplex の結果は IBM Optimization Studio とは異なります
モデルを作成するために OPL を使用して、IBM Optimization Studio で LP 問題を実装しました。モデルを検証した後、シミュレーション用のパラメーターをスクリプト化するために、モデルを Java に入れたいと考えました。次のコードを使用して、Java で OLP モデルを使用する最も簡単な方法を見つけました。
問題は、IBM Optimization Studio と Java の両方で「myModel.mod」と「myData.dat」を実行すると、非常に異なる客観的な結果が得られることです。
IBM Optimization Studio で:
Java の場合:
データセットとモデルを調べたところ、125 未満の目標は不可能です (目標変数の 1 つが 125 であることを確認するために極端な値を使用したため、それ以下は不可能です)。
これらの結果が異なる理由を知っている人はいますか? それはおそらく、IBM と比較して Java の設定にあるものでしょうか? IBM Optimization Studio の設定を Java にインポートして、これをテストすることはできますか?
ありがとうございました!
編集: ここに IBM Optimization Studio のログがありますが、それらを含めるのを忘れていました。切り捨てられた整数に関するより多くの情報が表示されますが、これは両方のプログラムでの最初の経験なので、誰かが問題の場所またはこれが何を意味するのかを特定するのを手伝ってくれませんか?
編集 2: マトリックス 0..1 の整数値が 0 または 1 に丸められていないことがわかりましたが、代わりに 0.932 としてカウントされています... Java cplex に整数を強制的に丸めるにはどうすればよいですか?
解決済み:「opl.convertAllIntVars();」でした すべてをdoubleに変換しました。これをサンプル コードから取り出して削除したところ、すべて正常に動作するようになりました。
constraints - OPL 制約インデックス
OPL モデルをプログラミングしていますが、次の制約を表現する方法がわかりません。
のセット内のD_t_T
すべての合計はどこにありますか?q_t
t
T
- アップデート -
はい、q[t] と v[t] だけが変数です。t
次のように範囲を定義した場合、提案も機能しますか?
私の制約は次のようになります。
もう 1 つの基本的な質問かもしれません。次の式で [t-1] をどのように表現すればよいでしょうか。