跳至主内容
框架 无框架

类 Callback::Context

定义文件: ilcplex/ilocplexi.h
Callback::Context 的映射回调::上下文回调::上下文

该类的实例定义了可以调用 CPLEX 通用回调的上下文。

方法概要
public voidabort() const
public IloRangeaddUserCut(IloRange cut, IloCplex::CutManagement cutmanagement, IloBool local) const
public voidexitCutLoop() const
public IloNumgetCandidateObjective() const
public IloNumgetCandidatePoint(IloIntVar const & var) const
public IloNumgetCandidatePoint(IloNumVar const & var) const
public voidgetCandidatePoint(IloIntVarArray const & vars, IloNumArray & vals) const
public voidgetCandidatePoint(IloNumVarArray const & vars, IloNumArray & vals) const
public IloNumgetCandidateValue(IloExprArg const & expr) const
public IloNumgetDoubleInfo(Info::Infos what) const
public IloEnvgetEnv() const
public IloNumgetGlobalLB(IloIntVar const & var) const
public IloNumgetGlobalLB(IloNumVar const & var) const
public voidgetGlobalLB(IloIntVarArray const & vars, IloNumArray & vals) const
public voidgetGlobalLB(IloNumVarArray const & vars, IloNumArray & vals) const
public IloNumgetGlobalUB(IloIntVar const & var) const
public IloNumgetGlobalUB(IloNumVar const & var) const
public voidgetGlobalUB(IloIntVarArray const & vars, IloNumArray & vals) const
public voidgetGlobalUB(IloNumVarArray const & vars, IloNumArray & vals) const
public CPXLONGgetId() const
public IloNumgetIncumbent(IloIntVar const & var) const
public IloNumgetIncumbent(IloNumVar const & var) const
public voidgetIncumbent(IloIntVarArray const & vars, IloNumArray & vals) const
public voidgetIncumbent(IloNumVarArray const & vars, IloNumArray & vals) const
public IloNumgetIncumbentObjective() const
public IloNumgetIncumbentValue(IloExprArg const & expr) const
public CPXINTgetIntInfo(Info::Infos what) const
public IloNumgetLocalLB(IloIntVar const & var) const
public IloNumgetLocalLB(IloNumVar const & var) const
public voidgetLocalLB(IloIntVarArray const & vars, IloNumArray & vals) const
public voidgetLocalLB(IloNumVarArray const & vars, IloNumArray & vals) const
public IloNumgetLocalUB(IloIntVar const & var) const
public IloNumgetLocalUB(IloNumVar const & var) const
public voidgetLocalUB(IloIntVarArray const & vars, IloNumArray & vals) const
public voidgetLocalUB(IloNumVarArray const & vars, IloNumArray & vals) const
public CPXLONGgetLongInfo(Info::Infos what) const
public IloNumgetRelaxationObjective() const
public IloNumgetRelaxationPoint(IloIntVar const & var) const
public IloNumgetRelaxationPoint(IloNumVar const & var) const
public voidgetRelaxationPoint(IloIntVarArray const & vars, IloNumArray & vals) const
public voidgetRelaxationPoint(IloNumVarArray const & vars, IloNumArray & vals) const
public IloCplex::CplexStatusgetRelaxationStatus(CPXLONG flags) const
public IloNumgetRelaxationValue(IloExprArg const & expr) const
public IloBoolinBranching() const
public IloBoolinCandidate() const
public IloBoolinGlobalProgress() const
public IloBoolinLocalProgress() const
public IloBoolinRelaxation() const
public IloBoolinThreadDown() const
public IloBoolinThreadUp() const
public IloBoolisCandidatePoint() const
public IloBoolisCandidateRay() const
public CPXLONGmakeBranch(IloRangeArray const & constraints, IloNum estimate) const
public CPXLONGmakeBranch(IloIntVar const & branchVar, IloNum bound, IloCplex::BranchDirection dir, IloNum estimate) const
public CPXLONGmakeBranch(IloNumVar const & branchVar, IloNum bound, IloCplex::BranchDirection dir, IloNum estimate) const
public CPXLONGmakeBranch(IloIntVarArray const & vars, IloNumArray const & bounds, IloCplex::BranchDirectionArray const & dirs, IloNum estimate) const
public CPXLONGmakeBranch(IloNumVarArray const & vars, IloNumArray const & bounds, IloCplex::BranchDirectionArray const & dirs, IloNum estimate) const
public CPXLONGmakeBranch(IloIntVarArray const & vars, IloNumArray const & bounds, IloCplex::BranchDirectionArray const & dirs, IloRangeArray const & constraints, IloNum estimate) const
public CPXLONGmakeBranch(IloNumVarArray const & vars, IloNumArray const & bounds, IloCplex::BranchDirectionArray const & dirs, IloRangeArray const & constraints, IloNum estimate) const
public voidpostHeuristicSolution(IloIntVarArray const & vars, IloNumArray const & vals, double obj, SolutionStrategy::Types strat) const
public voidpostHeuristicSolution(IloNumVarArray const & vars, IloNumArray const & vals, double obj, SolutionStrategy::Types strat) const
public voidpruneCurrentNode() const
public IloRangerejectCandidate(IloRange violated=0) const
public voidrejectCandidate(IloRangeArray const & violated) const
public IloRangerejectCandidateLocal(IloRange violated) const
public voidrejectCandidateLocal(IloRangeArray const & violated) const
内部结构
Context::Id
Context::Info
Context::SolutionStrategy
方法详细信息

abort

public voidabort() const

这种方法会停止优化。 调用此方法可指示 CPLEX 在回调返回后尽快停止优化。


addUserCut

publicIloRange addUserCut(IloRange cut,IloCplex::CutManagement cutmanagement,IloBool local) const

