| 概述 | 组 | 树 | 图形 | 不推荐 | 索引 | 概念 |

该类的实例为您提供了更改数值变量类型的方法。 例如,在为算法(如类 "IloCplex"的实例)提取的模型("IloModel"的实例)中,您可能希望将给定的数值变量("IloNumVar"的实例)的类型从 "ILOFLOAT转换为 "ILOINT"或 "ILOBOOL(或从 "IloNumVar::Float转换为 "IloNumVar::Int"或 "IloNumVar::Bool")。 这种变化被称为转换。
创建转换后,必须将其明确添加到模型中,才能将其考虑在内。 为此,请使用成员函数 "IloModel::add或模板 "IloAdd。 Then extract the model for an algorithm (such as an instance of IloCplex) with the member function IloAlgorithm::extract.
同一变量的多种类型转换
您可以转换模型中数值变量的类型。 为此,请创建一个 "IloConversion实例并将其添加到模型中。 您也可以在为算法提取模型后转换数值变量的类型(如IBM ILOG CPLEX参考手册中记录的 "IloCplex实例)。
IloCplex实例不会接受同一变量的多个类型转换。 也就是说,您可以在 "IloCplex的一个实例中更改一次类型,但不能更改两次。 如果多次尝试转换同一变量的类型,则会出现IBM ILOG CPLEX参考手册中记录的异常 "IloCplex::MultipleConversionException。
如果要多次更改数值变量的类型(例如,从布尔型到整数型再到浮点型),有以下几种可能:
IloExtractable::end删除它,并可选择添加新的转换。IloNumVarx(env,0,10,ILOBOOL); IloRangerng = (x <= 10); IloModel mdl1(env); mdl1.add(rng); mdl1.add(IloConversion(env, x, ILOINT)); IloCplex cplex1(mdl1); IloModel mdl2(env); mdl2.add(rng); mdl2.add(IloConversion(env, x, ILOFLOAT)); IloCplex cplex2(mdl2);
该类中的大多数成员函数都包含 "assert语句。 有关宏 "NDEBUG(打开或关闭这些 "assert语句的方法)的解释,请参阅Assert 和 NDEBUG 概念。
另请参阅《 ILOG CPLEX参考手册》中的 "IloCplex类。
另请参阅:
| 方法概要 | |
|---|---|
public IloConversionI * | getImpl() const |
public | IloConversion() |
public | IloConversion(IloConversionI * impl) |
public | IloConversion(const IloEnv env, const IloNumVar var, IloNumVar::Type t, const char * name=0) |
public | IloConversion(const IloEnv env, const IloNumVarArray vars, IloNumVar::Type t, const char * name=0) |
public | IloConversion(const IloEnv env, const IloIntVarArray vars, IloNumVar::Type t, const char * name=0) |
| 方法详细信息 |
|---|
该构造函数接受一个数值变量和一个类型;它创建了一个类型转换句柄,用于将变量 "var的类型转换为 "t指定的类型。 您可以使用参数 "name来命名类型转换,这样就可以用字符串标识符来引用它。
该构造函数接受一个数字变量数组和一个类型;它创建了一个类型转换句柄,用于将数组 "vars中每个变量的类型更改为 "t指定的类型。 您可以使用参数 "name来命名类型转换,这样就可以用字符串标识符来引用它。
该构造函数接受一个整数变量数组和一个类型;它创建了一个类型转换句柄,用于将数组 "vars中每个变量的类型更改为 "t指定的类型。 您可以使用参数 "name来命名类型转换,这样就可以用字符串标识符来引用它。