定义变量和表达式:IloNumVar

描述 C++ 类 IloNumVar。

您需要的第一个建模类可能是 IloNumVar。 这个类的对象表示模型中的决策变量。 它们由变量的下限和上限定义,类型可以是 ILOFLOATILOINTILOBOOL,分别代表连续变量、整数变量或布尔型变量。 以下构造函数将创建界限为 -1 和 10 的整数变量:


IloNumVar myIntVar(env, -1, 10, ILOINT);

IloNumVar 提供了用于查询指定变量时所需数据的方法。 但是,只有界限可修改。 Concert Technology 提供了建模对象类 IloConversion,用于更改变量的类型。 此转换允许在不同模型中使用具有不同类型的同一变量。

变量通常用来构建表达式,后者进而用来定义优化问题的目标或约束。 表达式可以显式地编写,例如:


1*x[1] + 2*x[2] + 3*x[3] 

其中,假定 x 是变量数组 (IloNumVarArray)。 另外,还可以使用循环来逐段创建表达式:


IloExpr expr(env);
for (int i = 0; i < x.getSize(); ++i)
  expr += data[i] * x[i];

请尽可能依据整数数据或双精度(64 位)浮点数据来构建表达式。 应该避免使用单精度(32 位)浮点数据,因为这可能会不必要地生成情况不良的问题。 有关更多信息,请参阅数字难度

虽然 Concert Technology 支持非常一般的表达式,但在要使用 IloCplex 来求解的模型中,只能使用线性表达式、二次表达式、分段线性表达式和逻辑表达式。 有关其中每种可能性的更多信息,请参阅下列主题:

完成使用表达式之后(即,使用表达式来创建约束之后),需要通过调用其 end 方法将其删除,例如:


expr.end();