CutGen Class Reference

#include <CutGen.hpp>

Collaboration diagram for CutGen:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 CutGen (const int, const int, const int, const double, const double *, const double *, const double **, const double **, const double *, const char *, const double *, const double *, const double *, const double *, OsiSolverInterface *si, Timer *globaltimer, Tracer *tracer)
 ~CutGen ()
CutGenclone () const
sparsify_trace get_sparsify_trace ()
double currObj () const
double bestObj () const
double * bestSol () const
void set_max_nb_cuts (const int max_c)
void generateCuts (const OsiSolverInterface &, OsiCuts &, const CglTreeInfo=CglTreeInfo()) const
void updateSol ()
void setIter (int iter)

Private Member Functions

void compareSparsify (const OsiSolverInterface &si, int n, int m, const double *sol, double *z, double *w, FILE *out) const
void sparsify2 (const int n, const double *sol, double **sparse_v_mat, int *card_v_mat, int min_nz, int *evdec_num) const
void genSDPcut (const OsiSolverInterface &si, OsiCuts &cs, double *v1, double *v2, bool checkduplicates, int *duplicate_cuts) const
void additionalSDPcuts (const OsiSolverInterface &si, OsiCuts &cs, int np, const double *A, const double *vector, int *duplicate_cuts) const
void zero_comp (const int ind_i, const double delta, const int np, const int *selected, int *loc_selected, int *ploc_card_selected, int *ploc_card_new_selected, double *ploc_lhs, double *locmargin, double **locmat, const double *sol, double *locv, const int evidx, bool wise, int *evdec_num, double *recomp_gap, double *threshold) const
void zero_valid_delta (const int np, const int *order, const int *selected, const int min_card_new_selected, const double min_delta, const int start_point, const int curr_i, int *loc_selected, int *ploc_card_selected, int *ploc_card_new_selected, double *ploc_lhs, double *locmargin, double **locmat, int *pnchanged, const double *sol, double *locv, const int evidx, bool wise, double *recomp_gap, double *threshold, int *pcard_selected, int *pnew_selected, int *trace_bin, const int trace_bin_size, double **sparse_v_mat, int *pcard_v_mat, const int init_card_selected, int *has_init_vect, int *evdec_num) const
void zero_selected (const int np, const int *order, const int *selected, const int min_card_new_selected, const double min_delta, const int start_point, const int curr_i, int *loc_selected, int *ploc_card_selected, int *ploc_card_new_selected, double *ploc_lhs, double *locmargin, double **locmat, int *pnchanged, const double *sol, double *locv, const int evidx, bool wise, double *recomp_gap, double *threshold, int *pcard_selected, int *pnew_selected, int *trace_bin, const int trace_bin_size, double **sparse_v_mat, int *pcard_v_mat, const int init_card_selected, int *has_init_vect, int *evdec_num) const
void zero_pos_delta (const int np, const int *order, const int *selected, const int min_card_new_selected, const int start_point, const int curr_i, int *loc_selected, int *ploc_card_selected, int *ploc_card_new_selected, double *ploc_lhs, double *locmargin, double **locmat, int *pnchanged, const double *sol, double *locv, const int evidx, bool wise, double *recomp_gap, double *threshold, int *pcard_selected, int *pnew_selected, int *trace_bin, const int trace_bin_size, double **sparse_v_mat, int *pcard_v_mat, const int init_card_selected, int *has_init_vect, int *evdec_num) const
void add_v_cut (const int np, const int *loc_selected, const int loc_card_selected, const double *locv, const int init_card_selected, int *has_init_vect, int *selected, int *pcard_selected, int *pnew_selected, int *trace_bin, const int trace_bin_size, double **sparse_v_mat, int *pcard_v_mat) const
void update_sparsify_structures (const int np, const double *sol, double *v, double *margin, double **mat, double *lhs, const int *zeroed, int evidx, bool decompose, int *evdec_num) const
void sparsify (const int evidx, const double eigen_val, const double *v, const int n, const double *sol, double **sparse_v_mat, int *card_v_mat, double *work_ev, bool wise, int *evdec_num) const
void sparsify_new (const int evidx, const double eigen_val, const double *v, const int n, const double *sol, double **sparse_v_mat, int *card_v_mat, double *work_ev, bool wise, int *evdec_num) const
void myremoveBestOneRowCol (double *matrix, int n, int running_n, int min_nz, bool *del_idx, double **sparse_v_mat, int *card_v_mat, int *evdec_num) const

