package operations_research.sat

Mouse Melon logoGet desktop application:
View/edit binary Protocol Buffers messages

message AllDifferentConstraintProto

cp_model.proto:89

All expressions must take different values.

Used in: ConstraintProto

message ArcLpValue

routes_support_graph.proto:24

An arc of a routes constraint, with its LP value.

Used in: RoutesSupportGraphProto

message AutomatonConstraintProto

cp_model.proto:283

This constraint forces a sequence of expressions to be accepted by an automaton.

Used in: ConstraintProto

message BoolArgumentProto

cp_model.proto:70

Argument of the constraints of the form OP(literals).

Used in: ConstraintProto

message BooleanAssignment

boolean_problem.proto:78

Stores an assignment of variables as a list of true literals using their signed representation. There will be at most one literal per variable. The literals will be sorted by increasing variable index. The assignment may be partial in the sense that some variables may not appear and thus not be assigned.

Used in: LinearBooleanProblem

message CircuitConstraintProto

cp_model.proto:201

The circuit constraint is defined on a graph where the arc presence are controlled by literals. Each arc is given by an index in the tails/heads/literals lists that must have the same size. For now, we ignore node indices with no incident arc. All the other nodes must have exactly one incoming and one outgoing selected arc (i.e. literal at true). All the selected arcs that are not self-loops must form a single circuit. Note that multi-arcs are allowed, but only one of them will be true at the same time. Multi-self loop are disallowed though.

Used in: ConstraintProto

message ConstraintProto

cp_model.proto:310

Next id: 31

Used in: CpModelProto

message CpModelProto

cp_model.proto:619

A constraint programming problem.

Used in: v1.CpSolverRequest

message CpObjectiveProto

cp_model.proto:461

Optimization objective.

Used in: CpModelProto, CpSolverResponse

message CpSolverResponse

cp_model.proto:730

The response returned by a solver trying to solve a CpModelProto. Next id: 32

Used as response type in: v1.CpSolver.SolveProblem

message CpSolverSolution

cp_model.proto:723

Just a message used to store dense solution. This is used by the additional_solutions field.

Used in: CpSolverResponse

enum CpSolverStatus

cp_model.proto:693

The status returned by a solver trying to solve a CpModelProto.

Used in: CpSolverResponse

message CumulativeConstraintProto

cp_model.proto:161

The sum of the demands of the intervals at each interval point cannot exceed a capacity. Note that intervals are interpreted as [start, end) and as such intervals like [2,3) and [3,4) do not overlap for the point of view of this constraint. Moreover, intervals of size zero are ignored. All demands must not contain any negative value in their domains. This is checked at validation. Even if there are no intervals, this constraint implicit enforces capacity >= 0. In other words, a negative capacity is considered valid but always infeasible.

Used in: ConstraintProto

message DecisionStrategyProto

cp_model.proto:520

Define the strategy to follow when the solver needs to take a new decision. Note that this strategy is only defined on a subset of variables.

Used in: CpModelProto

enum DecisionStrategyProto.DomainReductionStrategy

cp_model.proto:552

Once a variable (resp. affine expression) has been chosen, this enum describe what decision is taken on its domain. TODO(user): extend as needed.

Used in: DecisionStrategyProto

enum DecisionStrategyProto.VariableSelectionStrategy

cp_model.proto:539

The order in which the variables (resp. affine expression) above should be considered. Note that only variables that are not already fixed are considered. TODO(user): extend as needed.

Used in: DecisionStrategyProto

message DenseMatrixProto

cp_model.proto:582

A dense matrix of numbers encoded in a flat way, row by row. That is matrix[i][j] = entries[i * num_cols + j];

Used in: SymmetryProto

message ElementConstraintProto

cp_model.proto:107

The constraint linear_target = exprs[linear_index]. This enforces that index takes one of the value in [0, vars_size()).

Used in: ConstraintProto

message FloatObjectiveProto

cp_model.proto:509

A linear floating point objective: sum coeffs[i] * vars[i] + offset. Note that the variable can only still take integer value.

Used in: CpModelProto

message IntegerVariableProto

cp_model.proto:45

An integer variable. It will be referred to by an int32 corresponding to its index in a CpModelProto variables field. Depending on the context, a reference to a variable whose domain is in [0, 1] can also be seen as a Boolean that will be true if the variable value is 1 and false if it is 0. When used in this context, the field name will always contain the word "literal". Negative reference (advanced usage): to simplify the creation of a model and for efficiency reasons, all the "literal" or "variable" fields can also contain a negative index. A negative index i will refer to the negation of the integer variable at index -i -1 or to NOT the literal at the same index. Ex: A variable index 4 will refer to the integer variable model.variables(4) and an index of -5 will refer to the negation of the same variable. A literal index 4 will refer to the logical fact that model.variable(4) == 1 and a literal index of -5 will refer to the logical fact model.variable(4) == 0.

Used in: CpModelProto, CpSolverResponse

message IntervalConstraintProto

cp_model.proto:123

