27 :
public boost::python::def_visitor<ConstraintSolverSettingsBasePythonVisitor<Settings>>
29 template<
class PyClass>
30 void visit(PyClass & cl)
const 33 "max_iterations", &Settings::max_iterations,
"Maximum number of solver iterations.")
35 "absolute_feasibility_tol", &Settings::absolute_feasibility_tol,
36 "Absolute tolerance on primal/dual feasibility.")
38 "relative_feasibility_tol", &Settings::relative_feasibility_tol,
39 "Relative tolerance on primal/dual feasibility.")
41 "absolute_complementarity_tol", &Settings::absolute_complementarity_tol,
42 "Absolute tolerance on complementarity (duality gap).")
44 "relative_complementarity_tol", &Settings::relative_complementarity_tol,
45 "Relative tolerance on complementarity (duality gap).")
47 "solve_ncp", &Settings::solve_ncp,
48 "Whether to solve the NCP. If false, the equivalent CCP is solved.")
50 "measure_timings", &Settings::measure_timings,
"Whether to measure solve timings.")
52 "stat_record", &Settings::stat_record,
"Whether to record per-iteration stats.")
54 "checkValidity", &Settings::checkValidity, bp::arg(
"self"),
55 "Throw if the settings are not valid.");
66 :
public boost::python::def_visitor<ConstraintSolverResultBasePythonVisitor<Result>>
68 typedef typename Result::Scalar Scalar;
69 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, 1, Result::Options> VectorXs;
71 static VectorXs retrieveConstraintImpulses_wrapper(
const Result & self)
73 VectorXs out(
static_cast<Eigen::Index
>(self.constraintSize()));
74 self.retrieveConstraintImpulses(out);
78 static VectorXs retrieveConstraintVelocities_wrapper(
const Result & self)
80 VectorXs out(
static_cast<Eigen::Index
>(self.constraintSize()));
81 self.retrieveConstraintVelocities(out);
85 static void setConstraintImpulseGuess_wrapper(Result & self,
const VectorXs & impulse_guess)
87 self.setConstraintImpulseGuess(impulse_guess);
90 static void setConstraintVelocityGuess_wrapper(Result & self,
const VectorXs & velocity_guess)
92 self.setConstraintVelocityGuess(velocity_guess);
95 template<
class PyClass>
96 void visit(PyClass & cl)
const 98 cl.def_readwrite(
"iterations", &Result::iterations,
"Number of solver iterations.")
99 .def_readwrite(
"converged", &Result::converged,
"Whether the solver has converged.")
101 "primal_feasibility", &Result::primal_feasibility,
"Value of the primal feasibility.")
103 "dual_feasibility", &Result::dual_feasibility,
"Value of the dual feasibility.")
105 "complementarity", &Result::complementarity,
"Value of the complementarity.")
107 "isValid", &Result::isValid, bp::arg(
"self"),
108 "Return True if the result represents a valid (post-solve) state.")
110 "constraintSize", &Result::constraintSize, bp::arg(
"self"),
111 "Size of quantities related to constraints contained in result (typically constraint " 112 "impulses or velocities).")
114 "reset", &Result::reset, bp::arg(
"self"),
115 "Reset the result to an invalid (pre-solve) state.")
117 "retrieveConstraintImpulses", retrieveConstraintImpulses_wrapper, bp::arg(
"self"),
118 "Return the primal solution (constraint impulses) as a new vector.")
120 "retrieveConstraintVelocities", retrieveConstraintVelocities_wrapper, bp::arg(
"self"),
121 "Return the dual solution (constraint velocities) as a new vector.")
123 "setConstraintImpulseGuess", setConstraintImpulseGuess_wrapper,
124 bp::args(
"self",
"impulse_guess"),
125 "Set the constraint impulse warmstart guess for the next solve call.")
127 "clearConstraintImpulseGuess", &Result::clearConstraintImpulseGuess, bp::arg(
"self"),
128 "Clear the constraint impulse warmstart guess.")
130 "setConstraintVelocityGuess", setConstraintVelocityGuess_wrapper,
131 bp::args(
"self",
"velocity_guess"),
132 "Set the constraint velocity warmstart guess for the next solve call.")
134 "clearConstraintVelocityGuess", &Result::clearConstraintVelocityGuess, bp::arg(
"self"),
135 "Clear the constraint velocity warmstart guess.");
146 :
public boost::python::def_visitor<ConstraintSolverStatsBasePythonVisitor<Stats>>
148 template<
class PyClass>
149 void visit(PyClass & cl)
const 151 cl.def_readwrite(
"iterations", &Stats::iterations,
"Total number of iterations tracked.")
153 "primal_feasibility", &Stats::primal_feasibility,
154 "Per-iteration history of primal feasibility values.")
156 "dual_feasibility", &Stats::dual_feasibility,
157 "Per-iteration history of dual feasibility values.")
159 "dual_feasibility_ncp", &Stats::dual_feasibility_ncp,
160 "Per-iteration history of NCP dual feasibility values.")
162 "complementarity", &Stats::complementarity,
163 "Per-iteration history of complementarity values.")
165 "size", &Stats::size, bp::arg(
"self"),
166 "Return the number of iterations tracked (size of history vectors).")
168 "reserve", &Stats::reserve, bp::args(
"self",
"max_iterations"),
169 "Reserve storage for up to max_iterations iterations.")
171 "reset", &Stats::reset, bp::arg(
"self"),
172 "Clear all history and reset the iteration counter to zero.");