Private Attributes

int n_
int t_
int N_
int cons_
double objConst_
double * b_
double * c_
double ** Q_
double ** origMat_
double * origRhs_
char * origSense_
double * xlb_
double * xub_
double * ylb_
double * yub_
OsiSolverInterface * si_
Heuristicsheuristics_
Timerglobaltimer_
Tracertracer_
int * seed_
int _iter
int max_nb_cuts
bool removeduplicates_
sparsify_trace spartrace

Detailed Description

Definition at line 56 of file CutGen.hpp.


Constructor & Destructor Documentation

CutGen::CutGen ( const   int,
const   int,
const   int,
const   double,
const double *  ,
const double *  ,
const double **  ,
const double **  ,
const double *  ,
const char *  ,
const double *  ,
const double *  ,
const double *  ,
const double *  ,
OsiSolverInterface *  si,
Timer globaltimer,
Tracer tracer 
)

Definition at line 928 of file CutGen.cpp.

References b_, sparsify_trace::bounds1, sparsify_trace::bounds2, sparsify_trace::boundtime1, sparsify_trace::boundtime2, c_, sparsify_trace::column_pair_sparsity_max1, sparsify_trace::column_pair_sparsity_max2, sparsify_trace::column_pair_sparsity_mean1, sparsify_trace::column_pair_sparsity_mean2, sparsify_trace::column_pair_sparsity_min1, sparsify_trace::column_pair_sparsity_min2, sparsify_trace::decomp1, sparsify_trace::decomp2, sparsify_trace::duplicate1, sparsify_trace::duplicate2, EXIT_ON_ITER, sparsify_trace::generated_cuts1, sparsify_trace::generated_cuts2, heuristics_, sparsify_trace::iterations, max_nb_cuts, N_, sparsify_trace::nzmax1, sparsify_trace::nzmax2, sparsify_trace::nzmean1, sparsify_trace::nzmean2, sparsify_trace::nzmin1, sparsify_trace::nzmin2, origMat_, origRhs_, origSense_, Q_, removeduplicates_, seed_, sparsify_trace::single_column_sparsity_max1, sparsify_trace::single_column_sparsity_max2, sparsify_trace::single_column_sparsity_mean1, sparsify_trace::single_column_sparsity_mean2, sparsify_trace::single_column_sparsity_min1, sparsify_trace::single_column_sparsity_min2, sparsify_trace::sparsifytime1, sparsify_trace::sparsifytime2, spartrace, sparsify_trace::times1, sparsify_trace::times2, sparsify_trace::top_cuts_mean_violation1, sparsify_trace::top_cuts_mean_violation2, xlb_, xub_, ylb_, and yub_.

Referenced by clone().

CutGen::~CutGen (  ) 

Definition at line 1056 of file CutGen.cpp.

References b_, sparsify_trace::bounds1, sparsify_trace::bounds2, sparsify_trace::boundtime1, sparsify_trace::boundtime2, c_, sparsify_trace::column_pair_sparsity_max1, sparsify_trace::column_pair_sparsity_max2, sparsify_trace::column_pair_sparsity_mean1, sparsify_trace::column_pair_sparsity_mean2, sparsify_trace::column_pair_sparsity_min1, sparsify_trace::column_pair_sparsity_min2, cons_, sparsify_trace::decomp1, sparsify_trace::decomp2, sparsify_trace::duplicate1, sparsify_trace::duplicate2, sparsify_trace::generated_cuts1, sparsify_trace::generated_cuts2, heuristics_, sparsify_trace::iterations, n_, sparsify_trace::nzmax1, sparsify_trace::nzmax2, sparsify_trace::nzmean1, sparsify_trace::nzmean2, sparsify_trace::nzmin1, sparsify_trace::nzmin2, origMat_, origRhs_, origSense_, Q_, seed_, sparsify_trace::single_column_sparsity_max1, sparsify_trace::single_column_sparsity_max2, sparsify_trace::single_column_sparsity_mean1, sparsify_trace::single_column_sparsity_mean2, sparsify_trace::single_column_sparsity_min1, sparsify_trace::single_column_sparsity_min2, sparsify_trace::sparsifytime1, sparsify_trace::sparsifytime2, spartrace, sparsify_trace::times1, sparsify_trace::times2, sparsify_trace::top_cuts_mean_violation1, sparsify_trace::top_cuts_mean_violation2, xlb_, xub_, ylb_, and yub_.


