Google OR-Tools v9.15
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
operations_research::sat::PresolveContext Class Reference

Detailed Description

Definition at line 98 of file presolve_context.h.

#include <presolve_context.h>

Public Member Functions

 PresolveContext (Model *model, CpModelProto *cp_model, CpModelProto *mapping)
int NewIntVar (const Domain &domain)
int NewBoolVar (absl::string_view source)
int NewIntVarWithDefinition (const Domain &domain, absl::Span< const std::pair< int, int64_t > > definition, bool append_constraint_to_mapping_model=false)
int NewBoolVarWithClause (absl::Span< const int > clause)
int NewBoolVarWithConjunction (absl::Span< const int > conjunction)
int GetTrueLiteral ()
int GetFalseLiteral ()
ConstraintProtoAddEnforcedConstraint (absl::Span< const int > enforcement_literals)
ConstraintProtoAddEnforcedConstraint (ConstraintProto *ct)
void AddImplication (int a, int b)
void AddImplyInDomain (int b, int x, const Domain &domain)
void AddImplyInDomain (int b, const LinearExpressionProto &expr, const Domain &domain)
bool DomainIsEmpty (int ref) const
bool IsFixed (int ref) const
bool CanBeUsedAsLiteral (int ref) const
bool LiteralIsTrue (int lit) const
bool LiteralIsFalse (int lit) const
int64_t MinOf (int ref) const
int64_t MaxOf (int ref) const
int64_t FixedValue (int ref) const
bool VarCanTakeValue (int var, int64_t value) const
const DomainDomainOf (int var) const
int64_t DomainSize (int ref) const
absl::Span< const DomainAllDomains () const
bool IntervalIsConstant (int ct_ref) const
int64_t StartMin (int ct_ref) const
int64_t StartMax (int ct_ref) const
int64_t SizeMin (int ct_ref) const
int64_t SizeMax (int ct_ref) const
int64_t EndMin (int ct_ref) const
int64_t EndMax (int ct_ref) const
std::string IntervalDebugString (int ct_ref) const
int64_t MinOf (const LinearExpressionProto &expr) const
int64_t MaxOf (const LinearExpressionProto &expr) const
bool IsFixed (const LinearExpressionProto &expr) const
int64_t FixedValue (const LinearExpressionProto &expr) const
std::optional< int64_t > FixedValueOrNullopt (const LinearExpressionProto &expr) const
template<typename ProtoWithVarsAndCoeffs>
std::pair< int64_t, int64_t > ComputeMinMaxActivity (const ProtoWithVarsAndCoeffs &proto) const
void CappedUpdateMinMaxActivity (int var, int64_t coeff, int64_t *min_activity, int64_t *max_activity)
bool CanonicalizeLinearConstraint (ConstraintProto *ct, bool *is_impossible=nullptr)
bool CanonicalizeLinearExpression (absl::Span< const int > enforcements, LinearExpressionProto *expr)
bool DomainContains (const LinearExpressionProto &expr, int64_t value) const
Domain DomainSuperSetOf (const LinearExpressionProto &expr) const
bool ExpressionIsAffineBoolean (const LinearExpressionProto &expr) const
int LiteralForExpressionMax (const LinearExpressionProto &expr) const
bool ExpressionIsSingleVariable (const LinearExpressionProto &expr) const
bool ExpressionIsALiteral (const LinearExpressionProto &expr, int *literal=nullptr) const
bool DomainOfVarIsIncludedIn (int var, const Domain &domain)
bool VariableIsUnique (int ref) const
bool VariableIsUniqueAndRemovable (int ref) const
bool VariableIsNotUsedAnymore (int ref) const
void MarkVariableAsRemoved (int ref)
bool VariableWasRemoved (int ref) const
bool VariableWithCostIsUnique (int ref) const
bool VariableWithCostIsUniqueAndRemovable (int ref) const
bool VariableIsOnlyUsedInEncodingAndMaybeInObjective (int var) const
bool VariableIsOnlyUsedInLinear1AndOneExtraConstraint (int var) const
ABSL_MUST_USE_RESULT bool IntersectDomainWith (int ref, const Domain &domain, bool *domain_modified=nullptr)
ABSL_MUST_USE_RESULT bool SetLiteralToFalse (int lit)
ABSL_MUST_USE_RESULT bool SetLiteralToTrue (int lit)
ABSL_MUST_USE_RESULT bool IntersectDomainWith (const LinearExpressionProto &expr, const Domain &domain, bool *domain_modified=nullptr)
ABSL_MUST_USE_RESULT bool IntersectionOfAffineExprsIsNotEmpty (const LinearExpressionProto &a, const LinearExpressionProto &b)
ABSL_MUST_USE_RESULT bool NotifyThatModelIsUnsat (absl::string_view message="")
bool ModelIsUnsat () const
void UpdateRuleStats (std::string_view name, int num_times=1)
void UpdateConstraintVariableUsage (int c)
bool ConstraintVariableGraphIsUpToDate () const
void UpdateNewConstraintsVariableUsage ()
bool ConstraintVariableUsageIsConsistent ()
bool HasUnusedAffineVariable () const
void CanonicalizeVariable (int ref)
bool CanonicalizeAffineVariable (int ref, int64_t coeff, int64_t mod, int64_t rhs)
bool StoreAffineRelation (int var_x, int var_y, int64_t coeff, int64_t offset, bool debug_no_recursion=false)
bool StoreBooleanEqualityRelation (int ref_a, int ref_b)
int GetLiteralRepresentative (int ref) const
bool VariableIsAffineRepresentative (int var) const
int NumAffineRelations () const
AffineRelation::Relation GetAffineRelation (int ref) const
std::string RefDebugString (int ref) const
std::string AffineRelationDebugString (int ref) const
bool PropagateAffineRelation (int var)
bool PropagateAffineRelation (int var, int rep, int64_t coeff, int64_t offset)
void InitializeNewDomains ()
void ResetAfterCopy ()
void ClearStats ()
bool InsertVarValueEncoding (int literal, int var, int64_t value)
int GetOrCreateVarValueEncoding (int ref, int64_t value)
int GetOrCreateAffineValueEncoding (const LinearExpressionProto &expr, int64_t value)
void CanonicalizeDomainOfSizeTwo (int var)
bool HasVarValueEncoding (int ref, int64_t value, int *literal=nullptr)
bool HasAffineValueEncoding (const LinearExpressionProto &expr, int64_t value, int *literal=nullptr)
bool IsFullyEncoded (int ref) const
bool IsFullyEncoded (const LinearExpressionProto &expr) const
bool IsMostlyFullyEncoded (int ref) const
int64_t GetValueEncodingSize (int ref) const
bool StoreLiteralImpliesVarEqValue (int literal, int var, int64_t value)
bool StoreLiteralImpliesVarNeValue (int literal, int var, int64_t value)
void ReadObjectiveFromProto ()
bool AddToObjectiveOffset (int64_t delta)
ABSL_MUST_USE_RESULT bool CanonicalizeOneObjectiveVariable (int var)
ABSL_MUST_USE_RESULT bool CanonicalizeObjective (bool simplify_domain=true)
void WriteObjectiveToProto () const
bool RecomputeSingletonObjectiveDomain ()
void WriteVariableDomainsToProto () const
bool ExploitExactlyOneInObjective (absl::Span< const int > exactly_one)
bool ShiftCostInExactlyOne (absl::Span< const int > exactly_one, int64_t shift)
void RemoveVariableFromObjective (int ref)
void AddToObjective (int var, int64_t value)
void AddLiteralToObjective (int ref, int64_t value)
ABSL_MUST_USE_RESULT bool SubstituteVariableInObjective (int var_in_equality, int64_t coeff_in_equality, const ConstraintProto &equality)
const DomainObjectiveDomain () const
const absl::flat_hash_map< int, int64_t > & ObjectiveMap () const
int64_t ObjectiveCoeff (int var) const
bool ObjectiveDomainIsConstraining () const
void RemoveNonRepresentativeAffineVariableIfUnused (int var)
void RemoveVariableFromAffineRelation (int var)
void RemoveAllVariablesFromAffineRelationConstraint ()
absl::Span< const int > ConstraintToVars (int c) const
const absl::flat_hash_set< int > & VarToConstraints (int var) const
int IntervalUsage (int c) const
bool MarkConstraintAsFalse (ConstraintProto *ct, std::string_view reason)
bool ConstraintIsInactive (int ct_index) const
bool ConstraintIsOptional (int ct_ref) const
void RegisterVariablesUsedInAssumptions ()
bool ModelIsExpanded () const
void NotifyThatModelIsExpanded ()
int GetOrCreateReifiedPrecedenceLiteral (const LinearExpressionProto &time_i, const LinearExpressionProto &time_j, int active_i, int active_j)
std::tuple< int, int64_t, int, int64_t, int64_t, int, int > GetReifiedPrecedenceKey (const LinearExpressionProto &time_i, const LinearExpressionProto &time_j, int active_i, int active_j)
void ClearPrecedenceCache ()
void LogInfo ()
void LoadSolutionHint ()
SolutionCrushsolution_crush ()
bool DebugTestHintFeasibility ()
SolverLoggerlogger () const
const SatParametersparams () const
TimeLimittime_limit ()
ModelRandomGeneratorrandom ()
ConstraintProtoNewMappingConstraint (absl::string_view file, int line)
ConstraintProtoNewMappingConstraint (const ConstraintProto &base_ct, absl::string_view file, int line)

