ファシリティの場所の問題を解決するために、Benders分解コードをC++で記述しようとしています。これは2段階確率的プログラミングの例であり、需要パラメータはシナリオに依存します。 Cで、複数のモデル構築(反復的)C++(複数のシナリオを使用したベンダー分解)
option solver cplexamp;
option omit_zero_rows 1;
option display_eps .000001;
option solver_msg 0;
option show_boundto1 0;
problem Master: r, y, theta,
Master_Cost, Cut_Defn, Open_Facilities_Facility_Capacity, Number_of_Facilities_Per_Node;
problem Sub{s in 1..NSec}:
{k in 1..K, (i,j) in LINKS} x[k,s,i,j],
{k in 1..K, i in 1..nnodes} z[k,s,i],
{k in 1..K, i in 1..nnodes} w[k,s,i],
BSP_Cost[s],
{i in 1..nnodes, k in 1..K} Flow_Conservation[i,k,s],
{(i,j) in LINKS} Arc_Capacity[i,j,s];
let nCUT := 0;
let {s in 1..NSec} theta[s] := 0;
let {k in 1..K, i in 1..nnodes} R[k,i] := 0;
param GAP default Infinity;
param newGAP;
しかし++私はシナリオに対する部分問題を(モデルの構築)を構築する方法を知らない:私は前にAMPLで同様のコードを書き、次のように開始されたファイルを実行しています。 (s
で索引付けされたすべてのシナリオのモデルを作成する必要があります)
以下は、私のコードのサブ問題生成部分です(モデル数)。しかし、私は、これが間違っていることを認識しました。なぜなら、サブ問題ではなく、大きな問題に制約を加えるだけなのでです。
ご協力いただきありがとうございます。
注:This linkには、単一のサブ問題(1つのシナリオ)でしか動作しないコードがあります。これは基本的に私が複製しようとしている(または自分のコードをベースにしている)人が興味を持っている場合です。また、複数のシナリオのBendersコードのリンクやファイルがある場合は、それも驚くほど寛大です。
もう一度おねがいします。
サブ問題を1つ作成し、各シナリオごとに毎回更新することは、私が探しているものではありません。私は実際にシナリオごとに1つのIloModelを構築する必要があり、それを行う方法を尋ねています。 – herol