robotoc
robotoc - efficient ROBOT Optimal Control solvers
Loading...
Searching...
No Matches
pdipm.hpp
Go to the documentation of this file.
1#ifndef ROBOTOC_CONSTRAINTS_PDIPM_HPP_
2#define ROBOTOC_CONSTRAINTS_PDIPM_HPP_
3
4#include "Eigen/Core"
5
7
8
9namespace robotoc {
10namespace pdipm {
11
17void setSlackAndDualPositive(const double barrier_param,
19
26void computeComplementarySlackness(const double barrier_param,
28
37void computeComplementarySlackness(const double barrier_param,
39 const int start, const int size);
40
49template <int Size>
50void computeComplementarySlackness(const double barrier_param,
52 const int start);
53
62double computeComplementarySlackness(const double barrier_param, const double slack,
63 const double dual);
64
70
78 const int start, const int size);
79
86template <int Size>
88 const int start);
89
99double computeCondensingCoeffcient(const double slack, const double dual,
100 const double residual, const double cmpl);
101
110double fractionToBoundarySlack(const double fraction_rate,
111 const ConstraintComponentData& data);
112
121double fractionToBoundaryDual(const double fraction_rate,
122 const ConstraintComponentData& data);
123
133double fractionToBoundary(const int dim, const double fraction_rate,
134 const Eigen::VectorXd& vec,
135 const Eigen::VectorXd& dvec);
136
145double fractionToBoundary(const double fraction_rate,
146 const double var, const double dvar);
147
154
163 const int start, const int size);
164
171template <int Size>
172void computeDualDirection(ConstraintComponentData& data, const int start);
173
183double computeDualDirection(const double slack, const double dual,
184 const double dslack, const double cmpl);
185
193template <typename VectorType>
194double logBarrier(const double barrier_param,
195 const Eigen::MatrixBase<VectorType>& vec);
196
197} // namespace pdipm
198} // namespace robotoc
199
201
202#endif // ROBOTOC_CONSTRAINTS_PDIPM_HPP_
Data used in constraint components. Composed by slack, dual (Lagrange multiplier),...
Definition: constraint_component_data.hpp:17
double fractionToBoundary(const int dim, const double fraction_rate, const Eigen::VectorXd &vec, const Eigen::VectorXd &dvec)
Applies the fraction-to-boundary-rule.
Definition: pdipm.hxx:121
void computeCondensingCoeffcient(ConstraintComponentData &data)
Computes the coefficient of the condensing.
Definition: pdipm.hxx:66
void computeComplementarySlackness(const double barrier_param, ConstraintComponentData &data)
Computes the residual in the complementarity slackness between the slack and dual variables.
Definition: pdipm.hxx:27
void computeDualDirection(ConstraintComponentData &data)
Computes the direction of the dual variable from slack, primal residual, complementary slackness,...
Definition: pdipm.hxx:159
double fractionToBoundaryDual(const double fraction_rate, const ConstraintComponentData &data)
Applies the fraction-to-boundary-rule to the directions of the dual variables.
Definition: pdipm.hxx:112
void setSlackAndDualPositive(const double barrier_param, ConstraintComponentData &data)
Sets the slack and dual variables positive.
Definition: pdipm.hxx:13
double fractionToBoundarySlack(const double fraction_rate, const ConstraintComponentData &data)
Applies the fraction-to-boundary-rule to the directions of the slack variables.
Definition: pdipm.hxx:103
double logBarrier(const double barrier_param, const Eigen::MatrixBase< VectorType > &vec)
Computes the log barrier function.
Definition: pdipm.hxx:195
Definition: constraint_component_base.hpp:17