問題タブ [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.

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

java - Java データ ファイルを使用した Cplex OPL モデル

私はcplexの新しいユーザーです。Java コードを使用してデータ ファイルを生成し、cplex opl モデルで使用したいと考えています。そのようなことを行うには、opl コードと Java コードにどのコマンドを挿入する必要がありますか。ありがとう。

0 投票する
0 に答える
342 参照

cplex - カウントの標準偏差に対する制約は常にゼロです

私は現在、スポーツ チームのスケジューリングの問題を解決しようとしています。私の決定変数は次のように宣言されています。

この特定のケースでは、どこGamesからの範囲で0..19あり、からTeamsの範囲です。0..9これは、どのチームが各ゲームをプレイしているかを表す 20 行 2 列の行列を形成します。

これは、チーム 3 が最初のゲームでチーム 7 と対戦し、次にチーム 2 対チーム 4 と対戦し、チーム 9 対チーム 1 で終了することを示す 3 ゲーム マトリックスの例です。

私の制約では、各チームがほぼ同じ数のゲームをプレイする必要があることを表現しようとしています。この制約を表現する私の試みは次のとおりです。

[18, 18, 0, 0, 0, 0, 0, 0, 0]この定式化は健全であると信じていますが、CPLEXが 9 チームの場合の「最適な」ソリューションを返すと言っているにもかかわらず、制約が満たされていないため、ある種の未定義の動作に遭遇しているように感じます。

手で計算すると、 の標準偏差が得られ7.59ます。これは明らかに 1 未満ではありません。これを確認するために、モデルの結果データ セクションに次のコードを追加しました。

次の出力が得られます。

これは、私が書いた制約に関する何かが正しくないことをさらに確認します。状況をさらにデバッグするために、代わりに次の制約を使用しました。

Wherefooは の整数配列であると宣言されましたが、[1, 100, 10000, 1000000, 100000000]これは標準偏差が 1 未満であることは間違いありません。予想どおり、このモデルは実行不可能であることが示されました。これは、標準偏差が予想どおりに機能することを示しているため、問題はカウントの配列を構築する方法。次に、次の制約を試しました。

私の理論では、標準偏差がゼロ以外として処理されている場合、これによりモデルが実行不可能になるはずです。驚いたことに、モデルは[18, 18, 0, ...]上記と同じ簡単な解決策で合格しました。3に変更2.999...することで、モデルは実行不可能になりました。したがって、私が計算した標準偏差は、制約で 0 に評価されていると結論付けていますが、検索が終了した後、結果データ セクションでは正しく計算されています。

この時点で、問題はカウントの配列 ( ) の計算方法に起因していると確信していますall(t in Teams) count(all(g in Games, s in 0..1) plays[g][s], t)が、理解できない部分は、結果データでは機能するのに制約では機能しない理由です (playcounts印刷で示されているように)。その上)。

さらに、次の制約は問題なく機能します。

all(t in Teams)...これは、問題が制約の部分にあると私に信じさせます。この理論をテストするために、次の制約を使用しました。

理論的には、返される自明な解は で始まるため、これは冗長な制約である必要があります[18, 18, 0, ...]。驚いたことに、これは実行不可能なモデルを作成しました。== 0の代わりに を使用しても== 18、モデルは実行不可能でした。したがって、この数値が何に評価されているかを把握したかったのです。そのために、次の決定変数を追加しました。

目的関数を次のように変更しました。

次の制約があります。

これにより、最適なソリューションを持つモデルが得られました。解は にa設定されていました-9007199254740991minimizeこのモデルを試しても同じ結果になります。

a非負になるように制約しようとすると、CPLEX がクラッシュして### UNEXPECTED ERROR.

最終的に、私の質問は次のとおりです。

  1. 私は OPL の規則に違反していて、ステートメントを使用してはいけませんか?
  2. 上記に「はい」の場合、私が探している制約を表現する合法的で有効な方法はありますか?
  3. 上記に当てはまらない場合、OPL が制約の標準偏差を計算できないのはなぜですか?
0 投票する
1 に答える
181 参照

optimization - CPLEX 最適化 - 1 台のマシンでの一連の製品の計画

これが私の問題です。たとえば、梱包する製品が 10 個あるとします。全 10 製品の包装は、同じライン/機械で行われます。

製品によってセットアップ時間は異なります。たとえば、製品 1 から製品 2 へのセットアップ時間 (高さを調整し、簡単な片付けを行う必要があります) は 30 分です。製品 2 から製品 1 まで (高さを調整するだけで後片付けは不要)、セットアップ時間は 15 分です。商品 1 から商品 3 まで、5 分かかります。

セットアップ時間を最小限に抑えようとしています。

どうすればこれを解決できますか? 私の実際の問題には100の異なる製品があります(したがって、100 x 100のマトリックス)

巡回セールスマン問題とよく似ています。違いは、製品 1 (または TSP の都市 A) から絶対に離れる必要はなく、最後に製品 1 に戻る必要がないことです。

これは私が過去に使用した TSP コードです。問題を解決するために変更できますか? または、私がそれを行うことができる他の方法はありますか?

ありがとう!

0 投票する
0 に答える
100 参照

ruby-on-rails - Rubyの初期化メソッドが間違った数の引数エラーをスローしない

Rails アプリケーション用に IRB をセットアップしました。

次の宝石を使用しました

以下のように初期化メソッドでクラスを作成すると

今、私はそれを次のように呼びますTest.new

間違った数の引数に対してエラーをスローする必要がありますが、スローしていません。

これがスクリーンショットです。

ここに画像の説明を入力

これは、設定したherokuアプリへのリンクです。Heroku デモアプリ

0 投票する
0 に答える
370 参照

vector - 線形計画法 / ベクトル / opl / cplex

誰かが私を助けてくれることを願っています。cplex studio で次の最大化問題を実装しました。

今、複数のベクトル pb を取得したいと考えています。それぞれ b 個の要素を持つ k 個のベクトルを考えてみましょう。別の変数 pbk[b][k] を導入しました。k はベクトルの数を示します。残念ながら、cplex は同じベクトルの k 回を返します。k 個の異なるベクトルを返す同じモデルを Gurobi にも実装しました。

cplexでも異なるベクトルを取得する方法を知っている人はいますか?

ありがとうございました!

0 投票する
0 に答える
170 参照

optimization - dvar float+ 変数には負の解が含まれています

IBM ILOG CPLEX 最適化スタジオで線形計画法の問題を解決しています。私の決定変数の 1 つは float+ 型です。私はそれを次のように定義します

dvar float+ A[P][G];

CPLEX は、要素の 1 つが負である (-4e-10 に等しい) 行列として、この変数の解を生成します。

その理由は何でしょうか?

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

cplex - CPLEX エラー 1016: プロモーション バージョン

次のように、CPLEX oplide で整数計画法モデルを解くためのコードを作成しました。

CPLEX エラー 1016: プロモーション バージョンが表示されます。問題サイズの制限を超えました。問題を特定するためのアイデアを提供していただき、ありがとうございます。