Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

exact LP interface for SoPlex

Author
Leon Eifler

This is an implementation of SCIP's LP interface for SoPlex.

For debugging purposes, the SoPlex results can be double checked with CPLEX if WITH_LPSCHECK is defined. This may yield false positives, since the LP is dumped to a file for transferring it to CPLEX, hence, precision may be lost.

Definition in file lpiexact_spx.cpp.

#include "scip/def.h"
#include "blockmemshell/memory.h"
#include "scip/type_retcode.h"
#include "lpiexact/type_lpiexact.h"
#include "lpiexact/lpiexact.h"
#include "scip/rational.h"
#include "scip/rationalgmp.h"
#include "soplex.h"
#include "spxgithash.h"
#include "scip/pub_message.h"
#include "scip/struct_rational.h"
#include <cassert>
#include "scip/bitencode.h"

Go to the source code of this file.

Data Structures

class  SPxexSCIP
 
struct  SCIP_LPiExact
 
struct  SCIP_LPiState
 

Macros

#define CHECK_SOPLEX_PARAM(x)
 
#define SOPLEX_SUBVERSION   0
 
#define SOPLEX_APIVERSION   0
 
#define SOPLEX_VERBLEVEL   5
 
#define NULL   0
 
#define SOPLEX_TRY(messagehdlr, x)
 
#define SOPLEX_TRY_ABORT(x)
 
#define COLS_PER_PACKET   SCIP_DUALPACKETSIZE
 
#define ROWS_PER_PACKET   SCIP_DUALPACKETSIZE
 

Typedefs

typedef SCIP_DUALPACKET COLPACKET
 
typedef SCIP_DUALPACKET ROWPACKET
 

Functions

static void RsetSpxR (SCIP_LPIEXACT *lpi, SCIP_RATIONAL *r, const soplex::Rational &spxr)
 
static void RsetSpxVector (SCIP_LPIEXACT *lpi, SCIP_RATIONAL **r, VectorRational src)
 
static void SpxRSetRat (SCIP_LPIEXACT *lpi, soplex::Rational &spxr, SCIP_RATIONAL *src)
 
static SCIP_RETCODE ensureCstatMem (SCIP_LPIEXACT *lpi, int num)
 
static SCIP_RETCODE ensureRstatMem (SCIP_LPIEXACT *lpi, int num)
 
static int colpacketNum (int ncols)
 
static int rowpacketNum (int nrows)
 
static void lpistatePack (SCIP_LPISTATE *lpistate, const int *cstat, const int *rstat)
 
static void lpistateUnpack (const SCIP_LPISTATE *lpistate, int *cstat, int *rstat)
 
static SCIP_RETCODE lpistateCreate (SCIP_LPISTATE **lpistate, BMS_BLKMEM *blkmem, int ncols, int nrows)
 
static void lpistateFree (SCIP_LPISTATE **lpistate, BMS_BLKMEM *blkmem)
 
static void invalidateSolution (SCIP_LPIEXACT *lpi)
 
Miscellaneous Methods
const char * SCIPlpiExactGetSolverName (void)
 
const char * SCIPlpiExactGetSolverDesc (void)
 
void * SCIPlpiExactGetSolverPointer (SCIP_LPIEXACT *lpi)
 
SCIP_RETCODE SCIPlpiExactSetIntegralityInformation (SCIP_LPIEXACT *lpi, int ncols, int *intInfo)
 
SCIP_Bool SCIPlpiExactHasPrimalSolve (void)
 
SCIP_Bool SCIPlpiExactHasDualSolve (void)
 
SCIP_Bool SCIPlpiExactHasBarrierSolve (void)
 
LPI Creation and Destruction Methods
SCIP_RETCODE SCIPlpiExactCreate (SCIP_LPIEXACT **lpi, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_OBJSEN objsen)
 
SCIP_RETCODE SCIPlpiExactFree (SCIP_LPIEXACT **lpi)
 
Modification Methods
SCIP_RETCODE SCIPlpiExactLoadColLP (SCIP_LPIEXACT *lpi, SCIP_OBJSEN objsen, int ncols, SCIP_RATIONAL **obj, SCIP_RATIONAL **lb, SCIP_RATIONAL **ub, char **colnames, int nrows, SCIP_RATIONAL **lhs, SCIP_RATIONAL **rhs, char **, int nnonz, int *beg, int *ind, SCIP_RATIONAL **val)
 
