11 #include "CoinHelperFunctions.hpp"
12 #include "OsiSolverInterface.hpp"
13 #include "OsiCuts.hpp"
19 #define EXTRA_STORAGE 1024
21 using namespace Couenne;
43 if (x) CoinCopyN (x, dim,
x_);
else CoinFillN (
x_, dim, 0.);
68 if (x) CoinCopyN (x, dim,
x_);
else CoinFillN (
x_, dim, 0.);
77 dimension_ (src.dimension_),
81 copied_ (src.copied_) {
105 free (
x_);
x_ = NULL;
199 int dim = si -> getNumCols ();
205 si -> getColSolution (),
206 si -> getColLower (),
207 si -> getColUpper (), copy);
212 for (
int i = cs -> sizeColCuts (); i--;) {
214 OsiColCut *cut = cs -> colCutPtr (i);
216 register const CoinPackedVector
217 &lbs = cut -> lbs (),
218 &ubs = cut -> ubs ();
220 register const int *indices = lbs. getIndices ();
221 register const double *elements = lbs. getElements ();
229 for (
register int j = lbs. getNumElements ();
j--; elements++, indices++)
230 if (*elements > lb [*indices])
231 lb [*indices] = *elements;
235 indices = ubs. getIndices ();
236 elements = ubs. getElements ();
238 for (
register int j = ubs. getNumElements ();
j--; elements++, indices++)
239 if (*elements < ub [*indices])
240 ub [*indices] = *elements;
std::stack< DomainPoint * > domStack_
stack of saved points
int size() const
return current size
CouNumber * x()
return current variable vector
CouNumber * lb_
lower bound
DomainPoint(int dim, CouNumber *x, CouNumber *lb, CouNumber *ub, bool copy=true)
constructor
CouNumber * lb()
return current lower bound vector
Define a point in the solution space and the bounds around it.
bool copied_
true if data has been copied (so we own it, and have to delete it upon destruction) ...
void pop()
restore previous point
int dimension_
dimension of point
double CouNumber
main number type in Couenne
void push(int dim, CouNumber *x, CouNumber *lb, CouNumber *ub, bool copy=true)
save current point and start using another
DomainPoint * point_
current point
DomainPoint & operator=(const DomainPoint &src)
assignment operator
CouNumber * ub_
upper bound
CouNumber * ub()
return current upper bound vector
CouNumber * x_
current value of variables
void resize(int newdim)
resize domain point (for extending into higher space)
void fint fint fint real fint real * x