错误代码#
在大多数Gurobi库例程中可能会出现错误。在C接口中,库例程返回一个整数错误代码。在C++、Java、.NET和Python接口中,Gurobi方法可能会抛出异常(一个C++ 异常
,一个Java 异常
,一个.NET 异常
,或一个Python 异常
)。
Gurobi 错误报告的基础是一组错误代码。这些是整数值,但我们建议您使用预定义的错误代码常量来检查程序中的错误状态。每个错误代码都有一个名称,并且每种语言都需要在此名称前加上前缀以获取适当的常量。您可以通过以下方式从可用的 Gurobi 接口访问错误代码 OUT_OF_MEMORY
:
语言 |
错误代码 |
---|---|
C |
|
C++ |
|
Java |
|
.NET |
|
Python |
|
请注意,当发生错误时,会生成一个错误代码和一个错误消息。在C语言中,可以通过GRBgeterrormessage
获取消息;在C++中,可以通过GRBException::getMessage()
获取;在Java中,可以通过继承的getMessage()
方法在GRBException
类上获取;在.NET中,可以通过继承的Message
属性在GRBException
类上获取;在Python中,可以通过GurobiError
对象的e.message
属性获取。
在MATLAB和R中,每当发生错误时,错误代码和相应的消息都会打印在屏幕上。
可能的错误代码有:
错误代码 |
错误编号 |
描述 |
---|---|---|
|
10001 |
可用内存已耗尽 |
|
10002 |
|
|
10003 |
为常规参数提供了无效的值 |
|
10004 |
尝试查询或设置未知属性 |
|
10005 |
尝试查询或设置一个当时无法访问的属性 |
|
10006 |
尝试查询或设置属性,但提供的一个或多个索引(例如,约束索引、变量索引)超出了有效值的范围 |
|
10007 |
尝试查询或设置未知参数 |
|
10008 |
尝试将参数设置为超出其有效范围的值 |
|
10009 |
未能获取有效的许可证 |
|
10010 |
尝试解决一个超出演示版许可限制的模型 |
|
10011 |
回调中的问题 |
|
10012 |
无法读取请求的文件 |
|
10013 |
无法写入请求的文件 |
|
10014 |
请求操作期间的数值错误 |
|
10015 |
尝试对可行模型执行不可行性分析 |
|
10016 |
请求的操作对MIP模型无效 |
|
10017 |
在优化进行中尝试查询或修改模型 |
|
10018 |
约束、变量或SOS包含重复的索引 |
|
10019 |
在MIP优化过程中读取或写入节点文件时出错 |
|
10020 |
QP模型中的Q矩阵不是半正定的 |
|
10021 |
指定了QCP等式约束(如果NonConvex参数设置为0或1,则仅支持不等式约束) |
|
10022 |
与Gurobi计算服务器通信时出现问题 |
|
10023 |
Gurobi 计算服务器已响应,但无法处理作业 (通常是因为排队时间超过了用户指定的超时时间 或者因为队列已超过其最大容量) |
|
10024 |
表示在您的使用环境中不支持Gurobi的某个功能(例如,某些高级功能在计算服务器环境中不受支持) |
|
10025 |
表示用户在一个包含超过20亿非零条目的模型上调用了查询例程,结果将超过该查询例程可以返回的最大大小。通常的解决方案是切换到该查询例程的 |
|
10026 |
分段线性目标必须具有某些属性(如各种 |
|
10027 |
一旦模型创建后,UpdateMode 参数将无法修改。 |
|
10028 |
启动Gurobi Instant Cloud作业时遇到的问题。 |
|
10029 |
表示用户以某种方式修改了模型,导致模型变得无效。例如,当模型中存在一个通用约束,并且用户删除了该约束的结果变量时,就会发生这种情况。在这种情况下,通用约束不再具有任何有意义的解释。解决方案是在删除结果变量时也删除通用约束。 |
|
10030 |
当您使用客户端-服务器功能时,此错误表示存在应用程序问题。 |
|
10031 |
表示在一组模型上调用了调优,但这些模型属于不同类型(例如,一个是LP,另一个是MIP)。 |
|
10032 |
表示身份验证步骤失败或尝试了当前凭据无权执行的操作。 |
|
20001 |
尝试使用模型中不存在的约束或变量,可能是因为它已被移除或尚未添加。 |
|
20002 |
无法创建请求的模型 |
|
20003 |
内部Gurobi错误 |