Member Function Documentation

CutGen* CutGen::clone (  )  const [inline]

Definition at line 104 of file CutGen.hpp.

References CutGen().

sparsify_trace CutGen::get_sparsify_trace (  )  [inline]

Definition at line 109 of file CutGen.hpp.

References spartrace.

double CutGen::currObj (  )  const [inline]

Definition at line 112 of file CutGen.hpp.

References Heuristics::currObj(), and heuristics_.

double CutGen::bestObj (  )  const [inline]

Definition at line 115 of file CutGen.hpp.

References Heuristics::bestObj(), and heuristics_.

double* CutGen::bestSol (  )  const [inline]

Definition at line 118 of file CutGen.hpp.

References Heuristics::bestSol(), and heuristics_.

void CutGen::set_max_nb_cuts ( const int  max_c  )  [inline]

Definition at line 121 of file CutGen.hpp.

References max_nb_cuts.

void CutGen::generateCuts ( const OsiSolverInterface &  ,
OsiCuts &  ,
const   CglTreeInfo = CglTreeInfo() 
) const

Definition at line 27 of file CutGen.cpp.

References additionalSDPcuts(), Tracer::addSparsifyColumnPairSparsity(), Tracer::addSparsifyNz(), Tracer::addSparsifySingleColumnSparsity(), Tracer::addSparsifyTop20PercCutsViolation(), cpp_genalea(), cpp_quicksort_dec(), cpp_quicksortINT_dec(), disjunctiveCutGen(), dsyevx_wrapper_only_negative(), genSDPcut(), globaltimer_, indexQ, k, linQuadCutGen(), m, n, n_, np, orthoCutGen(), Timer::pause(), print_mat_from_vvT(), removeduplicates_, Timer::restore(), rltCutsGen(), seed_, Tracer::setSDPCutsTime(), Tracer::setSDPCutsTotalCuts(), Tracer::setSDPMostNegativeEV(), Tracer::setSDPNumNegativeEV(), Tracer::setSparsifyDuplicatedCuts(), Tracer::setSparsifyTime(), Tracer::setSparsifyTotalCuts(), Tracer::setSparsifyWiseDecompositions(), sparsify(), sparsify2(), SPARSIFY_MAX_CARD, sparsify_new(), Timer::start(), Timer::time(), tracer_, w, xlb_, and xub_.

void CutGen::updateSol (  ) 

Definition at line 922 of file CutGen.cpp.

References heuristics_, and Heuristics::run().

void CutGen::setIter ( int  iter  )  [inline]

Definition at line 136 of file CutGen.hpp.

References _iter.

void CutGen::compareSparsify ( const OsiSolverInterface &  si,
int  n,
int  m,
const double *  sol,
double *  z,
double *  w,
FILE *  out 
) const [private]

Definition at line 395 of file CutGen.cpp.