Public Attributes

CpModelProtoworking_model = nullptr
CpModelProtomapping_model = nullptr
int64_t num_presolve_operations = 0
std::vector< int > tmp_literals
std::vector< Domaintmp_term_domains
std::vector< Domaintmp_left_domains
absl::flat_hash_set< int > tmp_literal_set
SparseBitset< int > modified_domains
SparseBitset< int > var_with_reduced_small_degree
DomainDeductions deductions

Constructor & Destructor Documentation

◆ PresolveContext()

operations_research::sat::PresolveContext::PresolveContext ( Model * model,
CpModelProto * cp_model,
CpModelProto * mapping )
inline

Definition at line 100 of file presolve_context.h.

Member Function Documentation

◆ AddEnforcedConstraint() [1/2]

ConstraintProto * operations_research::sat::PresolveContext::AddEnforcedConstraint ( absl::Span< const int > enforcement_literals)

Definition at line 151 of file presolve_context.cc.

◆ AddEnforcedConstraint() [2/2]

ConstraintProto * operations_research::sat::PresolveContext::AddEnforcedConstraint ( ConstraintProto * ct)

Definition at line 159 of file presolve_context.cc.

◆ AddImplication()

void operations_research::sat::PresolveContext::AddImplication ( int a,
int b )

Definition at line 166 of file presolve_context.cc.

