|
BaseHyperGraphOptimizationProblem::Ptr | getInstance () const override |
|
| HyperGraphOptimizationProblemIgnoreStructure () |
|
| HyperGraphOptimizationProblemIgnoreStructure (OptimizationEdgeSet::Ptr edges, VertexSetInterface::Ptr vertices) |
|
| BaseHyperGraphOptimizationProblem ()=default |
|
| BaseHyperGraphOptimizationProblem (OptimizationEdgeSet::Ptr edges, VertexSetInterface::Ptr vertices) |
|
HyperGraph & | getGraph () |
|
const HyperGraph & | getGraph () const |
|
virtual void | precomputeEdgeQuantities () |
|
virtual void | precomputeGraphQuantities () |
|
virtual void | precomputeVertexQuantities () |
|
void | setGraph (OptimizationEdgeSet::Ptr edges, VertexSetInterface::Ptr vertices) |
|
int | getNonLsqObjectiveDimension () override |
| Total dimension of objective function terms. More...
|
|
int | getLsqObjectiveDimension () override |
| Total dimension of least-squares objective function terms. More...
|
|
int | getObjectiveDimension () override |
| Get dimension of the objective (should be zero or one, includes Lsq objectives if present) More...
|
|
int | getEqualityDimension () override |
| Total dimension of equality constraints. More...
|
|
int | getInequalityDimension () override |
| Total dimension of general inequality constraints. More...
|
|
double | computeValueNonLsqObjective () override |
|
void | computeValuesLsqObjective (Eigen::Ref< Eigen::VectorXd > values) override |
| Compute the objective function values f(x) for the current parameter set. More...
|
|
double | computeValueObjective () override |
|
void | computeValuesEquality (Eigen::Ref< Eigen::VectorXd > values) override |
| Compute the equality constraint values ceq(x) for the current parameter set. More...
|
|
void | computeValuesInequality (Eigen::Ref< Eigen::VectorXd > values) override |
| Compute the inequality constraint values c(x) for the current parameter set. More...
|
|
void | computeValues (double &non_lsq_obj_value, Eigen::Ref< Eigen::VectorXd > lsq_obj_values, Eigen::Ref< Eigen::VectorXd > eq_values, Eigen::Ref< Eigen::VectorXd > ineq_values) override |
|
double | getParameterValue (int idx) override |
| Return specific value of the parameter vector. More...
|
|
void | setParameterValue (int idx, double x) override |
| Set specific value of the parameter vector. More...
|
|
void | getParameterVector (Eigen::Ref< Eigen::VectorXd > x) override |
| Return deep copy of the complete parameter vector. More...
|
|
void | setParameterVector (const Eigen::Ref< const Eigen::VectorXd > &x) override |
| Set complete parameter vector. More...
|
|
void | getBounds (Eigen::Ref< Eigen::VectorXd > lb, Eigen::Ref< Eigen::VectorXd > ub) override |
| Get lower and upper bound vector. More...
|
|
void | setBounds (const Eigen::Ref< const Eigen::VectorXd > &lb, const Eigen::Ref< const Eigen::VectorXd > &ub) override |
| Set lower and upper bound vector. More...
|
|
double | getLowerBound (int idx) override |
| Return specific lower bound value of a parameter. More...
|
|
double | getUpperBound (int idx) override |
| Return specific upper bound of a parameter. More...
|
|
void | setLowerBound (int idx, double lb) override |
| Set specific lower bound of a parameter. More...
|
|
void | setUpperBound (int idx, double ub) override |
| Set specific upper bound of a parameter. More...
|
|
int | getParameterDimension () override |
| Effictive dimension of the optimization parameter set (changeable, non-fixed part) More...
|
|
void | applyIncrement (const Eigen::Ref< const Eigen::VectorXd > &increment) override |
| Apply increment to the current parameter set. More...
|
|
void | applyIncrement (int idx, double increment) override |
| Apply increment to the current parameter set (single element overload) More...
|
|
void | backupParameters () override |
| Restore parameter set from the last backup and keep backup if desired. More...
|
|
void | restoreBackupParameters (bool keep_backup) override |
| Discard last backup (or all) More...
|
|
void | discardBackupParameters (bool all=false) override |
|
bool | isLeastSquaresProblem () const override |
| Check if the underlying problem is defined in the least squares form. More...
|
|
int | finiteCombinedBoundsDimension () override |
| Dimension of the set of finite bounds (combined such that each ub and lb component define a single dimension) More...
|
|
int | finiteBoundsDimension () override |
| Dimension of the set of finite bounds (individual bounds ub and lb) More...
|
|
void | computeValuesActiveInequality (Eigen::Ref< Eigen::VectorXd > values, double weight=1.0) override |
| Compute the values of the active inequality constraints (elementwise max(0, c(x))) More...
|
|
void | computeDistanceFiniteCombinedBounds (Eigen::Ref< Eigen::VectorXd > values) override |
| Compute the distance to finite bound values (combined lower and upper) More...
|
|
void | computeLowerAndUpperBoundDiff (Eigen::Ref< Eigen::VectorXd > lb_minus_x, Eigen::Ref< Eigen::VectorXd > ub_minus_x) override |
| Compute the distance between parameters and bounds. More...
|
|
void | getParametersAndBoundsFinite (Eigen::Ref< Eigen::VectorXd > lb_finite_bounds, Eigen::Ref< Eigen::VectorXd > ub_finite_bounds, Eigen::Ref< Eigen::VectorXd > x_finite_bounds) override |
| Return bound and parameter vectors only for finite boudns. More...
|
|
void | computeDenseJacobianFiniteCombinedBounds (Eigen::Ref< Eigen::MatrixXd > jacobian, double weight=1.0) override |
| Compute the Jacobian for finite combined bounds. More...
|
|
int | computeSparseJacobianFiniteCombinedBoundsNNZ () override |
|
void | computeSparseJacobianFiniteCombinedBoundsStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col) override |
|
void | computeSparseJacobianFiniteCombinedBoundsValues (Eigen::Ref< Eigen::VectorXd > values, double weight=1.0) override |
|
void | computeDenseJacobianFiniteCombinedBoundsIdentity (Eigen::Ref< Eigen::MatrixXd > jacobian) override |
| Compute the Jacobian for finite combined bounds. More...
|
|
bool | checkIfAllUnfixedParam (std::function< bool(double, int)> fun) |
| Check if a function taking the parameter value and unfixed-idx is true for all unfixed parameter values. More...
|
|
void | clear () override |
|
virtual | ~OptimizationProblemInterface () |
|
virtual void | computeGradientObjective (Eigen::Ref< Eigen::VectorXd > gradient) |
|
virtual void | computeGradientNonLsqObjective (Eigen::Ref< Eigen::VectorXd > gradient) |
|
virtual void | computeDenseJacobianLsqObjective (Eigen::Ref< Eigen::MatrixXd > jacobian, const double *multipliers=nullptr) |
| Compute the objective Jacobian Jf(x) for the current parameter set. More...
|
|
virtual int | computeSparseJacobianLsqObjectiveNNZ () |
|
virtual void | computeSparseJacobianLsqObjectiveStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col) |
|
virtual void | computeSparseJacobianLsqObjectiveValues (Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr) |
|
virtual void | computeSparseJacobianLsqObjective (Eigen::SparseMatrix< double > &jacobian, const double *multipliers=nullptr) |
|
virtual void | computeDenseJacobianEqualities (Eigen::Ref< Eigen::MatrixXd > jacobian, const double *multipliers=nullptr) |
| Compute the equality constraint Jacobian Jceq(x) for the current parameter set. More...
|
|
virtual int | computeSparseJacobianEqualitiesNNZ () |
|
virtual void | computeSparseJacobianEqualitiesStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col) |
|
virtual void | computeSparseJacobianEqualitiesValues (Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr) |
|
virtual void | computeSparseJacobianEqualities (Eigen::SparseMatrix< double > &jacobian, const double *multipliers=nullptr) |
|
virtual void | computeDenseJacobianInequalities (Eigen::Ref< Eigen::MatrixXd > jacobian, const double *multipliers=nullptr) |
| Compute the inequality constraint Jacobian Jc(x) for the current parameter set. More...
|
|
virtual int | computeSparseJacobianInequalitiesNNZ () |
|
virtual void | computeSparseJacobianInequalitiesStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col) |
|
virtual void | computeSparseJacobianInequalitiesValues (Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr) |
|
virtual void | computeSparseJacobianInequalities (Eigen::SparseMatrix< double > &jacobian, const double *multipliers=nullptr) |
|
virtual void | computeDenseJacobianActiveInequalities (Eigen::Ref< Eigen::MatrixXd > jacobian, double weight=1.0) |
| Compute the Jacobian Jc(x) with non-zeros for active constraints c(x)>= 0 and zeros for inactive ones. More...
|
|
virtual void | computeSparseJacobianActiveInequalitiesValues (Eigen::Ref< Eigen::VectorXd > values, double weight=1.0) |
|
virtual void | computeSparseJacobianActiveInequalities (Eigen::SparseMatrix< double > &jacobian, double weight=1.0) |
|
virtual void | computeSparseJacobianFiniteCombinedBounds (Eigen::SparseMatrix< double > &jacobian, double weight=1.0) |
|
virtual 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) |
| Compute the objective and constraint Jacobians at once. More...
|
|
virtual void | computeSparseJacobiansNNZ (int &nnz_lsq_obj, int &nnz_eq, int &nnz_ineq) |
|
virtual void | computeSparseJacobiansStructure (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) |
|
virtual 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) |
|
virtual void | computeSparseJacobians (Eigen::SparseMatrix< double > &jacobian_lsq_obj, Eigen::SparseMatrix< double > &jacobian_eq, Eigen::SparseMatrix< double > &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) |
|
virtual 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) |
|
virtual int | computeCombinedSparseJacobiansNNZ (bool objective_lsq=true, bool equality=true, bool inequality=true) |
|
virtual void | computeCombinedSparseJacobiansStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool objective_lsq=true, bool equality=true, bool inequality=true) |
|
virtual 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) |
|
virtual 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) |
|
virtual void | computeDenseHessianObjective (const Eigen::Ref< const Eigen::MatrixXd > &jacobian, Eigen::Ref< Eigen::MatrixXd > hessian, const double *multipliers=nullptr, bool jacob_scaled=true) |
| Compute the objective Hessian Hf(x) for the current parameter set. More...
|
|
virtual void | computeDenseHessianObjective (Eigen::Ref< Eigen::MatrixXd > hessian, double multiplier=1.0) |
|
virtual int | computeSparseHessianObjectiveNNZ (bool lower_part_only=false) |
|
virtual void | computeSparseHessianObjectiveStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool lower_part_only=false) |
|
virtual void | computeSparseHessianObjectiveValues (Eigen::Ref< Eigen::VectorXd > values, double multiplier=1.0, bool lower_part_only=false) |
|
virtual void | computeSparseHessianObjective (Eigen::SparseMatrix< double > &hessian, double multiplier=1.0) |
|
virtual void | computeSparseHessianObjectiveLL (Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &H, const Eigen::VectorXi *col_nnz=nullptr, bool upper_part_only=false) |
|
virtual void | computeSparseHessianObjectiveNNZperCol (Eigen::Ref< Eigen::VectorXi > col_nnz, bool upper_part_only=false) |
|
virtual void | computeDenseHessianEqualities (Eigen::Ref< Eigen::MatrixXd > hessian, const double *multipliers=nullptr) |
|
virtual int | computeSparseHessianEqualitiesNNZ (bool lower_part_only=false) |
|
virtual void | computeSparseHessianEqualitiesStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool lower_part_only=false) |
|
virtual void | computeSparseHessianEqualitiesValues (Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr, bool lower_part_only=false) |
|
virtual void | computeSparseHessianEqualities (Eigen::SparseMatrix< double > &hessian, const double *multipliers=nullptr) |
|
virtual void | computeDenseHessianInequalities (Eigen::Ref< Eigen::MatrixXd > hessian, const double *multipliers=nullptr) |
|
virtual int | computeSparseHessianInequalitiesNNZ (bool lower_part_only=false) |
|
virtual void | computeSparseHessianInequalitiesStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool lower_part_only=false) |
|
virtual void | computeSparseHessianInequalitiesValues (Eigen::Ref< Eigen::VectorXd > values, const double *multipliers=nullptr, bool lower_part_only=false) |
|
virtual void | computeSparseHessianInequalities (Eigen::SparseMatrix< double > &hessian, const double *multipliers=nullptr) |
|
virtual void | computeDenseHessians (Eigen::Ref< Eigen::MatrixXd > hessian_obj, Eigen::Ref< Eigen::MatrixXd > hessian_eq, Eigen::Ref< Eigen::MatrixXd > hessian_ineq, double multiplier_obj=1.0, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr) |
|
virtual void | computeSparseHessians (Eigen::SparseMatrix< double > &hessian_obj, Eigen::SparseMatrix< double > &hessian_eq, Eigen::SparseMatrix< double > &hessian_ineq, double multiplier_obj=1.0, const double *multipliers_eq=nullptr, const double *multipliers_ineq=nullptr) |
|
virtual void | computeSparseHessiansNNZ (int &nnz_obj, int &nnz_eq, int &nnz_ineq, bool lower_part_only=false) |
|
virtual 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) |
|
virtual 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) |
|
virtual 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) |
| Compute the hessian of the lagrangian L(x) = f(x) + lambda1 * c(x) + lambda2 * ceq(x) More...
|
|
virtual void | computeSparseHessianLagrangianNNZperCol (Eigen::Ref< Eigen::VectorXi > col_nnz, bool upper_part_only) |
|
virtual void | computeSparseJacobianTwoSideBoundedLinearForm (Eigen::SparseMatrix< double, Eigen::ColMajor, long long > &A, bool include_finite_bounds, const Eigen::VectorXi *col_nnz=nullptr) |
| Compute the jacobian A for the linear form lbA <= A x <= lbB. More...
|
|
virtual void | computeSparseJacobianTwoSideBoundedLinearFormNNZPerColumn (Eigen::Ref< Eigen::VectorXi > col_nnz, bool include_finite_bounds) |
|
virtual int | computeSparseJacobianTwoSideBoundedLinearFormNNZ (bool include_finite_bounds) |
|
virtual void | computeSparseJacobianTwoSideBoundedLinearFormStructure (Eigen::Ref< Eigen::VectorXi > i_row, Eigen::Ref< Eigen::VectorXi > j_col, bool include_finite_bounds) |
|
virtual void | computeSparseJacobianTwoSideBoundedLinearFormValues (Eigen::Ref< Eigen::VectorXd > values, bool include_finite_bounds) |
|
virtual 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=nullptr, const Eigen::VectorXi *col_nnz_A=nullptr, bool upper_part_only_H=false) |
| Compute the Jacobian and Hessian of the lagrangian. More...
|
|
virtual void | computeBoundsForTwoSideBoundedLinearForm (Eigen::Ref< Eigen::VectorXd > lbA, Eigen::Ref< Eigen::VectorXd > ubA, bool include_finite_bounds) |
| Compute lower and upper bounds lbA and ubA for the linear form lbA <= A x <= ubA. More...
|
|
virtual 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) |
|