import ilog.cplex.IloCplex; //导入方法依赖的package包/类
private Map setupVariables(IMIP mip, IloCplex cplex) throws IloException {
// Setup Variables:
//
Map vars = new HashMap<>(); // varName to
// IloNumVar
int numberOfBooleanAndIntVariables = 0;
IloNumVarType varType = IloNumVarType.Float;
for (Variable var : mip.getVars().values()) {
if (var.ignore()) {
logger.debug("Skipping variable: " + var);
continue;
}
logger.debug("Adding variable: " + var);
VarType type = var.getType();
if (VarType.DOUBLE.equals(type)) {
varType = IloNumVarType.Float;
} else if (VarType.INT.equals(type)) {
varType = IloNumVarType.Int;
numberOfBooleanAndIntVariables++;
} else if (VarType.BOOLEAN.equals(type)) {
varType = IloNumVarType.Bool;
numberOfBooleanAndIntVariables++;
}
IloNumVar numVar = cplex.numVar(var.getLowerBound(), var.getUpperBound(), varType, var.getName());
vars.put(var.getName(), numVar);
}
cplex.add(vars.values().toArray(new IloNumVar[vars.size()]));
// Propose Values, if any:
// ///
proposeValues(mip, cplex, vars, numberOfBooleanAndIntVariables);
return vars;
}