This is not really a constraint. It is there so it can be referred by other constraints using this "interval" concept. IMPORTANT: For now, this constraint do not enforce any relations on the components, and it is up to the client to add in the model: - enforcement => start + size == end. - enforcement => size >= 0 // Only needed if size is not already >= 0.

Used in: ConstraintProto

message InverseConstraintProto

cp_model.proto:276

The two arrays of variable each represent a function, the second is the inverse of the first: f_direct[i] == j <=> f_inverse[j] == i.

Used in: ConstraintProto

message LinearArgumentProto

cp_model.proto:83

Used in: ConstraintProto

message LinearBooleanConstraint

boolean_problem.proto:28

A linear Boolean constraint which is a bounded sum of linear terms. Each term beeing a literal times an integer coefficient. If we assume that a literal takes the value 1 if it is true and 0 otherwise, the constraint is: lower_bound <= ... + coefficients[i] * literals[i] + ... <= upper_bound

Used in: LinearBooleanProblem

message LinearBooleanProblem

boolean_problem.proto:83

A linear Boolean problem.

message LinearConstraintProto

cp_model.proto:99

The linear sum vars[i] * coeffs[i] must fall in the given domain. The domain has the same format as the one in IntegerVariableProto. Note that the validation code currently checks using the domain of the involved variables that the sum can always be computed without integer overflow and throws an error otherwise.

Used in: ConstraintProto

message LinearExpressionProto

cp_model.proto:77

Some constraints supports linear expression instead of just using a reference to a variable. This is especially useful during presolve to reduce the model size.

Used in: AllDifferentConstraintProto, AutomatonConstraintProto, CumulativeConstraintProto, DecisionStrategyProto, ElementConstraintProto, IntervalConstraintProto, LinearArgumentProto, ReservoirConstraintProto, RoutesConstraintProto.NodeExpressions, TableConstraintProto

message LinearObjective

boolean_problem.proto:52

The objective of an optimization problem.

Used in: LinearBooleanProblem

message ListOfVariablesProto

cp_model.proto:305

A list of variables, without any semantics.

Used in: ConstraintProto

message LratDeletedClauses

lrat.proto:70

A list of clauses to delete.

Used in: LratProofStep

message LratExportedClause

lrat.proto:64

A clause to export, so that it can be imported from any worker. This is not needed for unary and binary clauses, which are always exported.

Used in: LratProofStep

message LratImportedClause

lrat.proto:26

A clause imported from the input problem, or from another worker.

Used in: LratProofStep

message LratInferredClause

lrat.proto:32

An LRAT inferred clause.

Used in: LratProofStep

message LratInferredClause.RatInfo

lrat.proto:50

If `rat_infos` is empty, the last `unit_ids` clause must become empty after unit propagation. If the last `unit_ids` clause does not become empty by unit propagation, then `rat_infos` must contain all the clauses which contain the negation of the first `literals` (called the pivot 'p') -- and no other clauses. Moreover, for each r in `rat_infos`, all the `r.unit_ids` clauses must become unit and eventually empty if all the literals of the `r.resolvant_id` clause (minus ~p), plus those in `literals`, are assumed to be false (this list must be in unit propagation order; verification stops at the first empty clause). See LratChecker for more details.

Used in: LratInferredClause

message LratProofStep

lrat.proto:82

An LRAT UNSAT proof is a sequence of steps, starting from imported clauses and ending with the empty clause. At each step new clauses can be inferred from previous ones (with an explicit proof), or imported from another proof built by another thread. A proof step can also delete clauses which are no longer needed, or export a clause for other workers to import. Each clause is identified by a unique clause ID.

message NoOverlap2DConstraintProto

cp_model.proto:147

The boxes defined by [start_x, end_x) * [start_y, end_y) cannot overlap. Furthermore, one box is optional if at least one of the x or y interval is optional. Note that the case of boxes of size zero is special. The following cases violate the constraint: - a point box inside a box with a non zero area - a line box overlapping a box with a non zero area - one vertical line box crossing an horizontal line box.

Used in: ConstraintProto

message NoOverlapConstraintProto

cp_model.proto:134

All the intervals (index of IntervalConstraintProto) must be disjoint. More formally, there must exist a sequence so that for each consecutive intervals, we have end_i <= start_{i+1}. In particular, intervals of size zero do matter for this constraint. This is also known as a disjunctive constraint in scheduling.

Used in: ConstraintProto

message PartialVariableAssignment

cp_model.proto:566

This message encodes a partial (or full) assignment of the variables of a CpModelProto. The variable indices should be unique and valid variable indices.

Used in: CpModelProto

message ReservoirConstraintProto

cp_model.proto:183

Maintain a reservoir level within bounds. The water level starts at 0, and at any time, it must be within [min_level, max_level]. If the variable active_literals[i] is true, and if the expression time_exprs[i] is assigned a value t, then the current level changes by level_changes[i] at the time t. Therefore, at any time t: sum(level_changes[i] * active_literals[i] if time_exprs[i] <= t) in [min_level, max_level] Note that min level must be <= 0, and the max level must be >= 0. Please use fixed level_changes to simulate initial state. The array of boolean variables 'actives', if defined, indicates which actions are actually performed. If this array is not defined, then it is assumed that all actions will be performed.

