У меня есть линейная проблема, смоделированная в IBM ILOG CPLEX Optimization Studio, которая возвращает правильные решения, то есть объективные значения. В целях моделирования я использую файл модели модели ILOG и файл данных, которые я вызываю из java:
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.");
}
Теперь я хотел бы получить доступ к фактическому совпадению переменной решения [Matchable] из java.
В 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");
но я не могу продвинуться дальше. Помощь очень ценится! Большое спасибо!