Google OR-Tools v9.15
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
xpress_environment.h
Go to the documentation of this file.
1// Copyright 2010-2025 Google LLC
2// Licensed under the Apache License, Version 2.0 (the "License");
3// you may not use this file except in compliance with the License.
4// You may obtain a copy of the License at
5//
6// http://www.apache.org/licenses/LICENSE-2.0
7//
8// Unless required by applicable law or agreed to in writing, software
9// distributed under the License is distributed on an "AS IS" BASIS,
10// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11// See the License for the specific language governing permissions and
12// limitations under the License.
13
14// Initial version of this code was provided by RTE
15
16#ifndef ORTOOLS_THIRD_PARTY_SOLVERS_XPRESS_ENVIRONMENT_H_
17#define ORTOOLS_THIRD_PARTY_SOLVERS_XPRESS_ENVIRONMENT_H_
18
19#include <functional>
20#include <string>
21
22#include "absl/status/status.h"
24
25extern "C" {
26typedef struct xo_prob_struct* XPRSprob;
27}
28
29namespace operations_research {
30
31void printXpressBanner(bool error);
32
33bool initXpressEnv(bool verbose = true, int xpress_oem_license_key = 0);
34
36
37// Force the loading of the xpress dynamic library. It returns true if the
38// library was successfully loaded. This method can only be called once.
39// Successive calls are no-op.
40//
41// Note that it does not check if a token license can be grabbed.
42absl::Status LoadXpressDynamicLibrary(std::string& xpresspath);
43
44// The list of #define and extern std::function<> below is generated directly
45// from xprs.h via parse_header_xpress.py
46// See the top comment on the parse_header_xpress.py file.
47// This is the header section
48// NOLINTBEGIN(runtime/int)
49#if defined(_WIN32)
50#define XPRSint64 __int64
51#elif defined(__LP64__) || defined(_LP64) || defined(__ILP64__) || \
52 defined(_ILP64)
53#define XPRSint64 long
54#else
55#define XPRSint64 long long
56#endif
57// NOLINTEND(runtime/int)
58
59#if defined(_MSC_VER)
60#define XPRS_CC __stdcall
61#else
62#define XPRS_CC
63#endif
64// ***************************************************************************
65// * values related to XPRSinterrupt *
66// ***************************************************************************
67#define XPRS_STOP_NONE 0
68#define XPRS_STOP_TIMELIMIT 1
69#define XPRS_STOP_CTRLC 2
70#define XPRS_STOP_NODELIMIT 3
71#define XPRS_STOP_ITERLIMIT 4
72#define XPRS_STOP_MIPGAP 5
73#define XPRS_STOP_SOLLIMIT 6
74#define XPRS_STOP_GENERICERROR 7
75#define XPRS_STOP_MEMORYERROR 8
76#define XPRS_STOP_USER 9
77#define XPRS_STOP_SOLVECOMPLETE 10
78#define XPRS_STOP_LICENSELOST 11
79#define XPRS_STOP_NUMERICALERROR 13
80#define XPRS_STOP_WORKLIMIT 14
81// ***************************************************************************
82// * values related to Set/GetControl/Attribinfo *
83// ***************************************************************************
84#define XPRS_TYPE_NOTDEFINED 0
85#define XPRS_TYPE_INT 1
86#define XPRS_TYPE_INT64 2
87#define XPRS_TYPE_DOUBLE 3
88#define XPRS_TYPE_STRING 4
89// ***************************************************************************
90// * values related to NAMESPACES *
91// ***************************************************************************
92#define XPRS_NAMES_ROW 1
93#define XPRS_NAMES_COLUMN 2
94#define XPRS_NAMES_SET 3
95// ***************************************************************************
96// * values related to SOLAVAILABLE *
97// ***************************************************************************
98#define XPRS_SOLAVAILABLE_NOTFOUND 0
99#define XPRS_SOLAVAILABLE_OPTIMAL 1
100#define XPRS_SOLAVAILABLE_FEASIBLE 2
101// ***************************************************************************
102// * values related to SOLVESTATUS *
103// ***************************************************************************
104#define XPRS_SOLVESTATUS_UNSTARTED 0
105#define XPRS_SOLVESTATUS_STOPPED 1
106#define XPRS_SOLVESTATUS_FAILED 2
107#define XPRS_SOLVESTATUS_COMPLETED 3
108// ***************************************************************************
109// * values related to DEFAULTALG and ALGORITHM *
110// ***************************************************************************
111#define XPRS_ALG_DEFAULT 1
112#define XPRS_ALG_DUAL 2
113#define XPRS_ALG_PRIMAL 3
114#define XPRS_ALG_BARRIER 4
115#define XPRS_ALG_NETWORK 5
116
117#define XPRS_PLUSINFINITY 1.0e+20
118#define XPRS_MINUSINFINITY -1.0e+20
119#define XPRS_MAXBANNERLENGTH 512
120#define XPVERSION 45 // >= 45 for XPRS_SOLAVAILABLE flags, XPRSgetduals(), etc.
121#define XPRS_PRESOLVESTATE 1026
122#define XPRS_MIPENTS 1032
123#define XPRS_ALGORITHM 1049
124#define XPRS_STOPSTATUS 1179
125#define XPRS_SOLVESTATUS 1394
126#define XPRS_OBJECTIVES 1397
127#define XPRS_SOLVEDOBJS 1399
128#define XPRS_ORIGINALCOLS 1214
129#define XPRS_ORIGINALROWS 1124
130#define XPRS_ORIGINALMIPENTS 1191
131#define XPRS_ORIGINALSETS 1194
132#define XPRS_ORIGINALINDICATORS 1255
133#define XPRS_OPTIMIZETYPEUSED 1268
134#define XPRS_OBJVAL 2118
135#define XPRS_BARPRIMALOBJ 4001
136#define XPRS_BARDUALOBJ 4002
137#define XPRS_MPSRHSNAME 6001
138#define XPRS_MPSOBJNAME 6002
139#define XPRS_MPSRANGENAME 6003
140#define XPRS_MPSBOUNDNAME 6004
141#define XPRS_OUTPUTMASK 6005
142#define XPRS_TUNERMETHODFILE 6017
143#define XPRS_TUNEROUTPUTPATH 6018
144#define XPRS_TUNERSESSIONNAME 6019
145#define XPRS_COMPUTEEXECSERVICE 6022
146#define XPRS_MAXCUTTIME 8149
147#define XPRS_MAXSTALLTIME 8443
148#define XPRS_TUNERMAXTIME 8364
149#define XPRS_MATRIXTOL 7001
150#define XPRS_PIVOTTOL 7002
151#define XPRS_FEASTOL 7003
152#define XPRS_OUTPUTTOL 7004
153#define XPRS_SOSREFTOL 7005
154#define XPRS_OPTIMALITYTOL 7006
155#define XPRS_ETATOL 7007
156#define XPRS_RELPIVOTTOL 7008
157#define XPRS_MIPTOL 7009
158#define XPRS_MIPTOLTARGET 7010
159#define XPRS_BARPERTURB 7011
160#define XPRS_MIPADDCUTOFF 7012
161#define XPRS_MIPABSCUTOFF 7013
162#define XPRS_MIPRELCUTOFF 7014
163#define XPRS_PSEUDOCOST 7015
164#define XPRS_PENALTY 7016
165#define XPRS_BIGM 7018
166#define XPRS_MIPABSSTOP 7019
167#define XPRS_MIPRELSTOP 7020
168#define XPRS_CROSSOVERACCURACYTOL 7023
169#define XPRS_PRIMALPERTURB 7024
170#define XPRS_DUALPERTURB 7025
171#define XPRS_BAROBJSCALE 7026
172#define XPRS_BARRHSSCALE 7027
173#define XPRS_CHOLESKYTOL 7032
174#define XPRS_BARGAPSTOP 7033
175#define XPRS_BARDUALSTOP 7034
176#define XPRS_BARPRIMALSTOP 7035
177#define XPRS_BARSTEPSTOP 7036
178#define XPRS_ELIMTOL 7042
179#define XPRS_MARKOWITZTOL 7047
180#define XPRS_MIPABSGAPNOTIFY 7064
181#define XPRS_MIPRELGAPNOTIFY 7065
182#define XPRS_BARLARGEBOUND 7067
183#define XPRS_PPFACTOR 7069
184#define XPRS_REPAIRINDEFINITEQMAX 7071
185#define XPRS_BARGAPTARGET 7073
186#define XPRS_DUMMYCONTROL 7075
187#define XPRS_BARSTARTWEIGHT 7076
188#define XPRS_BARFREESCALE 7077
189#define XPRS_SBEFFORT 7086
190#define XPRS_HEURDIVERANDOMIZE 7089
191#define XPRS_HEURSEARCHEFFORT 7090
192#define XPRS_CUTFACTOR 7091
193#define XPRS_EIGENVALUETOL 7097
194#define XPRS_INDLINBIGM 7099
195#define XPRS_TREEMEMORYSAVINGTARGET 7100
196#define XPRS_INDPRELINBIGM 7102
197#define XPRS_RELAXTREEMEMORYLIMIT 7105
198#define XPRS_MIPABSGAPNOTIFYOBJ 7108
199#define XPRS_MIPABSGAPNOTIFYBOUND 7109
200#define XPRS_PRESOLVEMAXGROW 7110
201#define XPRS_HEURSEARCHTARGETSIZE 7112
202#define XPRS_CROSSOVERRELPIVOTTOL 7113
203#define XPRS_CROSSOVERRELPIVOTTOLSAFE 7114
204#define XPRS_DETLOGFREQ 7116
205#define XPRS_MAXIMPLIEDBOUND 7120
206#define XPRS_FEASTOLTARGET 7121
207#define XPRS_OPTIMALITYTOLTARGET 7122
208#define XPRS_PRECOMPONENTSEFFORT 7124
209#define XPRS_LPLOGDELAY 7127
210#define XPRS_HEURDIVEITERLIMIT 7128
211#define XPRS_BARKERNEL 7130
212#define XPRS_FEASTOLPERTURB 7132
213#define XPRS_CROSSOVERFEASWEIGHT 7133
214#define XPRS_LUPIVOTTOL 7139
215#define XPRS_MIPRESTARTGAPTHRESHOLD 7140
216#define XPRS_NODEPROBINGEFFORT 7141
217#define XPRS_INPUTTOL 7143
218#define XPRS_MIPRESTARTFACTOR 7145
219#define XPRS_BAROBJPERTURB 7146
220#define XPRS_CPIALPHA 7149
221#define XPRS_GLOBALBOUNDINGBOX 7154
222#define XPRS_TIMELIMIT 7158
223#define XPRS_SOLTIMELIMIT 7159
224#define XPRS_REPAIRINFEASTIMELIMIT 7160
225#define XPRS_EXTRAROWS 8004
226#define XPRS_EXTRACOLS 8005
227#define XPRS_LPITERLIMIT 8007
228#define XPRS_LPLOG 8009
229#define XPRS_SCALING 8010
230#define XPRS_PRESOLVE 8011
231#define XPRS_CRASH 8012
232#define XPRS_PRICINGALG 8013
233#define XPRS_INVERTFREQ 8014
234#define XPRS_INVERTMIN 8015
235#define XPRS_MAXNODE 8018
236#define XPRS_MAXTIME 8020
237#define XPRS_MAXMIPSOL 8021
238#define XPRS_SIFTPASSES 8022
239#define XPRS_DEFAULTALG 8023
240#define XPRS_VARSELECTION 8025
241#define XPRS_NODESELECTION 8026
242#define XPRS_BACKTRACK 8027
243#define XPRS_MIPLOG 8028
244#define XPRS_KEEPNROWS 8030
245#define XPRS_MPSECHO 8032
246#define XPRS_MAXPAGELINES 8034
247#define XPRS_OUTPUTLOG 8035
248#define XPRS_BARSOLUTION 8038
249#define XPRS_CACHESIZE 8043
250#define XPRS_CROSSOVER 8044
251#define XPRS_BARITERLIMIT 8045
252#define XPRS_CHOLESKYALG 8046
253#define XPRS_BAROUTPUT 8047
254#define XPRS_EXTRAMIPENTS 8051
255#define XPRS_REFACTOR 8052
256#define XPRS_BARTHREADS 8053
257#define XPRS_KEEPBASIS 8054
258#define XPRS_CROSSOVEROPS 8060
259#define XPRS_VERSION 8061
260#define XPRS_CROSSOVERTHREADS 8065
261#define XPRS_BIGMMETHOD 8068
262#define XPRS_MPSNAMELENGTH 8071
263#define XPRS_ELIMFILLIN 8073
264#define XPRS_PRESOLVEOPS 8077
265#define XPRS_MIPPRESOLVE 8078
266#define XPRS_MIPTHREADS 8079
267#define XPRS_BARORDER 8080
268#define XPRS_BREADTHFIRST 8082
269#define XPRS_AUTOPERTURB 8084
270#define XPRS_DENSECOLLIMIT 8086
271#define XPRS_CALLBACKFROMMASTERTHREAD 8090
272#define XPRS_MAXMCOEFFBUFFERELEMS 8091
273#define XPRS_REFINEOPS 8093
274#define XPRS_LPREFINEITERLIMIT 8094
275#define XPRS_MIPREFINEITERLIMIT 8095
276#define XPRS_DUALIZEOPS 8097
277#define XPRS_CROSSOVERITERLIMIT 8104
278#define XPRS_PREBASISRED 8106
279#define XPRS_PRESORT 8107
280#define XPRS_PREPERMUTE 8108
281#define XPRS_PREPERMUTESEED 8109
282#define XPRS_MAXMEMORYSOFT 8112
283#define XPRS_CUTFREQ 8116
284#define XPRS_SYMSELECT 8117
285#define XPRS_SYMMETRY 8118
286#define XPRS_MAXMEMORYHARD 8119
287#define XPRS_MIQCPALG 8125
288#define XPRS_QCCUTS 8126
289#define XPRS_QCROOTALG 8127
290#define XPRS_PRECONVERTSEPARABLE 8128
291#define XPRS_ALGAFTERNETWORK 8129
292#define XPRS_TRACE 8130
293#define XPRS_MAXIIS 8131
294#define XPRS_CPUTIME 8133
295#define XPRS_COVERCUTS 8134
296#define XPRS_GOMCUTS 8135
297#define XPRS_LPFOLDING 8136
298#define XPRS_MPSFORMAT 8137
299#define XPRS_CUTSTRATEGY 8138
300#define XPRS_CUTDEPTH 8139
301#define XPRS_TREECOVERCUTS 8140
302#define XPRS_TREEGOMCUTS 8141
303#define XPRS_CUTSELECT 8142
304#define XPRS_TREECUTSELECT 8143
305#define XPRS_DUALIZE 8144
306#define XPRS_DUALGRADIENT 8145
307#define XPRS_SBITERLIMIT 8146
308#define XPRS_SBBEST 8147
309#define XPRS_BARINDEFLIMIT 8153
310#define XPRS_HEURFREQ 8155
311#define XPRS_HEURDEPTH 8156
312#define XPRS_HEURMAXSOL 8157
313#define XPRS_HEURNODES 8158
314#define XPRS_LNPBEST 8160
315#define XPRS_LNPITERLIMIT 8161
316#define XPRS_BRANCHCHOICE 8162
317#define XPRS_BARREGULARIZE 8163
318#define XPRS_SBSELECT 8164
319#define XPRS_LOCALCHOICE 8170
320#define XPRS_LOCALBACKTRACK 8171
321#define XPRS_DUALSTRATEGY 8174
322#define XPRS_L1CACHE 8175
323#define XPRS_HEURDIVESTRATEGY 8177
324#define XPRS_HEURSELECT 8178
325#define XPRS_BARSTART 8180
326#define XPRS_PRESOLVEPASSES 8183
327#define XPRS_BARNUMSTABILITY 8186
328#define XPRS_BARORDERTHREADS 8187
329#define XPRS_EXTRASETS 8190
330#define XPRS_FEASIBILITYPUMP 8193
331#define XPRS_PRECOEFELIM 8194
332#define XPRS_PREDOMCOL 8195
333#define XPRS_HEURSEARCHFREQ 8196
334#define XPRS_HEURDIVESPEEDUP 8197
335#define XPRS_SBESTIMATE 8198
336#define XPRS_BARCORES 8202
337#define XPRS_MAXCHECKSONMAXTIME 8203
338#define XPRS_MAXCHECKSONMAXCUTTIME 8204
339#define XPRS_HISTORYCOSTS 8206
340#define XPRS_ALGAFTERCROSSOVER 8208
341#define XPRS_MUTEXCALLBACKS 8210
342#define XPRS_BARCRASH 8211
343#define XPRS_HEURDIVESOFTROUNDING 8215
344#define XPRS_HEURSEARCHROOTSELECT 8216
345#define XPRS_HEURSEARCHTREESELECT 8217
346#define XPRS_MPS18COMPATIBLE 8223
347#define XPRS_ROOTPRESOLVE 8224
348#define XPRS_CROSSOVERDRP 8227
349#define XPRS_FORCEOUTPUT 8229
350#define XPRS_PRIMALOPS 8231
351#define XPRS_DETERMINISTIC 8232
352#define XPRS_PREPROBING 8238
353#define XPRS_TREEMEMORYLIMIT 8242
354#define XPRS_TREECOMPRESSION 8243
355#define XPRS_TREEDIAGNOSTICS 8244
356#define XPRS_MAXTREEFILESIZE 8245
357#define XPRS_PRECLIQUESTRATEGY 8247
358#define XPRS_REPAIRINFEASMAXTIME 8250
359#define XPRS_IFCHECKCONVEXITY 8251
360#define XPRS_PRIMALUNSHIFT 8252
361#define XPRS_REPAIRINDEFINITEQ 8254
362#define XPRS_MIPRAMPUP 8255
363#define XPRS_MAXLOCALBACKTRACK 8257
364#define XPRS_USERSOLHEURISTIC 8258
365#define XPRS_FORCEPARALLELDUAL 8265
366#define XPRS_BACKTRACKTIE 8266
367#define XPRS_BRANCHDISJ 8267
368#define XPRS_MIPFRACREDUCE 8270
369#define XPRS_CONCURRENTTHREADS 8274
370#define XPRS_MAXSCALEFACTOR 8275
371#define XPRS_HEURTHREADS 8276
372#define XPRS_THREADS 8278
373#define XPRS_HEURBEFORELP 8280
374#define XPRS_PREDOMROW 8281
375#define XPRS_BRANCHSTRUCTURAL 8282
376#define XPRS_QUADRATICUNSHIFT 8284
377#define XPRS_BARPRESOLVEOPS 8286
378#define XPRS_QSIMPLEXOPS 8288
379#define XPRS_MIPRESTART 8290
380#define XPRS_CONFLICTCUTS 8292
381#define XPRS_PREPROTECTDUAL 8293
382#define XPRS_CORESPERCPU 8296
383#define XPRS_RESOURCESTRATEGY 8297
384#define XPRS_CLAMPING 8301
385#define XPRS_SLEEPONTHREADWAIT 8302
386#define XPRS_PREDUPROW 8307
387#define XPRS_CPUPLATFORM 8312
388#define XPRS_BARALG 8315
389#define XPRS_SIFTING 8319
390#define XPRS_LPLOGSTYLE 8326
391#define XPRS_RANDOMSEED 8328
392#define XPRS_TREEQCCUTS 8331
393#define XPRS_PRELINDEP 8333
394#define XPRS_DUALTHREADS 8334
395#define XPRS_PREOBJCUTDETECT 8336
396#define XPRS_PREBNDREDQUAD 8337
397#define XPRS_PREBNDREDCONE 8338
398#define XPRS_PRECOMPONENTS 8339
399#define XPRS_MAXMIPTASKS 8347
400#define XPRS_MIPTERMINATIONMETHOD 8348
401#define XPRS_PRECONEDECOMP 8349
402#define XPRS_HEURFORCESPECIALOBJ 8350
403#define XPRS_HEURSEARCHROOTCUTFREQ 8351
404#define XPRS_PREELIMQUAD 8353
405#define XPRS_PREIMPLICATIONS 8356
406#define XPRS_TUNERMODE 8359
407#define XPRS_TUNERMETHOD 8360
408#define XPRS_TUNERTARGET 8362
409#define XPRS_TUNERTHREADS 8363
410#define XPRS_TUNERHISTORY 8365
411#define XPRS_TUNERPERMUTE 8366
412#define XPRS_TUNERVERBOSE 8370
413#define XPRS_TUNEROUTPUT 8372
414#define XPRS_PREANALYTICCENTER 8374
415#define XPRS_NETCUTS 8382
416#define XPRS_LPFLAGS 8385
417#define XPRS_MIPKAPPAFREQ 8386
418#define XPRS_OBJSCALEFACTOR 8387
419#define XPRS_TREEFILELOGINTERVAL 8389
420#define XPRS_IGNORECONTAINERCPULIMIT 8390
421#define XPRS_IGNORECONTAINERMEMORYLIMIT 8391
422#define XPRS_MIPDUALREDUCTIONS 8392
423#define XPRS_GENCONSDUALREDUCTIONS 8395
424#define XPRS_PWLDUALREDUCTIONS 8396
425#define XPRS_BARFAILITERLIMIT 8398
426#define XPRS_AUTOSCALING 8406
427#define XPRS_GENCONSABSTRANSFORMATION 8408
428#define XPRS_COMPUTEJOBPRIORITY 8409
429#define XPRS_PREFOLDING 8410
430#define XPRS_NETSTALLLIMIT 8412
431#define XPRS_SERIALIZEPREINTSOL 8413
432#define XPRS_NUMERICALEMPHASIS 8416
433#define XPRS_PWLNONCONVEXTRANSFORMATION 8420
434#define XPRS_MIPCOMPONENTS 8421
435#define XPRS_MIPCONCURRENTNODES 8422
436#define XPRS_MIPCONCURRENTSOLVES 8423
437#define XPRS_OUTPUTCONTROLS 8424
438#define XPRS_SIFTSWITCH 8425
439#define XPRS_HEUREMPHASIS 8427
440#define XPRS_COMPUTEMATX 8428
441#define XPRS_COMPUTEMATX_IIS 8429
442#define XPRS_COMPUTEMATX_IISMAXTIME 8430
443#define XPRS_BARREFITER 8431
444#define XPRS_COMPUTELOG 8434
445#define XPRS_SIFTPRESOLVEOPS 8435
446#define XPRS_CHECKINPUTDATA 8436
447#define XPRS_ESCAPENAMES 8440
448#define XPRS_IOTIMEOUT 8442
449#define XPRS_AUTOCUTTING 8446
450#define XPRS_CALLBACKCHECKTIMEDELAY 8451
451#define XPRS_MULTIOBJOPS 8457
452#define XPRS_MULTIOBJLOG 8458
453#define XPRS_GLOBALSPATIALBRANCHIFPREFERORIG 8465
454#define XPRS_PRECONFIGURATION 8470
455#define XPRS_FEASIBILITYJUMP 8471
456#define XPRS_BARHGMAXRESTARTS 8484
457#define XPRS_EXTRAELEMS 8006
458#define XPRS_EXTRASETELEMS 8191
459#define XPRS_LPOBJVAL 2001
460#define XPRS_MIPOBJVAL 2003
461#define XPRS_BESTBOUND 2004
462#define XPRS_OBJRHS 2005
463#define XPRS_OBJSENSE 2008
464#define XPRS_ROWS 1001
465#define XPRS_SIMPLEXITER 1009
466#define XPRS_BARITER 5001
467#define XPRS_SOLSTATUS_NOTFOUND 0
468#define XPRS_SOLSTATUS_OPTIMAL 1
469#define XPRS_SOLSTATUS_FEASIBLE 2
470#define XPRS_SOLSTATUS_INFEASIBLE 3
471#define XPRS_SOLSTATUS_UNBOUNDED 4
472#define XPRS_SOLSTATUS 1053
473#define XPRS_LPSTATUS 1010
474#define XPRS_MIPSTATUS 1011
475#define XPRS_NODES 1013
476#define XPRS_COLS 1018
477#define XPRS_MAXPROBNAMELENGTH 1158
478#define XPRS_LP_UNSTARTED 0
479#define XPRS_LP_OPTIMAL 1
480#define XPRS_LP_INFEAS 2
481#define XPRS_LP_CUTOFF 3
482#define XPRS_LP_UNFINISHED 4
483#define XPRS_LP_UNBOUNDED 5
484#define XPRS_LP_CUTOFF_IN_DUAL 6
485#define XPRS_LP_UNSOLVED 7
486#define XPRS_LP_NONCONVEX 8
487#define XPRS_MIP_SOLUTION 4
488#define XPRS_MIP_INFEAS 5
489#define XPRS_MIP_OPTIMAL 6
490#define XPRS_MIP_UNBOUNDED 7
491#define XPRS_ALG_DUAL 2
492#define XPRS_ALG_PRIMAL 3
493#define XPRS_ALG_BARRIER 4
494#define XPRS_OBJ_MINIMIZE 1
495#define XPRS_OBJ_MAXIMIZE -1
496#define XPRS_UUID 3011
497// ***************************************************************************
498// * variable types *
499// ***************************************************************************
500#define XPRS_BINARY 'B'
501#define XPRS_INTEGER 'I'
502#define XPRS_CONTINUOUS 'C'
503// ***************************************************************************
504// * constraint types *
505// ***************************************************************************
506#define XPRS_LESS_EQUAL 'L'
507#define XPRS_GREATER_EQUAL 'G'
508#define XPRS_EQUAL 'E'
509#define XPRS_RANGE 'R'
510#define XPRS_NONBINDING 'N'
511// ***************************************************************************
512// * basis status *
513// ***************************************************************************
514#define XPRS_AT_LOWER 0
515#define XPRS_BASIC 1
516#define XPRS_AT_UPPER 2
517#define XPRS_FREE_SUPER 3
518
519// ***************************************************************************
520// * values related to Objective control *
521// ***************************************************************************
522#define XPRS_OBJECTIVE_PRIORITY 20001
523#define XPRS_OBJECTIVE_WEIGHT 20002
524#define XPRS_OBJECTIVE_ABSTOL 20003
525#define XPRS_OBJECTIVE_RELTOL 20004
526#define XPRS_OBJECTIVE_RHS 20005
527
528// Let's not reformat for rest of the file.
529// NOLINTBEGIN(whitespace/line_length)
530// clang-format off
531extern std::function<int(XPRSprob* p_prob)> XPRScreateprob;
532extern std::function<int(XPRSprob prob)> XPRSdestroyprob;
533extern std::function<int(const char* path)> XPRSinit;
534extern std::function<int(void)> XPRSfree;
535extern std::function<int(char* buffer, int maxbytes)> XPRSgetlicerrmsg;
536extern std::function<int(int* p_i, char* p_c)> XPRSlicense;
537extern std::function<int(char* banner)> XPRSgetbanner;
538extern std::function<int(char* version)> XPRSgetversion;
539extern std::function<int(int *p_major, int *p_minor, int *p_build)> XPRSgetversionnumbers;
540extern std::function<int(XPRSprob prob, const char* probname)> XPRSsetprobname;
541extern std::function<int(XPRSprob prob, int control)> XPRSsetdefaultcontrol;
542extern std::function<int(XPRSprob prob, int reason)> XPRSinterrupt;
543extern std::function<int(XPRSprob prob, int control, int value)> XPRSsetintcontrol;
544extern std::function<int(XPRSprob prob, int control, XPRSint64 value)> XPRSsetintcontrol64;
545extern std::function<int(XPRSprob prob, int control, double value)> XPRSsetdblcontrol;
546extern std::function<int(XPRSprob prob, int control, const char* value)> XPRSsetstrcontrol;
547extern std::function<int(XPRSprob prob, int objidx, int control, int value)> XPRSsetobjintcontrol;
548extern std::function<int(XPRSprob prob, int objidx, int control, double value)> XPRSsetobjdblcontrol;
549OR_DLL extern std::function<int(XPRSprob prob, int control, int* p_value)> XPRSgetintcontrol;
550OR_DLL extern std::function<int(XPRSprob prob, int control, XPRSint64* p_value)> XPRSgetintcontrol64;
551OR_DLL extern std::function<int(XPRSprob prob, int control, double* p_value)> XPRSgetdblcontrol;
552OR_DLL extern std::function<int(XPRSprob prob, int control, char* value, int maxbytes, int* p_nbytes)> XPRSgetstringcontrol;
553OR_DLL extern std::function<int(XPRSprob prob, int attrib, int* p_value)> XPRSgetintattrib;
554OR_DLL extern std::function<int(XPRSprob prob, int attrib, char* value, int maxbytes, int* p_nbytes)> XPRSgetstringattrib;
555OR_DLL extern std::function<int(XPRSprob prob, int attrib, double* p_value)> XPRSgetdblattrib;
556extern std::function<int(XPRSprob prob, int objidx, int attrib, double* p_value)> XPRSgetobjdblattrib;
557extern std::function<int(XPRSprob prob, int objidx, const double solution[], double* p_objval)> XPRScalcobjn;
558extern std::function<int(XPRSprob prob, const char* name, int* p_id, int* p_type)> XPRSgetcontrolinfo;
559OR_DLL extern std::function<int(XPRSprob prob, double objcoef[], int first, int last)> XPRSgetobj;
560OR_DLL extern std::function<int(XPRSprob prob, double rhs[], int first, int last)> XPRSgetrhs;
561OR_DLL extern std::function<int(XPRSprob prob, double rng[], int first, int last)> XPRSgetrhsrange;
562OR_DLL extern std::function<int(XPRSprob prob, double lb[], int first, int last)> XPRSgetlb;
563OR_DLL extern std::function<int(XPRSprob prob, double ub[], int first, int last)> XPRSgetub;
564OR_DLL extern std::function<int(XPRSprob prob, int row, int col, double* p_coef)> XPRSgetcoef;
565extern std::function<int(XPRSprob prob, int* status, double x[], int first, int last)> XPRSgetsolution;
566extern std::function<int(XPRSprob prob, int* status, double duals[], int first, int last)> XPRSgetduals;
567extern std::function<int(XPRSprob prob, int* status, double djs[], int first, int last)> XPRSgetredcosts;
568extern std::function<int(XPRSprob prob, int nrows, int ncoefs, const char rowtype[], const double rhs[], const double rng[], const int start[], const int colind[], const double rowcoef[])> XPRSaddrows;
569extern std::function<int(XPRSprob prob, int nrows, int ncoefs, const char rowtype[], const double rhs[], const double rng[], const XPRSint64 start[], const int colind[], const double rowcoef[])> XPRSaddrows64;
570extern std::function<int(XPRSprob prob, int nrows, const int rowind[])> XPRSdelrows;
571extern std::function<int(XPRSprob prob, int ncols, int ncoefs, const double objcoef[], const int start[], const int rowind[], const double rowcoef[], const double lb[], const double ub[])> XPRSaddcols;
572extern std::function<int(XPRSprob prob, int ncols, const int colind[], const double objcoef[], int priority, double weight)> XPRSaddobj;
573extern std::function<int(XPRSprob prob, int row, int ncoefs, const int rowqcol1[], int const rowqcol2[], const double rowqcoef[])> XPRSaddqmatrix64;
574extern std::function<int(XPRSprob prob, int type, const char names[], int first, int last)> XPRSaddnames;
575extern std::function<int(XPRSprob prob, int type, char names[], int first, int last)> XPRSgetnames;
576extern std::function<int(XPRSprob prob, int ncols, const int colind[])> XPRSdelcols;
577extern std::function<int(XPRSprob prob, int nsets, XPRSint64 nelems, const char settype[], const XPRSint64 start[], const int colind[], const double refval[])> XPRSaddsets64;
578extern std::function<int(XPRSprob prob, int ncols, const int colind[], const char coltype[])> XPRSchgcoltype;
579extern std::function<int(XPRSprob prob, const int rowstat[], const int colstat[])> XPRSloadbasis;
580extern std::function<int(XPRSprob prob)> XPRSpostsolve;
581extern std::function<int(XPRSprob prob, int objsense)> XPRSchgobjsense;
582extern std::function<int(XPRSprob prob, char* errmsg)> XPRSgetlasterror;
583extern std::function<int(XPRSprob prob, int rowstat[], int colstat[])> XPRSgetbasis;
584extern std::function<int(XPRSprob prob, const char* filename, const char* flags)> XPRSwriteprob;
585extern std::function<int(XPRSprob prob, const char* filename)> XPRSsaveas;
586OR_DLL extern std::function<int(XPRSprob prob, char rowtype[], int first, int last)> XPRSgetrowtype;
587OR_DLL extern std::function<int(XPRSprob prob, char coltype[], int first, int last)> XPRSgetcoltype;
588extern std::function<int(XPRSprob prob, int nbounds, const int colind[], const char bndtype[], const double bndval[])> XPRSchgbounds;
589extern std::function<int(XPRSprob prob, int length, const double solval[], const int colind[], const char* name)> XPRSaddmipsol;
590extern std::function<int(XPRSprob prob, int nrows, const int rowind[])> XPRSloaddelayedrows;
591extern std::function<int(XPRSprob prob, int nrows, const int rowind[], const int colind[], const int complement[])> XPRSsetindicators;
592extern std::function<int(XPRSprob prob, int ndirs, const int colind[], const int priority[], const char dir[], const double uppseudo[], const double downpseudo[])> XPRSloaddirs;
593extern std::function<int(XPRSprob prob, double x[], double slack[], double duals[], double djs[])> XPRSgetlpsol;
594extern std::function<int(XPRSprob prob, double x[], double slack[])> XPRSgetmipsol;
595extern std::function<int(XPRSprob prob, int ncols, const int colind[], const double objcoef[])> XPRSchgobj;
596extern std::function<int(XPRSprob prob, int row, int col, double coef)> XPRSchgcoef;
597extern std::function<int(XPRSprob prob, int ncoefs, const int rowind[], const int colind[], const double rowcoef[])> XPRSchgmcoef;
598extern std::function<int(XPRSprob prob, XPRSint64 ncoefs, const int rowind[], const int colind[], const double rowcoef[])> XPRSchgmcoef64;
599extern std::function<int(XPRSprob prob, int ncoefs, const int objqcol1[], const int objqcol2[], const double objqcoef[])> XPRSchgmqobj;
600extern std::function<int(XPRSprob prob, int nrows, const int rowind[], const double rhs[])> XPRSchgrhs;
601extern std::function<int(XPRSprob prob, int nrows, const int rowind[], const double rng[])> XPRSchgrhsrange;
602extern std::function<int(XPRSprob prob, int nrows, const int rowind[], const char rowtype[])> XPRSchgrowtype;
603extern std::function<int(XPRSprob prob, int objidx)> XPRSdelobj;
604extern std::function<int(XPRSprob prob, void (XPRS_CC *f_intsol)(XPRSprob cbprob, void* cbdata), void* p, int priority)> XPRSaddcbintsol;
605extern std::function<int(XPRSprob prob, void (XPRS_CC *f_intsol)(XPRSprob cbprob, void* cbdata), void* p)> XPRSremovecbintsol;
606extern std::function<int(XPRSprob prob, void (XPRS_CC *f_message)(XPRSprob cbprob, void* cbdata, const char* msg, int msglen, int msgtype), void* p, int priority)> XPRSaddcbmessage;
607extern std::function<int(XPRSprob prob, void (XPRS_CC *f_message)(XPRSprob cbprob, void* cbdata, const char* msg, int msglen, int msgtype), void* p)> XPRSremovecbmessage;
608extern std::function<int(XPRSprob prob, int (XPRS_CC *f_checktime)(XPRSprob cbprob, void* cbdata), void* p, int priority)> XPRSaddcbchecktime;
609extern std::function<int(XPRSprob prob, int (XPRS_CC *f_checktime)(XPRSprob cbprob, void* cbdata), void* p)> XPRSremovecbchecktime;
610extern std::function<int(XPRSprob prob, const char* flags)> XPRSlpoptimize;
611extern std::function<int(XPRSprob prob, const char* flags)> XPRSmipoptimize;
612extern std::function<int(XPRSprob prob, const char* flags, int* solvestatus, int* solstatus)> XPRSoptimize;
613// clang-format on
614// NOLINTEND(whitespace/line_length)
615
616} // namespace operations_research
617
618#endif // ORTOOLS_THIRD_PARTY_SOLVERS_XPRESS_ENVIRONMENT_H_
#define OR_DLL
Definition base_export.h:27
OR-Tools root namespace.
std::function< int(XPRSprob prob, int objidx)> XPRSdelobj
std::function< int(XPRSprob prob, void(XPRS_CC *f_intsol)(XPRSprob cbprob, void *cbdata), void *p, int priority)> XPRSaddcbintsol
std::function< int(XPRSprob prob, int(XPRS_CC *f_checktime)(XPRSprob cbprob, void *cbdata), void *p)> XPRSremovecbchecktime
std::function< int(XPRSprob prob, int control)> XPRSsetdefaultcontrol
std::function< int(XPRSprob prob, int nrows, const int rowind[], const char rowtype[])> XPRSchgrowtype
std::function< int(XPRSprob prob, int objidx, const double solution[], double *p_objval)> XPRScalcobjn
std::function< int(char *banner)> XPRSgetbanner
absl::Status LoadXpressDynamicLibrary(std::string &xpresspath)
std::function< int(XPRSprob prob, int(XPRS_CC *f_checktime)(XPRSprob cbprob, void *cbdata), void *p, int priority)> XPRSaddcbchecktime
std::function< int(XPRSprob prob, int nrows, const int rowind[])> XPRSloaddelayedrows
std::function< int(XPRSprob prob, char rowtype[], int first, int last)> XPRSgetrowtype
std::function< int(XPRSprob prob, int attrib, int *p_value)> XPRSgetintattrib
std::function< int(XPRSprob prob, int ndirs, const int colind[], const int priority[], const char dir[], const double uppseudo[], const double downpseudo[])> XPRSloaddirs
std::function< int(XPRSprob prob, int ncoefs, const int objqcol1[], const int objqcol2[], const double objqcoef[])> XPRSchgmqobj
std::function< int(XPRSprob prob, void(XPRS_CC *f_message)(XPRSprob cbprob, void *cbdata, const char *msg, int msglen, int msgtype), void *p)> XPRSremovecbmessage
std::function< int(XPRSprob prob, char coltype[], int first, int last)> XPRSgetcoltype
std::function< int(XPRSprob prob, int attrib, double *p_value)> XPRSgetdblattrib
std::function< int(XPRSprob prob, int *status, double djs[], int first, int last)> XPRSgetredcosts
std::function< int(XPRSprob prob, const char *filename, const char *flags)> XPRSwriteprob
std::function< int(XPRSprob prob, void(XPRS_CC *f_message)(XPRSprob cbprob, void *cbdata, const char *msg, int msglen, int msgtype), void *p, int priority)> XPRSaddcbmessage
std::function< int(XPRSprob prob, double rhs[], int first, int last)> XPRSgetrhs
Select next search node to expand Select next item_i to add this new search node to the search Generate a new search node where item_i is not in the knapsack Check validity of this new partial solution(using propagators) - If valid
bool initXpressEnv(bool verbose, int xpress_oem_license_key)
init XPRESS environment.
std::function< int(XPRSprob prob, int length, const double solval[], const int colind[], const char *name)> XPRSaddmipsol
std::function< int(XPRSprob prob, double x[], double slack[])> XPRSgetmipsol
std::function< int(XPRSprob prob, int nbounds, const int colind[], const char bndtype[], const double bndval[])> XPRSchgbounds
std::function< int(XPRSprob prob, int row, int col, double *p_coef)> XPRSgetcoef
std::function< int(XPRSprob prob, const int rowstat[], const int colstat[])> XPRSloadbasis
std::function< int(XPRSprob prob, int row, int col, double coef)> XPRSchgcoef
std::function< int(XPRSprob prob, int nrows, const int rowind[])> XPRSdelrows
std::function< int(XPRSprob prob, int type, char names[], int first, int last)> XPRSgetnames
std::function< int(XPRSprob prob, int ncols, const int colind[])> XPRSdelcols
std::function< int(XPRSprob prob, int control, double *p_value)> XPRSgetdblcontrol
std::function< int(XPRSprob prob, int objidx, int control, int value)> XPRSsetobjintcontrol
std::function< int(XPRSprob prob, double lb[], int first, int last)> XPRSgetlb
std::function< int(XPRSprob prob, const char *flags, int *solvestatus, int *solstatus)> XPRSoptimize
std::function< int(XPRSprob prob, int control, int *p_value)> XPRSgetintcontrol
std::function< int(XPRSprob prob, void(XPRS_CC *f_intsol)(XPRSprob cbprob, void *cbdata), void *p)> XPRSremovecbintsol
std::function< int(XPRSprob prob, int ncols, const int colind[], const char coltype[])> XPRSchgcoltype
std::function< int(XPRSprob prob, int nrows, const int rowind[], const int colind[], const int complement[])> XPRSsetindicators
std::function< int(char *version)> XPRSgetversion
std::function< int(XPRSprob prob, const char *name, int *p_id, int *p_type)> XPRSgetcontrolinfo
std::function< int(XPRSprob prob, double x[], double slack[], double duals[], double djs[])> XPRSgetlpsol
std::function< int(XPRSprob prob, int control, XPRSint64 *p_value)> XPRSgetintcontrol64
std::function< int(XPRSprob prob)> XPRSpostsolve
std::function< int(XPRSprob prob, double objcoef[], int first, int last)> XPRSgetobj
std::function< int(XPRSprob prob, int nrows, const int rowind[], const double rng[])> XPRSchgrhsrange
std::function< int(XPRSprob prob, int type, const char names[], int first, int last)> XPRSaddnames
std::function< int(XPRSprob prob, int ncoefs, const int rowind[], const int colind[], const double rowcoef[])> XPRSchgmcoef
std::function< int(void)> XPRSfree
std::function< int(XPRSprob prob, int reason)> XPRSinterrupt
std::function< int(char *buffer, int maxbytes)> XPRSgetlicerrmsg
std::function< int(XPRSprob prob, const char *filename)> XPRSsaveas
std::function< int(XPRSprob prob, int nsets, XPRSint64 nelems, const char settype[], const XPRSint64 start[], const int colind[], const double refval[])> XPRSaddsets64
std::function< int(XPRSprob prob, int control, int value)> XPRSsetintcontrol
std::function< int(XPRSprob prob, int nrows, int ncoefs, const char rowtype[], const double rhs[], const double rng[], const int start[], const int colind[], const double rowcoef[])> XPRSaddrows
std::function< int(XPRSprob prob, char *errmsg)> XPRSgetlasterror
std::function< int(XPRSprob prob, int attrib, char *value, int maxbytes, int *p_nbytes)> XPRSgetstringattrib
std::function< int(XPRSprob prob)> XPRSdestroyprob
std::function< int(XPRSprob prob, int control, double value)> XPRSsetdblcontrol
std::function< int(XPRSprob prob, XPRSint64 ncoefs, const int rowind[], const int colind[], const double rowcoef[])> XPRSchgmcoef64
std::function< int(XPRSprob prob, int *status, double x[], int first, int last)> XPRSgetsolution
std::function< int(XPRSprob prob, double rng[], int first, int last)> XPRSgetrhsrange
std::function< int(XPRSprob prob, double ub[], int first, int last)> XPRSgetub
void printXpressBanner(bool error)
std::function< int(int *p_major, int *p_minor, int *p_build)> XPRSgetversionnumbers
std::function< int(int *p_i, char *p_c)> XPRSlicense
std::function< int(XPRSprob prob, int control, const char *value)> XPRSsetstrcontrol
std::function< int(XPRSprob prob, int ncols, int ncoefs, const double objcoef[], const int start[], const int rowind[], const double rowcoef[], const double lb[], const double ub[])> XPRSaddcols
std::function< int(XPRSprob prob, int control, char *value, int maxbytes, int *p_nbytes)> XPRSgetstringcontrol
std::function< int(XPRSprob prob, int row, int ncoefs, const int rowqcol1[], int const rowqcol2[], const double rowqcoef[])> XPRSaddqmatrix64
std::function< int(XPRSprob prob, int ncols, const int colind[], const double objcoef[], int priority, double weight)> XPRSaddobj
std::function< int(XPRSprob prob, const char *flags)> XPRSmipoptimize
std::function< int(XPRSprob prob, int nrows, int ncoefs, const char rowtype[], const double rhs[], const double rng[], const XPRSint64 start[], const int colind[], const double rowcoef[])> XPRSaddrows64
std::function< int(XPRSprob prob, int nrows, const int rowind[], const double rhs[])> XPRSchgrhs
std::function< int(XPRSprob prob, int objidx, int attrib, double *p_value)> XPRSgetobjdblattrib
std::function< int(XPRSprob prob, int objidx, int control, double value)> XPRSsetobjdblcontrol
std::function< int(XPRSprob prob, int ncols, const int colind[], const double objcoef[])> XPRSchgobj
std::function< int(XPRSprob prob, int *status, double duals[], int first, int last)> XPRSgetduals
std::function< int(XPRSprob *p_prob)> XPRScreateprob
std::function< int(XPRSprob prob, const char *flags)> XPRSlpoptimize
std::function< int(XPRSprob prob, int control, XPRSint64 value)> XPRSsetintcontrol64
std::function< int(XPRSprob prob, int objsense)> XPRSchgobjsense
std::function< int(const char *path)> XPRSinit
std::function< int(XPRSprob prob, const char *probname)> XPRSsetprobname
std::function< int(XPRSprob prob, int rowstat[], int colstat[])> XPRSgetbasis
#define XPRSint64
struct xo_prob_struct * XPRSprob
#define XPRS_CC