回调代码
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,可以使用getSolution
或getNodeRel
在面向对象的接口。请咨询回调的描述c++,Java,net,或Python为进一步的细节。
请注意,MIPNODE
回调将曾经呼吁每个削减在根节点通过解决。的MIPNODE_NODCNT
值将保持在0直到根节点完成。如果你查询松弛值从根节点时,第一个MIPNODE
回调将给没有减少飞机的放松,最后将放松毕竟根削减已经应用。
注意,多目标优化算法解决优化问题的序列。在每一个解决MULTIOBJ
就会调用回调。MIP-related回调也会被称为原始模型是MIP,和LP-related回调将称为如果原始模型是一个资讯。
注意,有一些限制有关可用的回调时使用Gurobi远程服务(云计算服务器,即时,等等)。请参考回调部分的Gurobi远程服务手册为更多的信息。