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

这是一个高级班。 高级课程通常要求对 CPLEX 使用的算法有深刻的理解。 因而它们会提高应用程序中错误行为的风险,而这种行为可能难以调试。 因此,团队鼓励您仔细考虑是否可以用其他类来完成同样的任务。
在分支-切割搜索过程中,每当发现新的潜在任职者时,就会调用该回调。 通过它,您可以分析提议的任职者,并选择拒绝。 在这种情况下,CPLEX 将继续进行分支切割搜索。 因此,该回调通常与分支回调相结合,后者指示 CPLEX 在找到潜在任职者并认为节点解整数可行后,如何在节点上进行分支。
使用该回调拒绝任职者时,还必须将控制主要和双重还原类型的参数 "IloCplex::Reduce设置为 1(1),以限制预化为主要还原,或设置为 0(0),以禁用所有预化为还原。 如果现任回调用于其他目的,则无需设置缩减参数。
在 MIP 启动处理过程中,可能会调用在位回调。 在这种情况下,"getSolutionSource将返回 "MIPStartSolution。 在这种情况下,需要考虑以下特殊因素:
另请参阅:
IloCplex, IloCplex::Callback, IloCplex::CallbackI, IloCplex::MIPCallbackI, IloCplex::OptimizationCallbackI, ILOINCUMBENTCALLBACK0
| 方法概要 | |
|---|---|
public NodeData * | getNodeData() const |
public NodeId | getNodeId() const |
public IloNum | getObjValue() const |
public IloNum | getSlack(const IloRange rng) const |
public void | getSlacks(IloNumArray val, const IloRangeArray con) const |
public IncumbentCallbackI::SolutionSource | getSolutionSource() const |
protected Callback::Type | getType() const |
public IloNum | getValue(const IloIntVar var) const |
public IloNum | getValue(const IloNumVar var) const |
public IloNum | getValue(const IloExprArg expr) const |
public void | getValues(IloNumArray val, const IloIntVarArray vars) const |
public void | getValues(IloNumArray val, const IloNumVarArray vars) const |
public void | reject() |
public NodeData * | setNodeData(NodeData * data) |
从 "MIPCallbackI继承的方法 |
|---|
getCurrentNodeDepth, getObjCoef, getObjCoef, getObjCoefs, getObjCoefs, getType, getUserThreads, MIPCallbackI |
从 "OptimizationCallbackI继承的方法 |
|---|
getModel, getNcols, getNQCs, getNrows |
从 "CallbackI继承的方法 |
|---|
abort, duplicateCallback, getCplexTime, getDetTime, getEndDetTime, getEndTime, getEnv, getStartDetTime, getStartTime, getType, main |
| 内部枚举 |
|---|
| IncumbentCallbackI::SolutionSource |
| 方法详细信息 |
|---|
This method retrieves the NodeData object that may have previously been assigned to the current node by the user with the method IloCplex::BranchCallbackI::makeBranch. 如果当前节点未分配任何数据对象,则将返回 0(零)。
该方法返回当前节点的 "NodeId。
请参阅 MIPCallbackI::NodeId。
该方法返回潜在任职者的查询目标值。
如果您需要代表目标本身的对象,请考虑使用 "IloCplex::getObjective方法。
此方法返回潜在任职者在 "rng指定范围内的松弛值。
该方法将范围数组 "con中每个范围的松弛值放入潜在任职者的数组 "val的相应元素中。 为此,CPLEX 调整了数组 "val的大小,使其与数组 "con的大小一致。
此方法返回调用回调的解决方案的来源。
该方法返回潜在现任解决方案中变量 "var的查询值。
有关适用于该方法的整数、截断和舍入的特殊考虑因素,请参阅CPLEX 优化器中的整数值、整数公差和舍入概念。
该方法返回潜在现任解决方案中变量 "var的值。
该方法返回潜在现有解决方案的 "expr值。
该方法返回潜在现任解决方案中数组 "vars中变量的查询值,并将其复制到 "val中。 CPLEX 会自动调整数组 "val的大小,以匹配数组 "vars的大小。
有关适用于该方法的整数、截断和舍入的特殊考虑因素,请参阅CPLEX 优化器中的整数值、整数公差和舍入概念。
该方法返回潜在现任解决方案中数组 "vars中变量的查询值,并将其复制到 "val中。 CPLEX 会自动调整数组 "val的大小,以匹配数组 "vars的长度。
这种方法会拒绝提议的现任者。
此方法设置分配给当前节点的 "NodeData对象。 如果已为当前节点设置了 "NodeData对象,则该方法将替换该对象并返回旧对象。 否则,该方法返回 0(零)。
此方法返回调用回调对象的回调类型。
| 内部枚举详细信息 |
|---|
该枚举列出的值说明了现任回调或懒约束回调是针对哪种类型的解决方案调用的。
NodeSolution积分解法是作为搜索树中一个节点的 LP 伸缩解法找到的。HeuristicSolution积分解法由 CPLEX 内部启发式找到。UserSolution积分解法是由用户的启发式回调函数找到的。 该值只在现任回调中返回,不在懒惰约束回调中返回。MIPStartSolution在 MIP 开始处理过程中找到积分解。 请注意,在这种情况下调用的回调不能使用完整的 API。 例如,不能在节点上设置/获取用户数据,也不能做其他任何需要搜索树节点上下文的操作。| 字段 |
|---|
NodeSolution = CPX_CALLBACK_MIP_INCUMBENT_NODESOLN | |
HeuristicSolution = CPX_CALLBACK_MIP_INCUMBENT_HEURSOLN | |
UserSolution = CPX_CALLBACK_MIP_INCUMBENT_USERSOLN | |
MIPStartSolution = CPX_CALLBACK_MIP_INCUMBENT_MIPSTART |