此方法可添加用户定义的剪切。 该方法会创建传给它的所有 "IloRange实例的深度副本,因此在该方法返回后,你可以在范围上调用 "end方法。

CPLEX 应如何管理剪切。

参数:

剪切
剪切添加。
切割管理
来自 "IloCplex::CutManagement的值,用于指定 CPLEX 应如何管理剪切。
本地
布尔值,指定此剪切是局部有效还是全局有效。

返回:

总是返回 "cut

exitCutLoop

public voidexitCutLoop() const

此方法要求 CPLEX 在当前节点停止切割平面分离。

.

该方法只能在上下文 "IloCplex::Callback::Context::Id::Relaxation中调用;在其他上下文中调用时会出现异常。


getCandidateObjective

公共IloNum getCandidateObjective() 常量

这种方法可以获取当前候选方案的目标。 该方法只能在上下文 "IloCplex::Callback::Context::Id::Candidate中调用;在其他上下文中调用时会出现异常。

返回:

当前候选方案的目标值。

getCandidatePoint

publicIloNum getCandidatePoint(IloIntVarconst &var) const

该方法是 "IloCplex::Callback::getCandidatePoint(IloIntVarArray const&, IloNumArray &)方法的方便封装。 (详见该方法的文档) 此方法可获取单个变量的候选解值。

参数:

变异
要查询值的变量。

返回:

当前候选方案中 "var的值。

getCandidatePoint

publicIloNum getCandidatePoint(IloNumVarconst &var) const

该方法是 "IloCplex::Callback::getCandidatePoint(IloNumVarArray const&, IloNumArray & />方法的方便封装。 (详见该方法的文档) 此方法可获取单个变量的候选解值。

参数:

变异
要查询值的变量。

返回:

当前候选方案中 "var的值。

getCandidatePoint

public voidgetCandidatePoint(IloIntVarArrayconst &vars,IloNumArray&vals) const

该方法可获取候选解决方案。 它检索当前候选信息中 "vars[start], ... ., 'vars[start+length-1]的值,并返回它们。 该方法只能在上下文 "IloCplex::Callback::Context::Id::Candidate中调用,且 "IloCplex::Callback::Context:isCandidatePoint()必须返回 true。

参数:

变量
要查询值的变量。
瓶盖
vars"中变量值的存储位置。

返回:

成功返回后,"vals中的第 i 个值将指定 "vars中第 i 个变量的值。 请注意,该方法会适当调整 "vals的大小。

getCandidatePoint

public voidgetCandidatePoint(IloNumVarArrayconst &vars,IloNumArray&vals) const

该方法可访问候选解决方案。 它检索当前候选信息中 "vars[start], ... ., 'vars[start+length-1]的值,并返回它们。 该方法只能在上下文 "IloCplex::Callback::Context::Id::Candidate中调用,且 "IloCplex::Callback::Context::isCandidatePoint()必须返回 true。

参数:

变量
要查询值的变量。
瓶盖
vars"中变量值的存储位置。

返回:

成功返回后,"vals中的第 i 个值将指定 "vars中第 i 个变量的值。 请注意,该方法会适当调整 "vals的大小。

getCandidateValue

publicIloNum getCandidateValue(IloExprArg const &expr) const

该方法会根据当前候选方案对 "expr进行评估。 该方法只能在上下文 "IloCplex::Callback::Context::Id::Candidate和 "IloCplex::Callback::Context::isCandidatePoint()返回 true 的情况下调用。

参数:

expr
要评估的表达式。

返回:

expr相对于当前候选方案的值。

getDoubleInfo

publicIloNum getDoubleInfo(Info::Infos what) const

该方法可访问双精度有值信息。 有关可查询信息的详细信息,请参阅 "Info结构的文档。

参数:

什么
要查询的信息。

返回:

所需的信息。

getEnv

publicIloEnv getEnv() const

该方法访问 "IloEnv的实例,该实例在回调时有效。 使用此方法返回的环境对象(而不是 "IloEnv的全局实例)来执行应用程序在回调中的所有操作。


getGlobalLB

publicIloNum getGlobalLB(IloIntVarconst &var) const

该方法是 "IloCplex::Callback::Context::getGlobalLB(IloIntVarArray const&, IloIntArray &)方法的方便封装。 (详见该方法的文档) 此方法可获取单个变量的全局下限。

参数:

变异
查询本地绑定的变量。

返回:

var 的本地边界 .

getGlobalLB

publicIloNum getGlobalLB(IloNumVarconst &var) const

该方法是 "IloCplex::Callback::Context::getGlobalLB(IloNumVarArray const&, IloNumArray &)方法的方便封装。 (详见该方法的文档) 此方法可获取单个变量的全局下限。

参数:

变异
查询本地绑定的变量。

返回:

var 的本地边界 .

getGlobalLB

public voidgetGlobalLB(IloIntVarArrayconst &vars,IloNumArray&vals) const

该方法可访问变量的全局下限。 这种方法可以查询已知的最有效的全局界限。

此方法不能从上下文 "IloCplex::Callback::Context::Id::ThreadUp或 "IloCplex::Callback::Context::Id::ThreadDown中调用。

参数:

变量
需要查询下限的变量。
瓶盖
在哪里存储 "vars中变量的本地边界。

返回:

成功返回后,"vals中的第 i 个值将指定 "vars中第 i 个变量的全局边界。 请注意,该方法会适当调整 "vals的大小。

getGlobalLB

public voidgetGlobalLB(IloNumVarArrayconst &vars,IloNumArray&vals) const

该方法可访问变量的全局下限。 这种方法可以查询已知的最有效的全局界限。

