soplex.cpp
Go to the documentation of this file.
134 _boolParamDescription[SoPlex::LIFTING] = "should lifting be used to reduce range of nonzero matrix coefficients?"; 139 _boolParamDescription[SoPlex::EQTRANS] = "should LP be transformed to equality form before a rational solve?"; 142 // should dual infeasibility be tested in order to try to return a dual solution even if primal infeasible? 144 _boolParamDescription[SoPlex::TESTDUALINF] = "should dual infeasibility be tested in order to try to return a dual solution even if primal infeasible?"; 149 _boolParamDescription[SoPlex::RATFAC] = "should a rational factorization be performed after iterative refinement?"; 154 _boolParamDescription[SoPlex::ACCEPTCYCLING] = "should cycling solutions be accepted during iterative refinement?"; 159 _boolParamDescription[SoPlex::RATREC] = "apply rational reconstruction after each iterative refinement?"; 164 _boolParamDescription[SoPlex::POWERSCALING] = "round scaling factors for iterative refinement to powers of two?"; 169 _boolParamDescription[SoPlex::RATFACJUMP] = "continue iterative refinement with exact basic solution if not optimal?"; 174 _boolParamDescription[SoPlex::FEASRELAX] = "should feasibility be tested with relaxed bounds and sides?"; 179 _boolParamDescription[SoPlex::ROWBOUNDFLIPS] = "use bound flipping also for row representation?"; 191 _intParamDescription[SoPlex::REPRESENTATION] = "type of computational form (0 - auto, 1 - column representation, 2 - row representation)"; 205 _intParamDescription[SoPlex::FACTOR_UPDATE_TYPE] = "type of LU update (0 - eta update, 1 - Forrest-Tomlin update)"; 213 _intParamDescription[SoPlex::FACTOR_UPDATE_MAX] = "maximum number of LU updates without fresh factorization"; 248 _intParamDescription[SoPlex::VERBOSITY] = "verbosity level (0 - error, 1 - warning, 2 - debug, 3 - normal, 4 - high, 5 - full)"; 262 _intParamDescription[SoPlex::SCALER] = "scaling (0 - off, 1 - uni-equilibrium, 2 - bi-equilibrium, 3 - geometric, 4 - iterated geometric)"; 269 _intParamDescription[SoPlex::STARTER] = "crash basis generated when starting from scratch (0 - none, 1 - weight, 2 - sum, 3 - vector)"; 276 _intParamDescription[SoPlex::PRICER] = "pricing method (0 - auto, 1 - dantzig, 2 - parmult, 3 - devex, 4 - quicksteep, 5 - steep)"; 283 _intParamDescription[SoPlex::RATIOTESTER] = "method for ratio test (0 - textbook, 1 - harris, 2 - fast, 3 - boundflipping)"; 290 _intParamDescription[SoPlex::SYNCMODE] = "mode for synchronizing real and rational LP (0 - store only real LP, 1 - auto, 2 - manual)"; 297 _intParamDescription[SoPlex::READMODE] = "mode for reading LP files (0 - floating-point, 1 - rational)"; 304 _intParamDescription[SoPlex::SOLVEMODE] = "mode for iterative refinement strategy (0 - floating-point solve, 1 - auto, 2 - exact rational solve)"; 311 _intParamDescription[SoPlex::CHECKMODE] = "mode for a posteriori feasibility checks (0 - floating-point check, 1 - auto, 2 - exact rational check)"; 318 _intParamDescription[SoPlex::TIMER] = "type of timer (1 - cputime, aka. usertime, 2 - wallclock time, 0 - no timing)"; 325 _intParamDescription[SoPlex::HYPER_PRICING] = "mode for hyper sparse pricing (0 - off, 1 - auto, 2 - always)"; 332 _intParamDescription[SoPlex::RATFAC_MINSTALLS] = "minimum number of stalling refinements since last pivot to trigger rational factorization"; 370 _realParamDescription[SoPlex::EPSILON_UPDATE] = "zero tolerance used in update of the factorization"; 414 _realParamDescription[SoPlex::FPFEASTOL] = "working tolerance for feasibility in floating-point solver during iterative refinement"; 421 _realParamDescription[SoPlex::FPOPTTOL] = "working tolerance for optimality in floating-point solver during iterative refinement"; 428 _realParamDescription[SoPlex::MAXSCALEINCR] = "maximum increase of scaling factors between refinements"; 433 // lower threshold in lifting (nonzero matrix coefficients with smaller absolute value will be reformulated) 435 _realParamDescription[SoPlex::LIFTMINVAL] = "lower threshold in lifting (nonzero matrix coefficients with smaller absolute value will be reformulated)"; 440 // upper threshold in lifting (nonzero matrix coefficients with larger absolute value will be reformulated) 442 _realParamDescription[SoPlex::LIFTMAXVAL] = "lower threshold in lifting (nonzero matrix coefficients with smaller absolute value will be reformulated)"; 447 // threshold for using sparse pricing (no. of violations need to be smaller than threshold * dimension of problem) 449 _realParamDescription[SoPlex::SPARSITY_THRESHOLD] = "sparse pricing threshold (#violations < dimension * SPARSITY_THRESHOLD activates sparse pricing)"; 454 // threshold on number of rows vs. number of columns for switching from column to row representations in auto mode 456 _realParamDescription[SoPlex::REPRESENTATION_SWITCH] = "threshold on number of rows vs. number of columns for switching from column to row representations in auto mode"; 463 _realParamDescription[SoPlex::RATREC_FREQ] = "geometric frequency at which to apply rational reconstruction"; 470 _realParamDescription[SoPlex::MINRED] = "minimal reduction (sum of removed rows/cols) to continue simplification"; 586 // the real LP is initially stored in the solver; the rational LP is constructed, when the parameter SYNCMODE is 967 /// returns objective function vector after transformation to a maximization problem; since this is how it is stored 977 /// returns objective value of column \p i after transformation to a maximization problem; since this is how it is 1219 /// returns objective function vector after transformation to a maximization problem; since this is how it is stored 1229 /// returns objective value of column \p i after transformation to a maximization problem; since this is how it is 1640 /// removes all rows with an index \p i such that \p perm[i] < 0; upon completion, \p perm[i] >= 0 indicates the 1641 /// new index where row \p i has been moved to; note that \p perm must point to an array of size at least 1670 /// remove all rows with indices in array \p idx of size \p n; an array \p perm of size #numRowsReal() may be passed 1689 /// removes rows \p start to \p end including both; an array \p perm of size #numRowsReal() may be passed as buffer 1732 /// removes all columns with an index \p i such that \p perm[i] < 0; upon completion, \p perm[i] >= 0 indicates the 1733 /// new index where column \p i has been moved to; note that \p perm must point to an array of size at least 1762 /// remove all columns with indices in array \p idx of size \p n; an array \p perm of size #numColsReal() may be 1781 /// removes columns \p start to \p end including both; an array \p perm of size #numColsReal() may be passed as 1820 /// synchronizes real LP with rational LP, i.e., copies (rounded) rational LP into real LP, if sync mode is manual 1852 void SoPlex::addRowRational(const mpq_t* lhs, const mpq_t* rowValues, const int* rowIndices, const int rowSize, const mpq_t* rhs) 1864 _addRowReal(Real(lhsRational(i)), DSVectorReal(_rationalLP->rowVector(i)), Real(rhsRational(i))); 1872 void SoPlex::addRowsRational(const mpq_t* lhs, const mpq_t* rowValues, const int* rowIndices, const int* rowStarts, const int* rowLengths, const int numRows, const int numValues, const mpq_t* rhs) 1879 _rationalLP->addRows(lhs, rowValues, rowIndices, rowStarts, rowLengths, numRows, numValues, rhs); 1887 lprowset.add(Real(lhsRational(i)), DSVectorReal(_rationalLP->rowVector(i)), Real(rhsRational(i))); 1938 void SoPlex::addColRational(const mpq_t* obj, const mpq_t* lower, const mpq_t* colValues, const int* colIndices, const int colSize, const mpq_t* upper) 1950 _addColReal(Real(maxObjRational(i)) * (intParam(SoPlex::OBJSENSE) == SoPlex::OBJSENSE_MAXIMIZE ? 1.0 : -1.0), 1959 void SoPlex::addColsRational(const mpq_t* obj, const mpq_t* lower, const mpq_t* colValues, const int* colIndices, const int* colStarts, const int* colLengths, const int numCols, const int numValues, const mpq_t* upper) 1966 _rationalLP->addCols(obj, lower, colValues, colIndices, colStarts, colLengths, numCols, numValues, upper); 1974 lpcolset.add(Real(maxObjRational(i)) * (intParam(SoPlex::OBJSENSE) == SoPlex::OBJSENSE_MAXIMIZE ? 1.0 : -1.0), 2523 /// removes all rows with an index \p i such that \p perm[i] < 0; upon completion, \p perm[i] >= 0 indicates the new 2524 /// index where row \p i has been moved to; note that \p perm must point to an array of size at least 2555 /// remove all rows with indices in array \p idx of size \p n; an array \p perm of size #numRowsRational() may be 2574 /// removes rows \p start to \p end including both; an array \p perm of size #numRowsRational() may be passed as 2618 /// removes all columns with an index \p i such that \p perm[i] < 0; upon completion, \p perm[i] >= 0 indicates the 2619 /// new index where column \p i has been moved to; note that \p perm must point to an array of size at least 2649 /// remove all columns with indices in array \p idx of size \p n; an array \p perm of size #numColsRational() may be 2668 /// removes columns \p start to \p end including both; an array \p perm of size #numColsRational() may be passed as 2710 /// synchronizes rational LP with real LP, i.e., copies real LP to rational LP, if sync mode is manual 2732 // decide whether to solve the rational LP with iterative refinement or call the standard floating-point solver 2733 if( intParam(SoPlex::SOLVEMODE) == SOLVEMODE_REAL || (intParam(SoPlex::SOLVEMODE) == SOLVEMODE_AUTO 2739 MSG_WARNING( spxout, spxout << "Cannot call floating-point solver with feasibility tolerance below " 2748 MSG_WARNING( spxout, spxout << "Cannot call floating-point solver with optimality tolerance below " 2817 return (_hasSolReal && _solReal.hasPrimalRay()) || (_hasSolRational && _solRational.hasPrimalRay()); 2833 return (_hasSolReal && _solReal.hasDualFarkas()) || (_hasSolRational && _solRational.hasDualFarkas()); 3270 // if we have to synchronize, we do not measure time, because this would affect the solving statistics 3311 // if we have to synchronize, we do not measure time, because this would affect the solving statistics 3354 // if we have to synchronize, we do not measure time, because this would affect the solving statistics 3375 assert(!_hasBasis || basisColStatus(c) != SPxSolver::ON_LOWER || _solRational._primal[c] == lowerRational(c)); 3376 assert(!_hasBasis || basisColStatus(c) != SPxSolver::ON_UPPER || _solRational._primal[c] == upperRational(c)); 3377 assert(!_hasBasis || basisColStatus(c) != SPxSolver::FIXED || _solRational._primal[c] == lowerRational(c)); 3378 assert(!_hasBasis || basisColStatus(c) != SPxSolver::FIXED || _solRational._primal[c] == upperRational(c)); 3387 MSG_DEBUG( std::cout << "increased reduced cost violation for column " << c << " not on upper bound: " << rationalToString(-redcost[c]) << "\n" ); 3396 MSG_DEBUG( std::cout << "increased reduced cost violation for column " << c << " not on lower bound: " << rationalToString(redcost[c]) << "\n" ); 3408 MSG_DEBUG( std::cout << "increased reduced cost violation for column " << c << " not on upper bound: " << rationalToString(redcost[c]) << "\n" ); 3417 MSG_DEBUG( std::cout << "increased reduced cost violation for column " << c << " not on lower bound: " << rationalToString(-redcost[c]) << "\n" ); 3435 // if we have to synchronize, we do not measure time, because this would affect the solving statistics 3456 assert(!_hasBasis || basisRowStatus(r) != SPxSolver::ON_LOWER || _solRational._slacks[r] <= lhsRational(r) + _rationalFeastol); 3457 assert(!_hasBasis || basisRowStatus(r) != SPxSolver::ON_UPPER || _solRational._slacks[r] >= rhsRational(r) - _rationalFeastol); 3458 assert(!_hasBasis || basisRowStatus(r) != SPxSolver::FIXED || _solRational._slacks[r] <= lhsRational(r) + _rationalFeastol); 3459 assert(!_hasBasis || basisRowStatus(r) != SPxSolver::FIXED || _solRational._slacks[r] >= rhsRational(r) - _rationalFeastol); 3468 MSG_DEBUG( std::cout << "increased dual violation for row " << r << " not on upper bound: " << rationalToString(-dual[r]) 3481 MSG_DEBUG( std::cout << "increased dual violation for row " << r << " not on lower bound: " << rationalToString(dual[r]) 3497 MSG_DEBUG( std::cout << "increased dual violation for row " << r << " not on upper bound: " << rationalToString(dual[r]) 3510 MSG_DEBUG( std::cout << "increased dual violation for row " << r << " not on lower bound: " << rationalToString(-dual[r]) 3754 // if no basis is available, return slack basis; if index is out of range, return basic status as for a newly 3849 /// returns the indices of the basic columns and rows; basic column n gives value n, basic row m gives value -1-m 3886 // if the real LP is loaded, the basis is stored in the solver and we need to distinguish between column and row 3887 // representation; ask the solver itself which representation it has, since the REPRESENTATION parameter of this 3897 // for row representation, return the complement of the basis; for this, we need to loop through all rows and columns 3928 /// computes an estimated condition number for the current basis matrix using the power method; returns true on success 3943 /// computes the exact condition number for the current basis matrix using the power method; returns true on success 3973 // we need to distinguish between column and row representation; ask the solver itself which representation it 3985 MSG_ERROR( std::cerr << "Caught exception <" << E.what() << "> while computing basis inverse row.\n" ); 4033 // should be a valid row index and in the column basis matrix, i.e., not basic w.r.t. row representation 4045 // should be a valid column index and in the column basis matrix, i.e., not basic w.r.t. row representation 4060 MSG_ERROR( std::cerr << "Caught exception <" << E.what() << "> while computing basis inverse row.\n" ); 4117 // we need to distinguish between column and row representation; ask the solver itself which representation it 4129 MSG_ERROR( std::cerr << "Caught exception <" << E.what() << "> while computing basis inverse row.\n" ); 4177 // should be a valid row index and in the column basis matrix, i.e., not basic w.r.t. row representation 4189 // should be a valid column index and in the column basis matrix, i.e., not basic w.r.t. row representation 4204 MSG_ERROR( std::cerr << "Caught exception <" << E.what() << "> while computing basis inverse row.\n" ); 4260 // we need to distinguish between column and row representation; ask the solver itself which representation it 4261 // has, since the REPRESENTATION parameter of this class might be set to automatic; in the column case we can use 4272 MSG_ERROR( std::cerr << "Caught exception <" << E.what() << "> while solving with basis matrix.\n" ); 4313 MSG_ERROR( std::cerr << "Caught exception <" << E.what() << "> while solving with basis matrix.\n" ); 4328 // should be a valid row index and in the column basis matrix, i.e., not basic w.r.t. row representation 4337 // should be a valid column index and in the column basis matrix, i.e., not basic w.r.t. row representation 4413 << " Time spent : " << std::setw(10) << std::fixed << std::setprecision(2) << _statistics->luFactorizationTimeReal << std::endl 4416 << "Solution time : " << std::setw(10) << std::fixed << std::setprecision(2) << solveTime() << std::endl 4473 /// reads LP file in LP or MPS format according to READMODE parameter; gets row names, column names, and 4475 bool SoPlex::readFile(const char* filename, NameSet* rowNames, NameSet* colNames, DIdxSet* intVars) 4483 /// writes real LP to file; LP or MPS format is chosen from the extension in \p filename; if \p rowNames and \p 4484 /// colNames are \c NULL, default names are used; if \p intVars is not \c NULL, the variables contained in it are 4486 bool SoPlex::writeFileReal(const char* filename, const NameSet* rowNames, const NameSet* colNames, const DIdxSet* intVars) const 4495 /// writes rational LP to file; LP or MPS format is chosen from the extension in \p filename; if \p rowNames and \p 4496 /// colNames are \c NULL, default names are used; if \p intVars is not \c NULL, the variables contained in it are 4498 bool SoPlex::writeFileRational(const char* filename, const NameSet* rowNames, const NameSet* colNames, const DIdxSet* intVars) const 4514 /// reads basis information from \p filename and returns true on success; if \p rowNames and \p colNames are \c NULL, 4516 bool SoPlex::readBasisFile(const char* filename, const NameSet* rowNames, const NameSet* colNames) 4611 else if( lowerReal(i) <= double(-realParam(SoPlex::INFTY)) && upperReal(i) >= double(realParam(SoPlex::INFTY)) ) 4705 /// writes basis information to \p filename; if \p rowNames and \p colNames are \c NULL, default names are used; 4707 bool SoPlex::writeBasisFile(const char* filename, const NameSet* rowNames, const NameSet* colNames, const bool cpxFormat) const 4750 if( _basisStatusRows[row] == SPxSolver::ON_UPPER && (!cpxFormat || _rowTypes[row] == SoPlex::RANGETYPE_BOXED) ) 4803 /// writes internal LP, basis information, and parameter settings; if \p rowNames and \p colNames are \c NULL, 4805 void SoPlex::writeStateReal(const char* filename, const NameSet* rowNames, const NameSet* colNames, const bool cpxFormat) const 4824 /// writes internal LP, basis information, and parameter settings; if \p rowNames and \p colNames are \c NULL, 4826 void SoPlex::writeStateRational(const char* filename, const NameSet* rowNames, const NameSet* colNames, const bool cpxFormat) const 4896 bool SoPlex::setBoolParam(const BoolParam param, const bool value, const bool quiet, const bool init) 4939 bool SoPlex::setIntParam(const IntParam param, const int value, const bool quiet, const bool init) 4949 if( value < _currentSettings->_intParamLower[param] || value > _currentSettings->_intParamUpper[param] ) 4958 _realLP->changeSense(value == SoPlex::OBJSENSE_MAXIMIZE ? SPxLPReal::MAXIMIZE : SPxLPReal::MINIMIZE); 4960 _rationalLP->changeSense(value == SoPlex::OBJSENSE_MAXIMIZE ? SPxLPRational::MAXIMIZE : SPxLPRational::MINIMIZE); 4966 if( value != SoPlex::REPRESENTATION_COLUMN && value != SoPlex::REPRESENTATION_ROW && value != SoPlex::REPRESENTATION_AUTO ) 4979 _slufactor.setUtype(value == SoPlex::FACTOR_UPDATE_TYPE_ETA ? SLUFactor::ETA : SLUFactor::FOREST_TOMLIN); 5245 bool SoPlex::setRealParam(const RealParam param, const Real value, const bool quiet, const bool init) 5254 if( value < _currentSettings->_realParamLower[param] || value > _currentSettings->_realParamUpper[param] ) 5284 // pivot zero tolerance used in factorization (declare numerical singularity for small LU pivots) 5322 // lower threshold in lifting (nonzero matrix coefficients with smaller absolute value will be reformulated) 5326 // upper threshold in lifting (nonzero matrix coefficients with larger absolute value will be reformulated) 5334 // threshold on number of rows vs. number of columns for switching from column to row representations in auto mode 5358 bool SoPlex::setRationalParam(const RationalParam param, const Rational value, const bool quiet, const bool init) 5367 if( value < _currentSettings->_rationalParamLower[param] || value > _currentSettings->_rationalParamUpper[param] ) 5404 success &= setRationalParam((RationalParam)i, _currentSettings->_rationalParamValues[i], quiet, init); 5424 spxout << "bool:" << _currentSettings->_boolParamName[i] << " = " << (_currentSettings->_boolParamValues[i] ? "true\n" : "false\n"); 5433 spxout << "int:" << _currentSettings->_intParamName[i] << " = " << _currentSettings->_intParamValues[i] << "\n"; 5442 spxout << "real:" << _currentSettings->_realParamName[i] << " = " << _currentSettings->_realParamValues[i] << "\n"; 5452 spxout << "rational:" << _currentSettings->_rationalParamName[i] << " = " << _currentSettings->_rationalParamValues[i] << "\n"; 5472 file << "# SoPlex version " << SOPLEX_VERSION / 100 << "." << (SOPLEX_VERSION / 10) % 10 << "." << SOPLEX_VERSION % 10; 5480 if( onlyChanged && _currentSettings->_boolParamValues[i] == _currentSettings->_boolParamDefault[i] ) 5485 file << "# range {true, false}, default " << (_currentSettings->_boolParamDefault[i] ? "true\n" : "false\n"); 5486 file << "bool:" << _currentSettings->_boolParamName[i] << " = " << (_currentSettings->_boolParamValues[i] ? "true\n" : "false\n"); 5491 if( onlyChanged && _currentSettings->_intParamValues[i] == _currentSettings->_intParamDefault[i] ) 5496 file << "# range [-2147483648,2147483647], default " << _currentSettings->_intParamDefault[i] << "\n"; 5497 file << "int:" << _currentSettings->_intParamName[i] << " = " << _currentSettings->_intParamValues[i] << "\n"; 5502 if( onlyChanged && _currentSettings->_realParamValues[i] == _currentSettings->_realParamDefault[i] ) 5507 file << "# range [" << _currentSettings->_realParamLower[i] << "," << _currentSettings->_realParamUpper[i] 5509 file << "real:" << _currentSettings->_realParamName[i] << " = " << _currentSettings->_realParamValues[i] << "\n"; 5515 if( onlyChanged && _currentSettings->_rationalParamValues[i] == _currentSettings->_rationalParamDefault[i] ) 5520 file << "# range [" << _currentSettings->_rationalParamLower[i] << "," << _currentSettings->_rationalParamUpper[i] 5522 file << "rational:" << _currentSettings->_rationalParamName[i] << " = " << _currentSettings->_rationalParamValues[i] << "\n"; 5567 MSG_ERROR( std::cerr << "Error reading settings file: line " << lineNumber << " in settings file exceeds " << SET_MAX_LINE_LEN - 2 << " characters.\n" ); 5601 while( *line != ' ' && *line != '\t' && *line != '\r' && *line != '\n' && *line != '#' && *line != '\0' && *line != ':' ) 5618 MSG_ERROR( std::cerr << "Error parsing setting string: no ':' separating parameter type and name.\n" ); 5635 while( *line != ' ' && *line != '\t' && *line != '\r' && *line != '\n' && *line != '#' && *line != '\0' && *line != '=' ) 5669 while( *line != ' ' && *line != '\t' && *line != '\r' && *line != '\n' && *line != '#' && *line != '\0' ) 5680 MSG_ERROR( std::cerr << "Error parsing setting string: additional character '" << *line << "' after parameter value.\n" ); 5692 MSG_ERROR( std::cerr << "Error parsing setting string: unknown parameter name <" << paramName << ">.\n" ); 5695 else if( strncmp(paramName, _currentSettings->_boolParamName[param].c_str(), SET_MAX_LINE_LEN) == 0 ) 5717 MSG_ERROR( std::cerr << "Error parsing setting string: invalid value <" << paramValueString << "> for bool parameter <" << paramName << ">.\n" ); 5733 MSG_ERROR( std::cerr << "Error parsing setting string: unknown parameter name <" << paramName << ">.\n" ); 5736 else if( strncmp(paramName, _currentSettings->_intParamName[param].c_str(), SET_MAX_LINE_LEN) == 0 ) 5740 if( sscanf(paramValueString, "%d", &value) == 1 && setIntParam((SoPlex::IntParam)param, value) ) 5744 MSG_ERROR( std::cerr << "Error parsing setting string: invalid value <" << paramValueString << "> for int parameter <" << paramName << ">.\n" ); 5760 MSG_ERROR( std::cerr << "Error parsing setting string: unknown parameter name <" << paramName << ">.\n" ); 5763 else if( strncmp(paramName, _currentSettings->_realParamName[param].c_str(), SET_MAX_LINE_LEN) == 0 ) 5767 if( sscanf(paramValueString, "%" REAL_FORMAT, &value) == 1 && setRealParam((SoPlex::RealParam)param, value) ) 5771 MSG_ERROR( std::cerr << "Error parsing setting string: invalid value <" << paramValueString << "> for real parameter <" << paramName << ">.\n" ); 5788 MSG_ERROR( std::cerr << "Error parsing setting string: unknown parameter name <" << paramName << ">.\n" ); 5791 else if( strncmp(paramName, _currentSettings->_rationalParamName[param].c_str(), SET_MAX_LINE_LEN) == 0 ) 5795 if( readStringRational(paramValueString, value) && setRationalParam((SoPlex::RationalParam)param, value) ) 5799 MSG_ERROR( std::cerr << "Error parsing setting string: invalid value <" << paramValueString << "> for rational parameter <" << paramName << ">.\n" ); 5809 MSG_ERROR( std::cerr << "Error parsing setting string: invalid parameter type <" << paramTypeString << "> for parameter <" << paramName << ">.\n" ); 5831 << " Total primal : " << totalSizePrimalRational() << " / " << totalSizePrimalRational(10) << "\n" 5833 << " DLCM primal : " << dlcmSizePrimalRational() << " / " << dlcmSizePrimalRational(10) << "\n" 5835 << " DMAX primal : " << dmaxSizePrimalRational() << " / " << dmaxSizePrimalRational(10) << "\n" 5845 || (intParam(SoPlex::CHECKMODE) == CHECKMODE_AUTO && intParam(SoPlex::READMODE) == READMODE_RATIONAL) ) 5852 os << " Max/sum bound : " << rationalToString(maxviol) << " / " << rationalToString(sumviol) << "\n"; 5856 os << " Max/sum row : " << rationalToString(maxviol) << " / " << rationalToString(sumviol) << "\n"; 5860 os << " Max/sum redcost : " << rationalToString(maxviol) << " / " << rationalToString(sumviol) << "\n"; 5864 os << " Max/sum dual : " << rationalToString(maxviol) << " / " << rationalToString(sumviol) << "\n"; 5875 os << " Max/sum bound : " << rationalToString(maxviol) << " / " << rationalToString(sumviol) << "\n"; 5879 os << " Max/sum row : " << rationalToString(maxviol) << " / " << rationalToString(sumviol) << "\n"; 5883 os << " Max/sum redcost : " << rationalToString(maxviol) << " / " << rationalToString(sumviol) << "\n"; 5887 os << " Max/sum dual : " << rationalToString(maxviol) << " / " << rationalToString(sumviol) << "\n"; 5908 os << "Solving time (sec) : " << std::fixed << std::setprecision(2) << _statistics->solvingTime->time() << "\n" 5910 << "Objective value : " << std::scientific << std::setprecision(8) << objValueReal() << std::fixed << "\n"; 5928 os << "Objective sense : " << (intParam(SoPlex::OBJSENSE) == SoPlex::OBJSENSE_MINIMIZE ? "minimize\n" : "maximize\n"); 6042 bool SoPlex::areLPsInSync(const bool checkVecVals, const bool checkMatVals, const bool quiet) const 6056 MSG_ERROR( std::cerr << "The number of Rows in the Real LP does not match the one in the Rational LP." 6065 MSG_ERROR( std::cerr << "The number of Columns in the Real LP does not match the one in the Rational LP." 6074 MSG_ERROR( std::cerr << "The number of nonZeros in the Real LP does not match the one in the Rational LP." 6082 MSG_ERROR( std::cerr << "The dimension of the right hand side vector of the Real LP does not match the one of the Rational LP." 6083 << " Real LP: " << _realLP->rhs().dim() << " Rational LP: " << _rationalLP->rhs().dim() << std::endl); 6092 MSG_ERROR( std::cerr << "The dimension of the left hand side vector of the Real LP does not match the one of the Rational LP." 6093 << " Real LP: " << _realLP->lhs().dim() << " Rational LP: " << _rationalLP->lhs().dim() << std::endl); 6101 MSG_ERROR( std::cerr << "The dimension of the objective function vector of the Real LP does not match the one of the Rational LP." 6102 << " Real LP: " << _realLP->maxObj().dim() << " Rational LP: " << _rationalLP->maxObj().dim() << std::endl); 6110 MSG_ERROR( std::cerr << "The objective function sense of the Real LP does not match the one of the Rational LP." 6112 << " Rational LP: " << (_rationalLP->spxSense() == SPxLPRational::MINIMIZE ? "MIN" : "MAX") << std::endl); 6119 MSG_ERROR( std::cerr << "The dimension of the upper bound vector of the Real LP does not match the one of the Rational LP." 6120 << " Real LP: " << _realLP->upper().dim() << " Rational LP: " << _rationalLP->upper().dim() << std::endl); 6128 MSG_ERROR( std::cerr << "The dimension of the lower bound vector of the Real LP does not match the one of the Rational LP." 6129 << " Real LP: " << _realLP->lower().dim() << " Rational LP: " << _rationalLP->lower().dim() << std::endl); 6148 if( (GE(_realLP->rhs()[i], realParam(SoPlex::INFTY)) != (_rationalLP->rhs()[i] >= _rationalPosInfty)) 6149 || (LT(_realLP->rhs()[i], realParam(SoPlex::INFTY)) && _rationalLP->rhs()[i] < _rationalPosInfty 6154 MSG_ERROR( std::cerr << "Entries number " << i << " of the right hand side vectors don't match." 6155 << " Real LP: " << _realLP->rhs()[i] << " Rational LP: " << _rationalLP->rhs()[i] << std::endl); 6164 MSG_ERROR( std::cerr << "The values of the right hand side vectors don't match." << std::endl ); 6173 if( (LE(_realLP->lhs()[i], -realParam(SoPlex::INFTY)) != (_rationalLP->lhs()[i] <= _rationalNegInfty)) 6174 || (GT(_realLP->lhs()[i], -realParam(SoPlex::INFTY)) && _rationalLP->lhs()[i] > _rationalNegInfty 6179 MSG_ERROR( std::cerr << "Entries number " << i << " of the left hand side vectors don't match." 6180 << " Real LP: " << _realLP->lhs()[i] << " Rational LP: " << _rationalLP->lhs()[i] << std::endl); 6189 MSG_ERROR( std::cerr << "The values of the left hand side vectors don't match." << std::endl ); 6202 MSG_ERROR( std::cerr << "Entries number " << i << " of the objective function vectors don't match." 6203 << " Real LP: " << _realLP->maxObj()[i] << " Rational LP: " << _rationalLP->maxObj()[i] << std::endl); 6212 MSG_ERROR( std::cerr << "The values of the objective function vectors don't match." << std::endl ); 6221 if( (GE(_realLP->upper()[i], realParam(SoPlex::INFTY)) != (_rationalLP->upper()[i] >= _rationalPosInfty)) 6222 || (LT(_realLP->upper()[i], realParam(SoPlex::INFTY)) && _rationalLP->upper()[i] < _rationalPosInfty 6228 << " Real LP: " << _realLP->upper()[i] << " Rational LP: " << _rationalLP->upper()[i] << std::endl); 6246 if( (LE(_realLP->lower()[i], -realParam(SoPlex::INFTY)) != (_rationalLP->lower()[i] <= _rationalNegInfty)) 6247 || (GT(_realLP->lower()[i], -realParam(SoPlex::INFTY)) && _rationalLP->lower()[i] > _rationalNegInfty 6253 << " Real LP: " << _realLP->lower()[i] << " Rational LP: " << _rationalLP->lower()[i] << std::endl); 6281 << " Real LP: " << _realLP->colVector(i)[j] << " Rational LP: " << _rationalLP->colVector(i)[j] << std::endl); 6368 stoppedTime = (realParam(TIMELIMIT) < realParam(INFTY) && _statistics->solvingTime->time() >= realParam(TIMELIMIT)); 6404 SoPlex::RangeType SoPlex::_rangeTypeRational(const Rational& lower, const Rational& upper) const 6444 return (rangeType == RANGETYPE_LOWER || rangeType == RANGETYPE_BOXED || rangeType == RANGETYPE_FIXED); 6452 return (rangeType == RANGETYPE_UPPER || rangeType == RANGETYPE_BOXED || rangeType == RANGETYPE_FIXED); 6575 else if( _basisStatusRows[i] == SPxSolver::ON_LOWER && lprow.lhs() <= -realParam(SoPlex::INFTY) ) 6576 _basisStatusRows[i] = (lprow.rhs() < realParam(SoPlex::INFTY)) ? SPxSolver::ON_UPPER : SPxSolver::ZERO; 6577 else if( _basisStatusRows[i] == SPxSolver::ON_UPPER && lprow.rhs() >= realParam(SoPlex::INFTY) ) 6578 _basisStatusRows[i] = (lprow.lhs() > -realParam(SoPlex::INFTY)) ? SPxSolver::ON_LOWER : SPxSolver::ZERO; 6598 _basisStatusRows[i] = (rhsReal(i) < realParam(SoPlex::INFTY)) ? SPxSolver::ON_UPPER : SPxSolver::ZERO; 6616 else if( _hasBasis && _basisStatusRows[i] == SPxSolver::ON_LOWER && lhs <= -realParam(SoPlex::INFTY) ) 6617 _basisStatusRows[i] = (rhsReal(i) < realParam(SoPlex::INFTY)) ? SPxSolver::ON_UPPER : SPxSolver::ZERO; 6639 _basisStatusRows[i] = (lhsReal(i) > -realParam(SoPlex::INFTY)) ? SPxSolver::ON_LOWER : SPxSolver::ZERO; 6657 else if( _hasBasis && _basisStatusRows[i] == SPxSolver::ON_UPPER && rhs >= realParam(SoPlex::INFTY) ) 6658 _basisStatusRows[i] = (lhsReal(i) > -realParam(SoPlex::INFTY)) ? SPxSolver::ON_LOWER : SPxSolver::ZERO; 6679 _basisStatusRows[i] = (rhs[i] < realParam(SoPlex::INFTY)) ? SPxSolver::ON_UPPER : SPxSolver::ZERO; 6681 _basisStatusRows[i] = (lhs[i] > -realParam(SoPlex::INFTY)) ? SPxSolver::ON_LOWER : SPxSolver::ZERO; 6702 _basisStatusRows[i] = (rhs < realParam(SoPlex::INFTY)) ? SPxSolver::ON_UPPER : SPxSolver::ZERO; 6704 _basisStatusRows[i] = (lhs > -realParam(SoPlex::INFTY)) ? SPxSolver::ON_LOWER : SPxSolver::ZERO; 6725 else if( _basisStatusCols[i] == SPxSolver::ON_LOWER && lpcol.lower() <= -realParam(SoPlex::INFTY) ) 6726 _basisStatusCols[i] = (lpcol.upper() < realParam(SoPlex::INFTY)) ? SPxSolver::ON_UPPER : SPxSolver::ZERO; 6727 else if( _basisStatusCols[i] == SPxSolver::ON_UPPER && lpcol.upper() >= realParam(SoPlex::INFTY) ) 6728 _basisStatusCols[i] = (lpcol.lower() > -realParam(SoPlex::INFTY)) ? SPxSolver::ON_LOWER : SPxSolver::ZERO; 6750 _basisStatusCols[i] = (upperReal(i) < realParam(SoPlex::INFTY)) ? SPxSolver::ON_UPPER : SPxSolver::ZERO; 6768 else if( _hasBasis && _basisStatusCols[i] == SPxSolver::ON_LOWER && lower <= -realParam(SoPlex::INFTY) ) 6769 _basisStatusCols[i] = (upperReal(i) < realParam(SoPlex::INFTY)) ? SPxSolver::ON_UPPER : SPxSolver::ZERO; 6790 _basisStatusCols[i] = (lowerReal(i) > -realParam(SoPlex::INFTY)) ? SPxSolver::ON_LOWER : SPxSolver::ZERO; 6808 else if( _hasBasis && _basisStatusCols[i] == SPxSolver::ON_UPPER && upper >= realParam(SoPlex::INFTY) ) 6809 _basisStatusCols[i] = (lowerReal(i) > -realParam(SoPlex::INFTY)) ? SPxSolver::ON_LOWER : SPxSolver::ZERO; 6830 _basisStatusCols[i] = (upper[i] < realParam(SoPlex::INFTY)) ? SPxSolver::ON_UPPER : SPxSolver::ZERO; 6832 _basisStatusCols[i] = (lower[i] > -realParam(SoPlex::INFTY)) ? SPxSolver::ON_LOWER : SPxSolver::ZERO; 6853 _basisStatusCols[i] = (upper < realParam(SoPlex::INFTY)) ? SPxSolver::ON_UPPER : SPxSolver::ZERO; 6855 _basisStatusCols[i] = (lower > -realParam(SoPlex::INFTY)) ? SPxSolver::ON_LOWER : SPxSolver::ZERO; 6906 /// removes all rows with an index \p i such that \p perm[i] < 0; upon completion, \p perm[i] >= 0 indicates the 6907 /// new index where row \p i has been moved to; note that \p perm must point to an array of size at least 6966 /// removes all columns with an index \p i such that \p perm[i] < 0; upon completion, \p perm[i] >= 0 indicates the 6967 /// new index where column \p i has been moved to; note that \p perm must point to an array of size at least 7096 ///@todo this should not fail even if the basis is invalid (wrong dimension or wrong number of basic 7127 || (intParam(SoPlex::REPRESENTATION) == SoPlex::REPRESENTATION_AUTO && (_solver.nCols() + 1) * realParam(SoPlex::REPRESENTATION_SWITCH) >= (_solver.nRows() + 1))) 7133 || (intParam(SoPlex::REPRESENTATION) == SoPlex::REPRESENTATION_AUTO && (_solver.nCols() + 1) * realParam(SoPlex::REPRESENTATION_SWITCH) < (_solver.nRows() + 1))) 7146 else if( ((intParam(ALGORITHM) == SoPlex::ALGORITHM_DUAL && _solver.rep() == SPxSolver::COLUMN) 7194 /// reads real LP in LP or MPS format from file and returns true on success; gets row names, column names, and 7196 bool SoPlex::_readFileReal(const char* filename, NameSet* rowNames, NameSet* colNames, DIdxSet* intVars) 7219 setIntParam(SoPlex::OBJSENSE, (_realLP->spxSense() == SPxLPReal::MAXIMIZE ? SoPlex::OBJSENSE_MAXIMIZE : SoPlex::OBJSENSE_MINIMIZE), true, true); 7222 // if sync mode is auto, we have to copy the (rounded) real LP to the rational LP; this is counted to sync time 7235 /// reads rational LP in LP or MPS format from file and returns true on success; gets row names, column names, and 7237 bool SoPlex::_readFileRational(const char* filename, NameSet* rowNames, NameSet* colNames, DIdxSet* intVars) 7259 setIntParam(SoPlex::OBJSENSE, (_rationalLP->spxSense() == SPxLPRational::MAXIMIZE ? SoPlex::OBJSENSE_MAXIMIZE : SoPlex::OBJSENSE_MINIMIZE), true, true); 7263 // if sync mode is auto, we have to copy the (rounded) real LP to the rational LP; this is counted to sync time 7267 // if a rational LP file is read, but only the (rounded) real LP should be kept, we have to free the rational LP 7309 /// synchronizes real LP with rational LP, i.e., copies (rounded) rational LP into real LP, without looking at the sync mode 7332 /// synchronizes rational LP with real LP, i.e., copies real LP to rational LP, without looking at the sync mode 7351 /// synchronizes real solution with rational solution, i.e., copies real solution to rational solution 7363 /// synchronizes rational solution with real solution, i.e., copies (rounded) rational solution to real solution 7398 /// parses one line in a settings file and returns true on success; note that the string is modified 7411 while( *line != ' ' && *line != '\t' && *line != '\r' && *line != '\n' && *line != '#' && *line != '\0' && *line != ':' ) 7428 MSG_ERROR( std::cerr << "Error parsing settings file: no ':' separating parameter type and name in line " << lineNumber << ".\n" ); 7439 MSG_ERROR( std::cerr << "Error parsing settings file: no parameter name in line " << lineNumber << ".\n"); 7445 while( *line != ' ' && *line != '\t' && *line != '\r' && *line != '\n' && *line != '#' && *line != '\0' && *line != '=' ) 7462 MSG_ERROR( std::cerr << "Error parsing settings file: no '=' after parameter name in line " << lineNumber << ".\n" ); 7473 MSG_ERROR( std::cerr << "Error parsing settings file: no parameter value in line " << lineNumber << ".\n"); 7479 while( *line != ' ' && *line != '\t' && *line != '\r' && *line != '\n' && *line != '#' && *line != '\0' ) 7490 MSG_ERROR( std::cerr << "Error parsing settings file: additional character '" << *line << "' after parameter value in line " << lineNumber << ".\n" ); 7502 MSG_ERROR( std::cerr << "Error parsing settings file: unknown parameter name <" << paramName << "> in line " << lineNumber << ".\n" ); 7505 else if( strncmp(paramName, _currentSettings->_boolParamName[param].c_str(), SET_MAX_LINE_LEN) == 0 ) 7527 MSG_ERROR( std::cerr << "Error parsing settings file: invalid value <" << paramValueString << "> for bool parameter <" << paramName << "> in line " << lineNumber << ".\n" ); 7543 MSG_ERROR( std::cerr << "Error parsing settings file: unknown parameter name <" << paramName << "> in line " << lineNumber << ".\n" ); 7546 else if( strncmp(paramName, _currentSettings->_intParamName[param].c_str(), SET_MAX_LINE_LEN) == 0 ) 7550 if( sscanf(paramValueString, "%d", &value) == 1 && setIntParam((SoPlex::IntParam)param, value) ) 7554 MSG_ERROR( std::cerr << "Error parsing settings file: invalid value <" << paramValueString << "> for int parameter <" << paramName << "> in line " << lineNumber << ".\n" ); 7570 MSG_ERROR( std::cerr << "Error parsing settings file: unknown parameter name <" << paramName << "> in line " << lineNumber << ".\n" ); 7573 else if( strncmp(paramName, _currentSettings->_realParamName[param].c_str(), SET_MAX_LINE_LEN) == 0 ) 7577 if( sscanf(paramValueString, "%" REAL_FORMAT, &value) == 1 && setRealParam((SoPlex::RealParam)param, value) ) 7581 MSG_ERROR( std::cerr << "Error parsing settings file: invalid value <" << paramValueString << "> for real parameter <" << paramName << "> in line " << lineNumber << ".\n" ); 7598 MSG_ERROR( std::cerr << "Error parsing settings file: unknown parameter name <" << paramName << "> in line " << lineNumber << ".\n" ); 7601 else if( strncmp(paramName, _currentSettings->_rationalParamName[param].c_str(), SET_MAX_LINE_LEN) == 0 ) 7605 if( readStringRational(paramValueString, value) && setRationalParam((SoPlex::RationalParam)param, value) ) 7609 MSG_ERROR( std::cerr << "Error parsing settings file: invalid value <" << paramValueString << "> for rational parameter <" << paramName << "> in line " << lineNumber << ".\n" ); 7619 MSG_ERROR( std::cerr << "Error parsing settings file: invalid parameter type <" << paramTypeString << "> for parameter <" << paramName << "> in line " << lineNumber << ".\n" ); Definition: spxout.h:82 void changeLhsRational(const VectorRational &lhs) changes left-hand side vector for constraints to lhs Definition: soplex.cpp:2025 virtual void addRows(const LPRowSetBase< R > &pset) Definition: spxlpbase.h:543 Definition: mpsinput.h:34 textbook ratio test without stabilization Definition: soplex.h:1054 void _changeUpperReal(const VectorReal &upper) changes vector of upper bounds to upper and adjusts basis Definition: soplex.cpp:6775 static std::string _boolParamName[SoPlex::BOOLPARAM_COUNT] array of names for boolean parameters Definition: soplex.cpp:49 bool getSlacks(VectorBase< R > &vector) const gets the vector of slack values if available; returns true on success Definition: solbase.h:66 Real maxAbsNonzeroReal() const returns biggest non-zero element in absolute value Definition: soplex.cpp:806 bool getDualViolationRational(Rational &maxviol, Rational &sumviol) gets violation of dual multipliers; returns true on success Definition: soplex.cpp:3430 bool GE(Real a, Real b, Real eps=Param::epsilon()) returns true iff a >= b + eps Definition: spxdefines.h:401 void printSolutionStatistics(std::ostream &os) prints solution statistics Definition: soplex.cpp:5818 Timer * syncTime time for synchronization between real and rational LP (included in solving time) Definition: statistics.h:92 void setRep(Representation p_rep) switch to ROW or COLUMN representation if not already used. Definition: spxsolver.cpp:256 Basis is not known to be dual nor primal feasible. Definition: spxbasis.h:94 Real minAbsNonzeroReal() const returns smallest non-zero element in absolute value Definition: soplex.cpp:797 void coSolve(Vector &x, const Vector &rhs) Cosolves linear system with basis matrix. Definition: spxbasis.h:678 void _addColReal(const LPColReal &lpcol) adds a single column to the real LP and adjusts basis Definition: soplex.cpp:6502 void removeRowsRational(int perm[]) removes all rows with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates the n... Definition: soplex.cpp:2526 bool setSettings(const Settings &newSettings, const bool quiet=false, const bool init=false) sets parameter settings; returns true on success Definition: soplex.cpp:5385 void removeColsReal(int perm[]) removes all columns with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates th... Definition: soplex.cpp:1735 const VectorBase< R > & maxObj() const Returns objective vector for maximization problem. Definition: spxlpbase.h:384 virtual void changeRhs(const VectorBase< R > &newRhs) Changes right hand side vector for constraints to newRhs. Definition: spxlpbase.h:1371 void _changeElementReal(int i, int j, const Real &val) changes matrix entry in row i and column j to val and adjusts basis Definition: soplex.cpp:6862 Definition: slufactor.h:52 Real _realParamValues[SoPlex::REALPARAM_COUNT] array of current real parameter values Definition: soplex.cpp:120 void _changeRangeReal(const VectorReal &lhs, const VectorReal &rhs) changes left- and right-hand side vectors and adjusts basis Definition: soplex.cpp:6664 void writeStateRational(const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const bool cpxFormat=false) const writes internal LP, basis information, and parameter settings; if rowNames and colNames are NULL... Definition: soplex.cpp:4826 void _rangeToPerm(int start, int end, int *perm, int permSize) const creates a permutation for removing rows/columns from a range of indices Definition: soplex.cpp:6332 maximum increase of scaling factors between refinements Definition: soplex.h:1181 bool setBoolParam(const BoolParam param, const bool value, const bool quiet=false, const bool init=false) sets boolean parameter value; returns true on success Definition: soplex.cpp:4896 continue iterative refinement with exact basic solution if not optimal? Definition: soplex.h:833 void setBasis(const VarStatus rows[], const VarStatus cols[]) set the lp solver's basis. Definition: spxsolver.cpp:1795 void setMaxUpdates(int maxUp) change maximum number of iterations until a refactorization is performed Definition: spxbasis.h:444 static bool _defaultsAndBoundsInitialized have static arrays been initialized? Definition: soplex.cpp:111 Read MPS format files. virtual void changeObj(const VectorBase< R > &newObj) Changes objective vector to newObj. Definition: spxlpbase.h:1182 type of computational form, i.e., column or row representation Definition: soplex.h:852 void changeColRational(int i, const LPColRational &lpcol) replaces column i with lpcol Definition: soplex.cpp:2208 bool getPrimalReal(VectorReal &vector) gets the primal solution vector if available; returns true on success Definition: soplex.cpp:2865 int num() const Returns the number of LPColBases currently in LPColSetBase. Definition: lpcolsetbase.h:80 bool getDualRational(VectorRational &vector) gets the dual solution vector if available; returns true on success Definition: soplex.cpp:3220 SPxSolver::VarStatus basisRowStatus(int row) const returns basis status for a single row Definition: soplex.cpp:3749 Definition: spxout.h:79 bool getSlacksRational(VectorRational &vector) gets the vector of slack values if available; returns true on success Definition: soplex.cpp:3190 int totalSizePrimalRational(const int base=2) get size of primal solution Definition: soplex.cpp:3636 void _addColsReal(const LPColSetReal &lpcolset) adds multiple columns to the real LP and adjusts basis Definition: soplex.cpp:6539 void getRowsReal(int start, int end, LPRowSetReal &lprowset) const gets rows start, ..., end. Definition: soplex.cpp:824 const VectorRational & rhsRational() const returns right-hand side vector Definition: soplex.cpp:1084 virtual Real time() const =0 void changeRangeReal(const VectorReal &lhs, const VectorReal &rhs) changes left- and right-hand side vectors Definition: soplex.cpp:1406 void _idxToPerm(int *idx, int idxSize, int *perm, int permSize) const creates a permutation for removing rows/columns from an array of indices Definition: soplex.cpp:6311 virtual bool readFile(const char *filename, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0) Reads LP from a file. Definition: spxlpbase.h:1059 void _removeColsReal(int perm[]) removes all columns with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates th... Definition: soplex.cpp:6969 bool getRedCostRational(VectorRational &vector) gets the vector of reduced cost values if available; returns true on success Definition: soplex.cpp:3235 bool LE(Real a, Real b, Real eps=Param::epsilon()) returns true iff a <= b + eps Definition: spxdefines.h:389 void getColsRational(int start, int end, LPColSetRational &lpcolset) const gets columns start, ..., end Definition: soplex.cpp:1138 int number(const SPxRowId &id) const Returns the row number of the row with identifier id. Definition: spxlpbase.h:450 static std::string _intParamDescription[SoPlex::INTPARAM_COUNT] array of descriptions for integer parameters Definition: soplex.cpp:66 bool LT(Real a, Real b, Real eps=Param::epsilon()) returns true iff a < b + eps Definition: spxdefines.h:383 bound flipping ratio test for long steps in the dual simplex Definition: soplex.h:1063 void _addRowReal(const LPRowReal &lprow) adds a single row to the real LP and adjusts basis Definition: soplex.cpp:6458 bool readBasisFile(const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0) reads basis information from filename and returns true on success; if rowNames and colNames are NULL... Definition: soplex.cpp:4516 void changeRangeRational(const VectorRational &lhs, const VectorRational &rhs) changes left- and right-hand side vectors Definition: soplex.cpp:2148 const SVectorBase< R > & colVector(int i) const Returns column vector of column i. Definition: spxlpbase.h:341 virtual void addCols(const LPColSetBase< R > &pset) Definition: spxlpbase.h:702 void _syncLPReal(bool time=true) synchronizes real LP with rational LP, i.e., copies (rounded) rational LP into real LP... Definition: soplex.cpp:7310 bool getDualFarkasReal(VectorReal &vector) gets the Farkas proof if available; returns true on success Definition: soplex.cpp:2940 void getNdualNorms(int &nnormsRow, int &nnormsCol) const get number of dual norms Definition: spxsolver.cpp:1814 virtual void changeLhs(const VectorBase< R > &newLhs) Changes left hand side vector for constraints to newLhs. Definition: spxlpbase.h:1342 void _recomputeRangeTypesRational() recomputes range types from scratch using rational LP Definition: soplex.cpp:7297 void changeObjReal(const VectorReal &obj) changes objective function vector to obj Definition: soplex.cpp:1572 void changeRowRational(int i, const LPRowRational &lprow) replaces row i with lprow Definition: soplex.cpp:2006 void useBoundFlipsRow(bool bf) Definition: spxboundflippingrt.h:250 bool getRowViolationReal(Real &maxviol, Real &sumviol) gets violation of constraints; returns true on success Definition: soplex.cpp:2992 should cycling solutions be accepted during iterative refinement? Definition: soplex.h:824 bool getRowViolationRational(Rational &maxviol, Rational &sumviol) gets violation of constraints; returns true on success Definition: soplex.cpp:3306 lower bound is finite, upper bound is infinite Definition: soplex.h:1407 bool _readFileReal(const char *filename, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0) reads real LP in LP or MPS format from file and returns true on success; gets row names... Definition: soplex.cpp:7196 int totalSizeDual(const int base=2) const returns total size of dual solution Definition: solbase.h:143 void addColsRational(const LPColSetRational &lpcolset) adds multiple columns Definition: soplex.cpp:1986 int luSolvesReal number of (forward and backward) solves with basis matrix in real precision Definition: statistics.h:106 bool _upperFinite(const RangeType &rangeType) const checks whether RangeType corresponds to finite upper bound Definition: soplex.cpp:6450 int luFactorizationsReal number of basis matrix factorizations in real precision Definition: statistics.h:105 LP has been proven to be primal infeasible. Definition: spxsolver.h:208 bool getDualNorms(int &nnormsRow, int &nnormsCol, Real *norms) const gets steepest edge norms and returns false if they are not available Definition: soplex.cpp:996 Rational minAbsNonzeroRational() const returns smallest non-zero element in absolute value Definition: soplex.cpp:1039 Definition: spxout.h:80 Definition: slufactor.h:51 static std::string _intParamName[SoPlex::INTPARAM_COUNT] array of names for integer parameters Definition: soplex.cpp:52 bool readFile(const char *filename, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0) reads LP file in LP or MPS format according to READMODE parameter; gets row names, column names, and integer variables if desired; returns true on success Definition: soplex.cpp:4475 bool setIntParam(const IntParam param, const int value, const bool quiet=false, const bool init=false) sets integer parameter value; returns true on success Definition: soplex.cpp:4939 void setSparsePricingFactor(Real fac) Definition: spxsolver.h:737 int dmaxSizePrimal(const int base=2) const returns size of largest denominator in primal solution Definition: solbase.h:185 void _ensureRationalLP() ensures that the rational LP is available; performs no sync Definition: soplex.cpp:7069 minimum number of stalling refinements since last pivot to trigger rational factorization ... Definition: soplex.h:912 minimal reduction (sum of removed rows/cols) to continue simplification Definition: soplex.h:1199 Wrapper for GMP type mpq_class.We wrap mpq_class so that we can replace it by a double type if GMP is... Definition: rational.h:45 void _changeRhsReal(const VectorReal &rhs) changes right-hand side vector to rhs and adjusts basis Definition: soplex.cpp:6624 void changeElementReal(int i, int j, const Real &val) changes matrix entry in row i and column j to val Definition: soplex.cpp:1602 should a rational factorization be performed after iterative refinement? Definition: soplex.h:821 virtual bool readBasisFile(const char *filename, const NameSet *rowNames, const NameSet *colNames) Definition: spxfileio.cpp:24 bool setDualNorms(int nnormsRow, int nnormsCol, Real *norms) set dual norms Definition: spxsolver.cpp:1826 maximum number of updates without fresh factorization Definition: soplex.h:861 Real opttol() const allowed optimality, i.e., dual feasibility tolerance. Definition: spxsolver.h:697 void removeColRangeRational(int start, int end, int perm[]=0) removes columns start to end including both; an array perm of size numColsRational() may be passed as... Definition: soplex.cpp:2670 std::string statisticString() const statistical information in form of a string Definition: soplex.cpp:4409 virtual void setSolver(SLinSolver *slu, const bool destroy=false) setup linear solver to use. If destroy is true, slusolver will be freed in destructor. Definition: spxsolver.cpp:83 const VectorRational & maxObjRational() const returns objective function vector after transformation to a maximization problem; since this is how i... Definition: soplex.cpp:1221 void changeUpperRational(const VectorRational &upper) changes vector of upper bounds to upper Definition: soplex.cpp:2287 bool _boolParamValues[SoPlex::BOOLPARAM_COUNT] array of current boolean parameter values Definition: soplex.cpp:114 bool _isSolveStopped(bool &stoppedTime, bool &stoppedIter) const should solving process be stopped? Definition: soplex.cpp:6364 virtual void changeObjOffset(const R &o) Definition: spxlpbase.h:1611 bool setDualNorms(int nnormsRow, int nnormsCol, Real *norms) sets steepest edge norms and returns false if that's not possible Definition: soplex.cpp:1004 Real realParam(const RealParam param) const returns real parameter value Definition: soplex.cpp:4866 steepest edge pricer with exact initialization of norms Definition: soplex.h:1047 virtual void changeUpper(const VectorBase< R > &newUpper) Changes vector of upper bounds to newUpper. Definition: spxlpbase.h:1278 void removeColRangeReal(int start, int end, int perm[]=0) removes columns start to end including both; an array perm of size numColsReal() may be passed as buf... Definition: soplex.cpp:1783 void addRowsRational(const LPRowSetRational &lprowset) adds multiple rows Definition: soplex.cpp:1898 static std::string _realParamName[SoPlex::REALPARAM_COUNT] array of names for real parameters Definition: soplex.cpp:55 const SVectorRational & rowVectorRational(int i) const returns vector of row i Definition: soplex.cpp:1075 virtual void start()=0 start timer, resume accounting user, system and real time. static Real _realParamDefault[SoPlex::REALPARAM_COUNT] array of default values for real parameters Definition: soplex.cpp:83 const UnitVectorRational * _unitVectorRational(const int i) returns pointer to a constant unit vector available until destruction of the SoPlex class ... Definition: soplex.cpp:7376 void _syncRealSolution() synchronizes real solution with rational solution, i.e., copies real solution to rational solution ... Definition: soplex.cpp:7352 Generic Ids for LP rows or columns.Both SPxColIds and SPxRowIds may be treated uniformly as SPxIds: ... Definition: spxid.h:85 const SPxRatioTester * ratiotester() const return loaded SPxRatioTester. Definition: spxsolver.h:1636 Definition: spxout.h:81 void removeColsRational(int perm[]) removes all columns with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates th... Definition: soplex.cpp:2621 virtual void changeCol(int n, const LPColBase< R > &newCol) Replaces i 'th column of LP with newCol. Definition: spxlpbase.h:1494 bool _lowerFinite(const RangeType &rangeType) const checks whether RangeType corresponds to finite lower bound Definition: soplex.cpp:6442 void changeRhsRational(const VectorRational &rhs) changes right-hand side vector to rhs Definition: soplex.cpp:2085 int dmaxSizeDualRational(const int base=2) get size of largest denominator in dual solution Definition: soplex.cpp:3706 virtual void changeLower(const VectorBase< R > &newLower) Changes vector of lower bounds to newLower. Definition: spxlpbase.h:1247 RangeType _rangeTypeReal(const Real &lower, const Real &upper) const determines RangeType from real bounds Definition: soplex.cpp:6379 Real luFactorizationTimeReal time for factorizing bases matrices in real precision Definition: statistics.h:97 int dlcmSizePrimalRational(const int base=2) get size of least common multiple of denominators in primal solution Definition: soplex.cpp:3664 Rational objValueRational() returns the objective value if a primal solution is available Definition: soplex.cpp:3139 virtual void changeRange(const VectorBase< R > &newLhs, const VectorBase< R > &newRhs) Changes left and right hand side vectors. Definition: spxlpbase.h:1392 DataArray< SPxSolver::VarStatus > _basisStatusCols Definition: soplex.h:1432 void getRows(int start, int end, LPRowSetBase< R > &set) const Gets rows start, ... end. Definition: spxlpbase.h:203 bool getDualFarkas(VectorBase< R > &vector) const gets the Farkas proof if available; returns true on success Definition: solbase.h:120 nothing known about basis status (possibly due to a singular basis in transformed problem) ... Definition: spxsolver.h:184 decide depending on tolerances whether to apply iterative refinement Definition: soplex.h:1096 bool boolParam(const BoolParam param) const returns boolean parameter value Definition: soplex.cpp:4846 declaration of types for file output automatic choice according to number of rows and columns Definition: soplex.h:932 void removeRowRangeReal(int start, int end, int perm[]=0) removes rows start to end including both; an array perm of size numRowsReal() may be passed as buffer... Definition: soplex.cpp:1691 SPxBoundFlippingRT _ratiotesterBoundFlipping Definition: soplex.h:1352 VarStatus getBasisRowStatus(int row) const gets basis status for a single row Definition: spxsolver.cpp:1710 geometric mean scaling on rows and columns, max 8 rounds Definition: soplex.h:1009 const VectorReal & maxObjReal() const returns objective function vector after transformation to a maximization problem; since this is how i... Definition: soplex.cpp:969 void _solveRealLPAndRecordStatistics() call floating-point solver and update statistics on iterations etc. Definition: soplex.cpp:7109 int index(int n) const Returns index of the n 'th nonzero element. Definition: ssvectorbase.h:174 bool writeBasisFile(const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const bool cpxFormat=false) const writes basis information to filename; if rowNames and colNames are NULL, default names are used; retu... Definition: soplex.cpp:4707 void printSolvingStatistics(std::ostream &os) prints statistics on solving process Definition: soplex.cpp:5896 bool _readFileRational(const char *filename, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0) reads rational LP in LP or MPS format from file and returns true on success; gets row names... Definition: soplex.cpp:7237 lower threshold in lifting (nonzero matrix coefficients with smaller absolute value will be reformula... Definition: soplex.h:1184 bool getPrimalRayReal(VectorReal &vector) gets the primal ray if available; returns true on success Definition: soplex.cpp:2895 bool GT(Real a, Real b, Real eps=Param::epsilon()) returns true iff a > b + eps Definition: spxdefines.h:395 void changeLhsReal(const VectorReal &lhs) changes left-hand side vector for constraints to lhs Definition: soplex.cpp:1332 greedy crash basis weighted by objective, bounds, and sides Definition: soplex.h:1019 void _changeLowerReal(const VectorReal &lower) changes vector of lower bounds to lower and adjusts basis Definition: soplex.cpp:6735 bool setRealParam(const RealParam param, const Real value, const bool quiet=false, const bool init=false) sets real parameter value; returns true on success Definition: soplex.cpp:5245 dual simplex algorithm, i.e., leaving for column and entering for row representation ... Definition: soplex.h:948 Status getBasis(VarStatus rows[], VarStatus cols[], const int rowsSize=-1, const int colsSize=-1) const get current basis, and return solver status. Definition: spxsolver.cpp:1722 steepest edge pricer with initialization to unit norms Definition: soplex.h:1044 int dlcmSizeDual(const int base=2) const returns size of least common multiple of denominators in dual solution Definition: solbase.h:171 static std::string _boolParamDescription[SoPlex::BOOLPARAM_COUNT] array of descriptions for boolean parameters Definition: soplex.cpp:63 std::ostream & getStream(const Verbosity &verbosity) const Returns the stream for the specified verbosity level. Definition: spxout.h:156 virtual void setPricer(SPxPricer *pricer, const bool destroy=false) setup pricer to use. If destroy is true, pricer will be freed in destructor. Definition: spxsolver.cpp:101 VarStatus getBasisColStatus(int col) const gets basis status for a single column Definition: spxsolver.cpp:1716 use bound flipping also for row representation? Definition: soplex.h:839 bool getDualViolationReal(Real &maxviol, Real &sumviol) gets violation of dual multipliers; returns true on success Definition: soplex.cpp:3085 void getColsReal(int start, int end, LPColSetReal &lpcolset) const gets columns start, ..., end Definition: soplex.cpp:896 void changeLowerReal(const VectorReal &lower) changes vector of lower bounds to lower Definition: soplex.cpp:1461 int dlcmSizePrimal(const int base=2) const returns size of least common multiple of denominators in primal solution Definition: solbase.h:157 LPRowReal::Type rowTypeReal(int i) const returns inequality type of row i Definition: soplex.cpp:878 static std::string _realParamDescription[SoPlex::REALPARAM_COUNT] array of descriptions for real parameters Definition: soplex.cpp:69 Class for collecting statistical information. static Real _realParamLower[SoPlex::REALPARAM_COUNT] array of lower bounds for real parameter values Definition: soplex.cpp:97 int totalSizePrimal(const int base=2) const returns total size of primal solution Definition: solbase.h:129 round scaling factors for iterative refinement to powers of two? Definition: soplex.h:830 virtual void setMinReduction(const Real minRed) set minimal reduction threshold to continue simplification Definition: spxsimplifier.h:232 #define DEFAULT_EPS_ZERO default allowed additive zero: 1.0 + EPS_ZERO == 1.0 Definition: spxdefines.h:212 int dlcmSizeDualRational(const int base=2) get size of least common multiple of denominators in dual solution Definition: soplex.cpp:3678 Statistics * _statistics statistics since last call to solveReal() or solveRational() Definition: soplex.h:1308 RangeType _switchRangeType(const RangeType &rangeType) const switches RANGETYPE_LOWER to RANGETYPE_UPPER and vice versa Definition: soplex.cpp:6429 void _removeRowsReal(int perm[]) removes all rows with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates the n... Definition: soplex.cpp:6909 void _syncLPRational(bool time=true) synchronizes rational LP with real LP, i.e., copies real LP to rational LP, without looking at the sy... Definition: soplex.cpp:7333 #define MSG_ERROR(x) Prints out message x if the verbosity level is at least SPxOut::ERROR. Definition: spxdefines.h:109 void changeBoundsReal(const VectorReal &lower, const VectorReal &upper) changes vectors of column bounds to lower and upper Definition: soplex.cpp:1536 void syncLPReal() synchronizes real LP with rational LP, i.e., copies (rounded) rational LP into real LP... Definition: soplex.cpp:1821 bool getPrimalRational(VectorRational &vector) gets the primal solution vector if available; returns true on success Definition: soplex.cpp:3175 void changeObjRational(const VectorRational &obj) changes objective function vector to obj Definition: soplex.cpp:2407 void getObjRational(VectorRational &obj) const gets objective function vector Definition: soplex.cpp:1192 static Real _realParamUpper[SoPlex::REALPARAM_COUNT] array of upper bounds for real parameter values Definition: soplex.cpp:100 void getBasis(SPxSolver::VarStatus rows[], SPxSolver::VarStatus cols[]) const gets current basis via arrays of statuses Definition: soplex.cpp:3810 bool getDual(VectorBase< R > &vector) const gets the dual solution vector if available; returns true on success Definition: solbase.h:96 Dynamic index set.Class DIdxSet provides dynamic IdxSet in the sense, that no restrictions are posed ... Definition: didxset.h:42 #define MSG_INFO1(spxout, x) Prints out message x if the verbosity level is at least SPxOut::INFO1. Definition: spxdefines.h:113 void syncLPRational() synchronizes rational LP with real LP, i.e., copies real LP to rational LP, if sync mode is manual ... Definition: soplex.cpp:2711 bool getRedCostReal(VectorReal &vector) gets the vector of reduced cost values if available; returns true on success Definition: soplex.cpp:2925 void _ensureDSVectorRationalMemory(DSVectorRational &vec, const int newmax) const extends sparse vector to hold newmax entries if and only if it holds no more free entries ... Definition: soplex.cpp:6301 int dmaxSizeDual(const int base=2) const returns size of largest denominator in dual solution Definition: solbase.h:199 bool parseSettingsString(char *line) parses one setting string and returns true on success; note that string is modified ... Definition: soplex.cpp:5581 void changeBoundsRational(const VectorRational &lower, const VectorRational &upper) changes vectors of column bounds to lower and upper Definition: soplex.cpp:2347 virtual bool writeBasisFile(const char *filename, const NameSet *rowNames, const NameSet *colNames, const bool cpxFormat=false) const Definition: spxfileio.cpp:39 virtual void changeBounds(const VectorBase< R > &newLower, const VectorBase< R > &newUpper) Changes variable bounds to newLower and newUpper. Definition: spxlpbase.h:1309 (In)equality for LPs.Class LPRowBase provides constraints for linear programs in the form where a is... Definition: lprowbase.h:45 Preconfigured SoPlex LP solver. Sparse vector .A UnitVectorBase is an SVectorBase that can take only one nonzero value with value 1 b... Definition: unitvectorbase.h:44 const SVectorRational & colVectorRational(int i) const returns vector of column i Definition: soplex.cpp:1147 void getCols(int start, int end, LPColSetBase< R > &set) const Gets columns start, ..., end. Definition: spxlpbase.h:332 void _syncRationalSolution() synchronizes rational solution with real solution, i.e., copies (rounded) rational solution to real s... Definition: soplex.cpp:7364 int _intParamValues[SoPlex::INTPARAM_COUNT] array of current integer parameter values Definition: soplex.cpp:117 Set of strings.Class NameSet implements a symbol or name table. It allows to store or remove names (i... Definition: nameset.h:61 partial multiple pricer based on Dantzig pricing Definition: soplex.h:1038 lower and upper bound finite, but different Definition: soplex.h:1413 Sequential object-oriented SimPlex.SPxSolver is an LP solver class using the revised Simplex algorith... Definition: spxsolver.h:84 void printStatus(std::ostream &os, SPxSolver::Status status) prints status Definition: soplex.cpp:5936 virtual void setTerminationIter(int iteration=-1) set iteration limit. Definition: spxsolver.cpp:1490 threshold on number of rows vs. number of columns for switching from column to row representations in... Definition: soplex.h:1193 Definition: mpsinput.h:45 column representation Ax - s = 0, lower <= x <= upper, lhs <= s <= rhs Definition: soplex.h:935 bool getSlacksReal(VectorReal &vector) gets the vector of slack values if available; returns true on success Definition: soplex.cpp:2880 bool writeFileRational(const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const DIdxSet *intvars=0) const writes rational LP to file; LP or MPS format is chosen from the extension in filename; if rowNames an... Definition: soplex.cpp:4498 Definition: timer.h:103 bool areLPsInSync(const bool checkVecVals=true, const bool checkMatVals=false, const bool quiet=false) const checks if real LP and rational LP are in sync; dimensions will always be compared, vector and matrix values only if the respective parameter is set to true. If quiet is set to true the function will only display which vectors are different. Definition: soplex.cpp:6042 void getRowsRational(int start, int end, LPRowSetRational &lprowset) const gets rows start, ..., end. Definition: soplex.cpp:1066 Exception base class.This class implements a base class for our SoPlex exceptions We provide a what()... Definition: exceptions.h:32 Everything should be within this namespace. void getNdualNorms(int &nnormsRow, int &nnormsCol) const gets number of available dual norms Definition: soplex.cpp:988 void _changeLhsReal(const VectorReal &lhs) changes left-hand side vector for constraints to lhs and adjusts basis Definition: soplex.cpp:6585 working tolerance for feasibility in floating-point solver during iterative refinement ... Definition: soplex.h:1175 Definition: timer.h:101 returns the current git hash of SoPlex bool loadSettingsFile(const char *filename) reads settings file; returns true on success Definition: soplex.cpp:5532 bool getRedCostViolationRational(Rational &maxviol, Rational &sumviol) gets violation of reduced costs; returns true on success Definition: soplex.cpp:3349 Rational maxAbsNonzeroRational() const returns biggest non-zero element in absolute value Definition: soplex.cpp:1048 virtual void setTester(SPxRatioTester *tester, const bool destroy=false) setup ratio-tester to use. If destroy is true, tester will be freed in destructor. Definition: spxsolver.cpp:128 void _changeRowReal(int i, const LPRowReal &lprow) replaces row i with lprow and adjusts basis Definition: soplex.cpp:6563 bool readStringRational(const char *s, Rational &value) read Rational from string Definition: rational.cpp:3478 bool getBasisInverseTimesVecReal(Real *rhs, Real *sol) computes dense solution of basis matrix B * sol = rhs; returns true on success Definition: soplex.cpp:4247 row representation (lower,lhs) <= (x,Ax) <= (upper,rhs) Definition: soplex.h:938 apply rational reconstruction after each iterative refinement? Definition: soplex.h:827 void _changeColReal(int i, const LPColReal &lpcol) replaces column i with lpcol and adjusts basis Definition: soplex.cpp:6711 solve() aborted due to detection of cycling. Definition: spxsolver.h:197 SPxBasis::SPxStatus basisStatus() const returns the current basis status Definition: soplex.cpp:3728 Saving LPs in a form suitable for SoPlex.Class SPxLPBase provides the data structures required for sa... Definition: spxlpbase.h:76 bool getDualReal(VectorReal &vector) gets the dual solution vector if available; returns true on success Definition: soplex.cpp:2910 void changeColReal(int i, const LPColReal &lpcol) replaces column i with lpcol Definition: soplex.cpp:1443 working tolerance for optimality in floating-point solver during iterative refinement ... Definition: soplex.h:1178 #define MSG_WARNING(spxout, x) Prints out message x if the verbosity level is at least SPxOut::WARNING. Definition: spxdefines.h:111 virtual void changeRow(int n, const LPRowBase< R > &newRow) Replaces i 'th row of LP with newRow. Definition: spxlpbase.h:1456 bool writeFileReal(const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const DIdxSet *intvars=0) const writes real LP to file; LP or MPS format is chosen from the extension in filename; if rowNames and co... Definition: soplex.cpp:4486 void setup() Initializes nonzero indices for elements with absolute values above epsilon and sets all other elemen... Definition: ssvectorbase.h:132 RangeType _rangeTypeRational(const Rational &lower, const Rational &upper) const determines RangeType from rational bounds Definition: soplex.cpp:6404 bool getBoundViolationReal(Real &maxviol, Real &sumviol) gets violation of bounds; returns true on success Definition: soplex.cpp:2955 SPxSolver::VarStatus basisColStatus(int col) const returns basis status for a single column Definition: soplex.cpp:3774 bool getBasisInverseColReal(int c, Real *coef, int *inds=NULL, int *ninds=NULL) computes column c of basis inverse; returns true on success Definition: soplex.cpp:4103 int number(const DataKey &pkey) const returns number of name with DataKey pkey in NameSet. Definition: nameset.h:212 void _recomputeRangeTypesReal() recomputes range types from scratch using real LP Definition: soplex.cpp:7284 should feasibility be tested with relaxed bounds and sides? Definition: soplex.h:836 const VectorRational & lhsRational() const returns left-hand side vector Definition: soplex.cpp:1102 DataArray< UnitVectorRational * > _unitMatrixRational Definition: soplex.h:1395 bool getDualFarkasRational(VectorRational &vector) gets the Farkas proof if LP is infeasible; returns true on success Definition: soplex.cpp:3250 DataArray< SPxSolver::VarStatus > _basisStatusRows Definition: soplex.h:1431 virtual void changeElement(int i, int j, const R &val) Changes LP element (i, j) to val. Definition: spxlpbase.h:1532 LPRowBase< R >::Type rowType(int i) const Returns the inequality type of the i'th LPRow. Definition: spxlpbase.h:304 should dual infeasibility be tested in order to try to return a dual solution even if primal infeasib... Definition: soplex.h:818 virtual void changeSense(SPxSense sns) Changes optimization sense to sns. Definition: spxlpbase.h:1601 int intParam(const IntParam param) const returns integer parameter value Definition: soplex.cpp:4856 should lifting be used to reduce range of nonzero matrix coefficients? Definition: soplex.h:812 void printProblemStatistics(std::ostream &os) Definition: spxlpbase.h:1097 int dmaxSizePrimalRational(const int base=2) get size of largest denominator in primal solution Definition: soplex.cpp:3692 static int _intParamDefault[SoPlex::INTPARAM_COUNT] array of default values for integer parameters Definition: soplex.cpp:80 Definition: spxout.h:77 bool getEstimatedCondition(Real &condition) computes an estimated condition number for the current basis matrix using the power method; returns t... Definition: soplex.cpp:3929 const VectorBase< R > & rhs() const Returns the vector of rhs values. Definition: lprowsetbase.h:129 Definition: spxout.h:78 LPRowRational::Type rowTypeRational(int i) const returns inequality type of row i Definition: soplex.cpp:1120 bool getExactCondition(Real &condition) computes the exact condition number for the current basis matrix using the power method; returns true... Definition: soplex.cpp:3944 bool saveSettingsFile(const char *filename, const bool onlyChanged=false) const writes settings file; returns true on success Definition: soplex.cpp:5463 bool getBasisInverseRowReal(int r, Real *coef, int *inds=NULL, int *ninds=NULL) computes row r of basis inverse; returns true on success Definition: soplex.cpp:3959 zero tolerance used in update of the factorization Definition: soplex.h:1157 void changeLowerRational(const VectorRational &lower) changes vector of lower bounds to lower Definition: soplex.cpp:2227 void writeStateReal(const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const bool cpxFormat=false) const writes internal LP, basis information, and parameter settings; if rowNames and colNames are NULL... Definition: soplex.cpp:4805 bool getRedCostViolationReal(Real &maxviol, Real &sumviol) gets violation of reduced costs; returns true on success Definition: soplex.cpp:3031 void _changeBoundsReal(const VectorReal &lower, const VectorReal &upper) changes vectors of column bounds to lower and upper and adjusts basis Definition: soplex.cpp:6815 const SVectorBase< R > & rowVector(int i) const Gets row vector of row i. Definition: spxlpbase.h:212 sparse pricing threshold (#violations < dimension * SPARSITY_THRESHOLD activates sparse pricing) ... Definition: soplex.h:1190 bool getPrimalRay(VectorBase< R > &vector) const gets the primal unbounded ray if available; returns true on success Definition: solbase.h:81 static void setEpsilonFactorization(Real eps) Definition: spxdefines.cpp:50 bool getPrimalRayRational(VectorRational &vector) gets the primal ray if LP is unbounded; returns true on success Definition: soplex.cpp:3205 void _ensureRealLPLoaded() ensures that the real LP and the basis are loaded in the solver; performs no sync ... Definition: soplex.cpp:7082 void changeRowReal(int i, const LPRowReal &lprow) replaces row i with lprow Definition: soplex.cpp:1314 std::string rationalToString(const Rational &r, const int precision) convert rational number to string Definition: rational.cpp:3468 Real objValueReal() returns the objective value if a primal solution is available Definition: soplex.cpp:2839 bool _parseSettingsLine(char *line, const int lineNumber) parses one line in a settings file and returns true on success; note that the string is modified ... Definition: soplex.cpp:7399 void changeRhsReal(const VectorReal &rhs) changes right-hand side vector to rhs Definition: soplex.cpp:1369 geometric frequency at which to apply rational reconstruction Definition: soplex.h:1196 void changeElementRational(int i, int j, const Rational &val) changes matrix entry in row i and column j to val Definition: soplex.cpp:2463 static bool _boolParamDefault[SoPlex::BOOLPARAM_COUNT] array of default values for boolean parameters Definition: soplex.cpp:77 void _enableSimplifierAndScaler() enables simplifier and scaler according to current parameters Definition: soplex.cpp:7017 primal simplex algorithm, i.e., entering for column and leaving for row representation ... Definition: soplex.h:945 Definition: timer.h:102 should LP be transformed to equality form before a rational solve? Definition: soplex.h:815 void getBasisInd(int *bind) const gets the indices of the basic columns and rows; basic column n gives value n, basic row m gives value... Definition: soplex.cpp:3850 virtual void writeFile(const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const DIdxSet *p_intvars=0) const Write loaded LP to filename. Definition: spxlpbase.h:1080 bool getDualNorms(int &nnormsRow, int &nnormsCol, Real *norms) const get dual norms Definition: spxsolver.cpp:1820 upper threshold in lifting (nonzero matrix coefficients with larger absolute value will be reformulat... Definition: soplex.h:1187 void _addRowsReal(const LPRowSetReal &lprowset) adds multiple rows to the real LP and adjusts basis Definition: soplex.cpp:6488 const SVectorReal & colVectorReal(int i) const returns vector of column i Definition: soplex.cpp:905 void changeUpperReal(const VectorReal &upper) changes vector of upper bounds to upper Definition: soplex.cpp:1499 static int _intParamUpper[SoPlex::INTPARAM_COUNT] array of upper bounds for int parameter values Definition: soplex.cpp:94 virtual void computePrimalActivity(const VectorBase< R > &primal, VectorBase< R > &activity) const Computes activity of the rows for a given primal vector; activity does not need to be zero... Definition: spxlpbase.h:1619 LP column.Class LPColBase provides a datatype for storing the column of an LP a the form similar to ... Definition: lpcolbase.h:45 void removeRowRangeRational(int start, int end, int perm[]=0) removes rows start to end including both; an array perm of size numRowsRational() may be passed as bu... Definition: soplex.cpp:2576 geometric mean scaling on rows and columns, max 1 round Definition: soplex.h:1006 void setBasis(SPxSolver::VarStatus rows[], SPxSolver::VarStatus cols[]) sets starting basis via arrays of statuses Definition: soplex.cpp:4355 upper bound is finite, lower bound is infinite Definition: soplex.h:1410 Definition: statistics.h:34 bool getBoundViolationRational(Rational &maxviol, Rational &sumviol) gets violation of bounds; returns true on success Definition: soplex.cpp:3265 bool getPrimal(VectorBase< R > &vector) const gets the primal solution vector if available; returns true on success Definition: solbase.h:57 int primalIterations() return number of iterations done with primal algorithm Definition: spxsolver.h:1940 static int _intParamLower[SoPlex::INTPARAM_COUNT] array of lower bounds for int parameter values Definition: soplex.cpp:91 void removeRowsReal(int perm[]) removes all rows with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates the n... Definition: soplex.cpp:1643 bool getRedCost(VectorBase< R > &vector) const gets the vector of reduced cost values if available; returns true on success Definition: solbase.h:105 |