◆ AddImplyInDomain() [1/2]

void operations_research::sat::PresolveContext::AddImplyInDomain ( int b,
const LinearExpressionProto & expr,
const Domain & domain )

Definition at line 186 of file presolve_context.cc.

◆ AddImplyInDomain() [2/2]

void operations_research::sat::PresolveContext::AddImplyInDomain ( int b,
int x,
const Domain & domain )

Definition at line 174 of file presolve_context.cc.

◆ AddLiteralToObjective()

void operations_research::sat::PresolveContext::AddLiteralToObjective ( int ref,
int64_t value )

Definition at line 2177 of file presolve_context.cc.

◆ AddToObjective()

void operations_research::sat::PresolveContext::AddToObjective ( int var,
int64_t value )

Definition at line 2165 of file presolve_context.cc.

◆ AddToObjectiveOffset()

bool operations_research::sat::PresolveContext::AddToObjectiveOffset ( int64_t delta)

Definition at line 2194 of file presolve_context.cc.

◆ AffineRelationDebugString()

std::string operations_research::sat::PresolveContext::AffineRelationDebugString ( int ref) const

Definition at line 1384 of file presolve_context.cc.

◆ AllDomains()

absl::Span< const Domain > operations_research::sat::PresolveContext::AllDomains ( ) const
inline

Definition at line 172 of file presolve_context.h.

◆ CanBeUsedAsLiteral()

bool operations_research::sat::PresolveContext::CanBeUsedAsLiteral ( int ref) const

Definition at line 206 of file presolve_context.cc.

◆ CanonicalizeAffineVariable()

bool operations_research::sat::PresolveContext::CanonicalizeAffineVariable ( int ref,
int64_t coeff,
int64_t mod,
int64_t rhs )

Definition at line 1065 of file presolve_context.cc.

◆ CanonicalizeDomainOfSizeTwo()

void operations_research::sat::PresolveContext::CanonicalizeDomainOfSizeTwo ( int var)

Definition at line 1456 of file presolve_context.cc.

◆ CanonicalizeLinearConstraint()

bool operations_research::sat::PresolveContext::CanonicalizeLinearConstraint ( ConstraintProto * ct,
bool * is_impossible = nullptr )

Definition at line 2780 of file presolve_context.cc.

◆ CanonicalizeLinearExpression()

bool operations_research::sat::PresolveContext::CanonicalizeLinearExpression ( absl::Span< const int > enforcements,
LinearExpressionProto * expr )

Definition at line 2804 of file presolve_context.cc.

◆ CanonicalizeObjective()

bool operations_research::sat::PresolveContext::CanonicalizeObjective ( bool simplify_domain = true)

Definition at line 2037 of file presolve_context.cc.

◆ CanonicalizeOneObjectiveVariable()

bool operations_research::sat::PresolveContext::CanonicalizeOneObjectiveVariable ( int var)

Definition at line 1979 of file presolve_context.cc.

◆ CanonicalizeVariable()

void operations_research::sat::PresolveContext::CanonicalizeVariable ( int ref)

Definition at line 1037 of file presolve_context.cc.

◆ CappedUpdateMinMaxActivity()

void operations_research::sat::PresolveContext::CappedUpdateMinMaxActivity ( int var,
int64_t coeff,
int64_t * min_activity,
int64_t * max_activity )
inline

Definition at line 220 of file presolve_context.h.

◆ ClearPrecedenceCache()

void operations_research::sat::PresolveContext::ClearPrecedenceCache ( )

Definition at line 2574 of file presolve_context.cc.

◆ ClearStats()

void operations_research::sat::PresolveContext::ClearStats ( )

Definition at line 72 of file presolve_context.cc.

◆ ComputeMinMaxActivity()

template<typename ProtoWithVarsAndCoeffs>
std::pair< int64_t, int64_t > operations_research::sat::PresolveContext::ComputeMinMaxActivity ( const ProtoWithVarsAndCoeffs & proto) const
inline

Definition at line 200 of file presolve_context.h.

◆ ConstraintIsInactive()

