回调代码

Gurobi回调例程使用两个参数:在哪里什么。当用户调用回调函数,在哪里参数显示从在Gurobi优化器被称为(presolve单工,障碍,MIP,等等)。当用户回调希望获得更多详细信息优化的状态什么参数可以通过一个合适的得到方法为你的语言来获得额外的信息(例如,GRBcbget在C语言中,GRBCallback: getIntInfo在c++中,GRBCallback.getIntInfo在Java中,GRBCallback.GetIntInfo在。net,Model.cbGet在Python中)。

更详细的信息关于如何在您的应用程序中使用回调函数参考手册中可以找到不同Gurobi语言接口(C,c++,Java,net,Python)。

注意,从内部改变参数不支持回调,这样做可能导致未定义的行为。

可能的值在哪里什么下列表中列出参数。注意,这些值是指以稍微不同的方式从不同的Gurobi接口。考虑到单纯形价值作为一个例子。你会指从不同Gurobi api这个常数如下:

语言 回调常数
C GRB_CB_SIMPLEX
c++ GRB_CB_SIMPLEX
Java GRB.Callback.SIMPLEX
net GRB.Callback.SIMPLEX
Python GRB.Callback.SIMPLEX

可能的在哪里值:

在哪里 数值 优化器状态
轮询 0 定期轮询回调
PRESOLVE 1 目前执行presolve
单纯形 2 目前在单纯形
米兰理工大学管理学院 3 目前在MIP
MIPSOL 4 找到了新的MIP现任
MIPNODE 5 目前探索MIP节点
消息 6 打印日志消息
障碍 7 目前的障碍
MULTIOBJ 8 目前在多目标优化
IIS 9 目前计算IIS

允许的什么值依赖的价值在哪里论点。有效的组合是:

