#include
#include
#include "cddp_core/options.hpp"
#include "cddp_core/cddp_core.hpp"
namespace py = pybind11;
void bind_options(py::module_& m) {
// BarrierStrategy enum
py::enum_<:barrierstrategy>(m, "BarrierStrategy")
.value("ADAPTIVE", cddp::BarrierStrategy::ADAPTIVE)
.value("MONOTONIC", cddp::BarrierStrategy::MONOTONIC)
.value("IPOPT", cddp::BarrierStrategy::IPOPT);
// SolverType enum
py::enum_<:solvertype>(m, "SolverType")
.value("CLDDP", cddp::SolverType::CLDDP)
.value("LogDDP", cddp::SolverType::LogDDP)
.value("IPDDP", cddp::SolverType::IPDDP)
.value("MSIPDDP", cddp::SolverType::MSIPDDP);
// BoxQPOptions
py::class_<:boxqpoptions>(m, "BoxQPOptions")
.def(py::init<>())
.def_readwrite("max_iterations", &cddp::BoxQPOptions::max_iterations)
.def_readwrite("min_gradient_norm", &cddp::BoxQPOptions::min_gradient_norm)
.def_readwrite("min_relative_improvement", &cddp::BoxQPOptions::min_relative_improvement)
.def_readwrite("step_decrease_factor", &cddp::BoxQPOptions::step_decrease_factor)
.def_readwrite("min_step_size", &cddp::BoxQPOptions::min_step_size)
.def_readwrite("armijo_constant", &cddp::BoxQPOptions::armijo_constant)
.def_readwrite("verbose", &cddp::BoxQPOptions::verbose);
// LineSearchOptions
py::class_<:linesearchoptions>(m, "LineSearchOptions")
.def(py::init<>())
.def_readwrite("max_iterations", &cddp::LineSearchOptions::max_iterations)
.def_readwrite("initial_step_size", &cddp::LineSearchOptions::initial_step_size)
.def_readwrite("min_step_size", &cddp::LineSearchOptions::min_step_size)
.def_readwrite("step_reduction_factor", &cddp::LineSearchOptions::step_reduction_factor);
// RegularizationOptions
py::class_<:regularizationoptions>(m, "RegularizationOptions")
.def(py::init<>())
.def_readwrite("initial_value", &cddp::RegularizationOptions::initial_value)
.def_readwrite("update_factor", &cddp::RegularizationOptions::update_factor)
.def_readwrite("max_value", &cddp::RegularizationOptions::max_value)
.def_readwrite("min_value", &cddp::RegularizationOptions::min_value)
.def_readwrite("step_initial_value", &cddp::RegularizationOptions::step_initial_value);
// SolverSpecificBarrierOptions
py::class_<:solverspecificbarrieroptions>(m, "BarrierOptions")
.def(py::init<>())
.def_readwrite("mu_initial", &cddp::SolverSpecificBarrierOptions::mu_initial)
.def_readwrite("mu_min_value", &cddp::SolverSpecificBarrierOptions::mu_min_value)
.def_readwrite("mu_update_factor", &cddp::SolverSpecificBarrierOptions::mu_update_factor)
.def_readwrite("mu_update_power", &cddp::SolverSpecificBarrierOptions::mu_update_power)
.def_readwrite("min_fraction_to_boundary", &cddp::SolverSpecificBarrierOptions::min_fraction_to_boundary)
.def_readwrite("strategy", &cddp::SolverSpecificBarrierOptions::strategy);
// SolverSpecificFilterOptions
py::class_<:solverspecificfilteroptions>(m, "FilterOptions")
.def(py::init<>())
.def_readwrite("merit_acceptance_threshold", &cddp::SolverSpecificFilterOptions::merit_acceptance_threshold)
.def_readwrite("violation_acceptance_threshold", &cddp::SolverSpecificFilterOptions::violation_acceptance_threshold)
.def_readwrite("max_violation_threshold", &cddp::SolverSpecificFilterOptions::max_violation_threshold)
.def_readwrite("min_violation_for_armijo_check", &cddp::SolverSpecificFilterOptions::min_violation_for_armijo_check)
.def_readwrite("armijo_constant", &cddp::SolverSpecificFilterOptions::armijo_constant);
// InteriorPointOptions
py::class_<:interiorpointoptions>(m, "InteriorPointOptions")
.def(py::init<>())
.def_readwrite("dual_var_init_scale", &cddp::InteriorPointOptions::dual_var_init_scale)
.def_readwrite("slack_var_init_scale", &cddp::InteriorPointOptions::slack_var_init_scale)
.def_readwrite("barrier", &cddp::InteriorPointOptions::barrier);
// LogBarrierOptions exposed as a flat Python binding; single-shooting only.
py::class_<:logbarrieroptions>(m, "LogBarrierOptions")
.def(py::init<>())
.def_readwrite("use_relaxed_log_barrier_penalty", &cddp::LogBarrierOptions::use_relaxed_log_barrier_penalty)
.def_readwrite("relaxed_log_barrier_delta", &cddp::LogBarrierOptions::relaxed_log_barrier_delta)
.def_readwrite("barrier", &cddp::LogBarrierOptions::barrier);
// IPDDPAlgorithmOptions exposed as a flat Python binding.
py::class_<:ipddpalgorithmoptions>(m, "IPDDPOptions")
.def(py::init<>())
.def_readwrite("dual_var_init_scale", &cddp::IPDDPAlgorithmOptions::dual_var_init_scale)
.def_readwrite("slack_var_init_scale", &cddp::IPDDPAlgorithmOptions::slack_var_init_scale)
.def_readwrite("barrier", &cddp::IPDDPAlgorithmOptions::barrier);
// MSIPDDPAlgorithmOptions exposed as a flat Python binding.
py::class_<:msipddpalgorithmoptions>(m, "MSIPDDPOptions")
.def(py::init<>())
.def_readwrite("dual_var_init_scale", &cddp::MSIPDDPAlgorithmOptions::dual_var_init_scale)
.def_readwrite("slack_var_init_scale", &cddp::MSIPDDPAlgorithmOptions::slack_var_init_scale)
.def_readwrite("barrier", &cddp::MSIPDDPAlgorithmOptions::barrier)
.def_readwrite("segment_length", &cddp::MSIPDDPAlgorithmOptions::segment_length)
.def_readwrite("rollout_type", &cddp::MSIPDDPAlgorithmOptions::rollout_type)
.def_readwrite("use_controlled_rollout", &cddp::MSIPDDPAlgorithmOptions::use_controlled_rollout)
.def_readwrite("costate_var_init_scale", &cddp::MSIPDDPAlgorithmOptions::costate_var_init_scale);
// CDDPOptions
py::class_<:cddpoptions>(m, "CDDPOptions")
.def(py::init<>())
.def_readwrite("tolerance", &cddp::CDDPOptions::tolerance)
.def_readwrite("acceptable_tolerance", &cddp::CDDPOptions::acceptable_tolerance)
.def_readwrite("max_iterations", &cddp::CDDPOptions::max_iterations)
.def_readwrite("max_cpu_time", &cddp::CDDPOptions::max_cpu_time)
.def_readwrite("verbose", &cddp::CDDPOptions::verbose)
.def_readwrite("debug", &cddp::CDDPOptions::debug)
.def_readwrite("print_solver_header", &cddp::CDDPOptions::print_solver_header)
.def_readwrite("print_solver_options", &cddp::CDDPOptions::print_solver_options)
.def_readwrite("use_ilqr", &cddp::CDDPOptions::use_ilqr)
.def_readwrite("enable_parallel", &cddp::CDDPOptions::enable_parallel)
.def_readwrite("num_threads", &cddp::CDDPOptions::num_threads)
.def_readwrite("return_iteration_info", &cddp::CDDPOptions::return_iteration_info)
.def_readwrite("warm_start", &cddp::CDDPOptions::warm_start)
.def_readwrite("termination_scaling_max_factor", &cddp::CDDPOptions::termination_scaling_max_factor)
.def_readwrite("line_search", &cddp::CDDPOptions::line_search)
.def_readwrite("regularization", &cddp::CDDPOptions::regularization)
.def_readwrite("box_qp", &cddp::CDDPOptions::box_qp)
.def_readwrite("filter", &cddp::CDDPOptions::filter)
.def_readwrite("log_barrier", &cddp::CDDPOptions::log_barrier)
.def_readwrite("ipddp", &cddp::CDDPOptions::ipddp)
.def_readwrite("msipddp", &cddp::CDDPOptions::msipddp);
}