bool operations_research::sat::PresolveContext::ConstraintIsInactive ( int ct_index) const

Definition at line 624 of file presolve_context.cc.

◆ ConstraintIsOptional()

bool operations_research::sat::PresolveContext::ConstraintIsOptional ( int ct_ref) const

Definition at line 652 of file presolve_context.cc.

◆ ConstraintToVars()

absl::Span< const int > operations_research::sat::PresolveContext::ConstraintToVars ( int c) const
inline

Definition at line 605 of file presolve_context.h.

◆ ConstraintVariableGraphIsUpToDate()

bool operations_research::sat::PresolveContext::ConstraintVariableGraphIsUpToDate ( ) const

Definition at line 800 of file presolve_context.cc.

◆ ConstraintVariableUsageIsConsistent()

bool operations_research::sat::PresolveContext::ConstraintVariableUsageIsConsistent ( )

Definition at line 838 of file presolve_context.cc.

◆ DebugTestHintFeasibility()

bool operations_research::sat::PresolveContext::DebugTestHintFeasibility ( )

Definition at line 2920 of file presolve_context.cc.

◆ DomainContains()

bool operations_research::sat::PresolveContext::DomainContains ( const LinearExpressionProto & expr,
int64_t value ) const

Definition at line 522 of file presolve_context.cc.

◆ DomainIsEmpty()

bool operations_research::sat::PresolveContext::DomainIsEmpty ( int ref) const

Definition at line 196 of file presolve_context.cc.

◆ DomainOf()

const Domain & operations_research::sat::PresolveContext::DomainOf ( int var) const

Definition at line 507 of file presolve_context.cc.

◆ DomainOfVarIsIncludedIn()

bool operations_research::sat::PresolveContext::DomainOfVarIsIncludedIn ( int var,
const Domain & domain )
inline

Definition at line 260 of file presolve_context.h.

◆ DomainSize()

int64_t operations_research::sat::PresolveContext::DomainSize ( int ref) const

Definition at line 512 of file presolve_context.cc.

◆ DomainSuperSetOf()

Domain operations_research::sat::PresolveContext::DomainSuperSetOf ( const LinearExpressionProto & expr) const

Definition at line 302 of file presolve_context.cc.

◆ EndMax()

int64_t operations_research::sat::PresolveContext::EndMax ( int ct_ref) const

Definition at line 405 of file presolve_context.cc.

◆ EndMin()

int64_t operations_research::sat::PresolveContext::EndMin ( int ct_ref) const

Definition at line 399 of file presolve_context.cc.

◆ ExploitExactlyOneInObjective()

bool operations_research::sat::PresolveContext::ExploitExactlyOneInObjective ( absl::Span< const int > exactly_one)

Definition at line 2323 of file presolve_context.cc.

◆ ExpressionIsAffineBoolean()

bool operations_research::sat::PresolveContext::ExpressionIsAffineBoolean ( const LinearExpressionProto & expr) const

Definition at line 312 of file presolve_context.cc.

◆ ExpressionIsALiteral()

bool operations_research::sat::PresolveContext::ExpressionIsALiteral ( const LinearExpressionProto & expr,
int * literal = nullptr ) const

Definition at line 329 of file presolve_context.cc.

◆ ExpressionIsSingleVariable()

bool operations_research::sat::PresolveContext::ExpressionIsSingleVariable ( const LinearExpressionProto & expr) const

Definition at line 324 of file presolve_context.cc.

◆ FixedValue() [1/2]

int64_t operations_research::sat::PresolveContext::FixedValue ( const LinearExpressionProto & expr) const

Definition at line 281 of file presolve_context.cc.

◆ FixedValue() [2/2]

int64_t operations_research::sat::PresolveContext::FixedValue ( int ref) const

Definition at line 241 of file presolve_context.cc.

◆ FixedValueOrNullopt()

std::optional< int64_t > operations_research::sat::PresolveContext::FixedValueOrNullopt ( const LinearExpressionProto & expr) const

Definition at line 290 of file presolve_context.cc.

◆ GetAffineRelation()

AffineRelation::Relation operations_research::sat::PresolveContext::GetAffineRelation ( int ref) const

Definition at line 1370 of file presolve_context.cc.

◆ GetFalseLiteral()

int operations_research::sat::PresolveContext::GetFalseLiteral ( )

Definition at line 149 of file presolve_context.cc.

◆ GetLiteralRepresentative()

int operations_research::sat::PresolveContext::GetLiteralRepresentative ( int ref) const

Definition at line 1335 of file presolve_context.cc.

◆ GetOrCreateAffineValueEncoding()

int operations_research::sat::PresolveContext::GetOrCreateAffineValueEncoding ( const LinearExpressionProto & expr,
int64_t value )

Definition at line 1890 of file presolve_context.cc.

◆ GetOrCreateReifiedPrecedenceLiteral()

int operations_research::sat::PresolveContext::GetOrCreateReifiedPrecedenceLiteral ( const LinearExpressionProto & time_i,
const LinearExpressionProto & time_j,
int active_i,
int active_j )