此方法不能从上下文 "IloCplex::Callback::Context::Id::ThreadUp或 "IloCplex::Callback::Context::Id::ThreadDown中调用。

参数:

变量
需要查询下限的变量。
瓶盖
在哪里存储 "vars中变量的本地边界。

返回:

成功返回后,"vals中的第 i 个值将指定 "vars中第 i 个变量的全局边界。 请注意,该方法会适当调整 "vals的大小。

getGlobalUB

publicIloNum getGlobalUB(IloIntVarconst &var) const

该方法是 "IloCplex::Callback::Context::getGlobalUB(IloIntVarArray const&, IloNumArray &)方法的方便封装。 (详见该方法的文档) 此方法可获取单个变量的全局上限。

参数:

变异
查询本地绑定的变量。

返回:

var 的本地边界 .

getGlobalUB

publicIloNum getGlobalUB(IloNumVarconst &var) const

该方法是 "IloCplex::Callback::Context::getGlobalUB(IloNumVarArray const&, IloNumArray &)' />方法的方便封装。 (详见该方法的文档) 此方法可获取单个变量的全局上限。

参数:

变异
查询本地绑定的变量。

返回:

var 的本地边界 .

getGlobalUB

public voidgetGlobalUB(IloIntVarArrayconst &vars,IloNumArray&vals) const

该方法可访问变量的全局上限。 这种方法可以查询到已知的最佳全局有效边界。

此方法不能从上下文 "IloCplex::Callback::Context::Id::ThreadUp或 "IloCplex::Callback::Context::Id::ThreadDown中调用。

参数:

变量
需要查询上限的变量。
瓶盖
在哪里存储 "vars中变量的本地边界。

返回:

成功返回后,"vals中的第 i 个值将指定 "vars中第 i 个变量的全局边界。 请注意,该方法会适当调整 "vals的大小。

getGlobalUB

public voidgetGlobalUB(IloNumVarArrayconst &vars,IloNumArray&vals) const

该方法可访问变量的全局上限。 这种方法可以查询到已知的最佳全局有效边界。

此方法不能从上下文 "IloCplex::Callback::Context::Id::ThreadUp或 "IloCplex::Callback::Context::Id::ThreadDown中调用。

参数:

变量
需要查询上限的变量。
瓶盖
在哪里存储 "vars中变量的本地边界。

返回:

成功返回后,"vals中的第 i 个值将指定 "vars中第 i 个变量的全局边界。 请注意,该方法会适当调整 "vals的大小。

getId

公共 CPXLONGgetId() 常量

该方法可访问调用相应回调的上下文。

返回:

来自 "IloCplex::Callback::Context::Id的值,用于指定调用该实例的上下文。

getIncumbent

publicIloNum getIncumbent(IloIntVarconst &var) const

该方法是 "IloCplex::Callback::getIncumbent(IloIntVarArray const&, IloNumArray &)方法的方便封装。 (详见该方法的文档) 此方法可获取单个变量的现存解值。

参数:

变异
要查询值的变量。

返回:

现有解决方案中 "var的值。

getIncumbent

publicIloNum getIncumbent(IloNumVarconst &var) const

该方法是 "IloCplex::Callback::getIncumbent(IloNumVarArray const&, IloNumArray &)方法的方便封装。 (详见该方法的文档) 此方法可获取单个变量的现存解值。

参数:

变异
要查询值的变量。

返回:

现有解决方案中 "var的值。

getIncumbent

public voidgetIncumbent(IloIntVarArrayconst &vars,IloNumArray&vals) const

该方法可访问当前的现有解决方案。 It retrieves the values for vars[start], . . . , vars[start+length-1] in the current incumbent solution and returns them. 如果没有现任解决方案,该方法会引发异常。 Use the method IloCplex::Callback::getIntInfo with the value Info::Feasible to check whether an incumbent is available.

参数:

变量
要查询现任值的变量。
瓶盖
vars"中变量值的存储位置。

返回:

成功返回后,"vals中的第 i 个值将指定 "vars中第 i 个变量的值。 请注意,该方法会适当调整 "vals的大小。

getIncumbent

public voidgetIncumbent(IloNumVarArrayconst &vars,IloNumArray&vals) const

该方法可访问当前的现有解决方案。 It retrieves the values for vars[start], . . . , vars[start+length-1] in the current incumbent solution and returns them. 如果没有现任解决方案,该方法会引发异常。 Use the method IloCplex::Callback::getIntInfo with the value Info::Feasible to check whether an incumbent is available.

参数:

变量
要查询现任值的变量。
瓶盖
vars"中变量值的存储位置。

返回:

成功返回后,"vals中的第 i 个值将指定 "vars中第 i 个变量的值。 请注意,该方法会适当调整 "vals的大小。

getIncumbentObjective

公共IloNum getIncumbentObjective() 常量

这种方法可以获取当前任职者的目标值。

返回:

当前任职者的目标;如果当前没有任职者,返回值可以是无限的(用1e75 表示)。

getIncumbentValue

publicIloNum getIncumbentValue(IloExprArg const &expr) const

该方法将 "expr与当前的现有解决方案进行比较。

参数:

expr
要评估的表达式。

返回:

expr相对于现有解决方案的值。

getIntInfo

public CPXINTgetIntInfo(Info::Infos what) const

该方法可访问 32 位有符号整数值信息。 有关可查询信息的详细信息,请参阅 "Info结构的文档。

参数:

什么
要查询的信息。

返回:

所需的信息。

getLocalLB

publicIloNum getLocalLB(IloIntVarconst &var) const

该方法是 "IloCplex::Callback::Context::getLocalLB(IloIntVarArray const&, IloIntArray &)方法的方便封装。 (详见该方法的文档) 此方法可获取单个变量的局部下界。

