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

该类允许您通过调用不同事件来监控 CP 优化器搜索过程的不同方面。 通过覆盖虚拟函数 "invoke,您可以定义自己想要的行为。 调用回调时,可以使用IloCP对象上的获取器,如 "IloCP::getInfo、"IloCP::getObjValues和 "IloCP::getObjBounds。 您也可以通过调用 "IloCP::abortSearch来终止搜索。
IloCP::abortSearch外,禁止在调用 "invoke时调用任何改变 CP 优化器状态的函数,例如,不应调用 "setParameter、"extract、"solve、"refineConflict 等成员函数。| 方法概要 | |
|---|---|
public virtual void | invoke(IloCP cp, Callback::Reason reason) |
public | ~Callback() |
| 内部枚举 | |
|---|---|
| 回调::原因 | 描述回调原因的枚举类型。 |
| 方法详细信息 |
|---|
毁灭者 您应确保在此处取消分配回调创建时或执行过程中分配的任何内存。
该成员函数由传递的 CP 对象调用,以执行回调操作。 您应该定义一个 "IloCP::Callback的子类来重写该函数的行为。
reason参数表示调用回调的原因。 目前的理由清单如下
Destruction:调用该回调是为了发出信号,表明 "IloCP::end成员函数正被调用到传递的 "IloCP对象上。 在回调过程中,不得调用 "IloCP对象上的任何成员函数。EndExtraction:调用回调是为了提示提取模型到引擎的过程已经结束。EndInitialPropagation:调用回调是为了发出信号,表明已执行了初始顶层推理(传播)。 此时,可以使用域获取器(如 "IloCP::getMin(IloIntVar)或 "IloCP::isPresent(IloIntervalVar))来获取变量域的信息。EndSearch:调用回调是为了提示解决方案搜索已经自然结束(例如通过证明),或者由于限制或中止而结束。EndSolve:调用回调以提示解算过程已完成。 这种回调类型在求解过程中任何其他类型之后接收,可用作拆分或触发器,以整合求解过程中获得的信息。ObjBound:调用该回调函数的目的是为了向用户发出信号,表明已经找到了优化问题的改进边界。Periodic:在搜索过程中,回调作为定期进程的一部分被调用。Proof:调用回调表示已完成可行性、不可行性或最优性(在指定公差范围内)的证明。Solution:调用回调表示产生了一个新的(在优化问题中是更好的)解决方案。 您可以使用获取器(如 "IloCP::getValue(IloIntVar))来获取决策变量的值。StartExtraction:调用回调是为了发出信号,表明向引擎提取模型的过程已经开始。StartInitialPropagation:调用该回调是为了发出信号,表明初始顶层推理(传播)即将开始。 此时,可以使用域获取器(如 "IloCP::getMin(IloIntVar)或 "IloCP::isPresent(IloIntervalVar))来获取变量域的信息。StartSearch:调用回调是为了提示解决方案搜索过程(初始传播后)即将开始。StartSolve:调用回调以提示解算过程刚刚开始。 这种类型的回调会在求解过程中的其他回调之前收到,可用于将求解过程中所需的信息初始化回调。 在为此调用回调时,"IloCP对象上将没有目标或边界等信息。| 内部枚举详细信息 |
|---|
这种枚举类型包括用户回调可以被调用的不同原因。 这种类型的参数会传递给 "IloCP::Callback::invoke。 您可以用它来控制回调的行为。
| 字段 |
|---|
StartExtraction | |
EndExtraction | |
StartSearch | |
StartInitialPropagation | |
EndInitialPropagation | |
Periodic | |
ObjBound | |
Solution | |
Proof | |
EndSearch | |
Destruction | |
StartSolve | |
EndSolve |