Definition at line 2457 of file presolve_context.cc.

◆ GetOrCreateVarValueEncoding()

int operations_research::sat::PresolveContext::GetOrCreateVarValueEncoding ( int ref,
int64_t value )

Definition at line 1809 of file presolve_context.cc.

◆ GetReifiedPrecedenceKey()

std::tuple< int, int64_t, int, int64_t, int64_t, int, int > operations_research::sat::PresolveContext::GetReifiedPrecedenceKey ( const LinearExpressionProto & time_i,
const LinearExpressionProto & time_j,
int active_i,
int active_j )

Definition at line 2555 of file presolve_context.cc.

◆ GetTrueLiteral()

int operations_research::sat::PresolveContext::GetTrueLiteral ( )

Definition at line 140 of file presolve_context.cc.

◆ GetValueEncodingSize()

int64_t operations_research::sat::PresolveContext::GetValueEncodingSize ( int ref) const

Definition at line 1803 of file presolve_context.cc.

◆ HasAffineValueEncoding()

bool operations_research::sat::PresolveContext::HasAffineValueEncoding ( const LinearExpressionProto & expr,
int64_t value,
int * literal = nullptr )

Definition at line 1773 of file presolve_context.cc.

◆ HasUnusedAffineVariable()

bool operations_research::sat::PresolveContext::HasUnusedAffineVariable ( ) const

Definition at line 817 of file presolve_context.cc.

◆ HasVarValueEncoding()

bool operations_research::sat::PresolveContext::HasVarValueEncoding ( int ref,
int64_t value,
int * literal = nullptr )

Definition at line 1746 of file presolve_context.cc.

◆ InitializeNewDomains()

void operations_research::sat::PresolveContext::InitializeNewDomains ( )

Definition at line 1401 of file presolve_context.cc.

◆ InsertVarValueEncoding()

bool operations_research::sat::PresolveContext::InsertVarValueEncoding ( int literal,
int var,
int64_t value )

Definition at line 1711 of file presolve_context.cc.

◆ IntersectDomainWith() [1/2]

ABSL_MUST_USE_RESULT bool operations_research::sat::PresolveContext::IntersectDomainWith ( const LinearExpressionProto & expr,
const Domain & domain,
bool * domain_modified = nullptr )

Definition at line 579 of file presolve_context.cc.

◆ IntersectDomainWith() [2/2]

ABSL_MUST_USE_RESULT bool operations_research::sat::PresolveContext::IntersectDomainWith ( int ref,
const Domain & domain,
bool * domain_modified = nullptr )

Definition at line 538 of file presolve_context.cc.

◆ IntersectionOfAffineExprsIsNotEmpty()

ABSL_MUST_USE_RESULT bool operations_research::sat::PresolveContext::IntersectionOfAffineExprsIsNotEmpty ( const LinearExpressionProto & a,
const LinearExpressionProto & b )

Definition at line 602 of file presolve_context.cc.

◆ IntervalDebugString()

std::string operations_research::sat::PresolveContext::IntervalDebugString ( int ct_ref) const

Definition at line 361 of file presolve_context.cc.

◆ IntervalIsConstant()

bool operations_research::sat::PresolveContext::IntervalIsConstant ( int ct_ref) const

Definition at line 352 of file presolve_context.cc.

◆ IntervalUsage()

int operations_research::sat::PresolveContext::IntervalUsage ( int c) const
inline

Definition at line 613 of file presolve_context.h.

◆ IsFixed() [1/2]

bool operations_research::sat::PresolveContext::IsFixed ( const LinearExpressionProto & expr) const

Definition at line 274 of file presolve_context.cc.

◆ IsFixed() [2/2]

bool operations_research::sat::PresolveContext::IsFixed ( int ref) const

Definition at line 200 of file presolve_context.cc.

◆ IsFullyEncoded() [1/2]

bool operations_research::sat::PresolveContext::IsFullyEncoded ( const LinearExpressionProto & expr) const

Definition at line 1789 of file presolve_context.cc.

◆ IsFullyEncoded() [2/2]

bool operations_research::sat::PresolveContext::IsFullyEncoded ( int ref) const

Definition at line 1781 of file presolve_context.cc.

◆ IsMostlyFullyEncoded()

bool operations_research::sat::PresolveContext::IsMostlyFullyEncoded ( int ref) const

Definition at line 1795 of file presolve_context.cc.

◆ LiteralForExpressionMax()

int operations_research::sat::PresolveContext::LiteralForExpressionMax ( const LinearExpressionProto & expr) const

Definition at line 318 of file presolve_context.cc.

◆ LiteralIsFalse()

bool operations_research::sat::PresolveContext::LiteralIsFalse ( int lit) const

Definition at line 220 of file presolve_context.cc.

◆ LiteralIsTrue()

bool operations_research::sat::PresolveContext::LiteralIsTrue ( int lit) const

Definition at line 211 of file presolve_context.cc.

