Google OR-Tools v9.11
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
model_utils.h
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
14#ifndef OR_TOOLS_MATH_OPT_IO_LP_MODEL_UTILS_H_
15#define OR_TOOLS_MATH_OPT_IO_LP_MODEL_UTILS_H_
16
17#include <string>
18
19#include "absl/status/statusor.h"
22
24
25// Returns a copy of `model`, but where the variables appearing in no constraint
26// have been deleted (and variable order is otherwise preserved).
27//
28// Note that because the variables are re-indexed, the constraints will have
29// different values in `terms`.
30LpModel RemoveUnusedVariables(const LpModel& model);
31
32// Returns a copy of `model` where the variables are permuted by
33// `new_index_to_old_index` (a permutation of the indices of the variables).
34//
35// Returns an error if `new_index_to_old_index` is not a valid permutation.
36//
37// Note that because the variables are re-indexed, the constraints will have
38// different values in `terms`.
39absl::StatusOr<LpModel> PermuteVariables(
40 const LpModel& model,
42 new_index_to_old_index);
43
44// Returns a copy of `model` where the variables are reordered by
45// `order_by_name`, where `order_by_name` contains the name of each variable
46// exactly one time, giving the new ordering.
47//
48// Returns an error if `order_by_name` does not contain the name each variable
49// in the model exactly once.
50//
51// Note that because the variables are re-indexed, the constraints will have
52// different values in `terms`.
53absl::StatusOr<LpModel> PermuteVariables(
54 const LpModel& model,
56
57} // namespace operations_research::lp_format
58
59#endif // OR_TOOLS_MATH_OPT_IO_LP_MODEL_UTILS_H_
GRBmodel * model
absl::StatusOr< LpModel > PermuteVariables(const LpModel &model, const util_intops::StrongVector< VariableIndex, VariableIndex > &new_index_to_old_index)
LpModel RemoveUnusedVariables(const LpModel &model)