Used in: ConstraintProto

message RoutesConstraintProto

cp_model.proto:227

The "VRP" (Vehicle Routing Problem) constraint. The direct graph where arc #i (from tails[i] to head[i]) is present iff literals[i] is true must satisfy this set of properties: - #incoming arcs == 1 except for node 0. - #outgoing arcs == 1 except for node 0. - for node zero, #incoming arcs == #outgoing arcs. - There are no duplicate arcs. - Self-arcs are allowed except for node 0. - There is no cycle in this graph, except through node 0. Note: Currently this constraint expects all the nodes in [0, num_nodes) to have at least one incident arc. The model will be considered invalid if it is not the case. You can add self-arc fixed to one to ignore some nodes if needed. TODO(user): It is probably possible to generalize this constraint to a no-cycle in a general graph, or a no-cycle with sum incoming <= 1 and sum outgoing <= 1 (more efficient implementation). On the other hand, having this specific constraint allow us to add specific "cuts" to a VRP problem.

Used in: ConstraintProto

message RoutesConstraintProto.NodeExpressions

cp_model.proto:237

A set of linear expressions associated with the nodes.

Used in: RoutesConstraintProto

message RoutesSupportGraphProto

routes_support_graph.proto:32

The arcs of a routes constraint which have non-zero LP values, in the LP relaxation of the problem.

message SatParameters

sat_parameters.proto:28

Contains the definitions for all the sat algorithm parameters and their default values. NEXT TAG: 356

Used in: RoutingSearchParameters, math_opt.SolveParametersProto, v1.CpSolverRequest

enum SatParameters.BinaryMinizationAlgorithm

sat_parameters.proto:127

Whether to expoit the binary clause to minimize learned clauses further.

Used in: SatParameters

enum SatParameters.ClauseOrdering

sat_parameters.proto:216

The clauses that will be kept during a cleanup are the ones that come first under this order. We always keep or exclude ties together.

Used in: SatParameters

enum SatParameters.ConflictMinimizationAlgorithm

sat_parameters.proto:117

Do we try to minimize conflicts (greedily) when creating them.

Used in: SatParameters

enum SatParameters.FPRoundingMethod

sat_parameters.proto:1519

Rounding method to use for feasibility pump.

Used in: SatParameters

enum SatParameters.MaxSatAssumptionOrder

sat_parameters.proto:903

In what order do we add the assumptions in a core-based max-sat algorithm

Used in: SatParameters

enum SatParameters.MaxSatStratificationAlgorithm

sat_parameters.proto:916

What stratification algorithm we use in the presence of weight.

Used in: SatParameters

enum SatParameters.Polarity

sat_parameters.proto:52

Specifies the initial polarity (true/false) when the solver branches on a variable. This can be modified later by the user, or the phase saving heuristic. Note(user): POLARITY_FALSE is usually a good choice because of the "natural" way to express a linear boolean problem.

Used in: SatParameters

enum SatParameters.RestartAlgorithm

sat_parameters.proto:267

Restart algorithms. A reference for the more advanced ones is: Gilles Audemard, Laurent Simon, "Refining Restarts Strategies for SAT and UNSAT", Principles and Practice of Constraint Programming Lecture Notes in Computer Science 2012, pp 118-126

Used in: SatParameters

enum SatParameters.SearchBranching

sat_parameters.proto:1151

The search branching will be used to decide how to branch on unfixed nodes.

Used in: SatParameters

enum SatParameters.SharedTreeSplitStrategy

sat_parameters.proto:1380

Used in: SatParameters

enum SatParameters.VariableOrder

sat_parameters.proto:39

Variables without activity (i.e. at the beginning of the search) will be tried in this preferred order.

Used in: SatParameters

message SparsePermutationProto

cp_model.proto:573

A permutation of integers encoded as a list of cycles, hence the "sparse" format. The image of an element cycle[i] is cycle[(i + 1) % cycle_length].

Used in: SymmetryProto

message SymmetryProto

cp_model.proto:600

EXPERIMENTAL. For now, this is meant to be used by the solver and not filled by clients. Hold symmetry information about the set of feasible solutions. If we permute the variable values of any feasible solution using one of the permutation described here, we should always get another feasible solution. We usually also enforce that the objective of the new solution is the same. The group of permutations encoded here is usually computed from the encoding of the model, so it is not meant to be a complete representation of the feasible solution symmetries, just a valid subgroup.

Used in: CpModelProto

message TableConstraintProto

cp_model.proto:264

The values of the n-tuple formed by the given expression can only be one of the listed n-tuples in values. The n-tuples are encoded in a flattened way: [tuple0_v0, tuple0_v1, ..., tuple0_v{n-1}, tuple1_v0, ...]. Corner cases: - If all `vars`, `values` and `exprs` are empty, the constraint is trivially true, irrespective of the value of `negated`. - If `values` is empty but either vars or exprs is not, the constraint is trivially false if `negated` is false, and trivially true if `negated` is true. - If `vars` and `exprs` are empty but `values` is not, the model is invalid.

Used in: ConstraintProto