11 #ifndef CouenneSdpCuts_hpp 12 #define CouenneSdpCuts_hpp 23 class CouenneExprMatrix;
53 std::vector <CouenneExprMatrix *>
minors_;
82 #if CGL_VERSION_MAJOR == 0 && CGL_VERSION_MINOR <= 57 101 int n,
int m,
const double *sol,
102 double *z,
double *w,FILE *out)
const;
105 void sparsify2 (
const int n,
106 const double *A,
double **sparse_v_mat,
107 int *card_v_mat,
int min_nz,
int *evdec_num)
const;
112 double *v1,
double *v2,
118 int np,
const double *A,
119 const double *vector,
int **)
const;
121 enum zero_type {POS_DELTA, SELECTED, VALID_DELTA};
123 void zero_comp (
const int ind_i,
const double delta,
124 const int np,
const int *selected,
126 int *ploc_card_selected,
int *ploc_card_new_selected,
128 double *locmargin,
double *locmat,
130 const int evidx,
bool wise,
133 double *threshold)
const;
135 void zero_unified (
enum zero_type type,
136 const int np,
const int *order,
137 const int * selected,
138 const int min_card_new_selected,
139 const double min_delta,
const int start_point,
142 int *ploc_card_selected,
143 int *ploc_card_new_selected,
145 double *locmargin,
double *locmat,
148 const int evidx,
bool wise,
double *recomp_gap,
double *threshold,
149 int *evdec_num)
const;
151 void add_v_cut(
const int np,
152 const int *loc_selected,
153 const int loc_card_selected,
155 const int init_card_selected,
int *has_init_vect,
156 int *selected,
int *pcard_selected,
158 double **sparse_v_mat,
159 int *pcard_v_mat)
const;
161 void update_sparsify_structures(
const int np,
162 double *v,
double* margin,
163 double *A,
double *lhs,
const int *zeroed,
164 int evidx,
bool decompose,
int *evdec_num)
const;
166 void sparsify (
bool sparsify_new,
167 const int evidx,
const double eigen_val,
168 const double *v,
const int n,
169 const double *sol,
double **sparse_v_mat,
171 int *evdec_num)
const;
virtual CglCutGenerator * clone() const
Cloning constructor.
CouenneSdpCuts & operator=(const CouenneSdpCuts &)
Assignment.
int numEigVec_
number of eigenvectors to be used (default: n)
bool onlyNegEV_
only use negative eigenvalues (default: yes)
virtual void generateCuts(const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const
The main CglCutGenerator.
CouenneProblem * problem_
pointer to problem info
static void registerOptions(Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions)
Add list of options to be read from file.
bool doNotUse_
after construction, true if there are enough product terms to justify application.
These are cuts of the form.
std::vector< CouenneExprMatrix * > minors_
minors on which to apply cuts
Class for MINLP problems with symbolic information.
CouenneSdpCuts(CouenneProblem *, JnlstPtr, const Ipopt::SmartPtr< Ipopt::OptionsList >)
Constructor.
bool fillMissingTerms_
If minor not fully dense, create fictitious auxiliary variables that will be used in sdp cuts only (t...
~CouenneSdpCuts()
Destructor.
bool useSparsity_
Sparsify eigenvalues before writing inequality (default: no)
general include file for different compilers
const bool doNotUse() const