参数:

变异
查询本地绑定的变量。

返回:

var 的本地边界 .

getLocalLB

publicIloNum getLocalLB(IloNumVarconst &var) const

该方法是 "IloCplex::Callback::Context::getLocalLB(IloNumVarArray const&, IloNumArray &)方法的方便封装。 (详见该方法的文档) 此方法可获取单个变量的局部下界。

参数:

变异
查询本地绑定的变量。

返回:

var 的本地边界 .

getLocalLB

public voidgetLocalLB(IloIntVarArrayconst &vars,IloNumArray&vals) const

该方法可访问变量的本地下限。 此方法可查询当前松弛计算时的局部边界。 由于预分解、分支和其他活动,这些界限可能比全局界限更严格。

该方法只能在上下文 "IloCplex::Callback::Context::Id::Relaxation中调用;在其他上下文中调用时会出现异常。

参数:

变量
需要查询下限的变量。
瓶盖
在哪里存储 "vars中变量的本地边界。

返回:

成功返回后,"vals中的第 i 个值将指定 "vars中第 i 个变量的本地边界。 请注意,该方法会适当调整 "vals的大小。

getLocalLB

public voidgetLocalLB(IloNumVarArrayconst &vars,IloNumArray&vals) const

该方法可访问变量的本地下限。 此方法可查询当前松弛计算时的局部边界。 由于预分解、分支和其他活动,这些界限可能比全局界限更严格。

该方法只能在上下文 "IloCplex::Callback::Context::Id::Relaxation中调用;在其他上下文中调用时会出现异常。

参数:

变量
需要查询下限的变量。
瓶盖
在哪里存储 "vars中变量的本地边界。

返回:

成功返回后,"vals中的第 i 个值将指定 "vars中第 i 个变量的本地边界。 请注意,该方法会适当调整 "vals的大小。

getLocalUB

publicIloNum getLocalUB(IloIntVarconst &var) const

该方法是 "IloCplex::Callback::Context::getLocalUB(IloIntVarArray const&, IloNumArray &)方法的方便封装。 (详见该方法的文档) 此方法可获取单个变量的局部上界。

参数:

变异
查询本地绑定的变量。

返回:

var 的本地边界 .

getLocalUB

publicIloNum getLocalUB(IloNumVarconst &var) const

该方法是 "IloCplex::Callback::Context::getLocalUB(IloNumVarArray const&, IloNumArray &)' />方法的方便封装。 (详见该方法的文档) 此方法可获取单个变量的局部上界。

参数:

变异
查询本地绑定的变量。

返回:

var 的本地边界 .

getLocalUB

public voidgetLocalUB(IloIntVarArrayconst &vars,IloNumArray&vals) const

该方法可访问变量的本地上限。 此方法可查询当前松弛计算时的局部边界。 由于预分解、分支和其他活动,这些界限可能比全局界限更严格。

该方法只能在上下文 "IloCplex::Callback::Context::Id::Relaxation中调用;在其他上下文中调用时会出现异常。

参数:

变量
需要查询上限的变量。
瓶盖
在哪里存储 "vars中变量的本地边界。

返回:

成功返回后,"vals中的第 i 个值将指定 "vars中第 i 个变量的本地边界。 请注意,该方法会适当调整 "vals的大小。

getLocalUB

public voidgetLocalUB(IloNumVarArrayconst &vars,IloNumArray&vals) const

该方法可访问变量的本地上限。 此方法可查询当前松弛计算时的局部边界。 由于预分解、分支和其他活动,这些界限可能比全局界限更严格。

该方法只能在上下文 "IloCplex::Callback::Context::Id::Relaxation中调用;在其他上下文中调用时会出现异常。

参数:

变量
需要查询上限的变量。
瓶盖
在哪里存储 "vars中变量的本地边界。

返回:

成功返回后,"vals中的第 i 个值将指定 "vars中第 i 个变量的本地边界。 请注意,该方法会适当调整 "vals的大小。

getLongInfo

public CPXLONGgetLongInfo(Info::Infos what) const

该方法可访问 64 位有符号整数值信息。 有关可查询信息的详细信息,请参阅 "Info结构的文档。

参数:

什么
要查询的信息。

返回:

所需的信息。

getRelaxationObjective

公共IloNum getRelaxationObjective() 常量

该方法可以访问当前松弛的目标。

该方法只能在 "IloCplex::Callback::Context::Id::Relaxation或 "IloCplex::Callback::Context::Id::Branching上下文中调用;在其他上下文中调用时会出现异常。

返回:

当前放松的目标值。

getRelaxationPoint

publicIloNum getRelaxationPoint(IloIntVarconst &var) const

该方法是 "IloCplex::Callback::getRelaxationPoint(IloIntVarArray const&, IloNumArray &)方法的方便封装。 (详见该方法的文档) 此方法可获取单一变量的松弛解值。

参数:

变异
要查询值的变量。

返回:

当前松弛方案中 "var的值。

getRelaxationPoint

publicIloNum getRelaxationPoint(IloNumVarconst &var) const

该方法是 "IloCplex::Callback::getRelaxationPoint(IloNumVarArray const&, IloNumArray &)方法的方便封装。 (详见该方法的文档) 此方法可获取单一变量的松弛解值。

参数:

变异
要查询值的变量。

返回:

当前松弛方案中 "var的值。

getRelaxationPoint

public voidgetRelaxationPoint(IloIntVarArrayconst &vars,IloNumArray&vals) const

该方法可访问当前松弛。 It retrieves the values for vars[start], . . . , vars[start+length-1] in the current relaxation and returns them. 该方法只能在 "IloCplex::Callback::Context::Id::Relaxation或 "IloCplex::Callback::Context::Id::Branching上下文中调用;在其他上下文中调用时会出现异常。

