73 assign(
const int size,
int*& ElementIndices,
double*& ElementValues,
74 const double Obj,
const double LB,
const double UB) {
83 copy(
const int size,
const int* ElementIndices,
const double* ElementValues,
84 const double Obj,
const double LB,
const double UB) {
99 const double Obj,
const double LB,
const double UB) {
125 const double Obj,
const double LB,
const double UB) :
131 BCP_col(
const int size,
int*& ElementIndices,
double*& ElementValues,
132 const double Obj,
const double LB,
const double UB) :
138 const double Obj,
const double LB,
const double UB) :
191 assign(
const int size,
int*& ElementIndices,
double*& ElementValues,
192 const double LB,
const double UB) {
200 copy(
const int size,
const int* ElementIndices,
const double* ElementValues,
201 const double LB,
const double UB) {
215 const double LB,
const double UB) {
240 const double LB,
const double UB) :
246 BCP_row(
const int size,
int*& ElementIndices,
double*& ElementValues,
247 const double LB,
const double UB) :
288 inline size_t colnum()
const {
return _ColLowerBound.size(); }
290 inline size_t rownum()
const {
return _RowLowerBound.size(); }
313 void reserve(
const int MaxColNum,
const int MaxRowNum,
314 const int MaxNonzeros);
319 const double* OBJ,
const double* CLB,
const double* CUB,
320 const double* RLB,
const double* RUB);
323 double*& OBJ,
double*& CLB,
double*& CUB,
324 double*& RLB,
double*& RUB);
333 void add_col_set(
const BCP_col_set& Cols);
336 void add_row_set(
const BCP_row_set& Rows);
351 double dot_product_col(
const int index,
const BCP_vec<double>& col)
const;
354 double dot_product_row(
const int index,
const BCP_vec<double>& row)
const;
357 double dot_product_col(
const int index,
const double* col)
const;
360 double dot_product_row(
const int index,
const double* row)
const;
379 _Objective(), _ColLowerBound(), _ColUpperBound(),
380 _RowLowerBound(), _RowUpperBound() {}
400 double extra_gap,
double extra_major);
415 double extra_gap,
double extra_major);
430 int*& VB,
int*& EI,
double*& EV,
431 double*& OBJ,
double*& CLB,
double*& CUB,
432 double*& RLB,
double*& RUB);
This class describes the message buffer used for all processes of BCP.
BCP_col(const int size, int *&ElementIndices, double *&ElementValues, const double Obj, const double LB, const double UB)
This constructor acts exactly like the assign method with the same argument list.
void copy(const int size, const int *ElementIndices, const double *ElementValues, const double Obj, const double LB, const double UB)
Copy the arguments into the appropriate data members.
BCP_col(const CoinPackedVectorBase &vec, const double Obj, const double LB, const double UB)
double _LowerBound
The lower bound corresponding to the column.
double _Objective
The objective function coefficient corresponding to the column.
double UpperBound() const
Return the upper bound.
~BCP_col()
The destructor deletes all data members.
void LowerBound(const double lb)
Set the lower bound to the given value.
BCP_col(BCP_vec< int >::const_iterator firstind, BCP_vec< int >::const_iterator lastind, BCP_vec< double >::const_iterator firstval, BCP_vec< double >::const_iterator lastval, const double Obj, const double LB, const double UB)
This constructor acts exactly like the copy method with the same argument list.
double Objective() const
Return the objective coefficient.
BCP_col & operator=(const BCP_col &x)
Assignment operator: copy over the contents of x.
double _UpperBound
The upper bound corresponding to the column.
void UpperBound(const double ub)
Set the upper bound to the given value.
BCP_col()
The default constructor creates an empty column with 0 as objective coefficient, 0....
double LowerBound() const
Return the lower bound.
void Objective(const double obj)
Set the objective coefficient to the given value.
void assign(const int size, int *&ElementIndices, double *&ElementValues, const double Obj, const double LB, const double UB)
Set the objective coefficient, lower and upper bounds to the given values.
BCP_col(const BCP_col &x)
The copy constructor makes a copy of x.
void copy(BCP_vec< int >::const_iterator firstind, BCP_vec< int >::const_iterator lastind, BCP_vec< double >::const_iterator firstval, BCP_vec< double >::const_iterator lastval, const double Obj, const double LB, const double UB)
Same as the other copy() method, except that instead of using vectors the indices (values) are given ...
BCP_lp_relax(BCP_vec< BCP_col * > &cols, BCP_vec< double > &RLB, BCP_vec< double > &RUB, double extra_gap, double extra_major)
Same as the previous method except that this method allows extra_gap and extra_major to be specified.
size_t colnum() const
The number of columns.
BCP_lp_relax(const bool colordered, const BCP_vec< int > &VB, const BCP_vec< int > &EI, const BCP_vec< double > &EV, const BCP_vec< double > &OBJ, const BCP_vec< double > &CLB, const BCP_vec< double > &CUB, const BCP_vec< double > &RLB, const BCP_vec< double > &RUB)
Create an LP relaxation of the given ordering by copying the content of the arguments to the LP relax...
const BCP_vec< double > & Objective() const
A const reference to the vector of objective coefficients.
~BCP_lp_relax()
The destructor deletes the data members.
const BCP_vec< double > & ColUpperBound() const
A const reference to the vector of upper bounds on the variables.
void erase_row_set(const BCP_vec< int > &pos)
Remove the rows whose indices are listed in pos from the LP relaxation.
void pack(BCP_buffer &buf) const
Pack the LP relaxation into the buffer.
BCP_lp_relax(BCP_vec< BCP_col * > &cols, BCP_vec< double > &RLB, BCP_vec< double > &RUB)
Create a column major ordered LP relaxation by assigning the content of the arguments to the LP relax...
void copyOf(const CoinPackedMatrix &m, const double *OBJ, const double *CLB, const double *CUB, const double *RLB, const double *RUB)
Set up the LP relaxation by making a copy of the arguments.
size_t rownum() const
The number of rows.
BCP_lp_relax(const bool colordered=true)
Create an empty LP relaxation with given ordering.
void assign(CoinPackedMatrix &m, double *&OBJ, double *&CLB, double *&CUB, double *&RLB, double *&RUB)
Set up the LP relaxation by taking over the pointers in the arguments.
const BCP_vec< double > & RowLowerBound() const
A const reference to the vector of lower bounds on the cuts.
void clear()
Clear the LP relaxation.
void unpack(BCP_buffer &buf)
Unpack the LP relaxation from the buffer.
const BCP_vec< double > & RowUpperBound() const
A const reference to the vector of upper bounds on the cuts.
void erase_col_set(const BCP_vec< int > &pos)
Remove the columns whose indices are listed in pos from the LP relaxation.
BCP_lp_relax(const bool colordered, const int rownum, const int colnum, const int nznum, int *&VB, int *&EI, double *&EV, double *&OBJ, double *&CLB, double *&CUB, double *&RLB, double *&RUB)
Create an LP relaxation of the given ordering by assigning the content of the arguments to the LP rel...
const BCP_vec< double > & ColLowerBound() const
A const reference to the vector of lower bounds on the variables.
BCP_lp_relax(BCP_vec< BCP_row * > &rows, BCP_vec< double > &CLB, BCP_vec< double > &CUB, BCP_vec< double > &OBJ)
Create a row major ordered LP relaxation by assigning the content of the arguments to the LP relaxati...
BCP_lp_relax(const BCP_lp_relax &mat)
The copy constructor makes a copy of the argument LP relaxation.
BCP_lp_relax & operator=(const BCP_lp_relax &mat)
Copy the content of x into the LP relaxation.
void reserve(const int MaxColNum, const int MaxRowNum, const int MaxNonzeros)
Reserve space in the LP relaxation for at least MaxColNum columns, MaxRowNum rows and MaxNonzeros non...
BCP_lp_relax(BCP_vec< BCP_row * > &rows, BCP_vec< double > &CLB, BCP_vec< double > &CUB, BCP_vec< double > &OBJ, double extra_gap, double extra_major)
Same as the previous method except that this method allows extra_gap and extra_major to be specified.
BCP_row & operator=(const BCP_row &x)
Assignment operator: copy over the contents of x.
BCP_row()
The default constructor creates an empty row with -infinity as lower and +infinity as upper bound.
void copy(const int size, const int *ElementIndices, const double *ElementValues, const double LB, const double UB)
Copy the arguments into the appropriate data members.
double _UpperBound
The upper bound corresponding to the row.
double _LowerBound
The lower bound corresponding to the row.
double LowerBound() const
Return the lower bound.
BCP_row(const CoinPackedVectorBase &vec, const double LB, const double UB)
void UpperBound(double ub)
Set the upper bound to the given value.
~BCP_row()
The destructor deletes all data members.
BCP_row(const int size, int *&ElementIndices, double *&ElementValues, const double LB, const double UB)
This constructor acts exactly like the assign method with the same argument list.
void assign(const int size, int *&ElementIndices, double *&ElementValues, const double LB, const double UB)
Set the lower and upper bounds to the given values.
void LowerBound(double lb)
Set the lower bound to the given value.
void copy(BCP_vec< int >::const_iterator firstind, BCP_vec< int >::const_iterator lastind, BCP_vec< double >::const_iterator firstval, BCP_vec< double >::const_iterator lastval, const double LB, const double UB)
Same as the other copy() method, except that instead of using vectors the indices (values) are given ...
BCP_row(const BCP_row &x)
The copy constructor makes a copy of x.
BCP_row(BCP_vec< int >::const_iterator firstind, BCP_vec< int >::const_iterator lastind, BCP_vec< double >::const_iterator firstval, BCP_vec< double >::const_iterator lastval, const double LB, const double UB)
This constructor acts exactly like the copy method with the same argument list.
double UpperBound() const
Return the upper bound.
The class BCP_vec serves the same purpose as the vector class in the standard template library.
CoinPackedVectorBase(const CoinPackedVectorBase &)
virtual const int * getIndices() const
void setVector(int size, const int *inds, const double *elems, bool testForDuplicateIndex=COIN_DEFAULT_VALUE_FOR_DUPLICATE)
CoinPackedVector(bool testForDuplicateIndex=COIN_DEFAULT_VALUE_FOR_DUPLICATE)
CoinPackedVector & operator=(const CoinPackedVector &)
virtual const double * getElements() const
virtual int getNumElements() const
void assignVector(int size, int *&inds, double *&elems, bool testForDuplicateIndex=COIN_DEFAULT_VALUE_FOR_DUPLICATE)