IBM ILOG CPLEX Optimization Studio でモデル化された線形問題があり、正しい解、つまり目的値を返します。シミュレーションの目的で、Java から呼び出す ILOG モデル モデル ファイルとデータ ファイルを使用します。
IloOplFactory.setDebugMode(false);
IloOplFactory oplF = new IloOplFactory();
IloOplErrorHandler errHandler = oplF.createOplErrorHandler(System.out);
IloOplModelSource modelSource = oplF.createOplModelSource("CDA_Welfare_Examination_sparse2.mod");
IloCplex cplex = oplF.createCplex();
IloOplSettings settings = oplF.createOplSettings(errHandler);
IloOplModelDefinition def=oplF.createOplModelDefinition(modelSource,settings);
IloOplModel opl=oplF.createOplModel(def,cplex);
String inDataFile = path;
IloOplDataSource dataSource=oplF.createOplDataSource(inDataFile);
opl.addDataSource(dataSource);
opl.generate();
opl.convertAllIntVars(); // converts integer bounds into LP compatible format
if (cplex.solve()){
}
else{
System.out.println("Solution could not be achieved, probably insufficient memory or some other weird problem.");
}
ここで、Java から実際の決定変数 match[Matchable] にアクセスしたいと思います。
ILOG CPLEX Optimization Studio では、次の命名法を使用しています。
tuple bidAsk{
int b;
int a;
}
{bidAsk} Matchable = ...;
dvar float match[Matchable];
Java では、次の方法で目的の値にアクセスします (問題なく動作します)。
double sol = new Double(opl.getSolutionGetter().getObjValue());
では、決定変数「一致」にアクセスするにはどうすればよいでしょうか。これまでのところ、私は
IloOplElement dVarMatch = opl.getElement("match");
しかし、私はそれ以上進むことができないようです。助けていただければ幸いです。どうもありがとう!