package operations_research

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

message AbsencesBasedAcceptanceStrategy

routing_ils.proto:320

Acceptance strategy in which a solution is accepted only if it has less absences than the reference solution (see Slack Induction by String Removals for Vehicle Routing Problems" Christiaens and Vanden Berghe, Transportation Science 2020). In particular, for each node n, the number of solutions where n was not performed by any route is tracked by a counter absences[n]. A candidate is accepted if sum(absences[n]) < sum(absences[m]) with n in unperformed(candidate) m in unperformed(reference) The counter absences is increased after every ILS iteration for the unperformed nodes in the reference solution. In addition, when remove_route_with_lowest_absences is true and a new best found solution is found, the route with the lowest sum of absences is removed from the reference solution.

Used in: AcceptanceStrategy

message AcceptanceStrategy

routing_ils.proto:327

Determines when a candidate solution replaces another one.

Used in: IteratedLocalSearchParameters

message AllNodesPerformedAcceptanceStrategy

routing_ils.proto:296

Acceptance strategy in which a solution is accepted only if all nodes are performed. Disjunctions are respected when several nodes can be performed.

Used in: AcceptanceStrategy

(message has no fields)

message AssignmentProto

assignment.proto:56

Global container for all assignment variables and objective

message CapacityConstraintProto

capacity.proto:42

Represents a capacity constraint to be used in conjunction with a SetCoverProto. This constraint only considers one dimension. Such a capacity constraint mathematically looks like: min_capacity <= \sum_{e in elements} weight_e * x_e <= max_capacity where either `min_capacity` or `max_capacity` can be omitted. `x_e` indicates for a given solution `x` whether the element `e` is selected and counts for this capacity constraint (`x_e == 1`) or not (`x_e == 0`). The weights are given in `capacity_term`, each of them being a reference to an element being present in a subset (in set-covering parlance) and its weight. For instance, this constraint can be used together with a set-covering problem where parcels (element) must be covered by trucks (subsets) while respecting truck capacities (this object). Each element can be covered by a given set of trucks (set-covering problem); if an element is taken within a truck, it uses some capacity for this truck (such as weight). In particular, this representation does not imply that a given element must have the same weight in all the capacity constraints of a set-covering problem (e.g., the same parcel might have different weights depending on which truck is being considered).

message CapacityConstraintProto.CapacityTerm

capacity.proto:43

Used in: CapacityConstraintProto

message CapacityConstraintProto.CapacityTerm.ElementWeightPair

capacity.proto:48

Used in: CapacityTerm

message ClassAssignment

course_scheduling.proto:59

Used in: CourseSchedulingResult

message ConstraintRuns

demon_profiler.proto:25

message ConstraintSolverParameters

solver_parameters.proto:25

Solver parameters.

Used in: RoutingModelParameters

enum ConstraintSolverParameters.TrailCompression

solver_parameters.proto:29

Internal parameters of the solver.

Used in: ConstraintSolverParameters

message ConstraintSolverStatistics

search_stats.proto:79

Statistics on the search in the constraint solver.

Used in: SearchStatistics

message CoolingScheduleStrategy

routing_ils.proto:249

The cooling schedule strategy defines how to compute the current simulated annealing temperature t given - the initial temperature t0 - the final temperature t1 - the current search progress 0 <= p <= 1 The value of t0 and t1 is defined by the initial_temperature and final_temperature in SimulatedAnnealingParameters, respectively. The search progress p is derived, at any given time, by the search limits. In particular, p measures how far we are in the search process w.r.t. to the number of explored solutions and the time limit. The temperature t, computed according to one of the strategies defined below, together with the selected AcceptanceStrategy, is used to guide the search trajectory. In particular, given a neighbor solution S', generated by the the application of the perturbation and improvement step to a reference solution S, we have that S will be replaced by S' iff cost(S') + t * log(U(0, 1)) < cost(S) where U(0, 1) is a random number sampled from a uniform distribution of real numbers in [0, 1].

(message has no fields)

enum CoolingScheduleStrategy.Value

routing_ils.proto:250

Used in: SimulatedAnnealingAcceptanceStrategy

message Course

course_scheduling.proto:91

Used in: CourseSchedulingModel

message CourseSchedulingModel

course_scheduling.proto:19

Information required to create a schedule for a school system.

message CourseSchedulingResult

course_scheduling.proto:45

Holds the solution to the course scheduling problem.

enum CourseSchedulingResultStatus

course_scheduling.proto:156

Status returned by the solver.

Used in: CourseSchedulingResult

message DemonRuns

demon_profiler.proto:18

Used in: ConstraintRuns

message FirstSolutionStrategy

routing_enums.proto:25

First solution strategies, used as starting point of local search.

(message has no fields)

enum FirstSolutionStrategy.Value

routing_enums.proto:26

Used in: RecreateStrategy, RoutingSearchParameters

message FlowArcProto

flow_problem.proto:43

Used in: FlowModelProto

message FlowModelProto

flow_problem.proto:70

Holds a flow problem, see NodeProto and ArcProto for more details.

enum FlowModelProto.ProblemType

flow_problem.proto:75

The type of problem to solve.

Used in: FlowModelProto

message FlowNodeProto

flow_problem.proto:58

Used in: FlowModelProto

message GScipOutput

gscip.proto:161

Used in: math_opt.SolveResultProto

enum GScipOutput.Status

gscip.proto:163

See https://scip.zib.de/doc/html/type__stat_8h.php

Used in: GScipOutput

message GScipParameters

gscip.proto:27

Contains both the "SCIP parameters" and gSCIP only configuration. For the SCIP parameters, the order of application is: 1. Emphasis 2. Meta parameters (heuristics, presolve, separating) 3. Individual SCIP parameters (e.g. an entry in bool_params) Note that 1. and 2. both apply a combination of parameters from 3. For parameters that are marked as optional, the underlying solver default is used if they are not specified.

Used in: math_opt.SolveParametersProto

enum GScipParameters.Emphasis

gscip.proto:30

See SCIP documentation for details: https://scip.zib.de/doc/html/type__paramset_8h.php#a2e51a867a8ea3ea16f15e7cc935c3f32

Used in: GScipParameters

enum GScipParameters.MetaParamValue

gscip.proto:45

See SCIP documentation for details: https://scip.zib.de/doc/html/type__paramset_8h.php#a083067d8e425d0d44e834095e82902ed

Used in: GScipParameters

message GScipSolvingStats

gscip.proto:125

TODO(user): this should be machine generated by script and contain all of https://scip.zib.de/doc/html/group__PublicSolvingStatsMethods.php

Used in: GScipOutput

message GlobalCheapestInsertionParameters

routing_heuristic_parameters.proto:108

Parameters used to configure global cheapest insertion heuristics.

Used in: RecreateParameters, RoutingSearchParameters

message GreedyDescentAcceptanceStrategy

routing_ils.proto:265

Acceptance strategy in which only improving solutions are accepted.

Used in: AcceptanceStrategy

(message has no fields)

message Int128

int128.proto:24

The low 64 bits are stored in "low", and the high 64-bits (including the sign) are stored in "high".

Used in: SetCoverProto, SetCoverSolutionResponse

message IntVarAssignment

assignment.proto:19

Storage for IntVars.

Used in: AssignmentProto

message IntervalVarAssignment

assignment.proto:27

Storage for IntervalVars.

Used in: AssignmentProto

message IteratedLocalSearchParameters

routing_ils.proto:338

Specifies the behavior of a search based on ILS.

Used in: RoutingSearchParameters

message LocalCheapestInsertionParameters

routing_heuristic_parameters.proto:25

Parameters used to configure local cheapest insertion heuristics.

Used in: RecreateParameters, RoutingSearchParameters

enum LocalCheapestInsertionParameters.InsertionSortingProperty

routing_heuristic_parameters.proto:50

Properties used to select in which order nodes or node pairs are considered in insertion heuristics.

Used in: LocalCheapestInsertionParameters

enum LocalCheapestInsertionParameters.PairInsertionStrategy

routing_heuristic_parameters.proto:29

In insertion-based heuristics, describes what positions must be considered when inserting a pickup/delivery pair, and in what order they are considered.

Used in: LocalCheapestInsertionParameters

message LocalSearchMetaheuristic

routing_enums.proto:119

Local search metaheuristics used to guide the search. Apart from greedy descent, they will try to escape local minima.

(message has no fields)

enum LocalSearchMetaheuristic.Value

routing_enums.proto:120

Used in: RoutingSearchParameters

message LocalSearchStatistics

search_stats.proto:25

Statistics on local search.

Used in: SearchStatistics

message LocalSearchStatistics.FirstSolutionStatistics

search_stats.proto:27

First solution statistics collected during search.

Used in: LocalSearchStatistics

message LocalSearchStatistics.LocalSearchFilterStatistics

search_stats.proto:60

Statistics on local search filters called during the search.

Used in: LocalSearchStatistics

message LocalSearchStatistics.LocalSearchOperatorStatistics

search_stats.proto:36

Statistics on local search operators called during the search.

Used in: LocalSearchStatistics

message MPAbsConstraint

linear_solver.proto:207

Sets a variable's value to the absolute value of another variable.

Used in: MPGeneralConstraintProto

message MPArrayConstraint

linear_solver.proto:215

Sets a variable's value equal to a function on a set of variables.

Used in: MPGeneralConstraintProto

message MPArrayWithConstantConstraint

linear_solver.proto:223

Sets a variable's value equal to a function on a set of variables and, optionally, a constant.

Used in: MPGeneralConstraintProto

message MPConstraintProto

linear_solver.proto:80

A linear constraint is always of the form: lower_bound <= sum of linear term elements <= upper_bound, where lower_bound and upper_bound: - Can form a singleton: lower_bound == upper_bound. The constraint is an equation. - Can form a finite interval [lower_bound, upper_bound]. The constraint is both lower- and upper-bounded, i.e. "boxed". - Can form a semi-infinite interval. lower_bound = -infinity: the constraint is upper-bounded. upper_bound = +infinity: the constraint is lower-bounded. - Can form the infinite interval: lower_bound = -infinity and upper_bound = +infinity. The constraint is free.

Used in: MPIndicatorConstraint, MPModelDeltaProto, MPModelProto

message MPGeneralConstraintProto

linear_solver.proto:103

General constraints. See each individual proto type for more information.

Used in: MPModelProto

message MPIndicatorConstraint

linear_solver.proto:132

Indicator constraints encode the activation or deactivation of linear constraints given the value of one Boolean variable in the model. For example: y = 0 => 2 * x1 + 3 * x2 >= 42 The 2 * x1 + 3 * x2 >= 42 constraint is only active if the variable y is equal to 0. As of 2019/04, only SCIP, CP-SAT and Gurobi support this constraint type.

Used in: MPGeneralConstraintProto

message MPModelDeltaProto

linear_solver.proto:385

Encodes a full MPModelProto by way of referencing to a "baseline" MPModelProto stored in a file, and a "delta" to apply to this model.

Used in: MPModelRequest

message MPModelProto

linear_solver.proto:258

MPModelProto contains all the information for a Linear Programming model.

Used in: MPModelRequest

message MPModelProto.Annotation

linear_solver.proto:297

Annotations can be freely added by users who want to attach arbitrary payload to the model's variables or constraints.

Used in: MPModelProto

enum MPModelProto.Annotation.TargetType

linear_solver.proto:300

The target of an Annotation is a single entity (e.g. a variable). Several Annotations may apply to the same entity.

Used in: Annotation

message MPModelRequest

linear_solver.proto:410

Next id: 18.

enum MPModelRequest.SolverType

linear_solver.proto:419

The solver type, which will select a specific implementation, and will also impact the interpretation of the model (i.e. are we solving the problem as a mixed integer program or are we relaxing it as a continuous linear program?). This must remain consistent with MPSolver::OptimizationProblemType.

Used in: MPModelRequest

message MPQuadraticConstraint

linear_solver.proto:182

Quadratic constraints of the form lb <= sum a_i x_i + sum b_ij x_i x_j <= ub, where a, b, lb and ub are constants, and x are the model's variables. Quadratic matrices that are Positive Semi-Definite, Second-Order Cones or rotated Second-Order Cones are always accepted. Other forms may or may not be accepted depending on the underlying solver used. See https://scip.zib.de/doc/html/cons__quadratic_8h.php and https://www.gurobi.com/documentation/9.0/refman/constraints.html#subsubsection:QuadraticConstraints

Used in: MPGeneralConstraintProto

message MPQuadraticObjective

linear_solver.proto:236

Quadratic part of a model's objective. Added with other objectives (such as linear), this creates the model's objective function to be optimized. Note: the linear part of the objective currently needs to be specified in the MPVariableProto.objective_coefficient fields. If you'd rather have a dedicated linear array here, talk to or-core-team@

Used in: MPModelProto

message MPSolution

linear_solver.proto:587

Used in: MPSolutionResponse

message MPSolutionResponse

linear_solver.proto:603

Next id: 12.

message MPSolveInfo

linear_solver.proto:592

Used in: MPSolutionResponse

message MPSolverCommonParameters

linear_solver.proto:331

MPSolverCommonParameters holds advanced usage parameters that apply to any of the solvers we support. All of the fields in this proto can have a value of unspecified. In this case each inner solver will use their own safe defaults. Some values won't be supported by some solvers. The behavior in that case is not defined yet.

enum MPSolverCommonParameters.LPAlgorithmValues

linear_solver.proto:362

Used in: MPSolverCommonParameters

enum MPSolverResponseStatus

linear_solver.proto:513

Status returned by the solver. They follow a hierarchical nomenclature, to allow us to add more enum values in the future. Clients should use InCategory() to match these enums, with the following C++ pseudo-code: bool InCategory(MPSolverResponseStatus status, MPSolverResponseStatus cat) { if (cat == MPSOLVER_OPTIMAL) return status == MPSOLVER_OPTIMAL; while (status > cat) status >>= 4; return status == cat; }

Normal responses -- the model was valid, and the solver ran. These statuses should be "somewhat" repeatable, modulo the fact that the solver's time limit makes it undeterministic, and could change a FEASIBLE model to an OPTIMAL and vice-versa (the others, except NOT_SOLVED, should normally be deterministic). Also, the solver libraries can be buggy.

Used in: MPSolutionResponse

message MPSosConstraint

linear_solver.proto:147

Special Ordered Set (SOS) constraints of type 1 or 2. See https://en.wikipedia.org/wiki/Special_ordered_set As of 2019/04, only SCIP and Gurobi support this constraint type.

Used in: MPGeneralConstraintProto

enum MPSosConstraint.Type

linear_solver.proto:148

Used in: MPSosConstraint

message MPVariableProto

linear_solver.proto:51

A variable is always constrained in the form: lower_bound <= x <= upper_bound where lower_bound and upper_bound: - Can form a singleton: x = constant = lower_bound = upper_bound. - Can form a finite interval: lower_bound <= x <= upper_bound. (x is boxed.) - Can form a semi-infinite interval. - lower_bound = -infinity: x <= upper_bound. - upper_bound = +infinity: x >= lower_bound. - Can form the infinite interval: lower_bound = -infinity and upper_bound = +infinity, x is free. MPVariableProto furthermore stores: - The coefficient of the variable in the objective. - Whether the variable is integer.

Used in: MPModelDeltaProto, MPModelProto

message MoreNodesPerformedAcceptanceStrategy

routing_ils.proto:300

Acceptance strategy in which a solution is accepted only if it performs at least one more node than the reference solution.

Used in: AcceptanceStrategy

(message has no fields)

enum OptionalBoolean

optional_boolean.proto:30

A "three-way" boolean: unspecified, false or true. We don't use the value of 1 to increase the chance to catch bugs: eg. in python, a user may set a proto field of this type enum to a boolean value without type checks, if they set it to True, the proto validity code will catch it (because it'll be cast to 1, which is an invalid enum value). Note that if the user sets if to False (i.e. 0), it will be caught by the routing library's parameter validity check too.

Used in: MPSolverCommonParameters, RoutingSearchParameters, RoutingSearchParameters.LocalSearchNeighborhoodOperators

message OptionalDouble

linear_solver.proto:321

To support 'unspecified' double value in proto3, the simplest is to wrap any double value in a nested message (has_XXX works for message fields).

Used in: MPSolverCommonParameters

message PartialVariableAssignment

linear_solver.proto:252

This message encodes a partial (or full) assignment of the variables of a MPModelProto problem. The indices in var_index should be unique and valid variable indices of the associated problem.

Used in: MPModelProto

message PerturbationStrategy

routing_ils.proto:218

Defines how a reference solution is perturbed.

(message has no fields)

enum PerturbationStrategy.Value

routing_ils.proto:219

Used in: IteratedLocalSearchParameters

message RandomWalkRuinStrategy

routing_ils.proto:45

Ruin strategy that removes a number of nodes by performing a random walk on the underlying routing solution. More precisely, starting from a randomly selected seed visit, the walk is extended by either moving within the same route or by jumping to a visit served by a different neighboring route. Every active visit encountered along this random walk is made unperformed.

Used in: RuinStrategy

message RecreateParameters

routing_ils.proto:149

Parameters to customize a recreate strategy.

Used in: RecreateStrategy

message RecreateStrategy

routing_ils.proto:158

Strategy defining how a solution is recreated.

Used in: RuinRecreateParameters

message RegularLimitParameters

search_limit.proto:30

A search limit The default values for int64 fields is the maxima value, i.e., 2^63-1

message Room

course_scheduling.proto:147

Used in: CourseSchedulingModel

message RoutingModelParameters

routing_parameters.proto:580

Parameters which have to be set when creating a RoutingModel.

message RoutingSearchParameters

routing_parameters.proto:41

Parameters defining the search used to solve vehicle routing problems. If a parameter is unset (or, equivalently, set to its default value), then the routing library will pick its preferred value for that parameter automatically: this should be the case for most parameters. To see those "default" parameters, call GetDefaultRoutingSearchParameters(). Next ID: 73

message RoutingSearchParameters.ImprovementSearchLimitParameters

routing_parameters.proto:521

Parameters required for the improvement search limit.

Used in: RoutingSearchParameters

message RoutingSearchParameters.LocalSearchNeighborhoodOperators

routing_parameters.proto:90

Local search neighborhood operators used to build a solutions neighborhood. Next ID: 41

Used in: RoutingSearchParameters

enum RoutingSearchParameters.SchedulingSolver

routing_parameters.proto:486

Underlying solver to use in dimension scheduling, respectively for continuous and mixed models.

Used in: RoutingSearchParameters

message RoutingSearchStatus

routing_enums.proto:150

Used by `RoutingModel` to report the status of the search for a solution.

(message has no fields)

enum RoutingSearchStatus.Value

routing_enums.proto:151

message RuinCompositionStrategy

routing_ils.proto:167

The ruin composition strategies specifies how ruin are selected at every ILS iteration.

(message has no fields)

enum RuinCompositionStrategy.Value

routing_ils.proto:168

Used in: RuinRecreateParameters

message RuinRecreateParameters

routing_ils.proto:185

Parameters to configure a perturbation based on a ruin and recreate approach.

Used in: IteratedLocalSearchParameters

message RuinStrategy

routing_ils.proto:140

Ruin strategies, used in perturbation based on ruin and recreate approaches.

Used in: RuinRecreateParameters

message SISRRuinStrategy

routing_ils.proto:124

Ruin strategy based on the "Slack Induction by String Removals for Vehicle Routing Problems" by Jan Christiaens and Greet Vanden Berghe, Transportation Science 2020. Note that, in this implementation, the notion of "string" is replaced by "sequence". The main idea of this ruin is to remove a number of geographically close sequences of nodes. In particular, at every ruin application, a maximum number max_ruined_routes of routes are disrupted. The value for max_ruined_routes is defined as (4 * avg_num_removed_visits) / (1 + max_sequence_size) + 1 with - avg_num_removed_visits: user-defined parameter ruling the average number of visits that are removed in face of several ruin applications (see also the proto message below) - max_sequence_size is defined as min{max_removed_sequence_size, average_route_size} with - max_removed_sequence_size: user-defined parameter that specifies the maximum number of visits removed from a single route (see also the proto message below) - average_route_size: the average size of a non-empty route in the current solution The actual number of ruined routes is then obtained as floor(U(1, max_ruined_routes + 1)) where U is a continuous uniform distribution of real values in the given interval. The routes affected by the ruin procedure are selected as follows. First, a non start/end seed node is randomly selected. The route serving this node is the first ruined route. Then, until the required number of routes has been ruined, neighbor nodes of the initial seed node are scanned and the associated not yet ruined routes are disrupted. Nodes defining the selected routes are designated as seed nodes for the "sequence" and "split sequence" removal procedures described below. For every selected route, a maximum number route_max_sequence_size of nodes are removed. In particular, route_max_sequence_size is defined as min{route_size, max_sequence_size} with route_size being the size of the current route. Then, the actual number of removed nodes num_removed_nodes is defined as floor(U(1, route_max_sequence_size + 1)) where U is a continuous uniform distribution of real values in the given interval. As mentioned above, the selected num_removed_nodes number of nodes is removed either via the "sequence" removal or "split sequence" removal procedures. The two removal procedures are executed with equal probabilities. The "sequence" removal procedure removes a randomly selected sequence of size num_removed_nodes that includes the seed node. The "split sequence" removal procedure also removes a randomly selected sequence of size num_removed_nodes that includes the seed node, but it can possibly preserve a subsequence of contiguous nodes. In particular, the procedure first selects a sequence of size num_removed_nodes + num_bypassed, then num_bypassed contiguous nodes in the selected sequence are preserved while the others removed. The definition of num_bypassed is as follows. First num_bypassed = 1. The current value of num_bypassed is maintaned if U(0, 1) < bypass_factor * U(0, 1) or the maximum value for num_bypassed, equal to route_size - num_removed_nodes is reached. The value is incremented of a unit otherwise, and the process is repeated. The value assigned to bypass_factor affects the number of preserved visits (see also the proto message below).

Used in: RuinStrategy

message SavingsParameters

routing_heuristic_parameters.proto:85

Parameters used to configure savings heuristics.

Used in: RecreateParameters, RoutingSearchParameters

message SearchStatistics

search_stats.proto:103

Search statistics.

message SequenceVarAssignment

assignment.proto:41

Storage for SequenceVars.

Used in: AssignmentProto

message SetCoverProto

set_cover.proto:25

TODO(user): use uint64 instead of int32 for indices, as the solver supports it.

message SetCoverProto.Subset

set_cover.proto:26

Used in: SetCoverProto

message SetCoverSolutionResponse

set_cover.proto:44

enum SetCoverSolutionResponse.Status

set_cover.proto:46

Result of the optimization.

Used in: SetCoverSolutionResponse

message SimulatedAnnealingAcceptanceStrategy

routing_ils.proto:269

Acceptance strategy in which solutions are accepted with a probability that depends on its quality and on the current state of the search.

Used in: AcceptanceStrategy

message SpatiallyCloseRoutesRuinStrategy

routing_ils.proto:34

Ruin strategy that removes a number of spatially close routes.

Used in: RuinStrategy

message Student

course_scheduling.proto:139

Used in: CourseSchedulingModel

message StudentAssignment

course_scheduling.proto:76

Used in: CourseSchedulingResult

message SubSolverStatistics

search_stats.proto:93

Statistics on sub-solvers.

Used in: SearchStatistics

message Teacher

course_scheduling.proto:127

Used in: CourseSchedulingModel

message WorkerInfo

assignment.proto:50

This message indicates how the assignment was produced.

Used in: AssignmentProto