SCIP_RETCODE SCIPlpiExactAddCols (SCIP_LPIEXACT *lpi, int ncols, SCIP_RATIONAL **obj, SCIP_RATIONAL **lb, SCIP_RATIONAL **ub, char **colnames, int nnonz, int *beg, int *ind, SCIP_RATIONAL **val)
 
SCIP_RETCODE SCIPlpiExactDelCols (SCIP_LPIEXACT *lpi, int firstcol, int lastcol)
 
SCIP_RETCODE SCIPlpiDelColset (SCIP_LPIEXACT *lpi, int *dstat)
 
SCIP_RETCODE SCIPlpiExactAddRows (SCIP_LPIEXACT *lpi, int nrows, SCIP_RATIONAL **lhs, SCIP_RATIONAL **rhs, char **rownames, int nnonz, int *beg, int *ind, SCIP_RATIONAL **val)
 
SCIP_RETCODE SCIPlpiExactDelRows (SCIP_LPIEXACT *lpi, int firstrow, int lastrow)
 
SCIP_RETCODE SCIPlpiExactDelRowset (SCIP_LPIEXACT *lpi, int *dstat)
 
SCIP_RETCODE SCIPlpiExactClear (SCIP_LPIEXACT *lpi)
 
SCIP_RETCODE SCIPlpiExactChgBounds (SCIP_LPIEXACT *lpi, int ncols, int *ind, SCIP_RATIONAL **lb, SCIP_RATIONAL **ub)
 
SCIP_RETCODE SCIPlpiExactChgSides (SCIP_LPIEXACT *lpi, int nrows, int *ind, SCIP_RATIONAL **lhs, SCIP_RATIONAL **rhs)
 
SCIP_RETCODE SCIPlpiExactChgCoef (SCIP_LPIEXACT *lpi, int row, int col, SCIP_RATIONAL *newval)
 
SCIP_RETCODE SCIPlpiExactChgObjsen (SCIP_LPIEXACT *lpi, SCIP_OBJSEN objsen)
 
SCIP_RETCODE SCIPlpiExactChgObj (SCIP_LPIEXACT *lpi, int ncols, int *ind, SCIP_RATIONAL **obj)
 
Data Accessing Methods
SCIP_RETCODE SCIPlpiExactGetNRows (SCIP_LPIEXACT *lpi, int *nrows)
 
SCIP_RETCODE SCIPlpiExactGetNCols (SCIP_LPIEXACT *lpi, int *ncols)
 
SCIP_RETCODE SCIPlpiExactGetNNonz (SCIP_LPIEXACT *lpi, int *nnonz)
 
SCIP_RETCODE SCIPlpiExactGetCols (SCIP_LPIEXACT *lpi, int firstcol, int lastcol, SCIP_RATIONAL **lb, SCIP_RATIONAL **ub, int *nnonz, int *beg, int *ind, SCIP_RATIONAL **val)
 
SCIP_RETCODE SCIPlpiExactGetRows (SCIP_LPIEXACT *lpi, int firstrow, int lastrow, SCIP_RATIONAL **lhs, SCIP_RATIONAL **rhs, int *nnonz, int *beg, int *ind, SCIP_RATIONAL **val)
 
SCIP_RETCODE SCIPlpiExactGetColNames (SCIP_LPIEXACT *lpi, int firstcol, int lastcol, char **colnames, char *namestorage, int namestoragesize, int *storageleft)
 
SCIP_RETCODE SCIPlpiExactGetRowNames (SCIP_LPIEXACT *lpi, int firstrow, int lastrow, char **rownames, char *namestorage, int namestoragesize, int *storageleft)
 
SCIP_RETCODE SCIPlpiExactGetObjsen (SCIP_LPIEXACT *lpi, SCIP_OBJSEN *objsen)
 
SCIP_RETCODE SCIPlpiExactGetObj (SCIP_LPIEXACT *lpi, int firstcol, int lastcol, SCIP_RATIONAL **vals)
 
SCIP_RETCODE SCIPlpiExactGetBounds (SCIP_LPIEXACT *lpi, int firstcol, int lastcol, SCIP_RATIONAL **lbs, SCIP_RATIONAL **ubs)
 
SCIP_RETCODE SCIPlpiExactGetSides (SCIP_LPIEXACT *lpi, int firstrow, int lastrow, SCIP_RATIONAL **lhss, SCIP_RATIONAL **rhss)
 
SCIP_RETCODE SCIPlpiExactGetCoef (SCIP_LPIEXACT *lpi, int row, int col, SCIP_RATIONAL *val)
 