References sparsify_trace::bounds1, sparsify_trace::bounds2, sparsify_trace::boundtime1, sparsify_trace::boundtime2, sparsify_trace::column_pair_sparsity_max1, sparsify_trace::column_pair_sparsity_max2, sparsify_trace::column_pair_sparsity_mean1, sparsify_trace::column_pair_sparsity_mean2, sparsify_trace::column_pair_sparsity_min1, sparsify_trace::column_pair_sparsity_min2, cpp_quicksort_dec(), sparsify_trace::decomp1, sparsify_trace::decomp2, decomposition_counter, sparsify_trace::duplicate1, sparsify_trace::duplicate2, sparsify_trace::generated_cuts1, sparsify_trace::generated_cuts2, genSDPcut(), sparsify_trace::iterations, k, n_, np, sparsify_trace::nzmax1, sparsify_trace::nzmax2, sparsify_trace::nzmean1, sparsify_trace::nzmean2, sparsify_trace::nzmin1, sparsify_trace::nzmin2, objConst_, sparsify_trace::single_column_sparsity_max1, sparsify_trace::single_column_sparsity_max2, sparsify_trace::single_column_sparsity_mean1, sparsify_trace::single_column_sparsity_mean2, sparsify_trace::single_column_sparsity_min1, sparsify_trace::single_column_sparsity_min2, sparsify(), SPARSIFY_MAX_CARD, sparsify_new(), sparsify_trace::sparsifytime1, sparsify_trace::sparsifytime2, spartrace, Timer::start(), Timer::time(), sparsify_trace::times1, sparsify_trace::times2, sparsify_trace::top_cuts_mean_violation1, sparsify_trace::top_cuts_mean_violation2, and violation_from_v().

void CutGen::sparsify2 ( const int  n,
const double *  sol,
double **  sparse_v_mat,
int *  card_v_mat,
int  min_nz,
int *  evdec_num 
) const [private]

Definition at line 1239 of file CutGen.cpp.

References indexQ, myremoveBestOneRowCol(), and np.

Referenced by generateCuts().

void CutGen::genSDPcut ( const OsiSolverInterface &  si,
OsiCuts &  cs,
double *  v1,
double *  v2,
bool  checkduplicates,
int *  duplicate_cuts 
) const [private]

Definition at line 853 of file CutGen.cpp.

References cpp_genalea(), e, globaltimer_, indexQ, N_, n_, np, Timer::pause(), Timer::restore(), and seed_.

Referenced by additionalSDPcuts(), compareSparsify(), and generateCuts().

void CutGen::additionalSDPcuts ( const OsiSolverInterface &  si,
OsiCuts &  cs,
int  np,
const double *  A,
const double *  vector,
int *  duplicate_cuts 
) const [private]

Definition at line 1259 of file CutGen.cpp.

References dsyevx_wrapper_only_negative(), genSDPcut(), k, m, removeduplicates_, tracer_, and w.

Referenced by generateCuts().

void CutGen::zero_comp ( const int  ind_i,
const double  delta,
const int  np,
const int *  selected,
int *  loc_selected,
int *  ploc_card_selected,
int *  ploc_card_new_selected,
double *  ploc_lhs,
double *  locmargin,
double **  locmat,
const double *  sol,
double *  locv,
const int  evidx,
bool  wise,
int *  evdec_num,
double *  recomp_gap,
double *  threshold 
) const [private]

Definition at line 1425 of file CutGen.cpp.

References update_sparsify_structures().

Referenced by zero_pos_delta(), zero_selected(), and zero_valid_delta().

void CutGen::zero_valid_delta ( const int  np,
const int *  order,
const int *  selected,
const int  min_card_new_selected,
const double  min_delta,
const int  start_point,
const int  curr_i,
int *  loc_selected,
int *  ploc_card_selected,
int *  ploc_card_new_selected,
double *  ploc_lhs,
double *  locmargin,
double **  locmat,
int *  pnchanged,
const double *  sol,
double *  locv,
const int  evidx,
bool  wise,
double *  recomp_gap,
double *  threshold,
int *  pcard_selected,
int *  pnew_selected,
int *  trace_bin,
const int  trace_bin_size,
double **  sparse_v_mat,
int *  pcard_v_mat,
const int  init_card_selected,
int *  has_init_vect,
int *  evdec_num 
) const [private]

Definition at line 1459 of file CutGen.cpp.

References zero_comp().

Referenced by sparsify(), and sparsify_new().

