14#ifndef OR_TOOLS_LP_DATA_LP_DECOMPOSER_H_
15#define OR_TOOLS_LP_DATA_LP_DECOMPOSER_H_
20#include "absl/base/thread_annotations.h"
21#include "absl/synchronization/mutex.h"
22#include "absl/types/span.h"
64 ABSL_LOCKS_EXCLUDED(mutex_);
76 ABSL_LOCKS_EXCLUDED(mutex_);
81 ABSL_LOCKS_EXCLUDED(mutex_);
86 ABSL_LOCKS_EXCLUDED(mutex_);
90 std::vector<
std::vector<ColIndex>> clusters_;
92 mutable
absl::Mutex mutex_;
const LinearProgram & original_problem() const ABSL_LOCKS_EXCLUDED(mutex_)
Returns the original problem, i.e. as it was before any decomposition.
DenseRow ExtractLocalAssignment(int problem_index, const DenseRow &assignment) ABSL_LOCKS_EXCLUDED(mutex_)
DenseRow AggregateAssignments(absl::Span< const DenseRow > assignments) const ABSL_LOCKS_EXCLUDED(mutex_)
LPDecomposer & operator=(const LPDecomposer &)=delete
int GetNumberOfProblems() const ABSL_LOCKS_EXCLUDED(mutex_)
Returns the number of independent problems generated by Decompose().
void Decompose(const LinearProgram *linear_problem) ABSL_LOCKS_EXCLUDED(mutex_)
LPDecomposer(const LPDecomposer &)=delete
This type is neither copyable nor movable.
void ExtractLocalProblem(int problem_index, LinearProgram *lp) ABSL_LOCKS_EXCLUDED(mutex_)
In SWIG mode, we don't want anything besides these top-level includes.