Google OR-Tools v9.11
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
model_util.cc
Go to the documentation of this file.
1// Copyright 2010-2024 Google LLC
2// Licensed under the Apache License, Version 2.0 (the "License");
3// you may not use this file except in compliance with the License.
4// You may obtain a copy of the License at
5//
6// http://www.apache.org/licenses/LICENSE-2.0
7//
8// Unless required by applicable law or agreed to in writing, software
9// distributed under the License is distributed on an "AS IS" BASIS,
10// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11// See the License for the specific language governing permissions and
12// limitations under the License.
13
15
16#include <utility>
17
22
24
25LinearExpression ToLinearExpression(const ModelStorage& storage,
26 const LinearExpressionData& expr_data) {
27 LinearExpression expr = expr_data.offset;
28 for (const auto [var_id, coeff] : expr_data.coeffs.terms()) {
29 expr += coeff * Variable(&storage, var_id);
30 }
31 return expr;
32}
33
36 for (const auto [var, coeff] : expression.terms()) {
37 coeffs.set(var.typed_id(), coeff);
38 }
39 return {.coeffs = std::move(coeffs), .offset = expression.offset()};
40}
41
42} // namespace operations_research::math_opt
const VariableMap< double > & terms() const
Returns the terms in this expression.
bool set(VariableId id, double coeff)
Returns true if the stored value changes.
const absl::flat_hash_map< VariableId, double > & terms() const
IntVar * var
An object oriented wrapper for quadratic constraints in ModelStorage.
Definition gurobi_isv.cc:28
LinearExpression ToLinearExpression(const ModelStorage &storage, const LinearExpressionData &expr_data)
Definition model_util.cc:25
LinearExpressionData FromLinearExpression(const LinearExpression &expression)
Converts a LinearExpression to the associated "raw ID" format.
Definition model_util.cc:34