Gurobi:如何通过状态码获取状态消息?
获取Gurobi状态码对应的状态消息
当然可以!Gurobi其实内置了专门的工具函数,帮你把状态码转换成对应的可读状态消息,不用去扒库内部的存储或者自己维护映射表~
核心方法:gurobi.StatusName()
Gurobi提供了StatusName()函数,你只需要把从model.status拿到的状态码传入这个函数,就能直接得到对应的字符串消息,和求解时库自动打印的内容完全一致。
举个简单的代码示例:
import gurobi as grb # 假设你已经完成模型构建与求解 model = grb.Model() # ... 模型构建代码 ... model.optimize() # 获取状态码并转换为消息 status_code = model.status status_msg = grb.StatusName(status_code) print(f"模型求解状态: {status_msg}")
常见状态码对应的消息示例
比如这些典型场景下的转换结果:
- 当模型找到最优解时:
grb.GRB.OPTIMAL→"Optimal" - 模型不可行时:
grb.GRB.INFEASIBLE→"Infeasible" - 模型无界时:
grb.GRB.UNBOUNDED→"Unbounded" - 达到求解时间限制时:
grb.GRB.TIME_LIMIT→"Time limit reached"
额外提示:异常场景的状态消息
如果是捕获GurobiError异常,除了访问异常对象的.message属性,你也可以用StatusName()来转换异常关联的状态码(如果有的话),比如:
try: model.optimize() except grb.GurobiError as e: print(f"异常消息: {e.message}") if hasattr(e, 'status'): print(f"异常状态: {grb.StatusName(e.status)}")
这个方法是Gurobi官方API的标准功能,完全可靠,不用自己手动维护状态码和消息的映射关系~
内容的提问来源于stack exchange,提问作者Derek 朕會功夫
相关产品推荐
相关产品推荐

