hyper_graph_optimization_problem_edge_based.h
Go to the documentation of this file.
1 /*********************************************************************
2  *
3  * Software License Agreement
4  *
5  * Copyright (c) 2020,
6  * TU Dortmund - Institute of Control Theory and Systems Engineering.
7  * All rights reserved.
8  *
9  * This program is free software: you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation, either version 3 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program. If not, see <https://www.gnu.org/licenses/>.
21  *
22  * Authors: Christoph Rösmann
23  *********************************************************************/
24 
25 #ifndef SRC_OPTIMIZATION_INCLUDE_CORBO_OPTIMIZATION_HYPER_GRAPH_HYPER_GRAPH_OPTIMIZATION_PROBLEM_EDGE_BASED_H_
26 #define SRC_OPTIMIZATION_INCLUDE_CORBO_OPTIMIZATION_HYPER_GRAPH_HYPER_GRAPH_OPTIMIZATION_PROBLEM_EDGE_BASED_H_
27 
29 
30 #include <memory>
31 
32 namespace corbo {
33 
34 class HyperGraphOptimizationProblemEdgeBased : public BaseHyperGraphOptimizationProblem
35 {
36  public:
39  : BaseHyperGraphOptimizationProblem(edges, vertices)
40  {
41  }
42 
43  BaseHyperGraphOptimizationProblem::Ptr getInstance() const override { return std::make_shared<HyperGraphOptimizationProblemEdgeBased>(); }
44 
47 
48  void computeDenseJacobianLsqObjective(Eigen::Ref<Eigen::MatrixXd> jacobian, const double* multipliers = nullptr) override;
51  void computeSparseJacobianLsqObjectiveValues(Eigen::Ref<Eigen::VectorXd> values, const double* multipliers = nullptr) override;
52 
53  void computeDenseJacobianEqualities(Eigen::Ref<Eigen::MatrixXd> jacobian, const double* multipliers = nullptr) override;
56  void computeSparseJacobianEqualitiesValues(Eigen::Ref<Eigen::VectorXd> values, const double* multipliers = nullptr) override;
57 
58  void computeDenseJacobianInequalities(Eigen::Ref<Eigen::MatrixXd> jacobian, const double* multipliers = nullptr) override;
61  void computeSparseJacobianInequalitiesValues(Eigen::Ref<Eigen::VectorXd> values, const double* multipliers = nullptr) override;
62 
63  void computeDenseJacobianActiveInequalities(Eigen::Ref<Eigen::MatrixXd> jacobian, double weight = 1.0) override;
64  void computeSparseJacobianActiveInequalitiesValues(Eigen::Ref<Eigen::VectorXd> values, double weight = 1.0) override;
65 
66  void computeDenseJacobians(Eigen::Ref<Eigen::VectorXd> gradient_non_lsq_obj, Eigen::Ref<Eigen::MatrixXd> jacobian_lsq_obj,
68  const double* multipliers_lsq_obj = nullptr, const double* multipliers_eq = nullptr,
69  const double* multipliers_ineq = nullptr, bool active_ineq = false, double active_ineq_weight = 1.0) override;
70 
72  Eigen::Ref<Eigen::VectorXd> values_ineq, const double* multipliers_obj = nullptr,
73  const double* multipliers_eq = nullptr, const double* multipliers_ineq = nullptr, bool active_ineq = false,
74  double active_ineq_weight = 1.0) override;
75 
76  int computeCombinedSparseJacobiansNNZ(bool objective_lsq = true, bool equality = true, bool inequality = true) override;
78  bool equality = true, bool inequality = true) override;
79  void computeCombinedSparseJacobiansValues(Eigen::Ref<Eigen::VectorXd> values, bool objective_lsq = true, bool equality = true,
80  bool inequality = true, const double* multipliers_obj = nullptr, const double* multipliers_eq = nullptr,
81  const double* multipliers_ineq = nullptr) override;
82  void computeCombinedSparseJacobian(Eigen::SparseMatrix<double>& jacobian, bool objective_lsq, bool equality, bool inequality,
83  bool finite_combined_bounds, bool active_ineq = false, double weight_eq = 1.0, double weight_ineq = 1.0,
84  double weight_bounds = 1.0, const Eigen::VectorXd* values = nullptr,
85  const Eigen::VectorXi* col_nnz = nullptr) override;
86 
87  // useful for IPOPT (w/ hessian-approx)
89  bool equality = true, bool inequality = true,
90  const double* multipliers_eq = nullptr,
91  const double* multipliers_ineq = nullptr) override;
92 
93  // warning: we are using H = 2* J^T*J as approximation in case of least-squares objective edges
94  void computeDenseHessianObjective(Eigen::Ref<Eigen::MatrixXd> hessian, double multiplier = 1.0) override;
95 
96  int computeSparseHessianObjectiveNNZ(bool lower_part_only = false) override;
98  bool lower_part_only = false) override;
99  void computeSparseHessianObjectiveValues(Eigen::Ref<Eigen::VectorXd> values, double multiplier = 1.0, bool lower_part_only = false) override;
100 
101  void computeSparseHessianObjectiveLL(Eigen::SparseMatrix<double, Eigen::ColMajor, long long>& H, const Eigen::VectorXi* col_nnz = nullptr,
102  bool upper_part_only = false) override;
103  void computeSparseHessianObjectiveNNZperCol(Eigen::Ref<Eigen::VectorXi> col_nnz, bool upper_part_only = false) override;
104 
105  int computeSparseHessianEqualitiesNNZ(bool lower_part_only = false) override;
107  bool lower_part_only = false) override;
108  void computeSparseHessianEqualitiesValues(Eigen::Ref<Eigen::VectorXd> values, const double* multipliers = nullptr,
109  bool lower_part_only = false) override;
110 
111  int computeSparseHessianInequalitiesNNZ(bool lower_part_only = false) override;
113  bool lower_part_only = false) override;
114  void computeSparseHessianInequalitiesValues(Eigen::Ref<Eigen::VectorXd> values, const double* multipliers = nullptr,
115  bool lower_part_only = false) override;
116 
117  void computeSparseHessiansNNZ(int& nnz_obj, int& nnz_eq, int& nnz_ineq, bool lower_part_only = false) override;
121  bool lower_part_only = false) override;
123  Eigen::Ref<Eigen::VectorXd> values_ineq, double multiplier_obj = 1.0, const double* multipliers_eq = nullptr,
124  const double* multipliers_ineq = nullptr, bool lower_part_only = false) override;
125 
127  const double* multipliers_ineq, const Eigen::VectorXi* col_nnz = nullptr,
128  bool upper_part_only = false) override;
129 
130  void computeSparseHessianLagrangianNNZperCol(Eigen::Ref<Eigen::VectorXi> col_nnz, bool upper_part_only = false) override;
131 
133  const Eigen::VectorXi* col_nnz = nullptr) override;
134  void computeSparseJacobianTwoSideBoundedLinearFormNNZPerColumn(Eigen::Ref<Eigen::VectorXi> col_nnz, bool include_finite_bounds) override;
135 
136  int computeSparseJacobianTwoSideBoundedLinearFormNNZ(bool include_finite_bounds) override;
138  bool include_finite_bounds) override;
139  void computeSparseJacobianTwoSideBoundedLinearFormValues(Eigen::Ref<Eigen::VectorXd> values, bool include_finite_bounds) override;
140 
142  const double* multipliers_eq, const double* multipliers_ineq,
144  bool include_finite_bounds, const Eigen::VectorXi* col_nnz_H,
145  const Eigen::VectorXi* col_nnz_A, bool upper_part_only_H) override;
146 
149  bool include_finite_bounds, const Eigen::VectorXi* col_nnz_H,
150  const Eigen::VectorXi* col_nnz_A, bool upper_part_only_H) override;
151 
152  protected:
153  // bool _hessian_lsq_obj_approx = false; // at the moment every lsq objective edge is approximated by H = 2*J^T*J
154 };
155 
157 
158 } // namespace corbo
159 
160 #endif // SRC_OPTIMIZATION_INCLUDE_CORBO_OPTIMIZATION_HYPER_GRAPH_HYPER_GRAPH_OPTIMIZATION_PROBLEM_EDGE_BASED_H_
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessianObjectiveNNZ
int computeSparseHessianObjectiveNNZ(bool lower_part_only=false) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:2109
corbo::OptimizationEdgeSet::Ptr
std::shared_ptr< OptimizationEdgeSet > Ptr
Definition: edge_set.h:99
Eigen::SparseMatrix< double >
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessianInequalitiesStructure
void computeSparseHessianInequalitiesStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool lower_part_only=false) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:3268
corbo::HyperGraphOptimizationProblemEdgeBased::computeGradientNonLsqObjective
void computeGradientNonLsqObjective(Eigen::Ref< Eigen::VectorXd > gradient) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:126
corbo::HyperGraphOptimizationProblemEdgeBased::computeCombinedSparseJacobiansNNZ
int computeCombinedSparseJacobiansNNZ(bool objective_lsq=true, bool equality=true, bool inequality=true) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:1203
corbo::HyperGraphOptimizationProblemEdgeBased::HyperGraphOptimizationProblemEdgeBased
HyperGraphOptimizationProblemEdgeBased()=default
corbo
Definition: communication/include/corbo-communication/utilities.h:37
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessianObjectiveStructure
void computeSparseHessianObjectiveStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool lower_part_only=false) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:2214
corbo::VertexSetInterface::Ptr
std::shared_ptr< VertexSetInterface > Ptr
Definition: vertex_set.h:92
corbo::HyperGraphOptimizationProblemEdgeBased::computeCombinedSparseJacobiansStructure
void computeCombinedSparseJacobiansStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool objective_lsq=true, bool equality=true, bool inequality=true) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:1211
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianLsqObjectiveStructure
void computeSparseJacobianLsqObjectiveStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:245
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessianObjectiveNNZperCol
void computeSparseHessianObjectiveNNZperCol(Eigen::Ref< Eigen::VectorXi > col_nnz, bool upper_part_only=false) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:2770
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianTwoSideBoundedLinearForm
void computeSparseJacobianTwoSideBoundedLinearForm(Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &A, bool include_finite_bounds, const Eigen::VectorXi *col_nnz=nullptr) override
Compute the jacobian A for the linear form lbA <= A x <= lbB.
Definition: hyper_graph_optimization_problem_edge_based.cpp:4593
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessianEqualitiesValues
void computeSparseHessianEqualitiesValues(Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr, bool lower_part_only=false) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:3074
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianLsqObjectiveNNZ
int computeSparseJacobianLsqObjectiveNNZ() override
Definition: hyper_graph_optimization_problem_edge_based.cpp:215
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianTwoSideBoundedLinearFormAndHessianLagrangian
void computeSparseJacobianTwoSideBoundedLinearFormAndHessianLagrangian(Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &H, const double *multipliers_eq, const double *multipliers_ineq, Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &A, bool include_finite_bounds, const Eigen::VectorXi *col_nnz_H, const Eigen::VectorXi *col_nnz_A, bool upper_part_only_H) override
Compute the Jacobian and Hessian of the lagrangian.
Definition: hyper_graph_optimization_problem_edge_based.cpp:4991
corbo::HyperGraphOptimizationProblemEdgeBased::computeDenseJacobians
void computeDenseJacobians(Eigen::Ref< Eigen::VectorXd > gradient_non_lsq_obj, Eigen::Ref< Eigen::MatrixXd > jacobian_lsq_obj, Eigen::Ref< Eigen::MatrixXd > jacobian_eq, Eigen::Ref< Eigen::MatrixXd > jacobian_ineq, const double *multipliers_lsq_obj=nullptr, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr, bool active_ineq=false, double active_ineq_weight=1.0) override
Compute the objective and constraint Jacobians at once.
Definition: hyper_graph_optimization_problem_edge_based.cpp:863
corbo::HyperGraphOptimizationProblemEdgeBased::computeGradientObjective
void computeGradientObjective(Eigen::Ref< Eigen::VectorXd > gradient) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:53
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianEqualitiesStructure
void computeSparseJacobianEqualitiesStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:420
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianInequalitiesNNZ
int computeSparseJacobianInequalitiesNNZ() override
Definition: hyper_graph_optimization_problem_edge_based.cpp:566
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessianObjectiveValues
void computeSparseHessianObjectiveValues(Eigen::Ref< Eigen::VectorXd > values, double multiplier=1.0, bool lower_part_only=false) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:2372
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianTwoSideBoundedLinearFormNNZPerColumn
void computeSparseJacobianTwoSideBoundedLinearFormNNZPerColumn(Eigen::Ref< Eigen::VectorXi > col_nnz, bool include_finite_bounds) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:4713
corbo::HyperGraphOptimizationProblemEdgeBased::computeDenseJacobianActiveInequalities
void computeDenseJacobianActiveInequalities(Eigen::Ref< Eigen::MatrixXd > jacobian, double weight=1.0) override
Compute the Jacobian Jc(x) with non-zeros for active constraints c(x)>= 0 and zeros for inactive ones...
Definition: hyper_graph_optimization_problem_edge_based.cpp:697
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianInequalitiesValues
void computeSparseJacobianInequalitiesValues(Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:658
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessianLagrangianNNZperCol
void computeSparseHessianLagrangianNNZperCol(Eigen::Ref< Eigen::VectorXi > col_nnz, bool upper_part_only=false) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:4400
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianTwoSideBoundedLinearFormValues
void computeSparseJacobianTwoSideBoundedLinearFormValues(Eigen::Ref< Eigen::VectorXd > values, bool include_finite_bounds) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:4926
corbo::BaseHyperGraphOptimizationProblem::BaseHyperGraphOptimizationProblem
BaseHyperGraphOptimizationProblem()=default
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessianInequalitiesNNZ
int computeSparseHessianInequalitiesNNZ(bool lower_part_only=false) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:3194
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianEqualitiesNNZ
int computeSparseJacobianEqualitiesNNZ() override
Definition: hyper_graph_optimization_problem_edge_based.cpp:390
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessianLagrangian
void computeSparseHessianLagrangian(Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &H, const double *multipliers_eq, const double *multipliers_ineq, const Eigen::VectorXi *col_nnz=nullptr, bool upper_part_only=false) override
Compute the hessian of the lagrangian L(x) = f(x) + lambda1 * c(x) + lambda2 * ceq(x)
Definition: hyper_graph_optimization_problem_edge_based.cpp:4044
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessianEqualitiesNNZ
int computeSparseHessianEqualitiesNNZ(bool lower_part_only=false) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:2891
corbo::HyperGraphOptimizationProblemEdgeBased::computeCombinedSparseJacobiansValues
void computeCombinedSparseJacobiansValues(Eigen::Ref< Eigen::VectorXd > values, bool objective_lsq=true, bool equality=true, bool inequality=true, const double *multipliers_obj=nullptr, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:1374
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianLsqObjectiveValues
void computeSparseJacobianLsqObjectiveValues(Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:307
corbo::HyperGraphOptimizationProblemEdgeBased::computeCombinedSparseJacobian
void computeCombinedSparseJacobian(Eigen::SparseMatrix< double > &jacobian, bool objective_lsq, bool equality, bool inequality, bool finite_combined_bounds, bool active_ineq=false, double weight_eq=1.0, double weight_ineq=1.0, double weight_bounds=1.0, const Eigen::VectorXd *values=nullptr, const Eigen::VectorXi *col_nnz=nullptr) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:1502
corbo::HyperGraphOptimizationProblemEdgeBased::computeDenseJacobianEqualities
void computeDenseJacobianEqualities(Eigen::Ref< Eigen::MatrixXd > jacobian, const double *multipliers=nullptr) override
Compute the equality constraint Jacobian Jceq(x) for the current parameter set.
Definition: hyper_graph_optimization_problem_edge_based.cpp:346
corbo::HyperGraphOptimizationProblemEdgeBased::computeGradientObjectiveAndCombinedSparseJacobiansValues
void computeGradientObjectiveAndCombinedSparseJacobiansValues(Eigen::Ref< Eigen::VectorXd > gradient, Eigen::Ref< Eigen::VectorXd > jac_values, bool equality=true, bool inequality=true, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:1778
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianTwoSideBoundedLinearFormNNZ
int computeSparseJacobianTwoSideBoundedLinearFormNNZ(bool include_finite_bounds) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:4784
corbo::HyperGraphOptimizationProblemEdgeBased::getInstance
BaseHyperGraphOptimizationProblem::Ptr getInstance() const override
Definition: hyper_graph_optimization_problem_edge_based.h:87
FACTORY_REGISTER_HYPER_GRAPH_OPTIMIZATION_PROBLEM
#define FACTORY_REGISTER_HYPER_GRAPH_OPTIMIZATION_PROBLEM(type)
Definition: hyper_graph_optimization_problem_base.h:288
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianTwoSideBoundedLinearFormAndHessianObjective
void computeSparseJacobianTwoSideBoundedLinearFormAndHessianObjective(Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &H, Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &A, bool include_finite_bounds, const Eigen::VectorXi *col_nnz_H, const Eigen::VectorXi *col_nnz_A, bool upper_part_only_H) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:5415
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessiansNNZ
void computeSparseHessiansNNZ(int &nnz_obj, int &nnz_eq, int &nnz_ineq, bool lower_part_only=false) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:3497
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessianObjectiveLL
void computeSparseHessianObjectiveLL(Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &H, const Eigen::VectorXi *col_nnz=nullptr, bool upper_part_only=false) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:2573
corbo::BaseHyperGraphOptimizationProblem::Ptr
std::shared_ptr< BaseHyperGraphOptimizationProblem > Ptr
Definition: hyper_graph_optimization_problem_base.h:117
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianTwoSideBoundedLinearFormStructure
void computeSparseJacobianTwoSideBoundedLinearFormStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool include_finite_bounds) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:4793
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianActiveInequalitiesValues
void computeSparseJacobianActiveInequalitiesValues(Eigen::Ref< Eigen::VectorXd > values, double weight=1.0) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:776
Eigen::Ref
A matrix or vector expression mapping an existing expression.
Definition: Ref.h:192
corbo::HyperGraphOptimizationProblemEdgeBased::computeDenseJacobianInequalities
void computeDenseJacobianInequalities(Eigen::Ref< Eigen::MatrixXd > jacobian, const double *multipliers=nullptr) override
Compute the inequality constraint Jacobian Jc(x) for the current parameter set.
Definition: hyper_graph_optimization_problem_edge_based.cpp:521
corbo::HyperGraphOptimizationProblemEdgeBased::computeDenseJacobianLsqObjective
void computeDenseJacobianLsqObjective(Eigen::Ref< Eigen::MatrixXd > jacobian, const double *multipliers=nullptr) override
Compute the objective Jacobian Jf(x) for the current parameter set.
Definition: hyper_graph_optimization_problem_edge_based.cpp:172
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessiansStructure
void computeSparseHessiansStructure(Eigen::Ref< Eigen::VectorXi > i_row_obj, Eigen::Ref< Eigen::VectorXi > j_col_obj, Eigen::Ref< Eigen::VectorXi > i_row_eq, Eigen::Ref< Eigen::VectorXi > j_col_eq, Eigen::Ref< Eigen::VectorXi > i_row_ineq, Eigen::Ref< Eigen::VectorXi > j_col_ineq, bool lower_part_only=false) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:3505
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessianEqualitiesStructure
void computeSparseHessianEqualitiesStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool lower_part_only=false) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:2965
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobiansValues
void computeSparseJacobiansValues(Eigen::Ref< Eigen::VectorXd > values_obj, Eigen::Ref< Eigen::VectorXd > values_eq, Eigen::Ref< Eigen::VectorXd > values_ineq, const double *multipliers_obj=nullptr, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr, bool active_ineq=false, double active_ineq_weight=1.0) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:1039
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianEqualitiesValues
void computeSparseJacobianEqualitiesValues(Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:482
A
MatrixType A(a, *n, *n, *lda)
corbo::HyperGraphOptimizationProblemEdgeBased
Definition: hyper_graph_optimization_problem_edge_based.h:56
corbo::HyperGraphOptimizationProblemEdgeBased::computeDenseHessianObjective
void computeDenseHessianObjective(Eigen::Ref< Eigen::MatrixXd > hessian, double multiplier=1.0) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:1960
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessianInequalitiesValues
void computeSparseHessianInequalitiesValues(Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr, bool lower_part_only=false) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:3377
hyper_graph_optimization_problem_base.h
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseJacobianInequalitiesStructure
void computeSparseJacobianInequalitiesStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:596
corbo::HyperGraphOptimizationProblemEdgeBased::computeSparseHessiansValues
void computeSparseHessiansValues(Eigen::Ref< Eigen::VectorXd > values_obj, Eigen::Ref< Eigen::VectorXd > values_eq, Eigen::Ref< Eigen::VectorXd > values_ineq, double multiplier_obj=1.0, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr, bool lower_part_only=false) override
Definition: hyper_graph_optimization_problem_edge_based.cpp:3513


control_box_rst
Author(s): Christoph Rösmann
autogenerated on Wed Mar 2 2022 00:05:48