参数:

变量
要查询松弛值的变量。
瓶盖
vars"中变量值的存储位置。

返回:

成功返回后,"vals中的第 i 个值将指定 "vars中第 i 个变量的值。 请注意,该方法会适当调整 "vals的大小。

getRelaxationPoint

public voidgetRelaxationPoint(IloNumVarArrayconst &vars,IloNumArray&vals) const

该方法可访问当前松弛。 It retrieves the values for vars[start], . . . , vars[start+length-1] in the current relaxation and returns them. 该方法只能在 "IloCplex::Callback::Context::Id::Relaxation或 "IloCplex::Callback::Context::Id::Branching上下文中调用;在其他上下文中调用时会出现异常。

参数:

变量
要查询松弛值的变量。
瓶盖
vars"中变量值的存储位置。

返回:

成功返回后,"vals中的第 i 个值将指定 "vars中第 i 个变量的值。 请注意,该方法会适当调整 "vals的大小。

getRelaxationStatus

publicIloCplex::CplexStatus getRelaxationStatus(CPXLONGflags) const

该方法可访问当前连续解的解状态。 更多详情,请参阅可调用库参考手册中有关 "CPXXcallbackgetrelaxationstatus的文档。

该方法只能在 "IloCplex::Callback::Context::Id::Relaxation或 "IloCplex::Callback::Context::Id::Branching上下文中调用;在其他上下文中调用时会出现异常。

CPXXcallbackgetrelaxationstatus,以获取可在此处传递的值。

参数:

flags
有关可在此处传递的值,请参阅 "CPXXcallbackgetrelaxationstatus的文档。

返回:

当前连续松弛的解决状态。

getRelaxationValue

publicIloNum getRelaxationValue(IloExprArg const &expr) const

该方法对 "expr进行与当前松弛相关的评估。 该方法只能在 "IloCplex::Callback::Context::Id::Relaxation或 "IloCplex::Callback::Context::Id::Branching上下文中调用。

参数:

expr
要评估的表达式。

返回:

expr相对于当前松弛的值。

inBranching

publicIloBool inBranching() const

该方法测试回调是否在上下文 "IloCplex::Callback::Context::Id::Branching中被调用。

它是 "getId() == IloCplex::Callback::Context::Id::Branching的快捷方式

返回:

如果回调是在 "IloCplex::Callback::Context::Id::Branching上下文中调用的,则为 "true,否则为 "false

inCandidate

publicIloBool inCandidate() const

该方法测试回调是否在上下文 "IloCplex::Callback::Context::Id::Candidate中被调用。

它是 "getId() == IloCplex::Callback::Context::Id::Candidate的快捷方式

返回:

如果回调是在 "IloCplex::Callback::Context::Id::Candidate上下文中调用的,则为 "true,否则为 "false

inGlobalProgress

publicIloBool inGlobalProgress() const

该方法测试回调是否在上下文 "IloCplex::Callback::Context::Id::GlobalProgress中被调用。

它是 "getId() == IloCplex::Callback::Context::Id::GlobalProgress的快捷方式

返回:

如果回调是在 "IloCplex::Callback::Context::Id::GlobalProgress上下文中调用的,则为 "true,否则为 "false

inLocalProgress

publicIloBool inLocalProgress() const

该方法测试回调是否在上下文 "IloCplex::Callback::Context::Id::LocalProgres中被调用。

它是 "getId() == IloCplex::Callback::Context::Id::LocalProgress的快捷方式

返回:

如果回调是在 "IloCplex::Callback::Context::Id::LocalProgress上下文中调用的,则为 "true,否则为 "false

inRelaxation

publicIloBool inRelaxation() const

该方法测试回调是否在上下文 "IloCplex::Callback::Context::Id::Relaxation中被调用。

它是 "getId() == IloCplex::Callback::Context::Id::Relaxation的快捷方式

返回:

如果回调是在 "IloCplex::Callback::Context::Id::Relaxation上下文中调用的,则为 "true,否则为 "false

inThreadDown

publicIloBool inThreadDown() const

该方法测试回调是否在上下文 "IloCplex::Callback::Context::Id::ThreadDown中被调用。

它是 "getId() == IloCplex::Callback::Context::Id::ThreadDown的快捷方式

返回:

如果回调是在 "IloCplex::Callback::Context::Id::ThreadDown上下文中调用的,则为 "true,否则为 "false

inThreadUp

publicIloBool inThreadUp() const

该方法测试回调是否在上下文 "IloCplex::Callback::Context::Id::ThreadUp中被调用。

它是 "getId() == IloCplex::Callback::Context::Id::ThreadUp的快捷方式

返回:

如果回调是在 "IloCplex::Callback::Context::Id::ThreadUp上下文中调用的,则为 "true,否则为 "false

isCandidatePoint

公共IloBool isCandidatePoint() 常量

该方法测试回调是否在上下文 "IloCplex::Callback::Context::Id::Candidate中被调用,是否有候选可行点。

如果函数返回 true,则可以调用 "IloCplex::Callback::Context::getCandidatePoint()、"IloCplex::Callback::Context::getCandidateValue()和 "IloCplex::Callback::Context::getCandidateObjective()来查询潜在可行点。

返回:

如果在可行点上调用了回调,则为 true,否则为 false。

isCandidateRay

publicIloBool isCandidateRay() const

该方法测试是否在上下文 "IloCplex::Callback::Context::Id::Candidate中调用了未限定射线的回调。

如果函数返回 true,则可以调用 "IloCplex::Callback::Context::getCandidateRay()来查询无界射线。

返回:

