14#ifndef ORTOOLS_SAT_CP_MODEL_SEARCH_H_
15#define ORTOOLS_SAT_CP_MODEL_SEARCH_H_
22#include "absl/container/flat_hash_map.h"
23#include "absl/random/bit_gen_ref.h"
24#include "absl/strings/string_view.h"
25#include "absl/types/span.h"
56 int64_t
Min(
int var)
const;
57 int64_t
Max(
int var)
const;
70 mutable absl::BitGenRef random_;
84 absl::Span<const IntegerVariable> variable_mapping,
85 IntegerVariable objective_var,
Model* model);
102 absl::Span<const IntegerVariable> variable_mapping,
126 absl::Span<const SatParameters> base_params,
int num_params_to_generate);
141 bool Keep(absl::string_view name);
144 std::vector<SatParameters>
Filter(absl::Span<const SatParameters>
input) {
145 std::vector<SatParameters> result;
147 if (
Keep(param.name())) {
148 result.push_back(param);
157 std::string
LastName()
const {
return last_name_; }
167 bool FNMatch(absl::string_view pattern, absl::string_view str);
169 std::vector<std::string> filter_patterns_;
170 std::vector<std::string> ignore_patterns_;
171 std::string last_name_;
173 std::vector<std::string> ignored_;
BooleanOrIntegerLiteral GreaterOrEqual(int var, int64_t value) const
BooleanOrIntegerLiteral LowerOrEqual(int var, int64_t value) const
BooleanOrIntegerLiteral MedianValue(int var) const
int64_t Max(int var) const
CpModelView(Model *model)
int64_t Min(int var) const
bool IsFixed(int var) const
BooleanOrIntegerLiteral RandomSplit(int var, int64_t lb, int64_t ub) const
SubsolverNameFilter(const SatParameters ¶ms)
std::vector< SatParameters > Filter(absl::Span< const SatParameters > input)
bool Keep(absl::string_view name)
std::string LastName() const
const std::vector< std::string > & AllIgnored()
void STLSortAndRemoveDuplicates(T *v, const LessFunc &less_func)
std::vector< SatParameters > GetFullWorkerParameters(const SatParameters &base_params, const CpModelProto &cp_model, int num_already_present, SubsolverNameFilter *filter)
std::function< BooleanOrIntegerLiteral()> ConstructIntegerCompletionSearchStrategy(absl::Span< const IntegerVariable > variable_mapping, IntegerVariable objective_var, Model *model)
std::function< BooleanOrIntegerLiteral()> ConstructHintSearchStrategy(const CpModelProto &cp_model_proto, CpModelMapping *mapping, Model *model)
std::function< BooleanOrIntegerLiteral()> ConstructHeuristicSearchStrategy(const CpModelProto &cp_model_proto, Model *model)
std::vector< SatParameters > GetFirstSolutionBaseParams(const SatParameters &base_params)
void ConstructFixedSearchStrategy(SearchHeuristics *h, Model *model)
std::vector< SatParameters > RepeatParameters(absl::Span< const SatParameters > base_params, int num_params_to_generate)
std::function< BooleanOrIntegerLiteral()> ConstructUserSearchStrategy(const CpModelProto &cp_model_proto, Model *model)
absl::flat_hash_map< std::string, SatParameters > GetNamedParameters(SatParameters base_params)
std::function< BooleanOrIntegerLiteral()> InstrumentSearchStrategy(const CpModelProto &cp_model_proto, absl::Span< const IntegerVariable > variable_mapping, std::function< BooleanOrIntegerLiteral()> instrumented_strategy, Model *model)
static int input(yyscan_t yyscanner)