18from typing
import Dict, List, Optional, Set
79 hint_proto: model_parameters_pb2.SolutionHintProto, mod:
model.Model
81 """Returns an equivalent SolutionHint to `hint_proto`.
84 hint_proto: The solution, as encoded by the ids of the variables and
86 mod: A MathOpt Model that must contain variables and linear constraints with
87 the ids from hint_proto.
90 A SolutionHint equivalent.
93 ValueError if hint_proto is invalid or refers to variables or constraints
97 variable_values=sparse_containers.parse_variable_map(
98 hint_proto.variable_values, mod
100 dual_values=sparse_containers.parse_linear_constraint_map(
101 hint_proto.dual_values, mod
106@dataclasses.dataclass
164 proto: model_parameters_pb2.ObjectiveParametersProto,
165) -> ObjectiveParameters:
166 """Returns an equivalent ObjectiveParameters to the input proto."""
168 if proto.HasField(
"objective_degradation_absolute_tolerance"):
169 result.objective_degradation_absolute_tolerance = (
170 proto.objective_degradation_absolute_tolerance
172 if proto.HasField(
"objective_degradation_relative_tolerance"):
173 result.objective_degradation_relative_tolerance = (
174 proto.objective_degradation_relative_tolerance
176 if proto.HasField(
"time_limit"):
177 result.time_limit = proto.time_limit.ToTimedelta()
181@dataclasses.dataclass
183 """Model specific solver configuration, for example, an initial basis.
185 This class mirrors (and can generate) the related proto
186 model_parameters_pb2.ModelSolveParametersProto.
189 variable_values_filter: Only return solution and primal ray values for
190 variables accepted by this filter (default accepts all variables).
191 dual_values_filter: Only return dual variable values and dual ray values for
192 linear constraints accepted by this filter (default accepts all linear
194 quadratic_dual_values_filter: Only return quadratic constraint dual values
195 accepted by this filter (default accepts all quadratic constraints).
196 reduced_costs_filter: Only return reduced cost and dual ray values for
197 variables accepted by this filter (default accepts all variables).
198 initial_basis: If set, provides a warm start for simplex based solvers.
199 solution_hints: Optional solution hints. If the underlying solver only
200 accepts a single hint, the first hint is used.
201 branching_priorities: Optional branching priorities. Variables with higher
202 values will be branched on first. Variables for which priorities are not
203 set get the solver's default priority (usually zero).
204 objective_parameters: Optional per objective parameters used only only for
205 multi-objective models.
206 lazy_linear_constraints: Optional lazy constraint annotations. Included
207 linear constraints will be marked as "lazy" with supporting solvers,
208 meaning that they will only be added to the working model as-needed as the
209 solver runs. Note that this an algorithmic hint that does not affect the
210 model's feasible region; solvers not supporting these annotations will
214 variable_values_filter: sparse_containers.VariableFilter = (
215 sparse_containers.VariableFilter()
217 dual_values_filter: sparse_containers.LinearConstraintFilter = (
218 sparse_containers.LinearConstraintFilter()
220 quadratic_dual_values_filter: sparse_containers.QuadraticConstraintFilter = (
221 sparse_containers.QuadraticConstraintFilter()
223 reduced_costs_filter: sparse_containers.VariableFilter = (
224 sparse_containers.VariableFilter()
227 solution_hints: List[SolutionHint] = dataclasses.field(default_factory=list)
232 dataclasses.field(default_factory=dict)
235 dataclasses.field(default_factory=set)
238 def to_proto(self) -> model_parameters_pb2.ModelSolveParametersProto:
239 """Returns an equivalent protocol buffer."""
242 result = model_parameters_pb2.ModelSolveParametersProto(
247 branching_priorities=sparse_containers.to_sparse_int32_vector_proto(
254 result.solution_hints.append(hint.to_proto())
257 result.auxiliary_objective_parameters[obj.id].CopyFrom(
261 result.primary_objective_parameters.CopyFrom(params.to_proto())
262 result.lazy_linear_constraint_ids[:] = sorted(