14#ifndef OR_TOOLS_SAT_ZERO_HALF_CUTS_H_
15#define OR_TOOLS_SAT_ZERO_HALF_CUTS_H_
51 const std::vector<std::pair<glop::ColIndex, IntegerValue>>& terms,
52 IntegerValue lb, IntegerValue ub);
53 std::vector<std::vector<std::pair<glop::RowIndex, IntegerValue>>>
66 std::vector<std::pair<glop::RowIndex, IntegerValue>>
multipliers;
95 const std::vector<int>&
a, std::vector<int>*
b);
98 void ProcessSingletonColumns();
103 const double kSlackThreshold = 0.5;
104 const int kMaxAggregationSize = 100;
109 const int kMaxInputConstraintSize = 100;
110 const double kMaxInputConstraintMagnitude = 1e6;
113 std::vector<double> lp_values_;
114 std::vector<double> shifted_lp_values_;
115 std::vector<int> bound_parity_;
121 std::vector<CombinationOfRows> rows_;
122 std::vector<std::vector<int>> col_to_rows_;
123 std::vector<int> singleton_cols_;
126 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)
The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...
std::vector< double > lower_bounds
std::vector< double > upper_bounds
std::vector< std::pair< glop::RowIndex, IntegerValue > > multipliers