5

私はCPLEX Java APIで大きな最適化の問題を解決しています。現在のところ高スループットのためのCPLEX Javaの最適な使用

IloCplex cplex = new IloCplex(); 
... add lots of variables and constraints ... 
cplex.solve(); 
cplex.end(); 

これはうまくいくが、私は単に効率を変えているところで頻繁にプロセスを繰り返す。繰り返すたびに、新しいcplexオブジェクトを作成し、すべての変数を再作成します。

これを行うより効率的な方法はありますか? IBMのドキュメントには、「モデルのインスタンスにモデルを追加する」のような言語がありますが、それは変な音ですが、再利用できることを示唆していると思いました。

これ以上の経験豊富なユーザーからの提案は素晴らしいと思います。ありがとう。

+2

おそらく、IBMのディスカッションフォーラムや、姉妹サイトのStack Overflowへのより良い回答が得られます。 –

答えて

6

制約の係数(または目的関数の係数)を変更したい場合は、既存のIloCplexオブジェクトの係数を変更できます。モデルを最初から作成しないでください。

retval = cplex.solve(); 
// verify that the solve was successful 

// change coeficients on constraints (or in the objective) 
cplex.setLinearCoef(constraint, newCoef, variable); 
cplex.setLinearCoef(objective, newObjCoef, variable); 

// change right bounds on constraints 
constraint.setBounds(newLB, newUB); 

// change variable bounds 
var.setBounds(newLB, newUB); 

retval = cplex.solve(); 
// verify the solve 
+0

ありがとうございます。これによりAPIについての混乱が解消されました。 –

関連する問題