我有一个在 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.");
}
现在,我想从 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());
现在,我如何访问决策变量“match”?到目前为止,我已经开始
IloOplElement dVarMatch = opl.getElement("match");
但我似乎无法更进一步。非常感谢您的帮助!非常感谢!