◆ LoadSolutionHint()

void operations_research::sat::PresolveContext::LoadSolutionHint ( )

Definition at line 1428 of file presolve_context.cc.

◆ logger()

SolverLogger * operations_research::sat::PresolveContext::logger ( ) const
inline

Definition at line 680 of file presolve_context.h.

◆ LogInfo()

void operations_research::sat::PresolveContext::LogInfo ( )

Definition at line 2578 of file presolve_context.cc.

◆ MarkConstraintAsFalse()

bool operations_research::sat::PresolveContext::MarkConstraintAsFalse ( ConstraintProto * ct,
std::string_view reason )

Definition at line 636 of file presolve_context.cc.

◆ MarkVariableAsRemoved()

void operations_research::sat::PresolveContext::MarkVariableAsRemoved ( int ref)

Definition at line 463 of file presolve_context.cc.

◆ MaxOf() [1/2]

int64_t operations_research::sat::PresolveContext::MaxOf ( const LinearExpressionProto & expr) const

Definition at line 261 of file presolve_context.cc.

◆ MaxOf() [2/2]

int64_t operations_research::sat::PresolveContext::MaxOf ( int ref) const

Definition at line 235 of file presolve_context.cc.

◆ MinOf() [1/2]

int64_t operations_research::sat::PresolveContext::MinOf ( const LinearExpressionProto & expr) const

Definition at line 248 of file presolve_context.cc.

◆ MinOf() [2/2]

int64_t operations_research::sat::PresolveContext::MinOf ( int ref) const

Definition at line 229 of file presolve_context.cc.

◆ ModelIsExpanded()

bool operations_research::sat::PresolveContext::ModelIsExpanded ( ) const
inline

Definition at line 642 of file presolve_context.h.

◆ ModelIsUnsat()

bool operations_research::sat::PresolveContext::ModelIsUnsat ( ) const
inline

Definition at line 324 of file presolve_context.h.

◆ NewBoolVar()

int operations_research::sat::PresolveContext::NewBoolVar ( absl::string_view source)

Definition at line 122 of file presolve_context.cc.

◆ NewBoolVarWithClause()

int operations_research::sat::PresolveContext::NewBoolVarWithClause ( absl::Span< const int > clause)

Definition at line 127 of file presolve_context.cc.

◆ NewBoolVarWithConjunction()

int operations_research::sat::PresolveContext::NewBoolVarWithConjunction ( absl::Span< const int > conjunction)

Definition at line 133 of file presolve_context.cc.

◆ NewIntVar()

int operations_research::sat::PresolveContext::NewIntVar ( const Domain & domain)

Definition at line 74 of file presolve_context.cc.

◆ NewIntVarWithDefinition()

int operations_research::sat::PresolveContext::NewIntVarWithDefinition ( const Domain & domain,
absl::Span< const std::pair< int, int64_t > > definition,
bool append_constraint_to_mapping_model = false )

Definition at line 81 of file presolve_context.cc.

◆ NewMappingConstraint() [1/2]

ConstraintProto * operations_research::sat::PresolveContext::NewMappingConstraint ( absl::string_view file,
int line )

Definition at line 2813 of file presolve_context.cc.

◆ NewMappingConstraint() [2/2]

ConstraintProto * operations_research::sat::PresolveContext::NewMappingConstraint ( const ConstraintProto & base_ct,
absl::string_view file,
int line )

Definition at line 2823 of file presolve_context.cc.

◆ NotifyThatModelIsExpanded()

void operations_research::sat::PresolveContext::NotifyThatModelIsExpanded ( )
inline

Definition at line 643 of file presolve_context.h.

◆ NotifyThatModelIsUnsat()

ABSL_MUST_USE_RESULT bool operations_research::sat::PresolveContext::NotifyThatModelIsUnsat ( absl::string_view message = "")
inline

Definition at line 317 of file presolve_context.h.

◆ NumAffineRelations()

int operations_research::sat::PresolveContext::NumAffineRelations ( ) const
inline

Definition at line 403 of file presolve_context.h.

◆ ObjectiveCoeff()

int64_t operations_research::sat::PresolveContext::ObjectiveCoeff ( int var) const
inline

Definition at line 576 of file presolve_context.h.

◆ ObjectiveDomain()

const Domain & operations_research::sat::PresolveContext::ObjectiveDomain ( ) const
inline

Definition at line 572 of file presolve_context.h.

◆ ObjectiveDomainIsConstraining()

bool operations_research::sat::PresolveContext::ObjectiveDomainIsConstraining ( ) const
inline

Definition at line 585 of file presolve_context.h.

◆ ObjectiveMap()

const absl::flat_hash_map< int, int64_t > & operations_research::sat::PresolveContext::ObjectiveMap ( ) const
inline

Definition at line 573 of file presolve_context.h.

◆ params()

const SatParameters & operations_research::sat::PresolveContext::params ( ) const
inline

Definition at line 681 of file presolve_context.h.

◆ PropagateAffineRelation() [1/2]

