Go to the documentation of this file.
25 #ifndef SRC_OPTIMIZATION_INCLUDE_CORBO_OPTIMIZATION_HYPER_GRAPH_HYPER_GRAPH_OPTIMIZATION_PROBLEM_VERTEX_BASED_H_
26 #define SRC_OPTIMIZATION_INCLUDE_CORBO_OPTIMIZATION_HYPER_GRAPH_HYPER_GRAPH_OPTIMIZATION_PROBLEM_VERTEX_BASED_H_
34 class HyperGraphOptimizationProblemVertexBased :
public BaseHyperGraphOptimizationProblem
70 bool equality =
true,
bool inequality =
true)
override;
72 bool inequality =
true,
const double* multipliers_obj =
nullptr,
const double* multipliers_eq =
nullptr,
73 const double* multipliers_ineq =
nullptr)
override;
75 bool finite_combined_bounds,
bool active_ineq =
false,
double weight_eq = 1.0,
double weight_ineq = 1.0,
76 double weight_bounds = 1.0,
const Eigen::VectorXd* values =
nullptr,
77 const Eigen::VectorXi* col_nnz =
nullptr)
override;
81 bool equality =
true,
bool inequality =
true,
82 const double* multipliers_eq =
nullptr,
83 const double* multipliers_ineq =
nullptr)
override;
90 bool include_mixed =
true,
bool precompute_mixed =
true);
93 bool precompute_mixed =
true);
95 const double* multipliers =
nullptr,
bool include_nonmixed =
true,
bool include_mixed =
true);
99 const double* multipliers =
nullptr,
bool precompute_mixed =
true);
102 bool precompute_mixed =
true);
104 const double* multipliers =
nullptr,
bool include_nonmixed =
true,
bool include_mixed =
true,
105 bool precompute_mixed =
true);
109 const double* multipliers =
nullptr,
bool precompute_mixed =
true);
112 bool precompute_mixed =
true);
114 const double* multipliers =
nullptr,
bool include_nonmixed =
true,
bool include_mixed =
true,
115 bool precompute_mixed =
true);
117 bool include_nonmixed =
true,
bool include_mixed =
true);
121 const double* multipliers =
nullptr,
bool precompute_mixed =
true);
123 double weight = 1.0);
130 #endif // SRC_OPTIMIZATION_INCLUDE_CORBO_OPTIMIZATION_HYPER_GRAPH_HYPER_GRAPH_OPTIMIZATION_PROBLEM_VERTEX_BASED_H_
HyperGraphOptimizationProblemVertexBased()=default
void computeSparseJacobianInequalitiesValues(Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr) override
std::shared_ptr< OptimizationEdgeSet > Ptr
void computeGradientNonLsqObjective(Eigen::Ref< Eigen::VectorXd > gradient) override
void finalizeLsqObjectiveJacobian(const VertexInterface *vertex, int vtx_idx, Eigen::Ref< Eigen::MatrixXd > &jacobian, const double *multipliers=nullptr, bool include_nonmixed=true, bool include_mixed=true)
void finalizeInequalitiesJacobian(const VertexInterface *vertex, int vtx_idx, Eigen::Ref< Eigen::MatrixXd > &jacobian, const double *multipliers=nullptr, bool include_nonmixed=true, bool include_mixed=true, bool precompute_mixed=true)
void finalizeActiveInequalitiesJacobian(const VertexInterface *vertex, int vtx_idx, Eigen::Ref< Eigen::MatrixXd > &jacobian, double weight=1.0, bool include_nonmixed=true, bool include_mixed=true)
void computeInequalitiesJacobianStructureForVertex(const VertexInterface *vertex, int vtx_idx, Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, int &nnz_idx, int row_offset=0)
BaseHyperGraphOptimizationProblem::Ptr getInstance() const override
std::shared_ptr< VertexSetInterface > Ptr
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
void computeSparseJacobianEqualitiesValues(Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr) override
void computeLsqObjectiveValuesCached(const VertexInterface *vertex, bool include_nonmixed=true, bool include_mixed=true, bool precompute_mixed=true)
void computeEqualitiesValuesCached(const VertexInterface *vertex, bool include_nonmixed=true, bool include_mixed=true, bool precompute_mixed=true)
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
void computeSparseJacobianInequalitiesStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col) override
int computeSparseJacobianLsqObjectiveNNZ() override
void computeSparseJacobianActiveInequalitiesValues(Eigen::Ref< Eigen::VectorXd > values, double weight=1.0) override
Generic interface class for vertices.
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...
void finalizeActiveInequalitiesJacobianSparseValues(const VertexInterface *vertex, int &nnz_idx, Eigen::Ref< Eigen::VectorXd > &values, double weight=1.0)
void computeObjectiveValuesCached(const VertexInterface *vertex, bool include_lsq_edges, bool include_nonmixed=true, bool include_mixed=true)
void finalizeEqualitiesJacobianSparseValues(const VertexInterface *vertex, int &nnz_idx, Eigen::Ref< Eigen::VectorXd > &values, const double *multipliers=nullptr, bool precompute_mixed=true)
void finalizeInequalitiesJacobianSparseValues(const VertexInterface *vertex, int &nnz_idx, Eigen::Ref< Eigen::VectorXd > &values, const double *multipliers=nullptr, bool precompute_mixed=true)
void finalizeLsqObjectiveJacobianSparseValues(const VertexInterface *vertex, int &nnz_idx, Eigen::Ref< Eigen::VectorXd > &values, const double *multipliers=nullptr, bool precompute_mixed=true)
BaseHyperGraphOptimizationProblem()=default
void computeSparseJacobianLsqObjectiveStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col) override
void computeSparseJacobianEqualitiesStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col) override
void computeGradientObjective(Eigen::Ref< Eigen::VectorXd > gradient) override
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
void precomputeConnectedMixedEdges(const VertexInterface *vertex, bool objective=true, bool equality=true, bool inequality=true)
void computeDenseJacobianInequalities(Eigen::Ref< Eigen::MatrixXd > jacobian, const double *multipliers=nullptr) override
Compute the inequality constraint Jacobian Jc(x) for the current parameter set.
int computeSparseJacobianEqualitiesNNZ() override
void finalizeEqualitiesJacobian(const VertexInterface *vertex, int vtx_idx, Eigen::Ref< Eigen::MatrixXd > &jacobian, const double *multipliers=nullptr, bool include_nonmixed=true, bool include_mixed=true, bool precompute_mixed=true)
void finalizeObjectiveGradient(const VertexInterface *vertex, double &gradient_coeff, bool include_lsq_edges, bool include_nonmixed=true, bool include_mixed=true, bool precompute_mixed=true)
#define FACTORY_REGISTER_HYPER_GRAPH_OPTIMIZATION_PROBLEM(type)
void computeDenseJacobianEqualities(Eigen::Ref< Eigen::MatrixXd > jacobian, const double *multipliers=nullptr) override
Compute the equality constraint Jacobian Jceq(x) for the current parameter set.
std::shared_ptr< BaseHyperGraphOptimizationProblem > Ptr
void precomputeEdgeQuantities() override
A matrix or vector expression mapping an existing expression.
void computeDenseJacobianLsqObjective(Eigen::Ref< Eigen::MatrixXd > jacobian, const double *multipliers=nullptr) override
Compute the objective Jacobian Jf(x) for the current parameter set.
void computeEqualitiesJacobianStructureForVertex(const VertexInterface *vertex, int vtx_idx, Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, int &nnz_idx, int row_offset=0)
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
void computeInequalitiesValuesCached(const VertexInterface *vertex, bool include_nonmixed=true, bool include_mixed=true, bool precompute_mixed=true)
int computeSparseJacobianInequalitiesNNZ() override
void computeLsqObjectiveJacobianStructureForVertex(const VertexInterface *vertex, int vtx_idx, Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, int &nnz_idx, int row_offset=0)
int computeCombinedSparseJacobiansNNZ(bool objective_lsq=true, bool equality=true, bool inequality=true) override
void computeSparseJacobianLsqObjectiveValues(Eigen::Ref< Eigen::VectorXd > values, const double *multipliers) override
control_box_rst
Author(s): Christoph Rösmann
autogenerated on Wed Mar 2 2022 00:05:48