什么 在哪里 结果类型 描述
运行时 任何除了轮询 经过解算器运行时手机万博登录间(秒)。
工作 任何除了轮询 经过解算器工作(手机万博登录工作单位)。
PRE_COLDEL PRESOLVE int 列的数量被presolve这一点。
PRE_ROWDEL PRESOLVE int 删除的行数presolve这一点。
PRE_SENCHG PRESOLVE int 的数量约束感官presolve改变了这一点。
PRE_BNDCHG PRESOLVE int 变量的数量界限presolve改变了这一点。
PRE_COECHG PRESOLVE int 的系数presolve改变了这一点。
SPX_ITRCNT 单纯形 目前单纯形迭代数。
SPX_OBJVAL 单纯形 当前的单工客观价值。
SPX_PRIMINF 单纯形 当前的原始的不可行性。
SPX_DUALINF 单纯形 目前双不可行性。
SPX_ISPERT 单纯形 int 目前问题的摄动吗?
MIP_OBJBST 米兰理工大学管理学院 当前的最佳目标。
MIP_OBJBND 米兰理工大学管理学院 当前的最佳目标。
MIP_NODCNT 米兰理工大学管理学院 当前探索节点数。
MIP_SOLCNT 米兰理工大学管理学院 int 目前发现的可行的解决方案。
MIP_CUTCNT 米兰理工大学管理学院 int 当前计数减少飞机的应用。
MIP_NODLFT 米兰理工大学管理学院 目前未知的节点数。
MIP_ITRCNT 米兰理工大学管理学院 目前单纯形迭代数。
MIP_OPENSCENARIOS 米兰理工大学管理学院 int 的场景数量仍在multi-scenario模型。
MIP_PHASE 米兰理工大学管理学院 int 当前阶段MIP的解决方案的过程。可能的值是0 (NoRel启发式),1(标准MIP搜索),或2)(表演MIP解决方案改进。预定义常量是可用的(例如,GRB.PHASE_MIP_SEARCH)。
MIPSOL_SOL MIPSOL 双* 解向量的新解决方案(C)。resultP参数C例程GRBcbget应该指向数组的双打至少只要用户模型中变量的数量。使用getSolution回调方法的面向对象的接口。
MIPSOL_OBJ MIPSOL 客观价值的新解决方案。
MIPSOL_OBJBST MIPSOL 当前的最佳目标。
MIPSOL_OBJBND MIPSOL 当前的最佳目标。
MIPSOL_NODCNT MIPSOL 当前探索节点数。
MIPSOL_SOLCNT MIPSOL int 目前发现的可行的解决方案。
MIPSOL_OPENSCENARIOS MIPSOL int 的场景数量仍在multi-scenario模型。
MIPSOL_PHASE MIPSOL int 当前阶段MIP的解决方案。可能的值是0 (NoRel启发式),1(标准MIP搜索),或2)(表演MIP解决方案改进。预定义常量是可用的(例如,GRB.PHASE_MIP_SEARCH)。
MIPNODE_STATUS MIPNODE int 优化当前MIP节点(参见的地位状态码部分进行进一步的信息)。
MIPNODE_OBJBST MIPNODE 当前的最佳目标。
MIPNODE_OBJBND MIPNODE 当前的最佳目标。
MIPNODE_NODCNT MIPNODE 当前探索节点数。
MIPNODE_SOLCNT MIPNODE int 目前发现的可行的解决方案。
MIPNODE_OPENSCENARIOS MIPNODE int 的场景数量仍在multi-scenario模型。
MIPNODE_PHASE MIPNODE int 当前阶段MIP的解决方案的过程。可能的值是0 (NoRel启发式),1(标准MIP搜索),或2)(表演MIP解决方案改进。预定义常量是可用的(例如,GRB.PHASE_MIP_SEARCH)。
MIPNODE_REL MIPNODE 双* 放松当前节点的解决方案,优化状态GRB_OPTIMAL (C)。resultP参数C例程GRBcbget应该指向数组的双打至少只要用户模型中变量的数量。使用getNodeRel回调方法的面向对象的接口。
BARRIER_ITRCNT 障碍 int 当前迭代计算的障碍。
BARRIER_PRIMOBJ 障碍 原始的客观价值为当前迭代的障碍。
BARRIER_DUALOBJ 障碍 双重价值目标为当前迭代的障碍。
BARRIER_PRIMINF 障碍 原始的不可行性为当前迭代的障碍。
BARRIER_DUALINF 障碍 双不可行性为当前迭代的障碍。
BARRIER_COMPL 障碍 互补违反当前迭代的障碍。
MULTIOBJ_OBJCNT MULTIOBJ int 当前的目标已经优化。
MULTIOBJ_SOLCNT MULTIOBJ int 目前发现的可行的解决方案。
MULTIOBJ_SOL MULTIOBJ 双* 解向量的新解决方案(C)。resultP参数C例程
IIS_CONSTRMIN IIS int 在IIS最小数量的限制。
IIS_CONSTRMAX IIS int IIS最大数量的限制。
IIS_CONSTRGUESS IIS int 估计IIS的约束。
IIS_BOUNDMIN IIS int 在IIS最小数量的变量范围。
IIS_BOUNDMAX IIS int 在IIS最大数量的变量范围。
IIS_BOUNDGUESS IIS int 在IIS估计数量的变量范围。
MSG_STRING 消息 char * 的信息被打印出来。

记住,必须添加到适当的前缀什么在哪里上面列出的名称,这取决于您所使用的语言。

回调的笔记

请注意,轮询回调不允许任何额外的信息检索。它是为了提供允许交互式应用程序重新控制频繁,这样他们就可以维护应用程序响应性。

面向对象的接口有专门的方法获取现任或放松的解决方案。而在C语言中使用GRBcbget,可以使用getSolutiongetNodeRel在面向对象的接口。请咨询回调的描述c++,Java,net,或Python为进一步的细节。

请注意,MIPNODE回调将曾经呼吁每个削减在根节点通过解决。的MIPNODE_NODCNT值将保持在0直到根节点完成。如果你查询松弛值从根节点时,第一个MIPNODE回调将给没有减少飞机的放松,最后将放松毕竟根削减已经应用。

注意,多目标优化算法解决优化问题的序列。在每一个解决MULTIOBJ就会调用回调。MIP-related回调也会被称为原始模型是MIP,和LP-related回调将称为如果原始模型是一个资讯。

注意,有一些限制有关可用的回调时使用Gurobi远程服务(云计算服务器,即时,等等)。请参考回调部分的Gurobi远程服务手册为更多的信息。