跳至主内容
框架 无框架

类IloCplex::MIPInfoCallbackI

定义文件: ilcplex/ilocplexi.h
IloCplex::MIPInfoCallbackI的映射IloCplex::MIPInfoCallbackIIloCplex::DisjunctiveCutInfoCallbackIIloCplex::FlowMIRCutInfoCallbackIIloCplex::FractionalCutInfoCallbackIIloCplex::MIPCallbackIIloCplex::ProbingInfoCallbackIIloCplex::MIPInfoCallbackIIloCplex::OptimizationCallbackIIloCplex::CallbackI

类 "IloCplex::MIPInfoCallbackI的实例代表应用程序中用户编写的回调,该应用程序使用 "IloCplex的实例求解混合整数程序(MIP)。 IloCplex在分支-切割搜索过程中定期调用用户编写的回调。

用户编写的该类回调与 MIP 动态搜索兼容。

该类提供了从用户编写的回调中访问现存解决方案及其目标值的方法。 它还提供了访问优先级顺序和进度信息(如已解决的节点数)的方法。

该类的方法受保护,用于派生一个用户编写的回调类,并在该类中实现 "main方法。

如果在用户编写的回调中试图访问本类实例不可用的信息,则会引发异常。 例如,如果没有在职者,查询在职者的方法就会出现异常。

该类还为这些回调类提供了通用应用程序编程接口(API):

另请参阅:

方法概要
public IloNumgetBestObjValue() const
public IloNumgetCutoff() const
public IloCplex::BranchDirectiongetDirection(const IloIntVar var) const
public IloCplex::BranchDirectiongetDirection(const IloNumVar var) const
public IloNumgetIncumbentObjValue() const
public IloNumgetIncumbentSlack(const IloRange rng) const
public voidgetIncumbentSlacks(IloNumArray vals, const IloRangeArray cons) const
public IloNumgetIncumbentValue(const IloExprArg expr) const
public IloNumgetIncumbentValue(const IloIntVar var) const
public IloNumgetIncumbentValue(const IloNumVar var) const
public voidgetIncumbentValues(IloNumArray val, const IloIntVarArray vars) const
public voidgetIncumbentValues(IloNumArray val, const IloNumVarArray vars) const
public IloNumgetMIPRelativeGap() const
public IloIntgetMyThreadNum() const
public IloIntgetNcuts(IloCplex::CutType which) const
public IloIntgetNiterations() const
public IloInt64getNiterations64() const
public IloIntgetNnodes() const
public IloInt64getNnodes64() const
public IloIntgetNremainingNodes() const
public IloInt64getNremainingNodes64() const
public IloNumgetPriority(const IloIntVar sos) const
public IloNumgetPriority(const IloNumVar sos) const
public IloNumgetQuality(IloCplex::Quality q) const
protected Callback::TypegetType() const
public IloBoolhasIncumbent() const
protected MIPInfoCallbackI(IloEnv env)
从 "OptimizationCallbackI继承的方法
getModel, getNcols, getNQCs, getNrows
从 "CallbackI继承的方法
abort, duplicateCallback, getCplexTime, getDetTime, getEndDetTime, getEndTime, getEnv, getStartDetTime, getStartTime, getType, main
方法详细信息

MIPInfoCallbackI

protectedMIPInfoCallbackI(IloEnv env)

该构造函数创建了一个回调函数,供使用 "IloCplex实例求解混合整数程序(MIP)的应用程序使用。


getBestObjValue

publicIloNum getBestObjValue() const

这种方法可以获取分支切割树中所有剩余开放节点的当前已知最佳边界。

将为最小化问题将其计算为所有剩余未探索节点的最小目标函数值。 类似地,将为最大化问题将其计算为所有剩余未探索节点的最大目标函数值。

对于常规的 MIP 优化,该值也是 MIP 问题最优解值的已知最佳约束。 事实上,当一个问题已经得到最优解时,这个值就会与最优解值相匹配。

不过,对于 "populate方法,如果 CPLEX 已将模型求解至最优,但仍在继续搜索其他解,则该值也可能超过最优解值。


getCutoff

公共IloNum getCutoff() 常量
返回当前的截止值。

IloCplex实例使用截止值(搜索树中某节点处子问题的目标函数值)来决定何时从搜索树中剪切节点(即何时剪切该节点并丢弃其后的节点)。 每当发现新的在职者时,就会更新截止值。


getDirection

publicIloCplex::BranchDirection getDirection(constIloIntVar var) const

该方法返回之前用 "IloCplex::setDirection或 "IloCplex::setDirections方法分配给变量 "var的分支方向。 如果没有指定方向,将返回 "IloCplex::BranchGlobal


getDirection

publicIloCplex::BranchDirection getDirection(constIloNumVar var) const

该方法返回之前用 "IloCplex::setDirection或 "IloCplex::setDirections方法分配给变量 "var的分支方向。 如果没有指定方向,将返回 "IloCplex::BranchGlobal