void CutGen::zero_selected ( const int  np,
const int *  order,
const int *  selected,
const int  min_card_new_selected,
const double  min_delta,
const int  start_point,
const int  curr_i,
int *  loc_selected,
int *  ploc_card_selected,
int *  ploc_card_new_selected,
double *  ploc_lhs,
double *  locmargin,
double **  locmat,
int *  pnchanged,
const double *  sol,
double *  locv,
const int  evidx,
bool  wise,
double *  recomp_gap,
double *  threshold,
int *  pcard_selected,
int *  pnew_selected,
int *  trace_bin,
const int  trace_bin_size,
double **  sparse_v_mat,
int *  pcard_v_mat,
const int  init_card_selected,
int *  has_init_vect,
int *  evdec_num 
) const [private]

Definition at line 1515 of file CutGen.cpp.

References zero_comp().

Referenced by sparsify(), and sparsify_new().

void CutGen::zero_pos_delta ( const int  np,
const int *  order,
const int *  selected,
const int  min_card_new_selected,
const int  start_point,
const int  curr_i,
int *  loc_selected,
int *  ploc_card_selected,
int *  ploc_card_new_selected,
double *  ploc_lhs,
double *  locmargin,
double **  locmat,
int *  pnchanged,
const double *  sol,
double *  locv,
const int  evidx,
bool  wise,
double *  recomp_gap,
double *  threshold,
int *  pcard_selected,
int *  pnew_selected,
int *  trace_bin,
const int  trace_bin_size,
double **  sparse_v_mat,
int *  pcard_v_mat,
const int  init_card_selected,
int *  has_init_vect,
int *  evdec_num 
) const [private]

Definition at line 1563 of file CutGen.cpp.

References zero_comp().

Referenced by sparsify(), and sparsify_new().

void CutGen::add_v_cut ( const int  np,
const int *  loc_selected,
const int  loc_card_selected,
const double *  locv,
const int  init_card_selected,
int *  has_init_vect,
int *  selected,
int *  pcard_selected,
int *  pnew_selected,
int *  trace_bin,
const int  trace_bin_size,
double **  sparse_v_mat,
int *  pcard_v_mat 
) const [private]

Definition at line 1618 of file CutGen.cpp.

References cpp_printvecDBL().

Referenced by sparsify(), and sparsify_new().

void CutGen::update_sparsify_structures ( const int  np,
const double *  sol,
double *  v,
double *  margin,
double **  mat,
double *  lhs,
const int *  zeroed,
int  evidx,
bool  decompose,
int *  evdec_num 
) const [private]

Definition at line 1330 of file CutGen.cpp.

References decomposition_counter, dsyevx_wrapper_only_most_neg(), indexQ, m, and tracer_.

Referenced by sparsify(), sparsify_new(), and zero_comp().

void CutGen::sparsify ( const int  evidx,
const double  eigen_val,
const double *  v,
const int  n,
const double *  sol,
double **  sparse_v_mat,
int *  card_v_mat,
double *  work_ev,
bool  wise,
int *  evdec_num 
) const [private]

Definition at line 1692 of file CutGen.cpp.

References add_v_cut(), cpp_genalea(), cpp_printmatDBL(), cpp_printvecDBL(), cpp_printvecINT(), cpp_quicksort_dec(), np, SPARSIFY_OLD_DELTA, SPARSIFY_OLD_NZ_THRESHOLD, update_sparsify_structures(), WISE_SPARSIFY_GAP, zero_pos_delta(), zero_selected(), and zero_valid_delta().

Referenced by compareSparsify(), and generateCuts().

void CutGen::sparsify_new ( const int  evidx,
const double  eigen_val,
const double *  v,
const int  n,
const double *  sol,
double **  sparse_v_mat,
int *  card_v_mat,
double *  work_ev,
bool  wise,
int *  evdec_num 
) const [private]

Definition at line 1962 of file CutGen.cpp.

References add_v_cut(), cpp_genalea(), cpp_printmatDBL(), cpp_printvecDBL(), cpp_printvecINT(), cpp_quicksort_dec(), np, SPARSIFY_NEW_DELTA, SPARSIFY_NEW_NZ_THRESHOLD, update_sparsify_structures(), WISE_SPARSIFY_GAP, zero_pos_delta(), zero_selected(), and zero_valid_delta().

Referenced by compareSparsify(), and generateCuts().