如果回调调用的是无界射线,则为 true,否则为 false。

makeBranch

public CPXLONG '创建分行(IloRangeArrayconst & '约束, 'IloNum'估价) const

makeBranch(IloIntVarArray const &, IloNumArray const &, IloCplex::BranchDirectionArray const &, IloRangeArray const &, IloNum)的便利包装器。

该函数创建了一个仅由一组约束条件定义的分支。


makeBranch

public CPXLONGmakeBranch(IloIntVarconst &branchVar,IloNum bound,IloCplex::BranchDirection dir,IloNum estimate) const

makeBranch(IloIntVarArray const &, IloNumArray const &, IloCplex::BranchDirectionArray const &, IloRangeArray const &, IloNum)的便利包装器。

该函数创建的分支只针对一个变量。


makeBranch

public CPXLONGmakeBranch(IloNumVarconst &branchVar,IloNum bound,IloCplex::BranchDirection dir,IloNum estimate) const

makeBranch(IloNumVarArray const &, IloNumArray const &, IloCplex::BranchDirectionArray const &, IloRangeArray const &, IloNum)的便利包装器。

该函数创建的分支只针对一个变量。


makeBranch

public CPXLONGmakeBranch(IloIntVarArrayconst &vars,IloNumArrayconst &bounds,IloCplex::BranchDirectionArrayconst &dirs,IloNum estimate) const

makeBranch(IloIntVarArray const &, IloNumArray const &, IloCplex::BranchDirectionArray const &, IloRangeArray const &, IloNum)的便利包装器。

该函数创建了一个仅由绑定更改定义的分支。


makeBranch

public CPXLONGmakeBranch(IloNumVarArrayconst &vars,IloNumArrayconst &bounds,IloCplex::BranchDirectionArrayconst &dirs,IloNum estimate) const

makeBranch(IloNumVarArray const &, IloNumArray const &, IloCplex::BranchDirectionArray const &, IloRangeArray const &, IloNum)的便利包装器。

该函数创建了一个仅由绑定更改定义的分支。


makeBranch

public CPXLONGmakeBranch(IloIntVarArrayconst &vars,IloNumArrayconst &bounds,IloCplex::BranchDirectionArrayconst &dirs,IloRangeArrayconst &constraints,IloNum estimate) const

该方法会在当前节点创建一个自定义分支。

该方法创建参数指定的分支。 可以只对变量("constraints可以为空)或约束条件("vars、"bounds"、"dirs"可以为空)进行分支。

该方法只能在上下文 "IloCplex::Callback::Context::Id::Branching中调用;在其他上下文中调用时会出现异常。

一个节点上最多可以创建两个分支。

vars。该数组中的元素必须与 "vars"中的元素1-to-1-correspondence。 该数组中的元素必须与 "vars中的元素1-to-1-correspondence。 如果方向为 "IloCplex::BranchUp,则 "bounds中的相应元素指定 "vars中相应变量的下限,否则指定上限。 的新生儿。 通常合理的选择是当前节点放松的目标值。

参数:

变量
要分支的变量。
界线
vars中变量的分支边界。 该数组中的元素必须与 "vars中的元素1-to-1-correspondence。
目录
变量的分支方向。 该数组中的元素必须与 "vars中的元素1-to-1-correspondence。 如果方向为 "IloCplex::BranchUp,则 "bounds中的相应元素指定 "vars中相应变量的下限,否则指定上限。
约束
分支的限制条件。
估价
对新子目标值的估计。 通常合理的选择是当前节点放松的目标值。

返回:

新创建子代的唯一标识符。 这相当于 "IloCplex::Callback::Context::Info:NodeUID返回的值。

makeBranch

public CPXLONGmakeBranch(IloNumVarArrayconst &vars,IloNumArrayconst &bounds,IloCplex::BranchDirectionArrayconst &dirs,IloRangeArrayconst &constraints,IloNum estimate) const

该方法会在当前节点创建一个自定义分支。

该方法创建参数指定的分支。 可以只对变量("constraints可以为空)或约束条件("vars、"bounds"、"dirs"可以为空)进行分支。

该方法只能在上下文 "IloCplex::Callback::Context::Id::Branching中调用;在其他上下文中调用时会出现异常。

一个节点上最多可以创建两个分支。

vars。该数组中的元素必须与 "vars"中的元素1-to-1-correspondence。 该数组中的元素必须与 "vars中的元素1-to-1-correspondence。 如果方向为 "IloCplex::BranchUp,则 "bounds中的相应元素指定 "vars中相应变量的下限,否则指定上限。 的新生儿。 通常合理的选择是当前节点放松的目标值。

参数:

变量
要分支的变量。
界线
vars中变量的分支边界。 该数组中的元素必须与 "vars中的元素1-to-1-correspondence。
目录
变量的分支方向。 该数组中的元素必须与 "vars中的元素1-to-1-correspondence。 如果方向为 "IloCplex::BranchUp,则 "bounds中的相应元素指定 "vars中相应变量的下限,否则指定上限。
约束
分支的限制条件。
估价
对新子目标值的估计。 通常合理的选择是当前节点放松的目标值。

返回:

新创建子代的唯一标识符。 这相当于 "IloCplex::Callback::Context::Info:NodeUID返回的值。

postHeuristicSolution

public voidpostHeuristicSolution(IloIntVarArrayconst &vars,IloNumArrayconst &vals, doubleobj,SolutionStrategy::Types strat) const

该方法向 CPLEX 发布(启发式)解决方案。 具体来说,该方法会向 CPLEX 发送一个解向量。 矢量在内部排队。 在 CPLEX 调用启发式之前,CPLEX 会查看队列,并尝试从每个向量中创建一个可行的解决方案。 这项活动可以产生新的现有解决方案。

