#include <CutGen.hpp>
Collaboration diagram for CutGen:
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 () | |
CutGen * | clone () 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_ |
Heuristics * | heuristics_ |
Timer * | globaltimer_ |
Tracer * | tracer_ |
int * | seed_ |
int | _iter |
int | max_nb_cuts |
bool | removeduplicates_ |
sparsify_trace | spartrace |
Definition at line 56 of file CutGen.hpp.
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_.
CutGen* CutGen::clone | ( | ) | const [inline] |
sparsify_trace CutGen::get_sparsify_trace | ( | ) | [inline] |
double CutGen::currObj | ( | ) | const [inline] |
double CutGen::bestObj | ( | ) | const [inline] |
double* CutGen::bestSol | ( | ) | const [inline] |
void CutGen::set_max_nb_cuts | ( | const int | max_c | ) | [inline] |
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 | ( | ) |
void CutGen::setIter | ( | int | iter | ) | [inline] |
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().
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] |
int CutGen::cons_ [private] |
double CutGen::objConst_ [private] |
double* CutGen::b_ [private] |
double* CutGen::c_ [private] |
double** CutGen::Q_ [private] |
double** CutGen::origMat_ [private] |
double* CutGen::origRhs_ [private] |
char* CutGen::origSense_ [private] |
double* CutGen::xlb_ [private] |
double* CutGen::xub_ [private] |
double* CutGen::ylb_ [private] |
double* CutGen::yub_ [private] |
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] |
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] |
int CutGen::max_nb_cuts [private] |
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().