void CutGen::myremoveBestOneRowCol ( double *  matrix,
int  n,
int  running_n,
int  min_nz,
bool *  del_idx,
double **  sparse_v_mat,
int *  card_v_mat,
int *  evdec_num 
) const [private]

Definition at line 1115 of file CutGen.cpp.

References dsyevx_wrapper_only_most_neg(), dsyevx_wrapper_only_negative(), k, tracer_, and w.

Referenced by sparsify2().


Member Data Documentation

int CutGen::n_ [private]

Definition at line 60 of file CutGen.hpp.

Referenced by compareSparsify(), generateCuts(), genSDPcut(), and ~CutGen().

int CutGen::t_ [private]

Definition at line 61 of file CutGen.hpp.

int CutGen::N_ [private]

Definition at line 62 of file CutGen.hpp.

Referenced by CutGen(), and genSDPcut().

int CutGen::cons_ [private]

Definition at line 63 of file CutGen.hpp.

Referenced by ~CutGen().

double CutGen::objConst_ [private]

Definition at line 64 of file CutGen.hpp.

Referenced by compareSparsify().

double* CutGen::b_ [private]

Definition at line 65 of file CutGen.hpp.

Referenced by CutGen(), and ~CutGen().

double* CutGen::c_ [private]

Definition at line 66 of file CutGen.hpp.

Referenced by CutGen(), and ~CutGen().

double** CutGen::Q_ [private]

Definition at line 67 of file CutGen.hpp.

Referenced by CutGen(), and ~CutGen().

double** CutGen::origMat_ [private]

Definition at line 68 of file CutGen.hpp.

Referenced by CutGen(), and ~CutGen().

double* CutGen::origRhs_ [private]

Definition at line 69 of file CutGen.hpp.

Referenced by CutGen(), and ~CutGen().

char* CutGen::origSense_ [private]

Definition at line 70 of file CutGen.hpp.

Referenced by CutGen(), and ~CutGen().

double* CutGen::xlb_ [private]

Definition at line 71 of file CutGen.hpp.

Referenced by CutGen(), generateCuts(), and ~CutGen().

double* CutGen::xub_ [private]

Definition at line 72 of file CutGen.hpp.

Referenced by CutGen(), generateCuts(), and ~CutGen().

double* CutGen::ylb_ [private]

Definition at line 73 of file CutGen.hpp.

Referenced by CutGen(), and ~CutGen().

double* CutGen::yub_ [private]

Definition at line 74 of file CutGen.hpp.

Referenced by CutGen(), and ~CutGen().

OsiSolverInterface* CutGen::si_ [private]

Definition at line 75 of file CutGen.hpp.

Heuristics* CutGen::heuristics_ [private]

Definition at line 76 of file CutGen.hpp.

Referenced by bestObj(), bestSol(), currObj(), CutGen(), updateSol(), and ~CutGen().

Timer* CutGen::globaltimer_ [private]

Definition at line 78 of file CutGen.hpp.

Referenced by generateCuts(), and genSDPcut().

Tracer* CutGen::tracer_ [private]

Definition at line 80 of file CutGen.hpp.

Referenced by additionalSDPcuts(), generateCuts(), myremoveBestOneRowCol(), and update_sparsify_structures().

int* CutGen::seed_ [private]

Definition at line 82 of file CutGen.hpp.

Referenced by CutGen(), generateCuts(), genSDPcut(), and ~CutGen().

int CutGen::_iter [private]

Definition at line 84 of file CutGen.hpp.

Referenced by setIter().

int CutGen::max_nb_cuts [private]

Definition at line 87 of file CutGen.hpp.

Referenced by CutGen(), and set_max_nb_cuts().

bool CutGen::removeduplicates_ [private]

Definition at line 89 of file CutGen.hpp.

Referenced by additionalSDPcuts(), CutGen(), and generateCuts().

sparsify_trace CutGen::spartrace [private]

Definition at line 91 of file CutGen.hpp.

Referenced by compareSparsify(), CutGen(), get_sparsify_trace(), and ~CutGen().


The documentation for this class was generated from the following files:
Generated on Thu Nov 10 03:12:27 2011 by  doxygen 1.4.7