gurobipy 13.0.0b1__cp312-cp312-manylinux_2_26_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of gurobipy might be problematic. Click here for more details.

@@ -0,0 +1,80 @@
1
+ # Wrapper for 'GRB.Error' object
2
+
3
+ class ErrorConstClass(object):
4
+ '''
5
+ Gurobi error codes (e.g., exception.errno == GRB.ERROR_OUT_OF_MEMORY):
6
+
7
+ OUT_OF_MEMORY: Exhausted available memory
8
+ NULL_ARGUMENT: NULL argument value
9
+ INVALID_ARGUMENT: Invalid argument value
10
+ UNKNOWN_ATTRIBUTE: Unknown attribute name
11
+ DATA_NOT_AVAILABLE: Requested data not available
12
+ INDEX_OUT_OF_RANGE: Constr/var index out of range
13
+ UNKNOWN_PARAMETER: Unknown parameter name
14
+ VALUE_OUT_OF_RANGE: Parameter value outside of valid range
15
+ NO_LICENSE: No Gurobi license found
16
+ SIZE_LIMIT_EXCEEDED: Exceeded licensed model size limit
17
+ CALLBACK: Error in callback
18
+ FILE_READ: Error reading file
19
+ FILE_WRITE: Error writing file
20
+ NUMERIC: Numeric error encountered
21
+ IIS_NOT_INFEASIBLE: Can't compute an IIS on a feasible model
22
+ NOT_FOR_MIP: Method not valid for MIP models
23
+ OPTIMIZATION_IN_PROGRESS: Must stop optimization to query results
24
+ DUPLICATES: Duplicate entries in list
25
+ NODEFILE: Problem reading or writing node file
26
+ Q_NOT_PSD: Q matrix isn't Positive Semi-Definite
27
+ QCP_EQUALITY_CONSTRAINT: Quadratic constraints must be inequalities
28
+ NETWORK: Network error
29
+ JOB_REJECTED: Job rejected by Compute Server
30
+ NOT_SUPPORTED: Requested operation is not supported
31
+ EXCEED_2B_NONZEROS: Result too large for query routine
32
+ INVALID_PIECEWISE_OBJ: Problem with specified piecewise-linear objective
33
+ JOB_REJECTED: Job rejected by Compute Server
34
+ NOT_SUPPORTED: Operation is not supported
35
+ NOT_IN_MODEL: Variable/constraint not in model
36
+ FAILED_TO_CREATE_MODEL: Failed to create the requested model
37
+ CLOUD: Instant Cloud error
38
+ MODEL_MODIFICATION: An error occurred during model modification or update
39
+ CSWORKER: An error occurred with the client-server application
40
+ TUNE_MODEL_TYPES: Tried multi-model tuning on models of different types
41
+ INTERNAL: Internal Gurobi error
42
+ '''
43
+
44
+ def __setattr__(self, name, value):
45
+ raise AttributeError("Gurobi error code constants are not modifiable")
46
+
47
+ OUT_OF_MEMORY = 10001
48
+ NULL_ARGUMENT = 10002
49
+ INVALID_ARGUMENT = 10003
50
+ UNKNOWN_ATTRIBUTE = 10004
51
+ DATA_NOT_AVAILABLE = 10005
52
+ INDEX_OUT_OF_RANGE = 10006
53
+ UNKNOWN_PARAMETER = 10007
54
+ VALUE_OUT_OF_RANGE = 10008
55
+ NO_LICENSE = 10009
56
+ SIZE_LIMIT_EXCEEDED = 10010
57
+ CALLBACK = 10011
58
+ FILE_READ = 10012
59
+ FILE_WRITE = 10013
60
+ NUMERIC = 10014
61
+ IIS_NOT_INFEASIBLE = 10015
62
+ NOT_FOR_MIP = 10016
63
+ OPTIMIZATION_IN_PROGRESS = 10017
64
+ DUPLICATES = 10018
65
+ NODEFILE = 10019
66
+ Q_NOT_PSD = 10020
67
+ QCP_EQUALITY_CONSTRAINT = 10021
68
+ NETWORK = 10022
69
+ JOB_REJECTED = 10023
70
+ NOT_SUPPORTED = 10024
71
+ EXCEED_2B_NONZEROS = 10025
72
+ INVALID_PIECEWISE_OBJ = 10026
73
+ UPDATEMODE_CHANGE = 10027
74
+ CLOUD = 10028
75
+ MODEL_MODIFICATION = 10029
76
+ CSWORKER = 10030
77
+ TUNE_MODEL_TYPES = 10031
78
+ NOT_IN_MODEL = 20001
79
+ FAILED_TO_CREATE_MODEL = 20002
80
+ INTERNAL = 20003
gurobipy/_grb.py ADDED
@@ -0,0 +1,298 @@
1
+ # GRB class - constants
2
+
3
+ from gurobipy._attrconst import AttrConstClass
4
+ from gurobipy._callbackconst import CallbackConstClass
5
+ from gurobipy._errorconst import ErrorConstClass
6
+ from gurobipy._paramconst import ParamConstClass
7
+ from gurobipy._statusconst import StatusConstClass
8
+
9
+
10
+ class GRB(object):
11
+ '''
12
+ Gurobi constants. Constants defined in this class are as follows:
13
+
14
+ Basis status (e.g., var.vBasis == GRB.BASIC):
15
+
16
+ BASIC: Variable is basic
17
+ NONBASIC_LOWER: Variable is non-basic at lower bound
18
+ NONBASIC_UPPER: Variable is non-basic at upper bound
19
+ SUPERBASIC: Variable is superbasic
20
+
21
+ Constraint sense (e.g., constr.sense = GRB.LESS_EQUAL):
22
+
23
+ LESS_EQUAL, GREATER_EQUAL, EQUAL
24
+
25
+ Variable types (e.g., var.vType = GRB.INTEGER):
26
+
27
+ CONTINUOUS, BINARY, INTEGER, SEMICONT, SEMIINT
28
+
29
+ SOS types:
30
+
31
+ SOS_TYPE1, SOS_TYPE2
32
+
33
+ General constraint types:
34
+
35
+ GENCONSTR_MAX, GENCONSTR_MIN, GENCONSTR_ABS, GENCONSTR_AND, GENCONSTR_OR,
36
+ GENCONSTR_NORM, GENCONSTR_NL, GENCONSTR_INDICATOR, GENCONSTR_PWL,
37
+ GENCONSTR_POLY, GENCONSTR_EXP, GENCONSTR_EXPA, GENCONSTR_LOG,
38
+ GENCONSTR_LOGA, GENCONSTR_POW, GENCONSTR_SIN, GENCONSTR_COS, GENCONSTR_TAN
39
+
40
+ The GRB class also includes definitions for attributes (GRB.attr),
41
+ errors (GRB.error), parameters (GRB.param), status codes (GRB.status),
42
+ and callbacks (GRB.callback). You can ask for help on any of these
43
+ (e.g., "help(GRB.attr)").
44
+ '''
45
+
46
+ attr = Attr = AttrConstClass()
47
+ param = Param = ParamConstClass()
48
+ callback = Callback = CallbackConstClass()
49
+ error = Error = ErrorConstClass()
50
+ status = Status = StatusConstClass()
51
+
52
+ # Status codes
53
+
54
+ LOADED = 1
55
+ OPTIMAL = 2
56
+ INFEASIBLE = 3
57
+ INF_OR_UNBD = 4
58
+ UNBOUNDED = 5
59
+ CUTOFF = 6
60
+ ITERATION_LIMIT = 7
61
+ NODE_LIMIT = 8
62
+ TIME_LIMIT = 9
63
+ SOLUTION_LIMIT = 10
64
+ INTERRUPTED = 11
65
+ NUMERIC = 12
66
+ SUBOPTIMAL = 13
67
+ INPROGRESS = 14
68
+ USER_OBJ_LIMIT = 15
69
+ WORK_LIMIT = 16
70
+ MEM_LIMIT = 17
71
+ LOCALLY_OPTIMAL = 18
72
+ LOCALLY_INFEASIBLE = 19
73
+
74
+ # Batch status codes
75
+
76
+ BATCH_CREATED = 1
77
+ BATCH_SUBMITTED = 2
78
+ BATCH_ABORTED = 3
79
+ BATCH_FAILED = 4
80
+ BATCH_COMPLETED = 5
81
+
82
+ # Constraint senses
83
+
84
+ LESS_EQUAL = '<'
85
+ GREATER_EQUAL = '>'
86
+ EQUAL = '='
87
+
88
+ # Variable types
89
+
90
+ CONTINUOUS = 'C'
91
+ BINARY = 'B'
92
+ INTEGER = 'I'
93
+ SEMICONT = 'S'
94
+ SEMIINT = 'N'
95
+
96
+ # Objective sense
97
+
98
+ MINIMIZE = 1
99
+ MAXIMIZE = -1
100
+
101
+ # SOS types
102
+
103
+ SOS_TYPE1 = 1
104
+ SOS_TYPE2 = 2
105
+
106
+ # General constraint types
107
+
108
+ GENCONSTR_MAX = 0
109
+ GENCONSTR_MIN = 1
110
+ GENCONSTR_ABS = 2
111
+ GENCONSTR_AND = 3
112
+ GENCONSTR_OR = 4
113
+ GENCONSTR_NORM = 5
114
+ GENCONSTR_NL = 6
115
+ GENCONSTR_INDICATOR = 7
116
+ GENCONSTR_PWL = 8
117
+ GENCONSTR_POLY = 9
118
+ GENCONSTR_EXP = 10
119
+ GENCONSTR_EXPA = 11
120
+ GENCONSTR_LOG = 12
121
+ GENCONSTR_LOGA = 13
122
+ GENCONSTR_POW = 14
123
+ GENCONSTR_SIN = 15
124
+ GENCONSTR_COS = 16
125
+ GENCONSTR_TAN = 17
126
+ GENCONSTR_LOGISTIC = 18
127
+
128
+ # Operation codes
129
+ OPCODE_CONSTANT = 0
130
+ OPCODE_VARIABLE = 1
131
+ OPCODE_PLUS = 2
132
+ OPCODE_MINUS = 3
133
+ OPCODE_MULTIPLY = 4
134
+ OPCODE_DIVIDE = 5
135
+ OPCODE_UMINUS = 6
136
+ OPCODE_SQUARE = 7
137
+ OPCODE_SQRT = 8
138
+ OPCODE_SIN = 9
139
+ OPCODE_COS = 10
140
+ OPCODE_TAN = 11
141
+ OPCODE_POW = 12
142
+ OPCODE_EXP = 13
143
+ OPCODE_LOG = 14
144
+ OPCODE_LOG2 = 15
145
+ OPCODE_LOG10 = 16
146
+ OPCODE_LOGISTIC = 17
147
+ OPCODE_TANH = 18
148
+ OPCODE_SIGNPOW = 19
149
+
150
+ # Basis status
151
+
152
+ BASIC = 0
153
+ NONBASIC_LOWER = -1
154
+ NONBASIC_UPPER = -2
155
+ SUPERBASIC = -3
156
+
157
+ # Numeric constants
158
+
159
+ INFINITY = 1e100
160
+ UNDEFINED = 1e101
161
+ MAXINT = 2000000000
162
+
163
+ # Limits
164
+
165
+ MAX_NAMELEN = 255
166
+ MAX_STRLEN = 512
167
+ MAX_TAGLEN = 10240
168
+ MAX_CONCURRENT = 64
169
+
170
+ # Other constants
171
+
172
+ DEFAULT_CS_PORT = 61000
173
+
174
+ # Version number
175
+
176
+ VERSION_MAJOR = 13
177
+ VERSION_MINOR = 0
178
+ VERSION_TECHNICAL = 0
179
+
180
+ # Errors
181
+
182
+ ERROR_OUT_OF_MEMORY = 10001
183
+ ERROR_NULL_ARGUMENT = 10002
184
+ ERROR_INVALID_ARGUMENT = 10003
185
+ ERROR_UNKNOWN_ATTRIBUTE = 10004
186
+ ERROR_DATA_NOT_AVAILABLE = 10005
187
+ ERROR_INDEX_OUT_OF_RANGE = 10006
188
+ ERROR_UNKNOWN_PARAMETER = 10007
189
+ ERROR_VALUE_OUT_OF_RANGE = 10008
190
+ ERROR_NO_LICENSE = 10009
191
+ ERROR_SIZE_LIMIT_EXCEEDED = 10010
192
+ ERROR_CALLBACK = 10011
193
+ ERROR_FILE_READ = 10012
194
+ ERROR_FILE_WRITE = 10013
195
+ ERROR_NUMERIC = 10014
196
+ ERROR_IIS_NOT_INFEASIBLE = 10015
197
+ ERROR_NOT_FOR_MIP = 10016
198
+ ERROR_OPTIMIZATION_IN_PROGRESS = 10017
199
+ ERROR_DUPLICATES = 10018
200
+ ERROR_NODEFILE = 10019
201
+ ERROR_Q_NOT_PSD = 10020
202
+ ERROR_QCP_EQUALITY_CONSTRAINT = 10021
203
+ ERROR_NETWORK = 10022
204
+ ERROR_JOB_REJECTED = 10023
205
+ ERROR_NOT_SUPPORTED = 10024
206
+ ERROR_EXCEED_2B_NONZEROS = 10025
207
+ ERROR_INVALID_PIECEWISE_OBJ = 10026
208
+ ERROR_UPDATEMODE_CHANGE = 10027
209
+ ERROR_CLOUD = 10028
210
+ ERROR_MODEL_MODIFICATION = 10029
211
+ ERROR_CSWORKER = 10030
212
+ ERROR_TUNE_MODEL_TYPES = 10031
213
+ ERROR_SECURITY = 10032
214
+ ERROR_NOT_IN_MODEL = 20001
215
+ ERROR_FAILED_TO_CREATE_MODEL = 20002
216
+ ERROR_INTERNAL = 20003
217
+
218
+ # Cuts parameter values
219
+
220
+ CUTS_AUTO = -1
221
+ CUTS_OFF = 0
222
+ CUTS_CONSERVATIVE = 1
223
+ CUTS_AGGRESSIVE = 2
224
+ CUTS_VERYAGGRESSIVE = 3
225
+
226
+ # Presolve parameter values
227
+
228
+ PRESOLVE_AUTO = -1
229
+ PRESOLVE_OFF = 0
230
+ PRESOLVE_CONSERVATIVE = 1
231
+ PRESOLVE_AGGRESSIVE = 2
232
+
233
+ # Method parameter values
234
+
235
+ METHOD_NONE = -1
236
+ METHOD_AUTO = -1
237
+ METHOD_PRIMAL = 0
238
+ METHOD_DUAL = 1
239
+ METHOD_BARRIER = 2
240
+ METHOD_CONCURRENT = 3
241
+ METHOD_DETERMINISTIC_CONCURRENT = 4
242
+ METHOD_DETERMINISTIC_CONCURRENT_SIMPLEX = 5
243
+ METHOD_PDHG = 6
244
+
245
+ # BarHomogeneous parameter values
246
+
247
+ BARHOMOGENEOUS_AUTO = -1
248
+ BARHOMOGENEOUS_OFF = 0
249
+ BARHOMOGENEOUS_ON = 1
250
+
251
+ # BarOrder parameter values
252
+
253
+ BARORDER_AUTOMATIC = -1
254
+ BARORDER_AMD = 0
255
+ BARORDER_NESTEDDISSECTION = 1
256
+
257
+ # MIPFocus parameter values
258
+
259
+ MIPFOCUS_BALANCED = 0
260
+ MIPFOCUS_FEASIBILITY = 1
261
+ MIPFOCUS_OPTIMALITY = 2
262
+ MIPFOCUS_BESTBOUND = 3
263
+
264
+ # SimplexPricing parameter values
265
+
266
+ SIMPLEXPRICING_AUTO = -1
267
+ SIMPLEXPRICING_PARTIAL = 0
268
+ SIMPLEXPRICING_STEEPEST_EDGE = 1
269
+ SIMPLEXPRICING_DEVEX = 2
270
+ SIMPLEXPRICING_STEEPEST_QUICK = 3
271
+
272
+ # VarBranch parameter values
273
+
274
+ VARBRANCH_AUTO = -1
275
+ VARBRANCH_PSEUDO_REDUCED = 0
276
+ VARBRANCH_PSEUDO_SHADOW = 1
277
+ VARBRANCH_MAX_INFEAS = 2
278
+ VARBRANCH_STRONG = 3
279
+
280
+ # Partition parameter values
281
+
282
+ PARTITION_EARLY = 16
283
+ PARTITION_ROOTSTART = 8
284
+ PARTITION_ROOTEND = 4
285
+ PARTITION_NODES = 2
286
+ PARTITION_CLEANUP = 1
287
+
288
+ # Callback phase values
289
+
290
+ PHASE_MIP_NOREL = 0
291
+ PHASE_MIP_SEARCH = 1
292
+ PHASE_MIP_IMPROVE = 2
293
+
294
+ # FeasRelax method parameter values
295
+
296
+ FEASRELAX_LINEAR = 0
297
+ FEASRELAX_QUADRATIC = 1
298
+ FEASRELAX_CARDINALITY = 2
@@ -0,0 +1,169 @@
1
+ from gurobipy._grb import GRB
2
+ from gurobipy._lowlevel import _load_model_memoryview, _add_qp_terms_memoryview
3
+ from gurobipy._util import _isscalar
4
+
5
+
6
+ def _double_array_argument(arg, size):
7
+ """If arg is a single value, build a repeating array. Otherwise,
8
+ let numpy handle conversion from an arbitrary iterator."""
9
+ import numpy as np
10
+
11
+ if _isscalar(arg):
12
+ arg = float(arg)
13
+ repeat = np.empty(size, dtype="float64")
14
+ repeat.fill(arg)
15
+ return repeat
16
+
17
+ else:
18
+ return np.require(arg, dtype="float64", requirements=["C"])
19
+
20
+
21
+ def _char_array_argument(arg, size):
22
+ """Convert str or bytearray to bytes. If a single value is given and
23
+ size is not None, build a repeating byte array. Otherwise, let numpy
24
+ handle conversion from an arbitrary iterator."""
25
+
26
+ import numpy as np
27
+
28
+ # Convert to bytes first if possible. Single character case still
29
+ # needs to be handled after conversion.
30
+ if isinstance(arg, str):
31
+ arg = arg.encode()
32
+
33
+ if isinstance(arg, (bytes, bytearray)):
34
+ if size is not None and len(arg) == 1:
35
+ return arg * size
36
+ else:
37
+ return arg
38
+ else:
39
+ return np.require(arg, dtype="S1", requirements=["C"]).tobytes()
40
+
41
+
42
+ def loadModel(
43
+ *,
44
+ env,
45
+ numvars,
46
+ numconstrs,
47
+ modelsense=GRB.MINIMIZE,
48
+ objcon=0.0,
49
+ obj=None,
50
+ lb=None,
51
+ ub=None,
52
+ vtype=None,
53
+ constr_csc=None,
54
+ sense=None,
55
+ rhs=None,
56
+ qobj_coo=None,
57
+ name=None,
58
+ ):
59
+ """
60
+ ROUTINE:
61
+ loadModel(...)
62
+
63
+ PURPOSE:
64
+ Load an optimization model from input data. You’ll need numpy
65
+ installed to use this function.
66
+
67
+ ARGUMENTS:
68
+ env – Environment to use to create the model.
69
+ numvars – Number of variables in the model.
70
+ numconstrs – Number of constraints in the model.
71
+ modelsense – Objective function sense (defaults to GRB.MINIMIZE).
72
+ objcon – Objective function constrant (defaults to 0.0).
73
+ obj – (optional) List or 1-D array of linear objective coefficients.
74
+ lb – (optional) List or 1-D array of variable lower bounds.
75
+ ub – (optional) List or 1-D array of variable upper bounds.
76
+ vtype – (optional) List or 1-D array of variable types.
77
+ constr_csc – (optional) CSC format linear constraint data.
78
+ sense – (optional) List or 1-D array of constraint senses.
79
+ rhs – (optional) List or 1-D array of constraint RHS values.
80
+ qobj_coo – (optional) COO format Q objective data.
81
+ name – (optional) Model name.
82
+
83
+ RETURN VALUE:
84
+ A Model object.
85
+ """
86
+
87
+ import numpy as np
88
+
89
+ if name is None:
90
+ modelname = b""
91
+ elif isinstance(name, str):
92
+ modelname = name.encode()
93
+ else:
94
+ raise TypeError("'name' must be a string or None")
95
+
96
+ # Prepare variable attribute arrays, repeating scalars if needed
97
+ if obj is not None:
98
+ obj = _double_array_argument(obj, size=numvars)
99
+ if lb is not None:
100
+ lb = _double_array_argument(lb, size=numvars)
101
+ if ub is not None:
102
+ ub = _double_array_argument(ub, size=numvars)
103
+ if vtype is not None:
104
+ vtype = _char_array_argument(vtype, size=numvars)
105
+
106
+ if constr_csc is None:
107
+ # No linear constraint matrix was given; construct an empty one
108
+ rhs = np.array([], dtype="float64")
109
+ sense = b""
110
+ vbeg = np.zeros((numvars,), dtype="uint64")
111
+ vlen = np.zeros((numvars,), dtype="int32")
112
+ vind = np.array([], dtype="int32")
113
+ vval = np.array([], dtype="float64")
114
+
115
+ else:
116
+ # To avoid ambiguity, a string for 'sense' must have length numconstrs.
117
+ # no '<=' or '<' allowed to set the same sense for all constraints.
118
+ sense = _char_array_argument(sense, size=None)
119
+
120
+ rhs = np.require(rhs, dtype="float64", requirements=["C"])
121
+
122
+ data, indices, indptr = constr_csc
123
+ vind = np.require(indices, dtype="int32", requirements=["C"])
124
+ vval = np.require(data, dtype="float64", requirements=["C"])
125
+
126
+ indptr = np.require(indptr, dtype="uint64", requirements=["C"])
127
+ vlen = np.empty(numvars, dtype="int32")
128
+ np.subtract(indptr[1:], indptr[:-1], out=vlen)
129
+ vbeg = indptr[:-1]
130
+
131
+ model = _load_model_memoryview(
132
+ env=env,
133
+ numvars=numvars,
134
+ numconstrs=numconstrs,
135
+ modelname=modelname,
136
+ objsense=modelsense,
137
+ objcon=objcon,
138
+ obj=obj,
139
+ sense=sense,
140
+ rhs=rhs,
141
+ vbeg=vbeg,
142
+ vlen=vlen,
143
+ vind=vind,
144
+ vval=vval,
145
+ lb=lb,
146
+ ub=ub,
147
+ vtype=vtype,
148
+ )
149
+
150
+ # Any further operations must be followed by an update() call. The model
151
+ # must be cleaned up if an exception is raised after this point.
152
+
153
+ if qobj_coo is not None:
154
+ qval, (qrow, qcol) = qobj_coo
155
+ try:
156
+ numqnz = len(qrow)
157
+ _add_qp_terms_memoryview(
158
+ model=model,
159
+ numqnz=numqnz,
160
+ qrow=np.require(qrow, dtype="int32", requirements=["C"]),
161
+ qcol=np.require(qcol, dtype="int32", requirements=["C"]),
162
+ qval=np.require(qval, dtype="float64", requirements=["C"]),
163
+ )
164
+ model.update()
165
+ except Exception:
166
+ model.close()
167
+ raise
168
+
169
+ return model