bool operations_research::sat::PresolveContext::PropagateAffineRelation ( int var)

Definition at line 948 of file presolve_context.cc.

◆ PropagateAffineRelation() [2/2]

bool operations_research::sat::PresolveContext::PropagateAffineRelation ( int var,
int rep,
int64_t coeff,
int64_t offset )

Definition at line 955 of file presolve_context.cc.

◆ random()

ModelRandomGenerator * operations_research::sat::PresolveContext::random ( )
inline

Definition at line 683 of file presolve_context.h.

◆ ReadObjectiveFromProto()

void operations_research::sat::PresolveContext::ReadObjectiveFromProto ( )

Definition at line 1909 of file presolve_context.cc.

◆ RecomputeSingletonObjectiveDomain()

bool operations_research::sat::PresolveContext::RecomputeSingletonObjectiveDomain ( )

Definition at line 2140 of file presolve_context.cc.

◆ RefDebugString()

std::string operations_research::sat::PresolveContext::RefDebugString ( int ref) const

Definition at line 1379 of file presolve_context.cc.

◆ RegisterVariablesUsedInAssumptions()

void operations_research::sat::PresolveContext::RegisterVariablesUsedInAssumptions ( )
inline

Definition at line 633 of file presolve_context.h.

◆ RemoveAllVariablesFromAffineRelationConstraint()

void operations_research::sat::PresolveContext::RemoveAllVariablesFromAffineRelationConstraint ( )

Definition at line 978 of file presolve_context.cc.

◆ RemoveNonRepresentativeAffineVariableIfUnused()

void operations_research::sat::PresolveContext::RemoveNonRepresentativeAffineVariableIfUnused ( int var)

Definition at line 984 of file presolve_context.cc.

◆ RemoveVariableFromAffineRelation()

void operations_research::sat::PresolveContext::RemoveVariableFromAffineRelation ( int var)

Definition at line 1009 of file presolve_context.cc.

◆ RemoveVariableFromObjective()

void operations_research::sat::PresolveContext::RemoveVariableFromObjective ( int ref)

Definition at line 2158 of file presolve_context.cc.

◆ ResetAfterCopy()

void operations_research::sat::PresolveContext::ResetAfterCopy ( )

Definition at line 1390 of file presolve_context.cc.

◆ SetLiteralToFalse()

ABSL_MUST_USE_RESULT bool operations_research::sat::PresolveContext::SetLiteralToFalse ( int lit)

Definition at line 614 of file presolve_context.cc.

◆ SetLiteralToTrue()

ABSL_MUST_USE_RESULT bool operations_research::sat::PresolveContext::SetLiteralToTrue ( int lit)

Definition at line 620 of file presolve_context.cc.

◆ ShiftCostInExactlyOne()

bool operations_research::sat::PresolveContext::ShiftCostInExactlyOne ( absl::Span< const int > exactly_one,
int64_t shift )

Definition at line 2345 of file presolve_context.cc.

◆ SizeMax()

int64_t operations_research::sat::PresolveContext::SizeMax ( int ct_ref) const

Definition at line 417 of file presolve_context.cc.

◆ SizeMin()

int64_t operations_research::sat::PresolveContext::SizeMin ( int ct_ref) const

Definition at line 411 of file presolve_context.cc.

◆ solution_crush()

SolutionCrush & operations_research::sat::PresolveContext::solution_crush ( )
inline

Definition at line 674 of file presolve_context.h.

◆ StartMax()

int64_t operations_research::sat::PresolveContext::StartMax ( int ct_ref) const

Definition at line 393 of file presolve_context.cc.

◆ StartMin()

int64_t operations_research::sat::PresolveContext::StartMin ( int ct_ref) const

Definition at line 387 of file presolve_context.cc.

◆ StoreAffineRelation()

bool operations_research::sat::PresolveContext::StoreAffineRelation ( int var_x,
int var_y,
int64_t coeff,
int64_t offset,
bool debug_no_recursion = false )

Definition at line 1129 of file presolve_context.cc.

◆ StoreBooleanEqualityRelation()

ABSL_MUST_USE_RESULT bool operations_research::sat::PresolveContext::StoreBooleanEqualityRelation ( int ref_a,
int ref_b )

Definition at line 1308 of file presolve_context.cc.

◆ StoreLiteralImpliesVarEqValue()

bool operations_research::sat::PresolveContext::StoreLiteralImpliesVarEqValue ( int literal,
int var,
int64_t value )

Definition at line 1726 of file presolve_context.cc.

◆ StoreLiteralImpliesVarNeValue()

bool operations_research::sat::PresolveContext::StoreLiteralImpliesVarNeValue ( int literal,
int var,
int64_t value )

Definition at line 1736 of file presolve_context.cc.

◆ SubstituteVariableInObjective()

bool operations_research::sat::PresolveContext::SubstituteVariableInObjective ( int var_in_equality,
int64_t coeff_in_equality,
const ConstraintProto & equality )

