跳至主内容
框架 无框架

类IloDistribute

定义文件: ilconcert/ilomodel.h
IloDistribute的地图IloDistributeIloDistributeIloConstraintIloIntExprArgIloNumExprArgIloExtractable
用于约束编程:模型中的计数约束。

该类的实例是模型中的计数约束。 您可以使用该类的实例来计算约束变量数组中几个值的出现次数。 可以使用此类的实例来强制规定数组的受约束变量的取值,从而将取各个值的受约束变量限制在一定数量。

例如,如果我们有五辆车要涂成三种颜色,那么我们可以把车称为 "c1、"c2、"c3"、"c4"、"c5",把颜色称为 "p1、"p2、"p3。如果我们可以允许不超过三辆车涂成 "p1,正好三辆车涂成 "p2,不超过一辆车涂成 "p3,那么我们就可以用这个约束条件来非正式地表示我们的问题:

 卡 = [[0,3], [3,3], [0,1]]

 值 =p1,p2,p3]

 变量 =c1,c2,c3,c4,c5]
 

更正式地说,数组 "cards中的受约束变量等于数组 "vars中的值在数组 "values中出现的次数。 更确切地说,对于每个 "i,"cards[i]等于 "vars数组中 "values[i]"的出现次数。 传播此约束后,"cards[i]的最小值至少等于 "vars中包含的与 "values[i]中的值绑定的变量个数;而 "cards[i]的最大值最多等于 "vars中包含的在其域中包含 "values[i]中的值的变量个数。

cards和 "values数组的长度必须相同;否则,当启用异常时,Concert Technology 会在支持 C++ 异常的平台上抛出异常。

When an instance of this class is created by a constructor with only cards and vars as arguments (that is, there is no values argument), then the array of values that are being counted must be an array of consecutive integers starting with 0 (zero). 在这种情况下,对于每个 "i,"cards[i]等于 "vars数组中 "i"的出现次数。 在传播此约束后,"cards[i]的最小值至少等于 "vars中包含的与值 "i绑定的变量个数;而 "cards[i]的最大值最多等于 "vars中包含的在其域中包含 "i的变量个数。

为了使约束生效,必须使用模板 "IloAdd或成员函数 "IloModel::add将其添加到模型中,并使用成员函数 "IloAlgorithm::extract提取算法模型。

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

注意:逻辑约束中不能使用此约束。

另请参阅:

方法概要
public IloDistributeI *getImpl() const
public IloDistribute()
public IloDistribute(IloDistributeI * impl)
public IloDistribute(const IloEnv env, const IloIntExprArray cards, const IloIntArray values, const IloIntExprArray vars, const char * name=0)
public IloDistribute(const IloEnv env, const IloIntExprArray cards, const IloIntExprArray vars, const char * name=0)
从 "IloConstraint继承的方法
getImpl, IloConstraint, IloConstraint
从 "IloIntExprArg继承的方法
getImpl, IloIntExprArg, IloIntExprArg
从 "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
方法详细信息

IloDistribute

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

IloDistribute

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

IloDistribute

public 'IloDistribute(const 'IloEnv'环境, const 'IloIntExprArray'卡片, const 'IloIntArray'价值观, const 'IloIntExprArray'变量, const char * '名字=0)

此构造函数在模型中创建一个计数约束。 您必须使用模板 "IloAdd或成员函数 "IloModel::add将此约束添加到模型中,然后使用 "IloAlgorithm::extract为算法提取模型,以便将该约束考虑在内。

cards和 "values必须长度相同,否则 Concert Technology 会抛出异常 "InvalidArraysException


IloDistribute

public 'IloDistribute(const 'IloEnv'环境, const 'IloIntExprArray'卡片, const 'IloIntExprArray'变量, const char * '名字=0)

此构造函数在模型中创建一个计数约束。 您必须使用模板 "IloAdd或成员函数 "IloModel::add将此约束添加到模型中,然后使用 "IloAlgorithm::extract为算法提取模型,以便将该约束考虑在内。


getImpl

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