Go to the documentation of this file.
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_
34 class HyperGraphOptimizationProblemEdgeBased :
public BaseHyperGraphOptimizationProblem
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;
73 const double* multipliers_eq =
nullptr,
const double* multipliers_ineq =
nullptr,
bool active_ineq =
false,
74 double active_ineq_weight = 1.0)
override;
78 bool equality =
true,
bool inequality =
true)
override;
80 bool inequality =
true,
const double* multipliers_obj =
nullptr,
const double* multipliers_eq =
nullptr,
81 const double* multipliers_ineq =
nullptr)
override;
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;
89 bool equality =
true,
bool inequality =
true,
90 const double* multipliers_eq =
nullptr,
91 const double* multipliers_ineq =
nullptr)
override;
98 bool lower_part_only =
false)
override;
102 bool upper_part_only =
false)
override;
107 bool lower_part_only =
false)
override;
109 bool lower_part_only =
false)
override;
113 bool lower_part_only =
false)
override;
115 bool lower_part_only =
false)
override;
121 bool lower_part_only =
false)
override;
124 const double* multipliers_ineq =
nullptr,
bool lower_part_only =
false)
override;
127 const double* multipliers_ineq,
const Eigen::VectorXi* col_nnz =
nullptr,
128 bool upper_part_only =
false)
override;
133 const Eigen::VectorXi* col_nnz =
nullptr)
override;
138 bool include_finite_bounds)
override;
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;
149 bool include_finite_bounds,
const Eigen::VectorXi* col_nnz_H,
150 const Eigen::VectorXi* col_nnz_A,
bool upper_part_only_H)
override;
160 #endif // SRC_OPTIMIZATION_INCLUDE_CORBO_OPTIMIZATION_HYPER_GRAPH_HYPER_GRAPH_OPTIMIZATION_PROBLEM_EDGE_BASED_H_
int computeSparseHessianObjectiveNNZ(bool lower_part_only=false) override
std::shared_ptr< OptimizationEdgeSet > Ptr
void computeSparseHessianInequalitiesStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool lower_part_only=false) override
void computeGradientNonLsqObjective(Eigen::Ref< Eigen::VectorXd > gradient) override
int computeCombinedSparseJacobiansNNZ(bool objective_lsq=true, bool equality=true, bool inequality=true) override
HyperGraphOptimizationProblemEdgeBased()=default
void computeSparseHessianObjectiveStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool lower_part_only=false) 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 computeSparseJacobianLsqObjectiveStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col) override
void computeSparseHessianObjectiveNNZperCol(Eigen::Ref< Eigen::VectorXi > col_nnz, bool upper_part_only=false) override
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.
void computeSparseHessianEqualitiesValues(Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr, bool lower_part_only=false) override
int computeSparseJacobianLsqObjectiveNNZ() override
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.
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.
void computeGradientObjective(Eigen::Ref< Eigen::VectorXd > gradient) override
void computeSparseJacobianEqualitiesStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col) override
int computeSparseJacobianInequalitiesNNZ() override
void computeSparseHessianObjectiveValues(Eigen::Ref< Eigen::VectorXd > values, double multiplier=1.0, bool lower_part_only=false) override
void computeSparseJacobianTwoSideBoundedLinearFormNNZPerColumn(Eigen::Ref< Eigen::VectorXi > col_nnz, bool include_finite_bounds) override
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 computeSparseJacobianInequalitiesValues(Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr) override
void computeSparseHessianLagrangianNNZperCol(Eigen::Ref< Eigen::VectorXi > col_nnz, bool upper_part_only=false) override
void computeSparseJacobianTwoSideBoundedLinearFormValues(Eigen::Ref< Eigen::VectorXd > values, bool include_finite_bounds) override
BaseHyperGraphOptimizationProblem()=default
int computeSparseHessianInequalitiesNNZ(bool lower_part_only=false) override
int computeSparseJacobianEqualitiesNNZ() override
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)
int computeSparseHessianEqualitiesNNZ(bool lower_part_only=false) override
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 computeSparseJacobianLsqObjectiveValues(Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr) 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 computeDenseJacobianEqualities(Eigen::Ref< Eigen::MatrixXd > jacobian, const double *multipliers=nullptr) override
Compute the equality constraint Jacobian Jceq(x) for the current parameter set.
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
int computeSparseJacobianTwoSideBoundedLinearFormNNZ(bool include_finite_bounds) override
BaseHyperGraphOptimizationProblem::Ptr getInstance() const override
#define FACTORY_REGISTER_HYPER_GRAPH_OPTIMIZATION_PROBLEM(type)
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
void computeSparseHessiansNNZ(int &nnz_obj, int &nnz_eq, int &nnz_ineq, bool lower_part_only=false) override
void computeSparseHessianObjectiveLL(Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &H, const Eigen::VectorXi *col_nnz=nullptr, bool upper_part_only=false) override
std::shared_ptr< BaseHyperGraphOptimizationProblem > Ptr
void computeSparseJacobianTwoSideBoundedLinearFormStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool include_finite_bounds) override
void computeSparseJacobianActiveInequalitiesValues(Eigen::Ref< Eigen::VectorXd > values, double weight=1.0) override
A matrix or vector expression mapping an existing expression.
void computeDenseJacobianInequalities(Eigen::Ref< Eigen::MatrixXd > jacobian, const double *multipliers=nullptr) override
Compute the inequality constraint Jacobian Jc(x) for the current parameter set.
void computeDenseJacobianLsqObjective(Eigen::Ref< Eigen::MatrixXd > jacobian, const double *multipliers=nullptr) override
Compute the objective Jacobian Jf(x) for the current parameter set.
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
void computeSparseHessianEqualitiesStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool lower_part_only=false) override
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
void computeSparseJacobianEqualitiesValues(Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr) override
MatrixType A(a, *n, *n, *lda)
void computeDenseHessianObjective(Eigen::Ref< Eigen::MatrixXd > hessian, double multiplier=1.0) override
void computeSparseHessianInequalitiesValues(Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr, bool lower_part_only=false) override
void computeSparseJacobianInequalitiesStructure(Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col) override
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
control_box_rst
Author(s): Christoph Rösmann
autogenerated on Wed Mar 2 2022 00:05:48