跳至主内容
框架 无框架

类IloSemiContVar

定义文件: ilconcert/iloexpression.h
IloSemiContVar的地图IloSemiContVarIloSemiContVarIloNumVarIloNumExprArgIloExtractable
对于IBM ILOG CPLEX:实例代表一个受约束的半连续变量。

该类的一个实例代表 Concert Technology 模型中的一个受约束半连续变量。 半连续变量源于数值变量类 "IloNumVar

半连续变量可以是 0(零),也可以在半连续变量的下限和上限所定义的区间内取值。 按照惯例,半连续变量被定义为浮点变量,但您可以通过使用从 "IloNumVar继承的类型规范,将 "IloSemiContVar实例指定为整数变量。 在这种情况下,Concert Technology 将为您对半连续变量施加积分约束,从而进一步将可行值集限制为 0(零)和半连续下界和上界定义的区间内的整数值。 半连续下限 (sclb) 必须大于或等于 0(零)。 尝试对半连续下限 (sclb) 使用负值将导致该界限被视为 0(零)。

如果在构造函数中或通过修改器("setUB、"setLB"、"setBounds)为整数变量("IloIntVar或 "IloNumVar和 "Type = Int的实例)赋予了数字边界,它们将被内舍入为整数值。 LB四舍五入,"UB四舍五入。

在 "IloNumVar实例中,"lb表示变量的下限,"ub表示变量的上限。 在派生类 "IloSemiContVar的实例中,"sclb表示半连续下界。

从形式上看,如果 "lb <= 0,那么半连续变量就是可行集为 "{0, [sclb, ub]}的数值变量,其中 "0 < sclb < ub";否则,对于 "lb的其他值,半连续变量的可行集就是区间 "[lb, ub]与集合 "{0, [sclb, ub]}的交集。 半连续下界'sclb可能与普通数值变量的下界不同,因为半连续变量仅限于半连续区域。 例如,下表显示了半连续变量的边界和相应的可行区域。

半连续变量边界及其可行区域举例

这些条件确定这些可行区域
lb == ub < sclb如果是 "lb==ub==0,则为 "{0};如果是 "lb==ub!=0,则为空集
lb <= 0 < sclb < ub{0, [sclb, ub]}
0 < lb < sclb < ub[sclb, ub]
0 < sclb < lb < ub[lb, ub]

该类中的大多数成员函数都包含 "assert语句。 有关宏 "NDEBUG(打开或关闭这些 "assert语句的方法)的解释,请参阅Assert 和 NDEBUG 概念。

另请参阅:

方法概要
public IloSemiContVarI *getImpl() const
public IloNumgetSemiContLB() const
public IloSemiContVar()
public IloSemiContVar(IloSemiContVarI * impl)
public IloSemiContVar(const IloEnv env, IloNum sclb, IloNum ub, IloNumVar::Type type=ILOFLOAT, const char * name=0)
public IloSemiContVar(const IloAddNumVar & var, IloNum sclb, IloNum ub, IloNumVar::Type type=ILOFLOAT, const char * name=0)
public voidsetSemiContLB(IloNum sclb) const
从 "IloNumVar继承的方法
getImpl, getLB, getPossibleValues, getType, getUB, IloNumVar, IloNumVar, IloNumVar, IloNumVar, IloNumVar, IloNumVar, IloNumVar, IloNumVar, IloNumVar, setBounds, setLB, setPossibleValues, setUB
从 "IloNumExprArg继承的方法
getImpl, IloNumExprArg, IloNumExprArg
从 "IloExtractable继承的方法
asConstraint, asIntExpr, asModel, asNumExpr, asObjective, asVariable, end, getEnv, getId, getImpl, getName, getObject, IloExtractable, isConstraint, isIntExpr, isModel, isNumExpr, isObjective, isVariable, removeFromAll, setLocation, setName, setObject
方法详细信息

IloSemiContVar

publicIloSemiContVar()
该构造函数创建一个空句柄。 使用前必须初始化。

IloSemiContVar

publicIloSemiContVar(IloSemiContVarI *impl)
该构造函数通过指向实现对象的指针创建一个句柄对象。

IloSemiContVar

public 'IloSemiContVar(const 'IloEnv'环境, 'IloNum'sclb, 'IloNum'ub' , 'IloNumVar::Type'类型=ILOFLOAT, const char * '名字= '0)

该构造函数通过 "sclb(即半连续下界)和 "ub上界创建 "IloSemiContVar实例。 默认情况下,它的类型是浮点型,但也可以使用 "ILOINT指定整型;在这种情况下,Concert Technology 将对变量施加积分约束。 lb的值设置为零。


IloSemiContVar

public 'IloSemiContVar(const 'IloAddNumVar& '变异, 'IloNum'sclb, 'IloNum'ub, 'IloNumVar::Type'类型=ILOFLOAT, const char * '名字= '0)

This constructor creates an instance of IloSemiContVar from the prototype var.


getImpl

公共IloSemiContVarI*getImpl() 常量
该成员函数返回一个指向调用句柄的实现对象的指针。

getSemiContLB

publicIloNum getSemiContLB() const

该成员函数返回调用半连续变量的半连续下界(即其 "sclb)。


setSemiContLB

public voidsetSemiContLB(IloNum sclb) const

该成员函数使 "sclb成为调用半连续变量的半连续下界。

成员函数 "setSemiContinuousLb会通知 Concert Technology 算法有关该调用对象的更改。