Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
environment.h
1
2// This this file is an adaptation of OR-Tools for Antares-Xpansion needs
3// see orginal at https://github.com/google/or-tools
4// Copyright 2010-2021 Google LLC
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16#pragma once
17#include <functional>
18
19#include "antares-xpansion/xpansion_interfaces/ILogger.h"
20#include "dynamic_library.h"
21extern "C"
22{
23typedef struct xo_prob_struct* XPRSprob;
24}
25
26namespace LoadXpress
27{
28
34{
35public:
39 explicit XpressLoader(
40 std::shared_ptr<ILoggerXpansion> logger = std::make_shared<EmptyLogger>());
44 bool initXpressEnv(bool verbose = false, int xpress_oem_license_key = 0);
45
50 bool XpressIsCorrectlyInstalled(bool verbose = false);
51
52private:
53 // clang-format off
54// Force the loading of the xpress dynamic library. It returns true if the
55// library was successfully loaded. This method can only be called once.
56// Successive calls are no-op.
57//
58// Note that it does not check if a token license can be grabbed.
59 bool LoadXpressDynamicLibrary(std::string &xpresspath);
60 void printXpressBanner();
61 std::shared_ptr<ILoggerXpansion> logger_;
62 std::vector<std::string> XpressDynamicLibraryPotentialPaths();
63 std::string GetXpressVarFromEnvironmentVariables(const char* XPRESS_var,
64 bool verbose = true);
65 bool LoadXpressFunctions(Solver::DynamicLibrary* xpress_dynamic_library);
66 int loadLicence(const std::string& lib_path, bool verbose);
67};
68
69// The list of #define and extern std::function<> below is generated directly
70// from xprs.h via parse_header_xpress.py
71// See the top comment on the parse_header_xpress.py file.
72// This is the header section
73#if defined(_WIN32)
74#define XPRSint64 __int64
75#elif defined(__LP64__) || defined(_LP64) || defined(__ILP64__) || defined(_ILP64)
76#define XPRSint64 long
77#else
78#define XPRSint64 long long
79#endif
80
81#if defined(_MSC_VER)
82#define XPRS_CC __stdcall
83#else
84#define XPRS_CC
85#endif
86#define XPRS_PLUSINFINITY 1.0e+20
87#define XPRS_MINUSINFINITY -1.0e+20
88#define XPRS_MAXBANNERLENGTH 512
89#define XPVERSION 41
90#define XPRS_MPSRHSNAME 6001
91#define XPRS_MPSOBJNAME 6002
92#define XPRS_MPSRANGENAME 6003
93#define XPRS_MPSBOUNDNAME 6004
94#define XPRS_OUTPUTMASK 6005
95#define XPRS_TUNERMETHODFILE 6017
96#define XPRS_TUNEROUTPUTPATH 6018
97#define XPRS_TUNERSESSIONNAME 6019
98#define XPRS_COMPUTEEXECSERVICE 6022
99#define XPRS_MAXCUTTIME 8149
100#define XPRS_MAXSTALLTIME 8443
101#define XPRS_TUNERMAXTIME 8364
102#define XPRS_MATRIXTOL 7001
103#define XPRS_PIVOTTOL 7002
104#define XPRS_FEASTOL 7003
105#define XPRS_OUTPUTTOL 7004
106#define XPRS_SOSREFTOL 7005
107#define XPRS_OPTIMALITYTOL 7006
108#define XPRS_ETATOL 7007
109#define XPRS_RELPIVOTTOL 7008
110#define XPRS_MIPTOL 7009
111#define XPRS_MIPTOLTARGET 7010
112#define XPRS_BARPERTURB 7011
113#define XPRS_MIPADDCUTOFF 7012
114#define XPRS_MIPABSCUTOFF 7013
115#define XPRS_MIPRELCUTOFF 7014
116#define XPRS_PSEUDOCOST 7015
117#define XPRS_PENALTY 7016
118#define XPRS_BIGM 7018
119#define XPRS_MIPABSSTOP 7019
120#define XPRS_MIPRELSTOP 7020
121#define XPRS_CROSSOVERACCURACYTOL 7023
122#define XPRS_PRIMALPERTURB 7024
123#define XPRS_DUALPERTURB 7025
124#define XPRS_BAROBJSCALE 7026
125#define XPRS_BARRHSSCALE 7027
126#define XPRS_CHOLESKYTOL 7032
127#define XPRS_BARGAPSTOP 7033
128#define XPRS_BARDUALSTOP 7034
129#define XPRS_BARPRIMALSTOP 7035
130#define XPRS_BARSTEPSTOP 7036
131#define XPRS_ELIMTOL 7042
132#define XPRS_MARKOWITZTOL 7047
133#define XPRS_MIPABSGAPNOTIFY 7064
134#define XPRS_MIPRELGAPNOTIFY 7065
135#define XPRS_BARLARGEBOUND 7067
136#define XPRS_PPFACTOR 7069
137#define XPRS_REPAIRINDEFINITEQMAX 7071
138#define XPRS_BARGAPTARGET 7073
139#define XPRS_DUMMYCONTROL 7075
140#define XPRS_BARSTARTWEIGHT 7076
141#define XPRS_BARFREESCALE 7077
142#define XPRS_SBEFFORT 7086
143#define XPRS_HEURDIVERANDOMIZE 7089
144#define XPRS_HEURSEARCHEFFORT 7090
145#define XPRS_CUTFACTOR 7091
146#define XPRS_EIGENVALUETOL 7097
147#define XPRS_INDLINBIGM 7099
148#define XPRS_TREEMEMORYSAVINGTARGET 7100
149#define XPRS_INDPRELINBIGM 7102
150#define XPRS_RELAXTREEMEMORYLIMIT 7105
151#define XPRS_MIPABSGAPNOTIFYOBJ 7108
152#define XPRS_MIPABSGAPNOTIFYBOUND 7109
153#define XPRS_PRESOLVEMAXGROW 7110
154#define XPRS_HEURSEARCHTARGETSIZE 7112
155#define XPRS_CROSSOVERRELPIVOTTOL 7113
156#define XPRS_CROSSOVERRELPIVOTTOLSAFE 7114
157#define XPRS_DETLOGFREQ 7116
158#define XPRS_MAXIMPLIEDBOUND 7120
159#define XPRS_FEASTOLTARGET 7121
160#define XPRS_OPTIMALITYTOLTARGET 7122
161#define XPRS_PRECOMPONENTSEFFORT 7124
162#define XPRS_LPLOGDELAY 7127
163#define XPRS_HEURDIVEITERLIMIT 7128
164#define XPRS_BARKERNEL 7130
165#define XPRS_FEASTOLPERTURB 7132
166#define XPRS_CROSSOVERFEASWEIGHT 7133
167#define XPRS_LUPIVOTTOL 7139
168#define XPRS_MIPRESTARTGAPTHRESHOLD 7140
169#define XPRS_NODEPROBINGEFFORT 7141
170#define XPRS_INPUTTOL 7143
171#define XPRS_MIPRESTARTFACTOR 7145
172#define XPRS_BAROBJPERTURB 7146
173#define XPRS_CPIALPHA 7149
174#define XPRS_GLOBALBOUNDINGBOX 7154
175#define XPRS_TIMELIMIT 7158
176#define XPRS_SOLTIMELIMIT 7159
177#define XPRS_REPAIRINFEASTIMELIMIT 7160
178#define XPRS_EXTRAROWS 8004
179#define XPRS_EXTRACOLS 8005
180#define XPRS_LPITERLIMIT 8007
181#define XPRS_LPLOG 8009
182#define XPRS_SCALING 8010
183#define XPRS_PRESOLVE 8011
184#define XPRS_CRASH 8012
185#define XPRS_PRICINGALG 8013
186#define XPRS_INVERTFREQ 8014
187#define XPRS_INVERTMIN 8015
188#define XPRS_MAXNODE 8018
189#define XPRS_MAXTIME 8020
190#define XPRS_MAXMIPSOL 8021
191#define XPRS_SIFTPASSES 8022
192#define XPRS_DEFAULTALG 8023
193#define XPRS_VARSELECTION 8025
194#define XPRS_NODESELECTION 8026
195#define XPRS_BACKTRACK 8027
196#define XPRS_MIPLOG 8028
197#define XPRS_KEEPNROWS 8030
198#define XPRS_MPSECHO 8032
199#define XPRS_MAXPAGELINES 8034
200#define XPRS_OUTPUTLOG 8035
201#define XPRS_BARSOLUTION 8038
202#define XPRS_CACHESIZE 8043
203#define XPRS_CROSSOVER 8044
204#define XPRS_BARITERLIMIT 8045
205#define XPRS_CHOLESKYALG 8046
206#define XPRS_BAROUTPUT 8047
207#define XPRS_EXTRAMIPENTS 8051
208#define XPRS_REFACTOR 8052
209#define XPRS_BARTHREADS 8053
210#define XPRS_KEEPBASIS 8054
211#define XPRS_CROSSOVEROPS 8060
212#define XPRS_VERSION 8061
213#define XPRS_CROSSOVERTHREADS 8065
214#define XPRS_BIGMMETHOD 8068
215#define XPRS_MPSNAMELENGTH 8071
216#define XPRS_ELIMFILLIN 8073
217#define XPRS_PRESOLVEOPS 8077
218#define XPRS_MIPPRESOLVE 8078
219#define XPRS_MIPTHREADS 8079
220#define XPRS_BARORDER 8080
221#define XPRS_BREADTHFIRST 8082
222#define XPRS_AUTOPERTURB 8084
223#define XPRS_DENSECOLLIMIT 8086
224#define XPRS_CALLBACKFROMMASTERTHREAD 8090
225#define XPRS_MAXMCOEFFBUFFERELEMS 8091
226#define XPRS_REFINEOPS 8093
227#define XPRS_LPREFINEITERLIMIT 8094
228#define XPRS_MIPREFINEITERLIMIT 8095
229#define XPRS_DUALIZEOPS 8097
230#define XPRS_CROSSOVERITERLIMIT 8104
231#define XPRS_PREBASISRED 8106
232#define XPRS_PRESORT 8107
233#define XPRS_PREPERMUTE 8108
234#define XPRS_PREPERMUTESEED 8109
235#define XPRS_MAXMEMORYSOFT 8112
236#define XPRS_CUTFREQ 8116
237#define XPRS_SYMSELECT 8117
238#define XPRS_SYMMETRY 8118
239#define XPRS_MAXMEMORYHARD 8119
240#define XPRS_MIQCPALG 8125
241#define XPRS_QCCUTS 8126
242#define XPRS_QCROOTALG 8127
243#define XPRS_PRECONVERTSEPARABLE 8128
244#define XPRS_ALGAFTERNETWORK 8129
245#define XPRS_TRACE 8130
246#define XPRS_MAXIIS 8131
247#define XPRS_CPUTIME 8133
248#define XPRS_COVERCUTS 8134
249#define XPRS_GOMCUTS 8135
250#define XPRS_LPFOLDING 8136
251#define XPRS_MPSFORMAT 8137
252#define XPRS_CUTSTRATEGY 8138
253#define XPRS_CUTDEPTH 8139
254#define XPRS_TREECOVERCUTS 8140
255#define XPRS_TREEGOMCUTS 8141
256#define XPRS_CUTSELECT 8142
257#define XPRS_TREECUTSELECT 8143
258#define XPRS_DUALIZE 8144
259#define XPRS_DUALGRADIENT 8145
260#define XPRS_SBITERLIMIT 8146
261#define XPRS_SBBEST 8147
262#define XPRS_BARINDEFLIMIT 8153
263#define XPRS_HEURFREQ 8155
264#define XPRS_HEURDEPTH 8156
265#define XPRS_HEURMAXSOL 8157
266#define XPRS_HEURNODES 8158
267#define XPRS_LNPBEST 8160
268#define XPRS_LNPITERLIMIT 8161
269#define XPRS_BRANCHCHOICE 8162
270#define XPRS_BARREGULARIZE 8163
271#define XPRS_SBSELECT 8164
272#define XPRS_LOCALCHOICE 8170
273#define XPRS_LOCALBACKTRACK 8171
274#define XPRS_DUALSTRATEGY 8174
275#define XPRS_L1CACHE 8175
276#define XPRS_HEURDIVESTRATEGY 8177
277#define XPRS_HEURSELECT 8178
278#define XPRS_BARSTART 8180
279#define XPRS_PRESOLVEPASSES 8183
280#define XPRS_BARNUMSTABILITY 8186
281#define XPRS_BARORDERTHREADS 8187
282#define XPRS_EXTRASETS 8190
283#define XPRS_FEASIBILITYPUMP 8193
284#define XPRS_PRECOEFELIM 8194
285#define XPRS_PREDOMCOL 8195
286#define XPRS_HEURSEARCHFREQ 8196
287#define XPRS_HEURDIVESPEEDUP 8197
288#define XPRS_SBESTIMATE 8198
289#define XPRS_BARCORES 8202
290#define XPRS_MAXCHECKSONMAXTIME 8203
291#define XPRS_MAXCHECKSONMAXCUTTIME 8204
292#define XPRS_HISTORYCOSTS 8206
293#define XPRS_ALGAFTERCROSSOVER 8208
294#define XPRS_MUTEXCALLBACKS 8210
295#define XPRS_BARCRASH 8211
296#define XPRS_HEURDIVESOFTROUNDING 8215
297#define XPRS_HEURSEARCHROOTSELECT 8216
298#define XPRS_HEURSEARCHTREESELECT 8217
299#define XPRS_MPS18COMPATIBLE 8223
300#define XPRS_ROOTPRESOLVE 8224
301#define XPRS_CROSSOVERDRP 8227
302#define XPRS_FORCEOUTPUT 8229
303#define XPRS_PRIMALOPS 8231
304#define XPRS_DETERMINISTIC 8232
305#define XPRS_PREPROBING 8238
306#define XPRS_TREEMEMORYLIMIT 8242
307#define XPRS_TREECOMPRESSION 8243
308#define XPRS_TREEDIAGNOSTICS 8244
309#define XPRS_MAXTREEFILESIZE 8245
310#define XPRS_PRECLIQUESTRATEGY 8247
311#define XPRS_REPAIRINFEASMAXTIME 8250
312#define XPRS_IFCHECKCONVEXITY 8251
313#define XPRS_PRIMALUNSHIFT 8252
314#define XPRS_REPAIRINDEFINITEQ 8254
315#define XPRS_MIPRAMPUP 8255
316#define XPRS_MAXLOCALBACKTRACK 8257
317#define XPRS_USERSOLHEURISTIC 8258
318#define XPRS_FORCEPARALLELDUAL 8265
319#define XPRS_BACKTRACKTIE 8266
320#define XPRS_BRANCHDISJ 8267
321#define XPRS_MIPFRACREDUCE 8270
322#define XPRS_CONCURRENTTHREADS 8274
323#define XPRS_MAXSCALEFACTOR 8275
324#define XPRS_HEURTHREADS 8276
325#define XPRS_THREADS 8278
326#define XPRS_HEURBEFORELP 8280
327#define XPRS_PREDOMROW 8281
328#define XPRS_BRANCHSTRUCTURAL 8282
329#define XPRS_QUADRATICUNSHIFT 8284
330#define XPRS_BARPRESOLVEOPS 8286
331#define XPRS_QSIMPLEXOPS 8288
332#define XPRS_MIPRESTART 8290
333#define XPRS_CONFLICTCUTS 8292
334#define XPRS_PREPROTECTDUAL 8293
335#define XPRS_CORESPERCPU 8296
336#define XPRS_RESOURCESTRATEGY 8297
337#define XPRS_CLAMPING 8301
338#define XPRS_SLEEPONTHREADWAIT 8302
339#define XPRS_PREDUPROW 8307
340#define XPRS_CPUPLATFORM 8312
341#define XPRS_BARALG 8315
342#define XPRS_SIFTING 8319
343#define XPRS_LPLOGSTYLE 8326
344#define XPRS_RANDOMSEED 8328
345#define XPRS_TREEQCCUTS 8331
346#define XPRS_PRELINDEP 8333
347#define XPRS_DUALTHREADS 8334
348#define XPRS_PREOBJCUTDETECT 8336
349#define XPRS_PREBNDREDQUAD 8337
350#define XPRS_PREBNDREDCONE 8338
351#define XPRS_PRECOMPONENTS 8339
352#define XPRS_MAXMIPTASKS 8347
353#define XPRS_MIPTERMINATIONMETHOD 8348
354#define XPRS_PRECONEDECOMP 8349
355#define XPRS_HEURFORCESPECIALOBJ 8350
356#define XPRS_HEURSEARCHROOTCUTFREQ 8351
357#define XPRS_PREELIMQUAD 8353
358#define XPRS_PREIMPLICATIONS 8356
359#define XPRS_TUNERMODE 8359
360#define XPRS_TUNERMETHOD 8360
361#define XPRS_TUNERTARGET 8362
362#define XPRS_TUNERTHREADS 8363
363#define XPRS_TUNERHISTORY 8365
364#define XPRS_TUNERPERMUTE 8366
365#define XPRS_TUNERVERBOSE 8370
366#define XPRS_TUNEROUTPUT 8372
367#define XPRS_PREANALYTICCENTER 8374
368#define XPRS_NETCUTS 8382
369#define XPRS_LPFLAGS 8385
370#define XPRS_MIPKAPPAFREQ 8386
371#define XPRS_OBJSCALEFACTOR 8387
372#define XPRS_TREEFILELOGINTERVAL 8389
373#define XPRS_IGNORECONTAINERCPULIMIT 8390
374#define XPRS_IGNORECONTAINERMEMORYLIMIT 8391
375#define XPRS_MIPDUALREDUCTIONS 8392
376#define XPRS_GENCONSDUALREDUCTIONS 8395
377#define XPRS_PWLDUALREDUCTIONS 8396
378#define XPRS_BARFAILITERLIMIT 8398
379#define XPRS_AUTOSCALING 8406
380#define XPRS_GENCONSABSTRANSFORMATION 8408
381#define XPRS_COMPUTEJOBPRIORITY 8409
382#define XPRS_PREFOLDING 8410
383#define XPRS_NETSTALLLIMIT 8412
384#define XPRS_SERIALIZEPREINTSOL 8413
385#define XPRS_NUMERICALEMPHASIS 8416
386#define XPRS_PWLNONCONVEXTRANSFORMATION 8420
387#define XPRS_MIPCOMPONENTS 8421
388#define XPRS_MIPCONCURRENTNODES 8422
389#define XPRS_MIPCONCURRENTSOLVES 8423
390#define XPRS_OUTPUTCONTROLS 8424
391#define XPRS_SIFTSWITCH 8425
392#define XPRS_HEUREMPHASIS 8427
393#define XPRS_COMPUTEMATX 8428
394#define XPRS_COMPUTEMATX_IIS 8429
395#define XPRS_COMPUTEMATX_IISMAXTIME 8430
396#define XPRS_BARREFITER 8431
397#define XPRS_COMPUTELOG 8434
398#define XPRS_SIFTPRESOLVEOPS 8435
399#define XPRS_CHECKINPUTDATA 8436
400#define XPRS_ESCAPENAMES 8440
401#define XPRS_IOTIMEOUT 8442
402#define XPRS_AUTOCUTTING 8446
403#define XPRS_CALLBACKCHECKTIMEDELAY 8451
404#define XPRS_MULTIOBJOPS 8457
405#define XPRS_MULTIOBJLOG 8458
406#define XPRS_GLOBALSPATIALBRANCHIFPREFERORIG 8465
407#define XPRS_PRECONFIGURATION 8470
408#define XPRS_FEASIBILITYJUMP 8471
409#define XPRS_EXTRAELEMS 8006
410#define XPRS_EXTRASETELEMS 8191
411#define XPRS_LPOBJVAL 2001
412#define XPRS_MIPOBJVAL 2003
413#define XPRS_BESTBOUND 2004
414#define XPRS_OBJRHS 2005
415#define XPRS_OBJSENSE 2008
416#define XPRS_ROWS 1001
417#define XPRS_SIMPLEXITER 1009
418#define XPRS_LPSTATUS 1010
419#define XPRS_MIPSTATUS 1011
420#define XPRS_NODES 1013
421#define XPRS_COLS 1018
422#define XPRS_LP_OPTIMAL 1
423#define XPRS_LP_INFEAS 2
424#define XPRS_LP_UNBOUNDED 5
425#define XPRS_MIP_SOLUTION 4
426#define XPRS_MIP_INFEAS 5
427#define XPRS_MIP_OPTIMAL 6
428#define XPRS_MIP_UNBOUNDED 7
429#define XPRS_OBJ_MINIMIZE 1
430#define XPRS_OBJ_MAXIMIZE -1
431
432#define XPRS_ELEMS 1006
433#define XPRS_MIPENTS 1032
434#define XPRS_NAMELENGTH 1028
435#define XPRS_OUTPUTLOG_FULL_OUTPUT 1
436#define XPRS_ERRORCODE 1023
437#define XPRS_OUTPUTLOG_NO_OUTPUT 0
438
439extern std::function<int(const char* path)> XPRSinit;
440extern std::function<int(XPRSprob* p_prob)> XPRScreateprob;
441extern std::function<int(XPRSprob dest, XPRSprob src, const char* name)> XPRScopyprob;
442extern std::function<int(XPRSprob prob, const char* filename, const char* flags)> XPRSwritebasis;
443extern std::function<int(XPRSprob prob, const char* filename, const char* flags)> XPRSreadprob;
444extern std::function<int(XPRSprob prob, int nr, int nc, const int mrow[], const int mcol[])> XPRSloadsecurevecs;
445extern std::function<int(XPRSprob prob, const char* msg)> XPRSgetlasterror;
446extern std::function<int(XPRSprob prob, const char* filename)> XPRSsaveas;
447extern std::function<int(XPRSprob prob, const char* filename, const char* flags)> XPRSrestore;
448extern std::function<int(XPRSprob prob, const char* filename, const char* flags)> XPRSreadbasis;
449extern std::function<int(XPRSprob prob, int start[], int colind[], double colcoef[], int maxcoefs, int* p_ncoefs, int first, int last)> XPRSgetrows;
450extern std::function<int(XPRSprob prob, int type, const char* name, int* p_index)> XPRSgetindex;
451extern std::function<int(XPRSprob prob, int type, char names[], int first, int last)> XPRSgetnames;
452extern std::function<int(XPRSprob prob, int type, const char names[], int first, int last)> XPRSaddnames;
453extern std::function<int(XPRSprob prob, const char* flags)> XPRSlpoptimize;
454extern std::function<int(XPRSprob prob, const char* flags)> XPRSmipoptimize;
455extern std::function<int(void)> XPRSfree;
456extern std::function<int(XPRSprob prob, const char* probname, int ncols, int nrows, const char rowtype[], const double rhs[], const double rng[], const double objcoef[], const int start[], const int collen[], const int rowind[], const double rowcoef[], const double lb[], const double ub[])> XPRSloadlp;
457extern std::function<int(XPRSprob prob)> XPRSdestroyprob;
458extern std::function<int(XPRSprob prob, const char* filename, const char* flags)> XPRSwriteprob;
459extern std::function<int(XPRSprob prob, int control, int* p_value)> XPRSgetintcontrol;
460extern std::function<int(XPRSprob prob, int attrib, int* p_value)> XPRSgetintattrib;
461extern std::function<int(XPRSprob prob, double objcoef[], int first, int last)> XPRSgetobj;
462extern std::function<int(XPRSprob prob, char rowtype[], int first, int last)> XPRSgetrowtype;
463extern std::function<int(XPRSprob prob, double rhs[], int first, int last)> XPRSgetrhs;
464extern std::function<int(XPRSprob prob, double rng[], int first, int last)> XPRSgetrhsrange;
465extern std::function<int(XPRSprob prob, char coltype[], int first, int last)> XPRSgetcoltype;
466extern std::function<int(XPRSprob prob, double lb[], int first, int last)> XPRSgetlb;
467extern std::function<int(XPRSprob prob, double ub[], int first, int last)> XPRSgetub;
468extern std::function<int(XPRSprob prob, int nrows, const int rowind[])> XPRSdelrows;
469extern 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;
470extern 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;
471extern std::function<int(XPRSprob prob, int ncols, const int colind[], const double objcoef[])> XPRSchgobj;
472extern std::function<int(XPRSprob prob, int objsense)> XPRSchgobjsense;
473extern std::function<int(XPRSprob prob, int nbounds, const int colind[], const char bndtype[], const double bndval[])> XPRSchgbounds;
474extern std::function<int(XPRSprob prob, int ncols, const int colind[], const char coltype[])> XPRSchgcoltype;
475extern std::function<int(XPRSprob prob, int nrows, const int rowind[], const double rhs[])> XPRSchgrhs;
476extern std::function<int(XPRSprob prob, int row, int col, double coef)> XPRSchgcoef;
477extern std::function<int(XPRSprob prob, int rowstat[], int colstat[])> XPRSgetbasis;
478extern std::function<int(XPRSprob prob, int attrib, double* p_value)> XPRSgetdblattrib;
479extern std::function<int(XPRSprob prob, double x[], double slack[], double duals[], double djs[])> XPRSgetlpsol;
480extern std::function<int(XPRSprob prob, double x[], double slack[])> XPRSgetmipsol;
481extern std::function<int(XPRSprob prob, void (XPRS_CC *f_message)(XPRSprob cbprob, void* cbdata, const char* msg, int msglen, int msgtype), void* p)> XPRSsetcbmessage;
482extern std::function<int(XPRSprob prob, int control, int value)> XPRSsetintcontrol;
483extern std::function<int(XPRSprob prob, int control, double value)> XPRSsetdblcontrol;
484extern std::function<int(char* banner)> XPRSgetbanner;
485
486extern std::function<int(char* buffer, int maxbytes)> XPRSgetlicerrmsg;
487extern std::function<int(int* p_i, char* p_c)> XPRSlicense;
488extern std::function<int(char* version)> XPRSgetversion;
489
490
491} // namespace LoadXpress
492
This class is the entry point to load xpress in runtime.
Definition environment.h:34
bool initXpressEnv(bool verbose=false, int xpress_oem_license_key=0)
intialiaze xpress env : load libs and check the licence
Definition environment.cc:436
bool XpressIsCorrectlyInstalled(bool verbose=false)
return true is Xpress is correctly installed (libs and licence found)
Definition environment.cc:560
XpressLoader(std::shared_ptr< ILoggerXpansion > logger=std::make_shared< EmptyLogger >())
Definition environment.cc:156
Definition dynamic_library.h:32