Solving Methods
static SCIP_RETCODE spxSolve (SCIP_LPIEXACT *lpi)
 
SCIP_RETCODE SCIPlpiExactSolvePrimal (SCIP_LPIEXACT *lpi)
 
SCIP_RETCODE SCIPlpiExactSolveDual (SCIP_LPIEXACT *lpi)
 
SCIP_RETCODE SCIPlpiExactSolveBarrier (SCIP_LPIEXACT *lpi, SCIP_Bool crossover)
 
SCIP_RETCODE SCIPlpiExactStartStrongbranch (SCIP_LPIEXACT *lpi)
 
SCIP_RETCODE SCIPlpiExactEndStrongbranch (SCIP_LPIEXACT *lpi)
 
Solution Information Methods
SCIP_Bool SCIPlpiExactWasSolved (SCIP_LPIEXACT *lpi)
 
SCIP_RETCODE SCIPlpiExactGetSolFeasibility (SCIP_LPIEXACT *lpi, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible)
 
SCIP_Bool SCIPlpiExactExistsPrimalRay (SCIP_LPIEXACT *lpi)
 
SCIP_Bool SCIPlpiExactHasPrimalRay (SCIP_LPIEXACT *lpi)
 
SCIP_Bool SCIPlpiExactIsPrimalUnbounded (SCIP_LPIEXACT *lpi)
 
SCIP_Bool SCIPlpiExactIsPrimalInfeasible (SCIP_LPIEXACT *lpi)
 
SCIP_Bool SCIPlpiExactIsPrimalFeasible (SCIP_LPIEXACT *lpi)
 
SCIP_Bool SCIPlpiExactExistsDualRay (SCIP_LPIEXACT *lpi)
 
SCIP_Bool SCIPlpiExactHasDualRay (SCIP_LPIEXACT *lpi)
 
SCIP_Bool SCIPlpiExactIsDualUnbounded (SCIP_LPIEXACT *lpi)
 
SCIP_Bool SCIPlpiExactIsDualInfeasible (SCIP_LPIEXACT *lpi)
 
SCIP_Bool SCIPlpiExactIsDualFeasible (SCIP_LPIEXACT *lpi)
 
SCIP_Bool SCIPlpiExactIsOptimal (SCIP_LPIEXACT *lpi)
 
SCIP_Bool SCIPlpiExactIsObjlimExc (SCIP_LPIEXACT *lpi)
 
SCIP_Bool SCIPlpiExactIsIterlimExc (SCIP_LPIEXACT *lpi)
 
SCIP_Bool SCIPlpiExactIsTimelimExc (SCIP_LPIEXACT *lpi)
 
int SCIPlpiExactGetInternalStatus (SCIP_LPIEXACT *lpi)
 
SCIP_RETCODE SCIPlpiExactIgnoreInstability (SCIP_LPIEXACT *lpi, SCIP_Bool *success)
 
SCIP_RETCODE SCIPlpiExactGetObjval (SCIP_LPIEXACT *lpi, SCIP_RATIONAL *objval)
 
SCIP_RETCODE SCIPlpiExactGetSol (SCIP_LPIEXACT *lpi, SCIP_RATIONAL *objval, SCIP_RATIONAL **primsol, SCIP_RATIONAL **dualsol, SCIP_RATIONAL **activity, SCIP_RATIONAL **redcost)
 
SCIP_RETCODE SCIPlpiExactGetPrimalRay (SCIP_LPIEXACT *lpi, SCIP_RATIONAL **ray)
 
SCIP_RETCODE SCIPlpiExactGetDualfarkas (SCIP_LPIEXACT *lpi, SCIP_RATIONAL **dualfarkas)
 
SCIP_RETCODE SCIPlpiExactGetIterations (SCIP_LPIEXACT *lpi, int *iterations)
 
LP Basis Methods
SCIP_RETCODE SCIPlpiExactGetBase (SCIP_LPIEXACT *lpi, int *cstat, int *rstat)
 
SCIP_RETCODE SCIPlpiExactSetBase (SCIP_LPIEXACT *lpi, int *cstat, int *rstat)
 
SCIP_RETCODE SCIPlpiExactGetBasisInd (SCIP_LPIEXACT *lpi, int *bind)
 
SCIP_RETCODE SCIPlpiExactGetBInvRow (SCIP_LPIEXACT *lpi, int r, SCIP_RATIONAL **coef, int *inds, int *ninds)
 
