17from typing
import Dict, List, Optional, Set
78 hint_proto: model_parameters_pb2.SolutionHintProto, mod:
model.Model
80 """Returns an equivalent SolutionHint to `hint_proto`.
83 hint_proto: The solution, as encoded by the ids of the variables and
85 mod: A MathOpt Model that must contain variables and linear constraints with
86 the ids from hint_proto.
89 A SolutionHint equivalent.
92 ValueError if hint_proto is invalid or refers to variables or constraints
96 variable_values=sparse_containers.parse_variable_map(
97 hint_proto.variable_values, mod
99 dual_values=sparse_containers.parse_linear_constraint_map(
100 hint_proto.dual_values, mod
105@dataclasses.dataclass
163 proto: model_parameters_pb2.ObjectiveParametersProto,
164) -> ObjectiveParameters:
165 """Returns an equivalent ObjectiveParameters to the input proto."""
167 if proto.HasField(
"objective_degradation_absolute_tolerance"):
168 result.objective_degradation_absolute_tolerance = (
169 proto.objective_degradation_absolute_tolerance
171 if proto.HasField(
"objective_degradation_relative_tolerance"):
172 result.objective_degradation_relative_tolerance = (
173 proto.objective_degradation_relative_tolerance
175 if proto.HasField(
"time_limit"):
176 result.time_limit = proto.time_limit.ToTimedelta()
180@dataclasses.dataclass
182 """Model specific solver configuration, for example, an initial basis.
184 This class mirrors (and can generate) the related proto
185 model_parameters_pb2.ModelSolveParametersProto.
188 variable_values_filter: Only return solution and primal ray values for
189 variables accepted by this filter (default accepts all variables).
190 dual_values_filter: Only return dual variable values and dual ray values for
191 linear constraints accepted by this filter (default accepts all linear
193 quadratic_dual_values_filter: Only return quadratic constraint dual values
194 accepted by this filter (default accepts all quadratic constraints).
195 reduced_costs_filter: Only return reduced cost and dual ray values for
196 variables accepted by this filter (default accepts all variables).
197 initial_basis: If set, provides a warm start for simplex based solvers.
198 solution_hints: Optional solution hints. If the underlying solver only
199 accepts a single hint, the first hint is used.
200 branching_priorities: Optional branching priorities. Variables with higher
201 values will be branched on first. Variables for which priorities are not
202 set get the solver's default priority (usually zero).
203 objective_parameters: Optional per objective parameters used only only for
204 multi-objective models.
205 lazy_linear_constraints: Optional lazy constraint annotations. Included
206 linear constraints will be marked as "lazy" with supporting solvers,
207 meaning that they will only be added to the working model as-needed as the
208 solver runs. Note that this an algorithmic hint that does not affect the
209 model's feasible region; solvers not supporting these annotations will
213 variable_values_filter: sparse_containers.VariableFilter = (
214 sparse_containers.VariableFilter()
216 dual_values_filter: sparse_containers.LinearConstraintFilter = (
217 sparse_containers.LinearConstraintFilter()
219 quadratic_dual_values_filter: sparse_containers.QuadraticConstraintFilter = (
220 sparse_containers.QuadraticConstraintFilter()
222 reduced_costs_filter: sparse_containers.VariableFilter = (
223 sparse_containers.VariableFilter()
226 solution_hints: List[SolutionHint] = dataclasses.field(default_factory=list)
231 dataclasses.field(default_factory=dict)
234 dataclasses.field(default_factory=set)
237 def to_proto(self) -> model_parameters_pb2.ModelSolveParametersProto:
238 """Returns an equivalent protocol buffer."""
241 result = model_parameters_pb2.ModelSolveParametersProto(
246 branching_priorities=sparse_containers.to_sparse_int32_vector_proto(
253 result.solution_hints.append(hint.to_proto())
256 result.auxiliary_objective_parameters[obj.id].CopyFrom(
260 result.primary_objective_parameters.CopyFrom(params.to_proto())
261 result.lazy_linear_constraint_ids[:] = sorted(