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

该类的实例是一个环境,管理建模对象的内存和标识符。 每个 Concert 技术对象,如可提取对象、模型或算法,都必须属于一个环境。 In C++ terms, when you construct a model (an instance of IloModel) or an algorithm (an instance of IloCplex, IloCP, or IloSolver, for example), then you must pass one instance of IloEnv as an argument of that constructor.
环境和内存管理
环境("IloEnv实例)可以有效管理以该环境为参数构建的对象的内存分配。 例如,当算法提取模型中的 Concert Technology 对象时,会尽可能高效地处理这些提取对象的内存管理;Concert Technology 不会进行不必要的复制,以免在应用程序中造成内存爆炸。
当您的应用程序删除 "IloEnv实例时,Concert Technology 将自动删除该环境下的所有模型和算法。 您可以通过调用成员函数 "env.end来删除环境。
为 Concert Technology 数组、表达式、集合和列分配的内存不会被释放,直到对这些对象的所有引用都已终止且对象本身已被删除。
本手册中记录的某些类,如 "IloFastMutex,被称为系统类。 它们不属于 Concert Technology 环境;换句话说,"IloEnv实例不是它们构造函数的参数。 因此,Concert 技术环境不会试图管理内存的分配和取消分配;调用 "IloEnv:end 不会删除系统类的实例。 这些系统类已在本手册中明确指定,相应的构造函数和析构函数也已在本手册中说明。
环境和初始化
您应用程序中的 "IloEnv实例将为 Concert Technology 初始化某些数据结构和建模设施。 例如,"IloEnv初始化符号常量 "IloInfinity。
该环境还指定了当前对线性表达式中项的规范化或还原的假设。 有关这一概念的解释,请参阅概念归一化:减少线性项
环境与传播流
应用程序中的 "IloEnv实例会初始化一般信息、错误信息和警告的默认输出流。
环境与可提取对象
问题中的每个可提取对象都必须属于 "IloEnv实例。 用 C++ 术语来说,在您创建的某些可提取对象(如约束变量)的构造函数中,您必须传递一个 "IloEnv实例作为参数,以指定该可提取对象属于哪个环境。 可提取对象(即 "IloExtractable或其派生子类中的一个实例)在其整个生命周期中都与它的创建环境紧密相连。 它只能用于属于同一环境的可提取对象。 它只能针对同一环境中的算法提取。
两个不同的环境不能共享同一个可提取对象。
您只能将一个环境中的对象提取到给定的算法中。 换句话说,算法不会从两个或多个不同的环境中提取对象。
该类中的大多数成员函数都包含 "assert语句。 有关宏 "NDEBUG(打开或关闭这些 "assert语句的方法)的解释,请参阅Assert 和 NDEBUG 概念。
另请参阅:
| 方法概要 | |
|---|---|
public void | end() |
public ostream & | error() const |
public IloExtractableI * | getExtractable(IloInt id) |
public IloEnvI * | getImpl() const |
public IloInt | getMaxId() const |
public IloInt | getMemoryUsage() const |
public ostream & | getNullStream() const |
public IloRandom | getRandom() const |
public IloNum | getTime() const |
public IloInt | getTotalMemoryUsage() const |
public const char * | getVersion() const |
public | IloEnv() |
public | IloEnv(IloEnvI * impl) |
public IloBool | isValidId(IloInt id) const |
public ostream & | out() const |
public void | printTime() const |
public void | setDeleter(IloDeleterMode mode) const |
public void | setError(ostream & s) |
public void | setNormalizer(IloBool val) const |
public void | setOut(ostream & s) |
public void | setWarning(ostream & s) |
public void | unsetDeleter() const |
public ostream & | warning() const |
| 方法详细信息 |
|---|
该构造函数创建了一个环境,用于管理 Concert Technology 中的可提取对象。
该构造函数从其实现对象中创建一个环境(句柄)。
调用该成员函数时,它会清理调用环境。 换句话说,它会删除在该环境中创建的所有可提取对象("IloExtractable及其子类的实例),并释放为它们分配的内存。 它还会删除在该环境中创建的所有算法("IloAlgorithm及其子类的实例),并释放为其分配的内存,包括为这些算法提取的可提取对象的表示。
该成员函数返回一个引用,指向当前用于从调用环境中获取错误信息的输出流。 初始化为 "cerr。
该成员函数返回与指定标识符 "id相关的可提取值。
该成员函数返回调用环境的执行对象。
该成员函数返回当前 "IloEnv中所有可提取内容的最高 id。
该成员函数以字节为单位返回堆的满载程度。
该成员函数调用环境的空流。 该成员函数可与 "IloAlgorithm::setOut()一起使用,通过重定向到空流来抑制屏幕输出。
IloEnv的每个实例都包含一个随机数发生器,即 "IloRandom类的一个实例。 该成员函数返回 "IloRandom实例。
该成员函数返回自调用环境构建以来所经过的时间(以秒为单位)。 (成员函数 "IloEnv::printTime将此信息导入调用环境的输出流)
该成员函数以字节为单位返回堆的大小。
此成员函数返回一个字符串,指明IBMILOG Concert Technology 的版本。
该方法会告诉你当前的 "id是否与实时可提取数据相关联。
该成员函数返回当前用于日志记录的输出流的引用。 通过该成员函数可以访问调用环境的一般输出。 默认情况下,日志输出流由 "IloEnv实例定义为 "cout。
该成员函数将成员函数 "IloEnv::getTime的输出导向调用环境的输出流。 (成员函数 "IloEnv::getTime用于访问自创建调用环境以来的时间(以秒为单位)
该成员函数设置可提取内容的删除模式,如概念 "删除 CPLEX 中的可提取对象所述。 模式可以是 "IloLinearDeleterMode或 "IloSafeDeleterMode。
不能与 CP 优化器一起使用。
该成员函数用于设置调用环境产生的错误流。 默认情况下,流由 "IloEnv实例定义为 "cerr。
该成员函数可打开或关闭 Concert Technology 中用于线性或二次表达式标准化的功能。 线性或二次表达式的归一化也称为线性或二次表达式的减项。 在这种情况下,一个线性表达式或二次表达式,如果不包含相同变量或相同变量对的多个项,就被称为规范化表达式。 本手册中的概念为这一理念提供了实例。
当 "val为 "IloTrue(默认值)时,Concert Technology 会分析线性表达式和二次表达式,以确定是否有变量在给定的线性表达式中出现超过一次,以及是否有变量对在给定的二次表达式中出现超过一次。 然后,它将线性或二次表达式表达式中的项合并,以消除任何此类重复。 这种模式在初步计算时可能需要更多时间,但可以避免在线性或二次表达式的项中出现重复变量时断言失败的可能性。
当 "val为 "IloFalse时,Concert Technology 会假定调用环境中的所有线性和二次表达式都已处理过,并将其简化为最有效的形式。 换句话说,Concert Technology 假设线性和二次表达式已经标准化。 这种模式可以节省计算时间,但也存在风险,即线性或二次表达式可能包含一个或多个变量,而每个变量都会出现在一个或多个项中。 This situation will cause certain assert statements in Concert Technology to fail if you do not compile with the flag -DNDEBUG.
该成员函数将 "out()数据流重定向为作为参数给定的数据流。
该成员函数可与 "IloEnv::getNullStream一起使用,通过重定向到空流来抑制屏幕输出。
该成员函数用于设置来自调用环境的警告流。 默认情况下,流由 "IloEnv实例定义为 "cout。
如概念 "删除 CPLEX 中的可提取对象所述,该成员函数取消了可提取物删除模式的设置。
不能与 CP 优化器一起使用。
该成员函数返回一个引用,指向当前用于从调用环境中发出警告的输出流。 默认情况下,警告输出流由 "IloEnv实例定义为 "cout。