参数:

变量
构成要发布的解决方案的变量。
瓶盖
vars中变量的值 .
对象
(新方案的目标值(估计值)。
完成部分解答的策略。

postHeuristicSolution

public voidpostHeuristicSolution(IloNumVarArrayconst &vars,IloNumArrayconst &vals, doubleobj,SolutionStrategy::Types strat) const

该方法向 CPLEX 发布(启发式)解决方案。 具体来说,该方法会向 CPLEX 发送一个解向量。 矢量在内部排队。 在 CPLEX 调用启发式之前,CPLEX 会查看队列,并尝试从每个向量中创建一个可行的解决方案。 这项活动可以产生新的现有解决方案。

参数:

变量
构成要发布的解决方案的变量。
瓶盖
vars中变量的值 .
对象
(新方案的目标值(估计值)。
完成部分解答的策略。

pruneCurrentNode

public voidpruneCurrentNode() const

该方法会剪切当前搜索树节点。

调用回调的节点将被剪枝,不会再创建子节点。 随后对该节点 "makeBranch的调用将被忽略。

该方法只能在 "IloCplex::Callback::Context::Id::Relaxation或 "IloCplex::Callback::Context::Id::Branching上下文中调用;在其他上下文中调用时会出现异常。


rejectCandidate

public 'IloRange'拒绝候选人(IloRange'违反=0) const

这种方法会剔除当前的候选方案。 该方法是 "IloCplex::Callback::rejectCandidate(IloRangeArray)方法的方便封装。 (详见该方法的文档)

该方法会创建一个传给它的 "IloRange实例的深度副本,因此您可以在该方法返回后调用 "end方法。

可以是 "null

参数:

违反
一个约束条件,用于切断候选方案。 该参数可以是 "null

返回:

总是返回 "violated

rejectCandidate

public voidrejectCandidate(IloRangeArrayconst &violated) const

这种方法会剔除当前的候选方案。 该方法只能在上下文 "IloCplex::Callback::Context::Id::Candidate中调用;在其他上下文中调用时会出现异常。

函数会创建传给它的所有 "IloRange实例的深度副本,因此在函数返回后,可以在这些范围上调用方法 "end

候选解决方案。 该参数也可以是 "null。 如果不是 "null也不是空,那么 CPLEX 可能会使用这些约束条件来删除找到的其他候选解。 (但并不能保证一定会这样做) 这些约束基本上是懒惰约束。 该数组中的任何元素都不允许是空句柄(使用空数组可以无限制地拒绝)、

参数:

违反
一组可能为空的约束条件,用于切断候选方案。 该参数也可以是 "null。 如果不是 "null也不是空,那么 CPLEX 可能会使用这些约束条件来删除找到的其他候选解。 (但并不能保证一定会这样做) 这些约束基本上是懒惰约束。 该数组中的任何元素都不允许是空句柄(使用空数组可以无限制地拒绝)、

rejectCandidateLocal

publicIloRange rejectCandidateLocal(IloRange violated) const

这种方法会剔除当前的候选方案。 该方法是 "IloCplex::Callback::rejectCandidateLocal(IloRangeArray)方法的方便封装。 (详见该方法的文档)

该方法会创建一个传给它的 "IloRange实例的深度副本,因此您可以在该方法返回后调用 "end方法。

参数:

违反
一种约束条件,用于在局部截断候选解。

返回:

总是返回 "violated

rejectCandidateLocal

public voidrejectCandidateLocal(IloRangeArrayconst &violated) const

这种方法会剔除当前的候选方案。 该方法只能在上下文 "IloCplex::Callback::Context::Id::Candidate中调用,且只能在回调是针对一个整体节点(见 "CandidateSource)时调用;在其他上下文中调用时会出现异常。

函数会创建传给它的所有 "IloRange实例的深度副本,因此在函数返回后,可以在这些范围上调用方法 "end

传递的约束条件不要求全局有效。 CPLEX 只假定它们在调用回调的子树中有效。

参数 "violated是一组可能为空的约束条件,用于切断候选解。 该参数也可以是 "null。 如果不是 "null也不是空,那么 CPLEX 可能会使用这些约束条件来删除找到的其他候选解。 (但并不能保证一定会这样做) 这些约束基本上是懒惰约束。 该数组中的任何元素都不允许是空句柄(使用空数组可以无限制地拒绝)。 约束条件不要求全局有效。 CPLEX 只假定它们在调用回调的子树中有效。


内部结构细节

结构 Context::Id

定义文件: ilcplex/ilocplexi.h

该 "struct指定了可以调用 CPLEX 通用回调的位置。 这里定义的值指定 CPLEX 在哪些情况下可以调用回调。 它们有两种不同的使用方式:

有关各种上下文值的详细信息,请参阅可调用库(C API)参考手册。

关于 "ThreadDown上下文的重要说明:

将 "ThreadUp和 "ThreadDown看作是 "构造函数 "和 "析构函数":只有在对象完全构造完成且不允许抛出异常的情况下,才会调用析构函数。

属性摘要
static CPXLONG constBranching
static CPXLONG constCandidate
static CPXLONG constGlobalProgress
static CPXLONG constLocalProgress
static CPXLONG constRelaxation
static CPXLONG constThreadDown
static CPXLONG constThreadUp
属性详情

分支

静态 CPXLONG 恒定分支

请参阅可调用库(C API)参考手册中有关 "CPX_CALLBACKCONTEXT_BRANCHING的文档。


候选

静态 CPXLONG 常数Candidate

请参阅可调用库(C API)参考手册中有关 "CPX_CALLBACKCONTEXT_CANDIDATE的文档。


GlobalProgress

静态 CPXLONG 常量GlobalProgress

请参阅可调用库(C API)参考手册中有关 "CPX_CALLBACKCONTEXT_GLOBAL_PROGRESS的文档。


LocalProgress

静态 CPXLONG constLocalProgress

请参阅可调用库(C API)参考手册中有关 "CPX_CALLBACKCONTEXT_LOCAL_PROGRESS的文档。


宽松项

static CPXLONG constRelaxation

请参阅可调用库(C API)参考手册中有关 "CPX_CALLBACKCONTEXT_RELAXATION的文档。


ThreadDown

静态 CPXLONG constThreadDown

请参阅可调用库(C API)参考手册中有关 "CPX_CALLBACKCONTEXT_THREAD_DOWN的文档。


ThreadUp

静态 CPXLONG constThreadUp

请参阅可调用库(C API)参考手册中有关 "CPX_CALLBACKCONTEXT_THREAD_UP的文档。


结构 Context::Info

定义文件: ilcplex/ilocplexi.h

This struct provides an enum of identifiers for the kinds of information that you can retrieve from a generic callback by invoking one (or more) of the generic callback informational methods.

内部枚举
信息::信息
内部枚举详细信息

查点信息

定义文件: ilcplex/ilocplexi.h

enum用于确定应用程序可通过 "IloCple::Callback::getIntInfo(Info)、"IloCplex::Callback::getLongInfo(Info)或 "IloCplex::Callback::getDoubleInfo(Info)方法从通用回调中获取的信息类型。 有关这些值的更多详情,请参阅可调用库(C API)参考手册中的枚举 "CPXCALLBACKINFO文档。

字段

ThreadId = CPXCALLBACKINFO_THREADID
参见可调用库参考手册中的 "CPXCALLBACKINFO_THREADID
NodeCount = CPXCALLBACKINFO_NODECOUNT
参见可调用库参考手册中的 "CPXCALLBACKINFO_NODECOUNT
IterationCount = CPXCALLBACKINFO_ITCOUNT
参见可调用库参考手册中的 "CPXCALLBACKINFO_ITCOUNT
BestSolution = CPXCALLBACKINFO_BEST_SOL
参见可调用库参考手册中的 "CPXCALLBACKINFO_BEST_SOL
BestBound = CPXCALLBACKINFO_BEST_BND
参见可调用库参考手册中的 "CPXCALLBACKINFO_BEST_BND
Threads = CPXCALLBACKINFO_THREADS
参见可调用库参考手册中的 "CPXCALLBACKINFO_THREADS
Feasible = CPXCALLBACKINFO_FEASIBLE
参见可调用库参考手册中的 "CPXCALLBACKINFO_FEASIBLE
Time = CPXCALLBACKINFO_TIME
参见可调用库参考手册中的 "CPXCALLBACKINFO_TIME
DeterministicTime = CPXCALLBACKINFO_DETTIME
参见可调用库参考手册中的 "CPXCALLBACKINFO_DETTIME
NodeUID = CPXCALLBACKINFO_NODEUID
参见可调用库参考手册中的 "CPXCALLBACKINFO_NODEUID
NodeDepth = CPXCALLBACKINFO_NODEDEPTH
参见可调用库参考手册中的 "CPXCALLBACKINFO_NODEDEPTH
CandidateSource = CPXCALLBACKINFO_CANDIDATE_SOURCE
参见可调用库参考手册中的 "CPXCALLBACKINFO_CANDIDATE_SOURCE
Restarts = CPXCALLBACKINFO_RESTARTS AfterCutLoop = CPXCALLBACKINFO_AFTERCUTLOOP
参见可调用库参考手册中的 "CPXCALLBACKINFO_RESTARTS
NodesLeft = CPXCALLBACKINFO_NODESLEFT
参见可调用库参考手册中的 "CPXCALLBACKINFO_NODESLEFT

结构Context::SolutionStrategy

定义文件: ilcplex/ilocplexi.h

这个 "struct定义了一个 "enum,为各种完成策略提供标识符,这些标识符可以传递给方法 "IloCplex::Callback::Context::postHeuristicSolution

有关详细信息,请参阅 CPLEX 的可调用库(C API)参考手册中有关枚举 "CPXCALLBACKSOLUTIONSTRATEGY的文档。

内部枚举
SolutionStrategy::Types
内部枚举详细信息

枚举类型

定义文件: ilcplex/ilocplexi.h

enum"为 CPLEX 确定了与 "IloCplex::Callback::Context::postHeuristicSolution方法一起使用的完成策略。

如果您向该方法传递一个完整的解决方案,即该解决方案指定了模型中每个变量的值,那么 CPLEX 就可以检查该完整解决方案的可行性。

您传递给该方法的参数可能只指定了部分解决方案。 在这种情况下,CPLEX 可以尝试通过边界传播来完成部分求解。

有关这些补全策略的更多详情,请参阅 CPLEX 的可调用库(C API)参考手册中有关枚举 "CPXCALLBACKSOLUTIONSTRATEGY的文档。

字段

NoCheck = CPXCALLBACKSOLUTION_NOCHECK
参见可调用库参考手册中的 "CPXCALLBACKSOLUTION_NOCHECK
CheckFeasible = CPXCALLBACKSOLUTION_CHECKFEAS
参见可调用库参考手册中的 "CPXCALLBACKSOLUTION_CHECKFEAS
Propagate = CPXCALLBACKSOLUTION_PROPAGATE
参见可调用库参考手册中的 "CPXCALLBACKSOLUTION_PROPAGATE
Solve = CPXCALLBACKSOLUTION_SOLVE
参见可调用库参考手册中的 "CPXCALLBACKSOLUTION_SOLVE