getIncumbentObjValue

公共IloNum getIncumbentObjValue() 常量

返回在求解 MIP 时,"IloCplex实例调用回调时,现存解决方案(即迄今为止找到的最佳整数解决方案)的目标函数值。 如果没有现任者,该方法会返回一个非常大的正数(最小化)或一个非常小的负数(最大化)。


getIncumbentSlack

publicIloNum getIncumbentSlack(constIloRange rng) const

此方法返回任职者在 "rng指定范围内的松弛值。 如果没有现任者,该方法将抛出异常。


getIncumbentSlacks

public voidgetIncumbentSlacks(IloNumArray vals, constIloRangeArray cons) const

该方法将范围数组 "cons中每个范围的松弛值放入现任者的数组 "vals的相应元素中。 CPLEX 调整数组 "vals的大小,使其与数组 "cons的大小一致。 如果没有现任者,该方法将抛出异常。


getIncumbentValue

publicIloNum getIncumbentValue(constIloExprArg expr) const

This method returns the value of the expression expr in the incumbent solution at the time the invoking callback is called by an instance of IloCplex while solving a MIP. 如果没有现任者,该方法将抛出异常。


getIncumbentValue

publicIloNum getIncumbentValue(constIloIntVar var) const

在求解 MIP 时,当 "IloCplex实例调用回调时,返回 "var在现存解中的解值。 如果没有现任者,该方法将抛出异常。


getIncumbentValue

publicIloNum getIncumbentValue(constIloNumVar var) const

在求解 MIP 时,当 "IloCplex实例调用回调时,返回 "var在现存解中的解值。 如果没有现任者,该方法将抛出异常。


getIncumbentValues

public voidgetIncumbentValues(IloNumArray val, constIloIntVarArray vars) const

返回数组 "vars中每个变量相对于现有解决方案的值,并将这些值放入相应的数组 "vals中。 如果没有现任者,该方法将抛出异常。


getIncumbentValues

public voidgetIncumbentValues(IloNumArray val, constIloNumVarArray vars) const

返回数组 "vars中每个变量相对于现有解决方案的值,并将这些值放入相应的数组 "vals中。 如果没有现任者,该方法将抛出异常。


getMIPRelativeGap

publicIloNum getMIPRelativeGap() const

该方法可访问当前的相对目标差距。

对于最小化问题,该值的计算公式为

 (bestinteger - bestobjective) /1e-10+ |bestinteger|)
 

where bestinteger is the value returned by IloCplex::MIPInfoCallbackI::getIncumbentValue and bestobjective is the value returned by IloCplex::MIPInfoCallbackI::getBestObjValue. 对于最大化问题,计算值的方法是

 (bestobjective - bestinteger) /1e-10+ |bestinteger|) 
 

getMyThreadNum

publicIloInt getMyThreadNum() const

返回当前执行的并行线程的标识符。 这个数字介于 0(零)和方法 "getUserThreads()-1返回的值之间。

此方法仅为"IloCplex::MIPCallbackI类及其子类返回非零值。 换句话说,该方法仅对查询、诊断和控制回调有效。 它对信息回调无效


getNcuts

publicIloInt getNcuts(IloCplex::CutType which) const

返回 CPLEX 在当前优化过程中添加到模型中的 "which类型切分的总数。


getNiterations

publicIloInt getNiterations() const

返回当前优化过程中为解决节点松弛而执行的迭代总数。


getNiterations64

publicIloInt64 getNiterations64() const

返回当前优化过程中为解决节点松弛而执行的迭代总数。


getNnodes

publicIloInt getNnodes() const

返回当前优化中已处理的节点数。


getNnodes64

publicIloInt64 getNnodes64() const

返回当前优化中已处理的节点数。


getNremainingNodes

publicIloInt getNremainingNodes() const

返回当前优化中剩余的节点数。


getNremainingNodes64

publicIloInt64 getNremainingNodes64() const

返回当前优化中剩余的节点数。


getPriority

publicIloNum getPriority(constIloIntVar sos) const

返回变量 "var在当前优化中使用的分支优先级。


getPriority

publicIloNum getPriority(constIloNumVar sos) const

返回变量 "var在当前优化中使用的分支优先级。


getQuality

publicIloNum getQuality(IloCplex::Quality q) const

返回请求的 kappa 统计质量度量。 这种方法仅适用于卡帕统计的质量测量。 有关 kappa 统计的更多信息,请参阅《CPLEX 参数参考手册》中的参数 "MIPKappaStats


hasIncumbent

publicIloBool hasIncumbent() const

Returns IloTrue if an integer feasible solution has been found, or, equivalently, if an incumbent solution is available at the time the invoking callback is called by an instance of IloCplex while solving a MIP.


getType

protectedCallback::Type getType() const

此方法返回调用回调对象的回调类型。