Scippy

SoPlex

Sequential object-oriented simPlex

soplexlegacy.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the class library */
4 /* SoPlex --- the Sequential object-oriented simPlex. */
5 /* */
6 /* Copyright (C) 1996-2016 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SoPlex is distributed under the terms of the ZIB Academic Licence. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SoPlex; see the file COPYING. If not email to soplex@zib.de. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file soplexlegacy.h
17  * @brief preconfigured \ref soplex::SoPlexLegacy "SoPlexLegacy" LP-solver.
18  */
19 #ifndef _SOPLEXLEGACY_H_
20 #define _SOPLEXLEGACY_H_
21 
22 #include <assert.h>
23 #include <string.h>
24 
25 #include "spxsolver.h"
26 #include "spxscaler.h"
27 #include "spxsimplifier.h"
28 #include "spxsteeppr.h"
29 #include "spxboundflippingrt.h"
30 #include "spxfileio.h"
31 #include "spxweightst.h"
32 #include "slufactor.h"
33 
34 namespace soplex
35 {
36 
37 /**@class SoPlexLegacy
38  @brief Preconfigured SoPlexLegacy LP-solver.
39  @ingroup Algo
40 */
41 class SoPlexLegacy : public SPxLP
42 {
43 protected:
44 
45  //-------------------------
46  //**@name Protected data */
47  //@{
48  // SPxWeightST st; ///< weight starter
49  SLUFactor m_slu; ///< LU Factorisation
50  SPxSolver m_solver; ///< solver
51  SPxScaler* m_preScaler; ///< pre-scaler
52  SPxScaler* m_postScaler; ///< post-scaler
53  SPxSimplifier* m_simplifier; ///< simplifier
54  bool m_vanished; ///< did the presolver solve the problem ?
55  bool m_freePreScaler; ///< true iff m_preScaler should be freed inside of this object
56  bool m_freePostScaler; ///< true iff m_postScaler should be freed inside of this object
57  bool m_freeSimplifier; ///< true iff m_simplifier should be freed inside of this object
60  //@}
61 
62 public:
63 
64  //---------------------------------------
65  //**@name Construction / destruction */
66  //@{
67  /// default construtor.
68  explicit SoPlexLegacy(
69  SPxOut& outstream,
72  virtual ~SoPlexLegacy();
73  /// assignment operator.
75  /// copy constructor.
76  SoPlexLegacy(const SoPlexLegacy&);
77  //@}
78 
79  /// message handler
80 // mutable SPxOut spxout;
81 
82  //---------------------------------------
83  //**@name Access / modification */
84  //@{
85 
86  /// set verbosity
87 // virtual void setVerbosity(const SPxOut::Verbosity v)
88 // {
89 // spxout.setVerbosity(v);
90 // setOutstream(spxout);
91 // }
92 
93  /// set update type for factorization.
95  {
96  m_slu.setUtype(tp);
97  }
98  /// return current Pricing.
99  inline SPxSolver::Pricing pricing() const
100  {
101  return m_solver.pricing();
102  }
103  /// set FULL or PARTIAL pricing.
105  {
106  m_solver.setPricing(pr);
107  }
108  /// return current Type.
109  inline SPxSolver::Type type() const
110  {
111  return m_solver.type();
112  }
113  /// return current basis representation.
115  {
116  return m_solver.rep();
117  }
118  /// set LEAVE or ENTER algorithm.
119  virtual void setType(SPxSolver::Type tp)
120  {
121  m_solver.setType(tp);
122  }
123  /// set ROW or COLUMN representation.
124  virtual void setRep (SPxSolver::Representation p_rep)
125  {
126  m_solver.setRep(p_rep);
127  }
128  /// setup prescaler to use. If \p destroy is true, \p scaler will be freed in destructor.
129  virtual void setPreScaler(SPxScaler* scaler, const bool destroy = false);
130  /// setup postscaler to use. If \p destroy is true, \p scaler will be freed in destructor.
131  virtual void setPostScaler(SPxScaler* scaler, const bool destroy = false);
132  /// setup simplifier to use. If \p destroy is true, \p simpli will be freed in destructor.
133  virtual void setSimplifier(SPxSimplifier* simpli, const bool destroy = false);
134  /// has a simplifier been set?
135  inline bool has_simplifier() const
136  {
137  return m_simplifier != 0;
138  }
139  /// has a prescaler been set?
140  inline bool has_prescaler() const
141  {
142  return m_preScaler != 0;
143  }
144  /// has a postscaler been set?
145  inline bool has_postscaler() const
146  {
147  return m_postScaler != 0;
148  }
149  /// setup pricer to use.
150  virtual void setPricer(SPxPricer* pricer, const bool destroy = false)
151  {
152  m_solver.setPricer(pricer, destroy);
153  }
154  /// setup ratio-tester to use.
155  virtual void setTester(SPxRatioTester* tester, const bool destroy = false)
156  {
157  m_solver.setTester(tester, destroy);
158  }
159  /// setup starting basis generator to use.
160  virtual void setStarter(SPxStarter* starter, const bool destroy = false)
161  {
162  m_solver.setStarter(starter, destroy);
163  }
164  /// @throw SPxStatusException if simplifier loaded, this is not yet implemented
165  /// set starting basis
167  {
168  if (has_simplifier())
169  {
170  MSG_ERROR( std::cerr << "ESOLVR04 setting starting basis with presolving not yet implemented" << std::endl; )
171  throw SPxStatusException("XSOLVR04 setting starting basis with presolving not yet implemented");
172  }
173 
174  m_colsbasisstatus.reSize(nCols());
175  for (int i = 0; i < nCols(); i++)
176  m_colsbasisstatus[i] = cols[i];
177 
178  m_rowsbasisstatus.reSize(nRows());
179  for (int i = 0; i < nRows(); i++)
180  m_rowsbasisstatus[i] = rows[i];
181  }
182  /// clear starting basis
183  virtual void clearBasis()
184  {
185  m_colsbasisstatus.clear();
186  m_rowsbasisstatus.clear();
187  m_solver.reLoad();
188  }
189  /// set time limit.
190  virtual void setTerminationTime(Real time = infinity)
191  {
192  m_solver.setTerminationTime(time);
193  }
194  /// return time limit.
195  inline Real terminationTime() const
196  {
197  return m_solver.terminationTime();
198  }
199  /// set iteration limit.
200  virtual void setTerminationIter(int iter = -1)
201  {
202  m_solver.setTerminationIter(iter);
203  }
204  /// return iteration limit.
205  inline int terminationIter() const
206  {
207  return m_solver.terminationIter();
208  }
209  /// set objective limit.
210  virtual void setTerminationValue(Real val = infinity)
211  {
212  m_solver.setTerminationValue(val);
213  }
214  /// return objective limit.
215  inline Real terminationValue() const
216  {
217  return m_solver.terminationValue();
218  }
219  /// allowed primal feasibility tolerance.
220  virtual Real feastol() const
221  {
222  return m_solver.feastol();
223  }
224  /// allowed optimality, i.e., dual feasibility tolerance.
225  virtual Real opttol() const
226  {
227  return m_solver.opttol();
228  }
229  /// guaranteed primal and dual bound violation for optimal solution, returning the maximum of feastol() and opttol(), i.e., the less tight tolerance.
230  virtual Real delta() const
231  {
232  return m_solver.delta();
233  }
234  /// set parameter \p feastol.
235  virtual void setFeastol(Real d)
236  {
237  m_solver.setFeastol(d);
238  }
239  /// set parameter \p opttol.
240  virtual void setOpttol(Real d)
241  {
242  m_solver.setOpttol(d);
243  }
244  /// set parameter \p delta, i.e., set \p feastol and \p opttol to same value.
245  virtual void setDelta(Real d)
246  {
247  m_solver.setDelta(d);
248  }
249  //@}
250 
251  //---------------------------------------
252  //**@name Solving and solution query */
253  //@{
254  /// @throw SPxStatusException if no problem loaded
255  virtual SPxSolver::Status solve();
256  ///
257  virtual Real objValue() const;
258  ///
259  virtual SPxSolver::Status getPrimal(Vector& vector) const;
260  ///
261  virtual SPxSolver::Status getSlacks(Vector& vector) const;
262  ///
263  virtual SPxSolver::Status getDual(Vector& vector) const;
264  ///
265  virtual SPxSolver::Status getRedCost(Vector& vector) const;
266 
267  /// gets basis status for a single row.
269 
270  /// gets basis status for a single column.
272 
273  /// get current basis, and return solver status.
275 
276  const char* getColName(
277  int idx,
278  const NameSet* cnames,
279  char* buf)
280  {
281  assert(buf != 0);
282  assert(idx >= 0);
283  assert(idx < nCols());
284 
285  if (cnames != 0)
286  {
287  DataKey key = cId(idx);
288 
289  if (cnames->has(key))
290  return (*cnames)[key];
291  }
292  std::sprintf(buf, "x%d", idx);
293 
294  return buf;
295  }
296 
297  const char* getRowName(
298  int idx,
299  const NameSet* rnames,
300  char* buf)
301  {
302  assert(buf != 0);
303  assert(idx >= 0);
304  assert(idx < nRows());
305 
306  if (rnames != 0)
307  {
308  DataKey key = rId(idx);
309 
310  if (rnames->has(key))
311  return (*rnames)[key];
312  }
313  std::sprintf(buf, "C%d", idx);
314 
315  return buf;
316  }
317 
318  /// @throw SPxStatusException if simplifier loaded, this is not yet
319  /// implemented
320  virtual SPxSolver::Status getPrimalray(Vector& vector) const;
321 
322  /// @throw SPxStatusException if simplifier loaded, this is not yet
323  /// implemented
324  virtual SPxSolver::Status getDualfarkas(Vector& vector) const;
325 
326  /// get violation of constraints.
327  virtual void qualConstraintViolation(Real& maxviol, Real& sumviol) const;
328  /// get violations of bounds.
329  virtual void qualBoundViolation(Real& maxviol, Real& sumviol) const;
330 #if 0
331  /// get the residuum |Ax-b|.
332  virtual void qualSlackViolation(Real& maxviol, Real& sumviol) const;
333  /// get violation of optimality criterion.
334  virtual void qualRedCostViolation(Real& maxviol, Real& sumviol) const;
335 #endif
336  /// time spent in factorizations
337  virtual Real getFactorTime() const
338  {
339  return m_vanished ? REAL(0.0) : m_slu.getFactorTime();
340  }
341  /// number of factorizations performed
342  virtual int getFactorCount() const
343  {
344  return m_vanished ? 0 : m_slu.getFactorCount();
345  }
346  /// time spent in solves
347  virtual Real getSolveTime() const
348  {
349  return m_vanished ? REAL(0.0) : m_slu.getSolveTime();
350  }
351  /// number of solves performed
352  virtual int getSolveCount() const
353  {
354  return m_vanished ? 0 : m_slu.getSolveCount();
355  }
356  ///
357  virtual int iteration() const
358  {
359  return m_vanished ? 0 : m_solver.basis().iteration();
360  }
361  ///
362  virtual bool terminate()
363  {
364  return m_solver.terminate();
365  }
366  /// returns the current status
367  virtual SPxSolver::Status status() const
368  {
369  if (m_vanished)
370  return SPxSolver::OPTIMAL;
371 
372  return m_solver.status();
373  }
374  //@}
375 
376  //---------------------------------------
377  //**@name I/O */
378  //@{
379 
380  /** Load basis from \p filename in MPS format. If \p rowNames and \p
381  * colNames are \c NULL, default names are used for the constraints and
382  * variables.
383  */
384  virtual bool readBasisFile(const char* filename,
385  const NameSet* rowNames, const NameSet* colNames);
386 
387  /** Write basis to \p filename in MPS format. If \p rowNames and \p
388  * colNames are \c NULL, default names are used for the constraints and
389  * variables.
390  */
391  virtual bool writeBasisFile(const char* filename,
392  const NameSet* rowNames, const NameSet* colNames);
393 
394  /** Write LP, basis and parameter settings of the current SPxSolver object
395  * (i.e. after simplifying and scaling).
396  * LP is written in MPS format to "\p filename".mps, basis is written in
397  * "\p filename".bas, and parameters are written to "\p filename".set.
398  * If \p rowNames and \p colNames are \c NULL, default names are used for
399  * the constraints and variables.
400  */
401  virtual bool writeState(const char* filename,
402  const NameSet* rowNames = NULL, const NameSet* colNames = NULL) const;
403 
404  /// returns statistical information in form of a string.
405  std::string statistics() const
406  {
407  return m_solver.statistics();
408  }
409  //@}
410 
411 private:
412 
413  //------------------------------------
414  //**@name Private helpers */
415  //@{
416  /// undoes preprocessing such that the unsimplified solution values and basis is available
417  void unsimplify() const;
418  //@}
419 };
420 } // namespace soplex
421 #endif // _SOPLEX_H_
virtual int terminationIter() const
return iteration limit.
Definition: spxsolver.cpp:1497
virtual SPxSolver::Status getRedCost(Vector &vector) const
virtual Real getFactorTime() const
time spent in factorizations
Definition: soplexlegacy.h:337
virtual Real opttol() const
allowed optimality, i.e., dual feasibility tolerance.
Definition: soplexlegacy.h:225
UpdateType
Specifies how to perform change method.
Definition: slufactor.h:49
virtual int iteration() const
Definition: soplexlegacy.h:357
virtual Real terminationTime() const
return time limit.
Definition: spxsolver.cpp:1485
Safe arrays of data objects.Class DataArray provides safe arrays of Data Objects. For general C++ obj...
Definition: dataarray.h:63
Representation rep() const
return the current basis representation.
Definition: spxsolver.h:406
void setRep(Representation p_rep)
switch to ROW or COLUMN representation if not already used.
Definition: spxsolver.cpp:256
#define REAL(x)
Definition: spxdefines.h:203
virtual void clearBasis()
clear starting basis
Definition: soplexlegacy.h:183
virtual SPxSolver::Status getDualfarkas(Vector &vector) const
Type
Algorithmic type.
Definition: spxsolver.h:124
virtual void setPreScaler(SPxScaler *scaler, const bool destroy=false)
setup prescaler to use. If destroy is true, scaler will be freed in destructor.
virtual void setDelta(Real d)
set parameter delta, i.e., set feastol and opttol to same value.
Definition: soplexlegacy.h:245
int iteration() const
returns number of basis changes since last load().
Definition: spxbasis.h:539
virtual int getFactorCount() const
number of factorizations performed
Definition: soplexlegacy.h:342
virtual void setStarter(SPxStarter *starter, const bool destroy=false)
setup starting basis generator to use. If destroy is true, starter will be freed in destructor...
Definition: spxsolver.cpp:154
virtual void setTerminationIter(int iter=-1)
set iteration limit.
Definition: soplexlegacy.h:200
void setUtype(UpdateType tp)
sets update type.
Definition: slufactor.h:122
Representation
LP basis representation.
Definition: spxsolver.h:105
bool has_prescaler() const
has a prescaler been set?
Definition: soplexlegacy.h:140
void setType(Type tp)
set LEAVE or ENTER algorithm.
Definition: spxsolver.cpp:169
SPxSimplifier * m_simplifier
simplifier
Definition: soplexlegacy.h:53
bool has_postscaler() const
has a postscaler been set?
Definition: soplexlegacy.h:145
Implementation of Sparse Linear Solver.
Abstract ratio test base class.Class SPxRatioTester is the virtual base class for computing the ratio...
virtual SPxSolver::Status getDual(Vector &vector) const
SoPlex start basis generation base class.SPxStarter is the virtual base class for classes generating ...
Definition: spxstarter.h:41
bool m_vanished
did the presolver solve the problem ?
Definition: soplexlegacy.h:54
void clear()
remove all elements.
Definition: dataarray.h:205
virtual void setOpttol(Real d)
set parameter opttol.
Definition: soplexlegacy.h:240
Pricing pricing() const
return current Pricing.
Definition: spxsolver.h:418
void setOpttol(Real d)
set parameter opttol.
Definition: spxsolver.cpp:916
virtual void setTester(SPxRatioTester *tester, const bool destroy=false)
setup ratio-tester to use.
Definition: soplexlegacy.h:155
Real opttol() const
allowed optimality, i.e., dual feasibility tolerance.
Definition: spxsolver.h:697
virtual void setTerminationTime(Real time=infinity)
set time limit.
Definition: spxsolver.cpp:1478
virtual void setBasis(SPxSolver::VarStatus rows[], SPxSolver::VarStatus cols[])
Definition: soplexlegacy.h:166
Real delta() const
guaranteed primal and dual bound violation for optimal solution, returning the maximum of feastol() a...
Definition: spxsolver.h:705
LP simplification base class.
virtual void qualBoundViolation(Real &maxviol, Real &sumviol) const
get violations of bounds.
Entry identifier class for items of a DataSet.Every item in a DataSet is assigned a DataKey by which ...
Definition: datakey.h:46
DataKey key(int i) const
Returns DataKey of i &#39;th LPColBase in LPColSetBase.
Definition: lpcolsetbase.h:224
virtual void setFeastol(Real d)
set parameter feastol.
Definition: soplexlegacy.h:235
Steepest edge pricer.
Leaving Simplex.
Definition: spxsolver.h:143
declaration of types for file output
double Real
SOPLEX_DEBUG.
Definition: spxdefines.h:200
virtual void setPostScaler(SPxScaler *scaler, const bool destroy=false)
setup postscaler to use. If destroy is true, scaler will be freed in destructor.
SoPlexLegacy(SPxOut &outstream, SPxSolver::Type type=SPxSolver::LEAVE, SPxSolver::Representation rep=SPxSolver::COLUMN)
default construtor.
SoPlexLegacy & operator=(const SoPlexLegacy &rhs)
assignment operator.
Pricing
Pricing type.
Definition: spxsolver.h:152
int getFactorCount() const
number of factorizations performed
Definition: slufactor.h:236
const char * getColName(int idx, const NameSet *cnames, char *buf)
Definition: soplexlegacy.h:276
virtual void qualConstraintViolation(Real &maxviol, Real &sumviol) const
get violation of constraints.
virtual void setType(SPxSolver::Type tp)
set LEAVE or ENTER algorithm.
Definition: soplexlegacy.h:119
int getSolveCount() const
number of solves performed
Definition: slufactor.h:251
int terminationIter() const
return iteration limit.
Definition: soplexlegacy.h:205
virtual int getSolveCount() const
number of solves performed
Definition: soplexlegacy.h:352
virtual SPxSolver::Status getPrimal(Vector &vector) const
std::string statistics() const
returns statistical information in form of a string.
Definition: soplexlegacy.h:405
LP simplification abstract base class.Instances of classes derived from SPxSimplifier may be loaded t...
Definition: spxsimplifier.h:41
LP has been solved to optimality.
Definition: spxsolver.h:206
virtual bool terminate()
Definition: soplexlegacy.h:362
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
SPxRowId rId(int n) const
Returns the row identifier for row n.
Definition: spxlpbase.h:470
Wrapper for several output streams. A verbosity level is used to decide which stream to use and wheth...
Definition: spxout.h:63
int nCols() const
Returns number of columns in LP.
Definition: spxlpbase.h:133
const SPxBasis & basis() const
Return current basis.
Definition: spxsolver.h:1616
main LP solver class
#define MSG_ERROR(x)
Prints out message x if the verbosity level is at least SPxOut::ERROR.
Definition: spxdefines.h:109
virtual bool writeBasisFile(const char *filename, const NameSet *rowNames, const NameSet *colNames)
SPxSolver::Representation rep() const
return current basis representation.
Definition: soplexlegacy.h:114
SPxSolver::Status getBasis(SPxSolver::VarStatus rows[], SPxSolver::VarStatus cols[]) const
get current basis, and return solver status.
Abstract pricer base class.Class SPxPricer is a pure virtual class defining the interface for pricer ...
Definition: spxpricer.h:46
virtual void setPricer(SPxPricer *pricer, const bool destroy=false)
setup pricer to use.
Definition: soplexlegacy.h:150
virtual bool readBasisFile(const char *filename, const NameSet *rowNames, const NameSet *colNames)
virtual void setTerminationTime(Real time=infinity)
set time limit.
Definition: soplexlegacy.h:190
Type type() const
return current Type.
Definition: spxsolver.h:412
const char * getRowName(int idx, const NameSet *rnames, char *buf)
Definition: soplexlegacy.h:297
virtual Real objValue() const
bool m_freePostScaler
true iff m_postScaler should be freed inside of this object
Definition: soplexlegacy.h:56
virtual void setRep(SPxSolver::Representation p_rep)
set ROW or COLUMN representation.
Definition: soplexlegacy.h:124
virtual SPxSolver::Status status() const
returns the current status
Definition: soplexlegacy.h:367
Bound flipping ratio test (long step dual) for SoPlex.
Preconfigured SoPlexLegacy LP-solver.
Definition: soplexlegacy.h:41
Set of strings.Class NameSet implements a symbol or name table. It allows to store or remove names (i...
Definition: nameset.h:61
int nRows() const
Returns number of rows in LP.
Definition: spxlpbase.h:127
Real getFactorTime() const
time spent in factorizations
Definition: slufactor.h:226
virtual void setPricing(SPxSolver::Pricing pr)
set FULL or PARTIAL pricing.
Definition: soplexlegacy.h:104
Sequential object-oriented SimPlex.SPxSolver is an LP solver class using the revised Simplex algorith...
Definition: spxsolver.h:84
SPxSolver::VarStatus getBasisColStatus(int col) const
gets basis status for a single column.
Real getSolveTime() const
time spent in solves
Definition: slufactor.h:241
virtual Real terminationValue() const
return objective limit.
Definition: spxsolver.cpp:1547
bool has_simplifier() const
has a simplifier been set?
Definition: soplexlegacy.h:135
SPxSolver::VarStatus getBasisRowStatus(int row) const
gets basis status for a single row.
virtual void setTerminationIter(int iteration=-1)
set iteration limit.
Definition: spxsolver.cpp:1490
Real terminationTime() const
return time limit.
Definition: soplexlegacy.h:195
Implementation of Sparse Linear Solver.This class implements a SLinSolver interface by using the spar...
Definition: slufactor.h:41
Everything should be within this namespace.
virtual bool terminate()
Termination criterion.
Definition: spxsolve.cpp:1101
virtual Real delta() const
guaranteed primal and dual bound violation for optimal solution, returning the maximum of feastol() a...
Definition: soplexlegacy.h:230
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
Weighted start basis.
SPxSolver::Type type() const
return current Type.
Definition: soplexlegacy.h:109
DataArray< SPxSolver::VarStatus > m_rowsbasisstatus
Definition: soplexlegacy.h:59
SPxColId cId(int n) const
Returns the column identifier for column n.
Definition: spxlpbase.h:476
SPxSolver m_solver
solver
Definition: soplexlegacy.h:50
Real feastol() const
allowed primal feasibility tolerance.
Definition: spxsolver.h:689
LP scaling base class.
SPxScaler * m_postScaler
post-scaler
Definition: soplexlegacy.h:52
SPxScaler * m_preScaler
pre-scaler
Definition: soplexlegacy.h:51
Status status() const
Status of solution process.
Definition: spxsolve.cpp:1536
LP scaler abstract base class.Instances of classes derived from SPxScaler may be loaded to SoPlex in ...
Definition: spxscaler.h:39
virtual bool writeState(const char *filename, const NameSet *rowNames=NULL, const NameSet *colNames=NULL) const
SLUFactor m_slu
LU Factorisation.
Definition: soplexlegacy.h:49
bool m_freeSimplifier
true iff m_simplifier should be freed inside of this object
Definition: soplexlegacy.h:57
const Real infinity
Definition: spxdefines.cpp:26
DataArray< SPxSolver::VarStatus > m_colsbasisstatus
Definition: soplexlegacy.h:58
virtual void setUtype(SLUFactor::UpdateType tp)
message handler
Definition: soplexlegacy.h:94
virtual void setStarter(SPxStarter *starter, const bool destroy=false)
setup starting basis generator to use.
Definition: soplexlegacy.h:160
const VectorBase< R > & rhs() const
Returns right hand side vector.
Definition: spxlpbase.h:224
virtual SPxSolver::Status getSlacks(Vector &vector) const
Real terminationValue() const
return objective limit.
Definition: soplexlegacy.h:215
SPxSolver::Pricing pricing() const
return current Pricing.
Definition: soplexlegacy.h:99
Exception class for status exceptions during the computationsThis class is derived from the SoPlex ex...
Definition: exceptions.h:89
void setFeastol(Real d)
set parameter feastol.
Definition: spxsolver.cpp:904
bool m_freePreScaler
true iff m_preScaler should be freed inside of this object
Definition: soplexlegacy.h:55
virtual Real feastol() const
allowed primal feasibility tolerance.
Definition: soplexlegacy.h:220
std::string statistics() const
returns statistical information in form of a string.
Definition: spxsolver.h:2009
virtual void setTerminationValue(Real value=infinity)
set objective limit.
Definition: spxsolver.cpp:1542
virtual SPxSolver::Status solve()
virtual void reLoad()
reload LP.
Definition: spxsolver.cpp:55
bool has(int pnum) const
does NameSet has a name with number pnum?
Definition: nameset.h:231
void reSize(int newsize)
reset size to newsize.
Definition: dataarray.h:223
columnwise representation.
Definition: spxsolver.h:108
void unsimplify() const
undoes preprocessing such that the unsimplified solution values and basis is available ...
virtual void setSimplifier(SPxSimplifier *simpli, const bool destroy=false)
setup simplifier to use. If destroy is true, simpli will be freed in destructor.
virtual SPxSolver::Status getPrimalray(Vector &vector) const
virtual void setTerminationValue(Real val=infinity)
set objective limit.
Definition: soplexlegacy.h:210
virtual Real getSolveTime() const
time spent in solves
Definition: soplexlegacy.h:347
void setPricing(Pricing pr)
set FULL or PARTIAL pricing.
Definition: spxsolver.cpp:431
void setDelta(Real d)
set parameter delta, i.e., set feastol and opttol to same value.
Definition: spxsolver.cpp:928