错误代码#

在大多数Gurobi库例程中可能会出现错误。在C接口中,库例程返回一个整数错误代码。在C++、Java、.NET和Python接口中,Gurobi方法可能会抛出异常(一个C++ 异常,一个Java 异常,一个.NET 异常,或一个Python 异常)。

Gurobi 错误报告的基础是一组错误代码。这些是整数值,但我们建议您使用预定义的错误代码常量来检查程序中的错误状态。每个错误代码都有一个名称,并且每种语言都需要在此名称前加上前缀以获取适当的常量。您可以通过以下方式从可用的 Gurobi 接口访问错误代码 OUT_OF_MEMORY

语言

错误代码

C

GRB_ERROR_OUT_OF_MEMORY

C++

GRB_ERROR_OUT_OF_MEMORY

Java

GRB.Error.OUT_OF_MEMORY

.NET

GRB.Error.OUT_OF_MEMORY

Python

GRB.Error.OUT_OF_MEMORY

请注意,当发生错误时,会生成一个错误代码和一个错误消息。在C语言中,可以通过GRBgeterrormessage获取消息;在C++中,可以通过GRBException::getMessage()获取;在Java中,可以通过继承的getMessage()方法在GRBException类上获取;在.NET中,可以通过继承的Message属性在GRBException类上获取;在Python中,可以通过GurobiError对象的e.message属性获取。

在MATLAB和R中,每当发生错误时,错误代码和相应的消息都会打印在屏幕上。

可能的错误代码有:

错误代码

错误编号

描述

OUT_OF_MEMORY

10001

可用内存已耗尽

NULL_ARGUMENT

10002

NULL 为必需参数提供了输入值

INVALID_ARGUMENT

10003

为常规参数提供了无效的值

UNKNOWN_ATTRIBUTE

10004

尝试查询或设置未知属性

DATA_NOT_AVAILABLE

10005

尝试查询或设置一个当时无法访问的属性

INDEX_OUT_OF_RANGE

10006

尝试查询或设置属性,但提供的一个或多个索引(例如,约束索引、变量索引)超出了有效值的范围

UNKNOWN_PARAMETER

10007

尝试查询或设置未知参数

VALUE_OUT_OF_RANGE

10008

尝试将参数设置为超出其有效范围的值

NO_LICENSE

10009

未能获取有效的许可证

SIZE_LIMIT_EXCEEDED

10010

尝试解决一个超出演示版许可限制的模型

CALLBACK

10011

回调中的问题

FILE_READ

10012

无法读取请求的文件

FILE_WRITE

10013

无法写入请求的文件

NUMERIC

10014

请求操作期间的数值错误

IIS_NOT_INFEASIBLE

10015

尝试对可行模型执行不可行性分析

NOT_FOR_MIP

10016

请求的操作对MIP模型无效

OPTIMIZATION_IN_PROGRESS

10017

在优化进行中尝试查询或修改模型

DUPLICATES

10018

约束、变量或SOS包含重复的索引

NODEFILE

10019

在MIP优化过程中读取或写入节点文件时出错

Q_NOT_PSD

10020

QP模型中的Q矩阵不是半正定的

QCP_EQUALITY_CONSTRAINT

10021

指定了QCP等式约束(如果NonConvex参数设置为0或1,则仅支持不等式约束)

网络

10022

与Gurobi计算服务器通信时出现问题

JOB_REJECTED

10023

Gurobi 计算服务器已响应,但无法处理作业 (通常是因为排队时间超过了用户指定的超时时间 或者因为队列已超过其最大容量)

NOT_SUPPORTED

10024

表示在您的使用环境中不支持Gurobi的某个功能(例如,某些高级功能在计算服务器环境中不受支持)

EXCEED_2B_NONZEROS

10025

表示用户在一个包含超过20亿非零条目的模型上调用了查询例程,结果将超过该查询例程可以返回的最大大小。通常的解决方案是切换到该查询例程的GRBX版本,例如GRBXgetvars

INVALID_PIECEWISE_OBJ

10026

分段线性目标必须具有某些属性(如各种setPWLObj方法的文档中所述)。此错误表明违反了其中一个属性。

UPDATEMODE_CHANGE

10027

一旦模型创建后,UpdateMode 参数将无法修改。

CLOUD

10028

启动Gurobi Instant Cloud作业时遇到的问题。

MODEL_MODIFICATION

10029

表示用户以某种方式修改了模型,导致模型变得无效。例如,当模型中存在一个通用约束,并且用户删除了该约束的结果变量时,就会发生这种情况。在这种情况下,通用约束不再具有任何有意义的解释。解决方案是在删除结果变量时也删除通用约束。

CSWORKER

10030

当您使用客户端-服务器功能时,此错误表示存在应用程序问题。

TUNE_MODEL_TYPES

10031

表示在一组模型上调用了调优,但这些模型属于不同类型(例如,一个是LP,另一个是MIP)。

SECURITY

10032

表示身份验证步骤失败或尝试了当前凭据无权执行的操作。

NOT_IN_MODEL

20001

尝试使用模型中不存在的约束或变量,可能是因为它已被移除或尚未添加。

FAILED_TO_CREATE_MODEL

20002

无法创建请求的模型

内部

20003

内部Gurobi错误