3#include <initializer_list>
50 double a_linearization_floor = 1.0e-10,
60 double a_linearization_floor = 1.0e-10,
69 std::size_t symmetric_num_stationary_max,
74 const std::vector<Objective> &
objectives() const noexcept {
return objectives_; }
75 const std::vector<double> &
a_linearization() const noexcept {
return a_linearization_; }
77 const std::vector<double> &
b_linearization() const noexcept {
return b_linearization_; }
78 std::size_t
idx_s_start() const noexcept {
return idx_s_start_; }
79 std::size_t
idx_s_final() const noexcept {
return idx_s_final_; }
84 std::size_t
s_len() const noexcept {
return a_linearization_.size(); }
87 Robot *robot_ =
nullptr;
88 std::vector<Objective> objectives_;
89 std::vector<double> a_linearization_;
90 std::vector<double> b_linearization_;
91 std::size_t idx_s_start_ = 0;
92 std::size_t idx_s_final_ = 0;
96 double a_linearization_floor_ = 1.0e-10;
Small C++17 expected-like result used by no-throw overloads.
Robot facade backed by Rust Robot<CppRobotModel>.
Non-owning view of a contiguous one-dimensional array.
COPP3-SOCP problem descriptor.
StationaryBounds num_stationary_max() const noexcept
std::size_t idx_s_start() const noexcept
Problem(Robot &robot, std::vector< Objective > objectives, Span< const double > a_linearization, std::size_t idx_s_start, Boundary3 boundary, std::size_t symmetric_num_stationary_max, double a_linearization_floor=1.0e-10, Span< const double > b_linearization={})
const std::vector< double > & a_linearization() const noexcept
const std::vector< Objective > & objectives() const noexcept
Robot & robot() const noexcept
std::size_t s_len() const noexcept
double a_linearization_floor() const noexcept
const std::vector< double > & b_linearization() const noexcept
Copied b_linearization; empty when direct linearization is used.
std::size_t idx_s_final() const noexcept
Problem(Robot &robot, std::vector< Objective > objectives, Span< const double > a_linearization, std::size_t idx_s_start=0, Boundary3 boundary={}, StationaryBounds num_stationary_max={}, double a_linearization_floor=1.0e-10, Span< const double > b_linearization={})
Boundary3 boundary() const noexcept
StationaryBounds num_stationary() const noexcept
Problem(Robot &robot, std::initializer_list< Objective > objectives, Span< const double > a_linearization, std::size_t idx_s_start=0, Boundary3 boundary={}, StationaryBounds num_stationary_max={}, double a_linearization_floor=1.0e-10, Span< const double > b_linearization={})
auto expected_from(Fn &&fn) -> Expected< typename std::decay< decltype(fn())>::type >
Third-order convex-objective Clarabel SOCP backend with COPP objective support and expert objective/s...
COPP_API Result solve_expert(const Problem &problem, const clarabel::Options &options={})
Solve COPP3-SOCP and always return Clarabel diagnostics.
copp::solver::topp3::Result Result
copp::solver::topp3::StationaryBounds StationaryBounds
COPP_API Profile3rd solve(const Problem &problem, const clarabel::Options &options={})
Solve COPP3-SOCP and return an accepted third-order profile.
Third-order endpoint boundary values.
Tag object selecting no-throw overloads.
Owned third-order TOPP/COPP profile.
Shared Clarabel options for COPP/TOPP SOCP-style solvers.
Expert third-order Clarabel result.
User-supplied upper bound for stationary boundary intervals.