SCIP_RETCODE SCIPlpiExactGetBInvCol (SCIP_LPIEXACT *lpi, int c, SCIP_RATIONAL **coef, int *inds, int *ninds)
 
LP State Methods
SCIP_RETCODE SCIPlpiExactGetState (SCIP_LPIEXACT *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
 
SCIP_RETCODE SCIPlpiExactSetState (SCIP_LPIEXACT *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE *lpistate)
 
SCIP_RETCODE SCIPlpiExactClearState (SCIP_LPIEXACT *lpi)
 
SCIP_RETCODE SCIPlpiExactFreeState (SCIP_LPIEXACT *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
 
SCIP_Bool SCIPlpiExactHasStateBasis (SCIP_LPIEXACT *lpi, SCIP_LPISTATE *lpistate)
 
SCIP_RETCODE SCIPlpiExactReadState (SCIP_LPIEXACT *lpi, const char *fname)
 
SCIP_RETCODE SCIPlpiExactWriteState (SCIP_LPIEXACT *lpi, const char *fname)
 
Parameter Methods
SCIP_RETCODE SCIPlpiExactGetIntpar (SCIP_LPIEXACT *lpi, SCIP_LPPARAM type, int *ival)
 
SCIP_RETCODE SCIPlpiExactSetIntpar (SCIP_LPIEXACT *lpi, SCIP_LPPARAM type, int ival)
 
SCIP_RETCODE SCIPlpiExactGetRealpar (SCIP_LPIEXACT *lpi, SCIP_LPPARAM type, SCIP_Real *dval)
 
SCIP_RETCODE SCIPlpiExactSetRealpar (SCIP_LPIEXACT *lpi, SCIP_LPPARAM type, SCIP_Real dval)
 
Numerical Methods
SCIP_Real SCIPlpiExactInfinity (SCIP_LPIEXACT *lpi)
 
SCIP_Bool SCIPlpiExactIsInfinity (SCIP_LPIEXACT *lpi, SCIP_Real val)
 
File Interface Methods
static SCIP_Bool fileExists (const char *filename)
 
SCIP_RETCODE SCIPlpiExactReadLP (SCIP_LPIEXACT *lpi, const char *fname)
 
SCIP_RETCODE SCIPlpiExactWriteLP (SCIP_LPIEXACT *lpi, const char *fname)
 

Variables

static const char spxname [20] = {'S', 'o', 'P', 'l', 'e', 'x', ' ', SOPLEX_VERSION/100 + '0', '.', (SOPLEX_VERSION % 100)/10 + '0', '.', SOPLEX_VERSION % 10 + '0', '\0'}
 
static const char spxdesc [200]
 

Macro Definition Documentation

◆ CHECK_SOPLEX_PARAM

#define CHECK_SOPLEX_PARAM (   x)
Value:
if( !x ) \
{ \
SCIPmessagePrintWarning(_messagehdlr, "SoPlex: unsupported parameter value\n"); \
}
SCIP_VAR ** x
Definition: circlepacking.c:63

Definition at line 46 of file lpiexact_spx.cpp.

◆ SOPLEX_SUBVERSION

#define SOPLEX_SUBVERSION   0

Definition at line 72 of file lpiexact_spx.cpp.

◆ SOPLEX_APIVERSION

#define SOPLEX_APIVERSION   0

Definition at line 76 of file lpiexact_spx.cpp.

◆ SOPLEX_VERBLEVEL

#define SOPLEX_VERBLEVEL   5

verbosity level for LPINFO

Definition at line 114 of file lpiexact_spx.cpp.

◆ NULL

#define NULL   0

Definition at line 125 of file lpiexact_spx.cpp.

◆ SOPLEX_TRY

#define SOPLEX_TRY (   messagehdlr,
  x 
)
Value:
do \
{ \
try \
{ \
(x); \
} \
catch( const SPxMemoryException& E ) \
{ \
std::string s = E.what(); \
SCIPerrorMessage("SoPlex threw a memory exception: %s\n", s.c_str()); \
return SCIP_ERROR; \
} \
catch( const SPxException& E ) \
{ \
std::string s = E.what(); \
SCIPmessagePrintWarning((messagehdlr), "SoPlex threw an exception: %s\n", s.c_str()); \
return SCIP_LPERROR; \
} \
} \
while( FALSE )
#define FALSE
Definition: def.h:94
@ SCIP_LPERROR
Definition: type_retcode.h:49
@ SCIP_ERROR
Definition: type_retcode.h:43

Macro for a single SoPlex call for which exceptions have to be catched - return an LP error. We make no distinction between different exception types, e.g., between memory allocation and other exceptions.

Definition at line 136 of file lpiexact_spx.cpp.

◆ SOPLEX_TRY_ABORT

#define SOPLEX_TRY_ABORT (   x)
Value:
do \
{ \
try \
{ \
(x); \
} \
catch( const SPxException& E ) \
{ \
std::string s = E.what(); \
SCIPerrorMessage("SoPlex threw an exception: %s\n", s.c_str()); \
abort(); \
} \
} \
while( FALSE )

Definition at line 181 of file lpiexact_spx.cpp.

◆ COLS_PER_PACKET

#define COLS_PER_PACKET   SCIP_DUALPACKETSIZE

Definition at line 545 of file lpiexact_spx.cpp.

◆ ROWS_PER_PACKET

#define ROWS_PER_PACKET   SCIP_DUALPACKETSIZE

Definition at line 547 of file lpiexact_spx.cpp.

Typedef Documentation

◆ COLPACKET

Definition at line 544 of file lpiexact_spx.cpp.

◆ ROWPACKET

Definition at line 546 of file lpiexact_spx.cpp.

Function Documentation

◆ RsetSpxR()

◆ RsetSpxVector()

static void RsetSpxVector ( SCIP_LPIEXACT lpi,
SCIP_RATIONAL **  r,
VectorRational  src 
)
static
Parameters
lpiexact LPI
rSCIP_RATIONAL array
srcSoPlex rational vector

Definition at line 220 of file lpiexact_spx.cpp.

References NULL, r, and RsetSpxR().

Referenced by SCIPlpiExactGetDualfarkas(), SCIPlpiExactGetPrimalRay(), and SCIPlpiExactGetSol().

◆ SpxRSetRat()

static void SpxRSetRat ( SCIP_LPIEXACT lpi,
soplex::Rational &  spxr,
SCIP_RATIONAL src 
)
static

set the value of a SoPlex rational from a SCIP_RATIONAL

Parameters
lpiexact LPI
spxrSoPlex Rational
srcSCIP_RATIONAL

Definition at line 235 of file lpiexact_spx.cpp.

References SCIPlpiExactInfinity(), SCIPrationalGetReal(), SCIPrationalIsAbsInfinity(), and SCIPrationalIsPositive().

Referenced by SCIPlpiExactAddCols(), SCIPlpiExactAddRows(), SCIPlpiExactChgBounds(), SCIPlpiExactChgCoef(), SCIPlpiExactChgObj(), SCIPlpiExactChgSides(), and SCIPlpiExactLoadColLP().

◆ ensureCstatMem()

static SCIP_RETCODE ensureCstatMem ( SCIP_LPIEXACT lpi,
int  num 
)
static

resizes cstat array to have at least num entries

Parameters
lpiLP interface structure
numminimal number of entries in array

Definition at line 582 of file lpiexact_spx.cpp.

References BMSreallocMemoryArray, SCIP_LPiExact::cstat, SCIP_LPiExact::cstatsize, MAX, NULL, SCIP_ALLOC, and SCIP_OKAY.

Referenced by SCIPlpiExactGetState(), and SCIPlpiExactSetState().

◆ ensureRstatMem()

static SCIP_RETCODE ensureRstatMem ( SCIP_LPIEXACT lpi,
int  num 
)
static

resizes rstat array to have at least num entries

Parameters
lpiLP interface structure
numminimal number of entries in array

Definition at line 604 of file lpiexact_spx.cpp.

References BMSreallocMemoryArray, MAX, NULL, SCIP_LPiExact::rstat, SCIP_LPiExact::rstatsize, SCIP_ALLOC, and SCIP_OKAY.

Referenced by SCIPlpiExactGetState(), and SCIPlpiExactSetState().

◆ colpacketNum()

static int colpacketNum ( int  ncols)
static

returns the number of packets needed to store column packet information

Parameters
ncolsnumber of columns to store

Definition at line 633 of file lpiexact_spx.cpp.

References COLS_PER_PACKET.

Referenced by lpistateCreate(), and lpistateFree().

◆ rowpacketNum()

static int rowpacketNum ( int  nrows)
static

returns the number of packets needed to store row packet information

Parameters
nrowsnumber of rows to store

Definition at line 642 of file lpiexact_spx.cpp.

References ROWS_PER_PACKET.

Referenced by lpistateCreate(), and lpistateFree().

◆ lpistatePack()

static void lpistatePack ( SCIP_LPISTATE lpistate,
const int *  cstat,
const int *  rstat 
)
static

store row and column basis status in a packed LPi state object

Parameters
lpistatepointer to LPi state data
cstatbasis status of columns in unpacked format
rstatbasis status of rows in unpacked format

Definition at line 651 of file lpiexact_spx.cpp.

References SCIP_LPiState::ncols, SCIP_LPiState::nrows, NULL, SCIP_LPiState::packcstat, SCIP_LPiState::packrstat, and SCIPencodeDualBit().

Referenced by SCIPlpiExactGetState().

◆ lpistateUnpack()

static void lpistateUnpack ( const SCIP_LPISTATE lpistate,
int *  cstat,
int *  rstat 
)
static

unpacks row and column basis status from a packed LPi state object

Parameters
lpistatepointer to LPi state data
cstatbuffer for storing basis status of columns in unpacked format
rstatbuffer for storing basis status of rows in unpacked format

Definition at line 667 of file lpiexact_spx.cpp.

References SCIP_LPiState::ncols, SCIP_LPiState::nrows, NULL, SCIP_LPiState::packcstat, SCIP_LPiState::packrstat, and SCIPdecodeDualBit().

Referenced by SCIPlpiExactSetState().

◆ lpistateCreate()

static SCIP_RETCODE lpistateCreate ( SCIP_LPISTATE **  lpistate,
BMS_BLKMEM blkmem,
int  ncols,
int  nrows 
)
static

creates LPi state information object

Parameters
lpistatepointer to LPi state
blkmemblock memory
ncolsnumber of columns to store
nrowsnumber of rows to store

Definition at line 683 of file lpiexact_spx.cpp.

References BMSallocBlockMemory, BMSallocBlockMemoryArray, colpacketNum(), NULL, rowpacketNum(), SCIP_ALLOC, and SCIP_OKAY.

Referenced by SCIPlpiExactGetState().

◆ lpistateFree()

static void lpistateFree ( SCIP_LPISTATE **  lpistate,
BMS_BLKMEM blkmem 
)
static

frees LPi state information

Parameters
lpistatepointer to LPi state information (like basis information)
blkmemblock memory

Definition at line 707 of file lpiexact_spx.cpp.

References BMSfreeBlockMemory, BMSfreeBlockMemoryArray, colpacketNum(), NULL, and rowpacketNum().

Referenced by SCIPlpiExactFreeState().

◆ invalidateSolution()

◆ spxSolve()

static SCIP_RETCODE spxSolve ( SCIP_LPIEXACT lpi)
static

◆ fileExists()

static SCIP_Bool fileExists ( const char *  filename)
static

returns, whether the given file exists

Parameters
filenamefile name

Definition at line 3405 of file lpiexact_spx.cpp.

References FALSE, NULL, and TRUE.

Referenced by SCIPlpiExactReadLP().

Variable Documentation

◆ spxname

const char spxname[20] = {'S', 'o', 'P', 'l', 'e', 'x', ' ', SOPLEX_VERSION/100 + '0', '.', (SOPLEX_VERSION % 100)/10 + '0', '.', SOPLEX_VERSION % 10 + '0', '\0'}
static

Definition at line 754 of file lpiexact_spx.cpp.

Referenced by SCIPlpiExactGetSolverName().

◆ spxdesc

const char spxdesc[200]
static
Initial value:
= {'L', 'i', 'n', 'e', 'a', 'r', ' ', 'p', 'r', 'o', 'g', 'r', 'a', 'm', 'm', 'i', 'n', 'g',
' ', 's', 'o', 'l', 'v', 'e', 'r', ' ' , 'd', 'e', 'v', 'e', 'l', 'o', 'p', 'e', 'd',
' ', 'a', 't', ' ', 'Z', 'u', 's', 'e', ' ', 'I', 'n', 's', 't', 'i', 't', 'u', 't', 'e',
' ', 'B', 'e', 'r', 'l', 'i', 'n', ' ', '(', 's', 'o', 'p', 'l', 'e', 'x', '.', 'z', 'i', 'b', '.', 'd', 'e', ')',
' ', '[', 'G', 'i', 't', 'H', 'a', 's', 'h', ':', ' ',
getGitHash()[0], getGitHash()[1], getGitHash()[2], getGitHash()[3],
getGitHash()[4], getGitHash()[5], getGitHash()[6], getGitHash()[7],
']', '\0'}

Definition at line 756 of file lpiexact_spx.cpp.

Referenced by SCIPlpiExactGetSolverDesc().