Definition at line 2207 of file presolve_context.cc.

◆ time_limit()

TimeLimit * operations_research::sat::PresolveContext::time_limit ( )
inline

Definition at line 682 of file presolve_context.h.

◆ UpdateConstraintVariableUsage()

void operations_research::sat::PresolveContext::UpdateConstraintVariableUsage ( int c)

Definition at line 748 of file presolve_context.cc.

◆ UpdateNewConstraintsVariableUsage()

void operations_research::sat::PresolveContext::UpdateNewConstraintsVariableUsage ( )

Definition at line 805 of file presolve_context.cc.

◆ UpdateRuleStats()

void operations_research::sat::PresolveContext::UpdateRuleStats ( std::string_view name,
int num_times = 1 )

Definition at line 662 of file presolve_context.cc.

◆ VarCanTakeValue()

bool operations_research::sat::PresolveContext::VarCanTakeValue ( int var,
int64_t value ) const

Definition at line 516 of file presolve_context.cc.

◆ VariableIsAffineRepresentative()

bool operations_research::sat::PresolveContext::VariableIsAffineRepresentative ( int var) const

Definition at line 1364 of file presolve_context.cc.

◆ VariableIsNotUsedAnymore()

bool operations_research::sat::PresolveContext::VariableIsNotUsedAnymore ( int ref) const

Definition at line 458 of file presolve_context.cc.

◆ VariableIsOnlyUsedInEncodingAndMaybeInObjective()

bool operations_research::sat::PresolveContext::VariableIsOnlyUsedInEncodingAndMaybeInObjective ( int var) const

Definition at line 489 of file presolve_context.cc.

◆ VariableIsOnlyUsedInLinear1AndOneExtraConstraint()

bool operations_research::sat::PresolveContext::VariableIsOnlyUsedInLinear1AndOneExtraConstraint ( int var) const

Definition at line 499 of file presolve_context.cc.

◆ VariableIsUnique()

bool operations_research::sat::PresolveContext::VariableIsUnique ( int ref) const

Definition at line 427 of file presolve_context.cc.

◆ VariableIsUniqueAndRemovable()

bool operations_research::sat::PresolveContext::VariableIsUniqueAndRemovable ( int ref) const

Definition at line 433 of file presolve_context.cc.

◆ VariableWasRemoved()

bool operations_research::sat::PresolveContext::VariableWasRemoved ( int ref) const

Definition at line 470 of file presolve_context.cc.

◆ VariableWithCostIsUnique()

bool operations_research::sat::PresolveContext::VariableWithCostIsUnique ( int ref) const

Definition at line 438 of file presolve_context.cc.

◆ VariableWithCostIsUniqueAndRemovable()

bool operations_research::sat::PresolveContext::VariableWithCostIsUniqueAndRemovable ( int ref) const

Definition at line 449 of file presolve_context.cc.

◆ VarToConstraints()

const absl::flat_hash_set< int > & operations_research::sat::PresolveContext::VarToConstraints ( int var) const
inline

Definition at line 609 of file presolve_context.h.

◆ WriteObjectiveToProto()

void operations_research::sat::PresolveContext::WriteObjectiveToProto ( ) const

Definition at line 2417 of file presolve_context.cc.

◆ WriteVariableDomainsToProto()

void operations_research::sat::PresolveContext::WriteVariableDomainsToProto ( ) const

Definition at line 2451 of file presolve_context.cc.

Member Data Documentation

◆ deductions

DomainDeductions operations_research::sat::PresolveContext::deductions

Definition at line 709 of file presolve_context.h.

◆ mapping_model

CpModelProto* operations_research::sat::PresolveContext::mapping_model = nullptr

Definition at line 686 of file presolve_context.h.

◆ modified_domains

SparseBitset<int> operations_research::sat::PresolveContext::modified_domains

Definition at line 702 of file presolve_context.h.

◆ num_presolve_operations

int64_t operations_research::sat::PresolveContext::num_presolve_operations = 0

Definition at line 693 of file presolve_context.h.

◆ tmp_left_domains

std::vector<Domain> operations_research::sat::PresolveContext::tmp_left_domains

Definition at line 698 of file presolve_context.h.

◆ tmp_literal_set

absl::flat_hash_set<int> operations_research::sat::PresolveContext::tmp_literal_set

Definition at line 699 of file presolve_context.h.

◆ tmp_literals

std::vector<int> operations_research::sat::PresolveContext::tmp_literals

Definition at line 696 of file presolve_context.h.

◆ tmp_term_domains

std::vector<Domain> operations_research::sat::PresolveContext::tmp_term_domains

Definition at line 697 of file presolve_context.h.

◆ var_with_reduced_small_degree

SparseBitset<int> operations_research::sat::PresolveContext::var_with_reduced_small_degree

Definition at line 706 of file presolve_context.h.

◆ working_model

CpModelProto* operations_research::sat::PresolveContext::working_model = nullptr

Definition at line 685 of file presolve_context.h.


The documentation for this class was generated from the following files: