14#ifndef OR_TOOLS_SAT_ZERO_HALF_CUTS_H_
15#define OR_TOOLS_SAT_ZERO_HALF_CUTS_H_
53 const std::vector<std::pair<glop::ColIndex, IntegerValue>>& terms,
54 IntegerValue lb, IntegerValue ub);
55 std::vector<std::vector<std::pair<glop::RowIndex, IntegerValue>>>
68 std::vector<std::pair<glop::RowIndex, IntegerValue>>
multipliers;
97 const std::vector<int>&
a, std::vector<int>*
b);
100 void ProcessSingletonColumns();
105 const double kSlackThreshold = 0.5;
106 const int kMaxAggregationSize = 100;
111 const int kMaxInputConstraintSize = 100;
112 const double kMaxInputConstraintMagnitude = 1e6;
115 std::vector<double> lp_values_;
116 std::vector<double> shifted_lp_values_;
117 std::vector<int> bound_parity_;
123 std::vector<CombinationOfRows> rows_;
124 std::vector<std::vector<int>> col_to_rows_;
125 std::vector<int> singleton_cols_;
128 std::vector<bool> tmp_marked_;
void EliminateVarUsingRow(int col, int row)
void AddBinaryRow(const CombinationOfRows &binary_row)
const CombinationOfRows & MatrixRow(int row) const
void SymmetricDifference(std::function< bool(int)> extra_condition, const std::vector< int > &a, std::vector< int > *b)
void ProcessVariables(const std::vector< double > &lp_values, const std::vector< IntegerValue > &lower_bounds, const std::vector< IntegerValue > &upper_bounds)
void AddOneConstraint(glop::RowIndex, const std::vector< std::pair< glop::ColIndex, IntegerValue > > &terms, IntegerValue lb, IntegerValue ub)
const std::vector< int > & MatrixCol(int col) const
std::vector< std::vector< std::pair< glop::RowIndex, IntegerValue > > > InterestingCandidates(ModelRandomGenerator *random)
Collection of objects used to extend the Constraint Solver library.
std::vector< double > lower_bounds
std::vector< double > upper_bounds
std::vector< std::pair< glop::RowIndex, IntegerValue > > multipliers