cyqlone develop
Fast, parallel and vectorized solver for linear systems with optimal control structure.
Loading...
Searching...
No Matches
cyqlone::qpalm Namespace Reference

Namespaces

namespace  problems
namespace  detail

Classes

struct  CyqloneData
struct  CyQPALMBackendSettings
struct  CyQPALMBackendStats
struct  CyQPALMBackend
struct  unique_CyQPALMBackend
struct  DetailedStats
struct  Breakpoint
struct  ABSums
struct  PartitionedBreakpoints
struct  BreakpointsResult
struct  compute_breakpoints_fn
struct  get_partitioned_breakpoints_fn
struct  get_breakpoints_fn
struct  LineSearchSettings
struct  LineSearch
struct  SolverImplementation
struct  Settings
struct  SolverTimings
struct  SolverStats
class  Solver

Typedefs

using ABSum_t = real_t

Enumerations

enum class  WarmStartingStrategy { WarmStartingStrategy::Zeros , WarmStartingStrategy::Copy , WarmStartingStrategy::Shift , WarmStartingStrategy::ShiftNoInequality }
enum class  SolverStatus {
  SolverStatus::Busy = 0 , SolverStatus::Converged , SolverStatus::MaxTime , SolverStatus::MaxIter ,
  SolverStatus::NotFinite , SolverStatus::NoProgress , SolverStatus::Interrupted , SolverStatus::Exception
}
 Exit status of a numerical solver. More...
enum class  StorageOrder

Functions

template<index_t VL, StorageOrder DefaultOrder = StorageOrder::ColMajor>
unique_CyQPALMBackend< VL, DefaultOrder > make_cyqpalm_backend (const CyqloneStorage< real_t > &ocp, CyqloneData data, const CyQPALMBackendSettings &settings)
template<index_t VL, StorageOrder DefaultOrder = StorageOrder::ColMajor>
void update_cyqpalm_backend (CyQPALMBackend< VL, DefaultOrder > &backend, const CyqloneStorage< real_t > &ocp)
template<index_t VL, StorageOrder DefaultOrder = StorageOrder::ColMajor>
void update_cyqpalm_backend (CyQPALMBackend< VL, DefaultOrder > &backend, const LinearOCPStorage &ocp)
template<index_t VL, StorageOrder DefaultOrder>
unique_CyQPALMBackend< VL, DefaultOrder > make_cyqpalm_backend (const CyqloneStorage<> &ocp, CyqloneData data, const CyQPALMBackendSettings &settings)
template<class R, class F>
static void sort (R &&range, F key)
template<class R, class I, class F>
static void nth_element (R &&range, I mid, F key)
template<std::ranges::bidirectional_range R, class F, class C>
static std::ranges::subrange< std::ranges::iterator_t< R > > partition_min (R &&range, F pred, C cmp)
 A variant of std::ranges::partition where the first element of the return value is the smallest element of the "false" partition.
template<std::ranges::forward_range R, class F>
static decltype(auto) partition (R &&range, F key)
template<std::permutable I, std::sentinel_for< I > S, class F>
static decltype(auto) partition (I first, S last, F key)
template<class R, class F>
static decltype(auto) min_element (R &&range, F key)
template<class I, class T, class BinOp, class UnOp>
transform_reduce (I first, I last, T init, BinOp binary_op, UnOp unary_op)
ABSums partial_sum_negative (PartitionedBreakpoints breakpoints, real_t η=0, real_t β=0)
template<class Vec>
std::span< Breakpointcompute_breakpoints_default (std::vector< Breakpoint > &breakpoints, const Vec &Σ, const Vec &y, const Vec &Ad, const Vec &Ax, const Vec &b_min, const Vec &b_max)
 Compute the break points t[i] using formula (3.6) in the QPALM paper.
PartitionedBreakpoints partition_breakpoints_default (std::span< Breakpoint > breakpoints)
 Moves any non-finite elements in t to the end of the range, and all negative elements to the front.
const char * enum_name (SolverStatus s)
std::ostream & operator<< (std::ostream &os, SolverStatus s)
template unique_CyQPALMBackend< 1, StorageOrder::ColMajor > make_cyqpalm_backend< 1, StorageOrder::ColMajor > (const CyqloneStorage<> &ocp, CyqloneData data, const CyQPALMBackendSettings &settings)
template void update_cyqpalm_backend< 1, StorageOrder::ColMajor > (CyQPALMBackend< 1, StorageOrder::ColMajor > &, const CyqloneStorage<> &ocp)
template void update_cyqpalm_backend< 1, StorageOrder::ColMajor > (CyQPALMBackend< 1, StorageOrder::ColMajor > &, const LinearOCPStorage &ocp)
template unique_CyQPALMBackend< 4, StorageOrder::ColMajor > make_cyqpalm_backend< 4, StorageOrder::ColMajor > (const CyqloneStorage<> &ocp, CyqloneData data, const CyQPALMBackendSettings &settings)
template void update_cyqpalm_backend< 4, StorageOrder::ColMajor > (CyQPALMBackend< 4, StorageOrder::ColMajor > &, const CyqloneStorage<> &ocp)
template void update_cyqpalm_backend< 4, StorageOrder::ColMajor > (CyQPALMBackend< 4, StorageOrder::ColMajor > &, const LinearOCPStorage &ocp)
template unique_CyQPALMBackend< 8, StorageOrder::ColMajor > make_cyqpalm_backend< 8, StorageOrder::ColMajor > (const CyqloneStorage<> &ocp, CyqloneData data, const CyQPALMBackendSettings &settings)
template void update_cyqpalm_backend< 8, StorageOrder::ColMajor > (CyQPALMBackend< 8, StorageOrder::ColMajor > &, const CyqloneStorage<> &ocp)
template void update_cyqpalm_backend< 8, StorageOrder::ColMajor > (CyQPALMBackend< 8, StorageOrder::ColMajor > &, const LinearOCPStorage &ocp)
template unique_CyQPALMBackend< 1, StorageOrder::RowMajor > make_cyqpalm_backend< 1, StorageOrder::RowMajor > (const CyqloneStorage<> &ocp, CyqloneData data, const CyQPALMBackendSettings &settings)
template void update_cyqpalm_backend< 1, StorageOrder::RowMajor > (CyQPALMBackend< 1, StorageOrder::RowMajor > &, const CyqloneStorage<> &ocp)
template void update_cyqpalm_backend< 1, StorageOrder::RowMajor > (CyQPALMBackend< 1, StorageOrder::RowMajor > &, const LinearOCPStorage &ocp)
template unique_CyQPALMBackend< 4, StorageOrder::RowMajor > make_cyqpalm_backend< 4, StorageOrder::RowMajor > (const CyqloneStorage<> &ocp, CyqloneData data, const CyQPALMBackendSettings &settings)
template void update_cyqpalm_backend< 4, StorageOrder::RowMajor > (CyQPALMBackend< 4, StorageOrder::RowMajor > &, const CyqloneStorage<> &ocp)
template void update_cyqpalm_backend< 4, StorageOrder::RowMajor > (CyQPALMBackend< 4, StorageOrder::RowMajor > &, const LinearOCPStorage &ocp)
template unique_CyQPALMBackend< 8, StorageOrder::RowMajor > make_cyqpalm_backend< 8, StorageOrder::RowMajor > (const CyqloneStorage<> &ocp, CyqloneData data, const CyQPALMBackendSettings &settings)
template void update_cyqpalm_backend< 8, StorageOrder::RowMajor > (CyQPALMBackend< 8, StorageOrder::RowMajor > &, const CyqloneStorage<> &ocp)
template void update_cyqpalm_backend< 8, StorageOrder::RowMajor > (CyQPALMBackend< 8, StorageOrder::RowMajor > &, const LinearOCPStorage &ocp)
std::ostream & operator<< (std::ostream &, const SolverTimings &)

Variables

struct cyqlone::qpalm::compute_breakpoints_fn compute_breakpoints
struct cyqlone::qpalm::get_partitioned_breakpoints_fn get_partitioned_breakpoints
struct cyqlone::qpalm::get_breakpoints_fn get_breakpoints

Class Documentation

◆ cyqlone::qpalm::PartitionedBreakpoints

struct cyqlone::qpalm::PartitionedBreakpoints
Class Members
span< Breakpoint > neg_bp
span< Breakpoint > pos_bp

◆ cyqlone::qpalm::BreakpointsResult

struct cyqlone::qpalm::BreakpointsResult
Class Members
PartitionedBreakpoints bp
ABSums ab_neg

◆ cyqlone::qpalm::LineSearchSettings

struct cyqlone::qpalm::LineSearchSettings
Class Members
bool find_smallest_breakpoint_first = false

Typedef Documentation

◆ ABSum_t

using cyqlone::qpalm::ABSum_t = real_t

Definition at line 26 of file breakpoint.hpp.

Enumeration Type Documentation

◆ StorageOrder

enum class guanaqo::StorageOrder
strong

Function Documentation

◆ make_cyqpalm_backend()

template<index_t VL, StorageOrder DefaultOrder>
unique_CyQPALMBackend< VL, DefaultOrder > cyqlone::qpalm::make_cyqpalm_backend ( const CyqloneStorage<> & ocp,
CyqloneData data,
const CyQPALMBackendSettings & settings )

Definition at line 602 of file ocp-backend-cyqlone.tpp.

◆ sort()

template<class R, class F>
void cyqlone::qpalm::sort ( R && range,
F key )
static

Definition at line 17 of file algorithms.hpp.

◆ nth_element()

template<class R, class I, class F>
void cyqlone::qpalm::nth_element ( R && range,
I mid,
F key )
static

Definition at line 28 of file algorithms.hpp.

◆ partition_min()

template<std::ranges::bidirectional_range R, class F, class C>
std::ranges::subrange< std::ranges::iterator_t< R > > cyqlone::qpalm::partition_min ( R && range,
F pred,
C cmp )
static

A variant of std::ranges::partition where the first element of the return value is the smallest element of the "false" partition.

Definition at line 37 of file algorithms.hpp.

◆ partition() [1/2]

template<std::ranges::forward_range R, class F>
decltype(auto) cyqlone::qpalm::partition ( R && range,
F key )
static

Definition at line 93 of file algorithms.hpp.

◆ partition() [2/2]

template<std::permutable I, std::sentinel_for< I > S, class F>
decltype(auto) cyqlone::qpalm::partition ( I first,
S last,
F key )
static

Definition at line 98 of file algorithms.hpp.

◆ min_element()

template<class R, class F>
decltype(auto) cyqlone::qpalm::min_element ( R && range,
F key )
static

Definition at line 104 of file algorithms.hpp.

◆ transform_reduce()

template<class I, class T, class BinOp, class UnOp>
T cyqlone::qpalm::transform_reduce ( I first,
I last,
T init,
BinOp binary_op,
UnOp unary_op )

Definition at line 110 of file algorithms.hpp.

◆ partial_sum_negative()

ABSums cyqlone::qpalm::partial_sum_negative ( PartitionedBreakpoints breakpoints,
real_t η = 0,
real_t β = 0 )

Definition at line 25 of file breakpoint.cpp.

◆ compute_breakpoints_default()

template<class Vec>
std::span< Breakpoint > cyqlone::qpalm::compute_breakpoints_default ( std::vector< Breakpoint > & breakpoints,
const Vec & Σ,
const Vec & y,
const Vec & Ad,
const Vec & Ax,
const Vec & b_min,
const Vec & b_max )

Compute the break points t[i] using formula (3.6) in the QPALM paper.

Returns
t, α, δ

Definition at line 11 of file breakpoint.tpp.

◆ partition_breakpoints_default()

PartitionedBreakpoints cyqlone::qpalm::partition_breakpoints_default ( std::span< Breakpoint > breakpoints)

Moves any non-finite elements in t to the end of the range, and all negative elements to the front.

Returns the negative and positive partitions.

Definition at line 7 of file breakpoint.cpp.

◆ enum_name()

const char * cyqlone::qpalm::enum_name ( SolverStatus s)
inline

Definition at line 23 of file status.hpp.

◆ operator<<() [1/2]

std::ostream & cyqlone::qpalm::operator<< ( std::ostream & os,
SolverStatus s )

Definition at line 6 of file status.cpp.

◆ make_cyqpalm_backend< 1, StorageOrder::ColMajor >()

template unique_CyQPALMBackend< 1, StorageOrder::ColMajor > cyqlone::qpalm::make_cyqpalm_backend< 1, StorageOrder::ColMajor > ( const CyqloneStorage<> & ocp,
CyqloneData data,
const CyQPALMBackendSettings & settings )

◆ update_cyqpalm_backend< 1, StorageOrder::ColMajor >() [1/2]

template void cyqlone::qpalm::update_cyqpalm_backend< 1, StorageOrder::ColMajor > ( CyQPALMBackend< 1, StorageOrder::ColMajor > & ,
const CyqloneStorage<> & ocp )

◆ update_cyqpalm_backend< 1, StorageOrder::ColMajor >() [2/2]

template void cyqlone::qpalm::update_cyqpalm_backend< 1, StorageOrder::ColMajor > ( CyQPALMBackend< 1, StorageOrder::ColMajor > & ,
const LinearOCPStorage & ocp )

◆ make_cyqpalm_backend< 4, StorageOrder::ColMajor >()

template unique_CyQPALMBackend< 4, StorageOrder::ColMajor > cyqlone::qpalm::make_cyqpalm_backend< 4, StorageOrder::ColMajor > ( const CyqloneStorage<> & ocp,
CyqloneData data,
const CyQPALMBackendSettings & settings )

◆ update_cyqpalm_backend< 4, StorageOrder::ColMajor >() [1/2]

template void cyqlone::qpalm::update_cyqpalm_backend< 4, StorageOrder::ColMajor > ( CyQPALMBackend< 4, StorageOrder::ColMajor > & ,
const CyqloneStorage<> & ocp )

◆ update_cyqpalm_backend< 4, StorageOrder::ColMajor >() [2/2]

template void cyqlone::qpalm::update_cyqpalm_backend< 4, StorageOrder::ColMajor > ( CyQPALMBackend< 4, StorageOrder::ColMajor > & ,
const LinearOCPStorage & ocp )

◆ make_cyqpalm_backend< 8, StorageOrder::ColMajor >()

template unique_CyQPALMBackend< 8, StorageOrder::ColMajor > cyqlone::qpalm::make_cyqpalm_backend< 8, StorageOrder::ColMajor > ( const CyqloneStorage<> & ocp,
CyqloneData data,
const CyQPALMBackendSettings & settings )

◆ update_cyqpalm_backend< 8, StorageOrder::ColMajor >() [1/2]

template void cyqlone::qpalm::update_cyqpalm_backend< 8, StorageOrder::ColMajor > ( CyQPALMBackend< 8, StorageOrder::ColMajor > & ,
const CyqloneStorage<> & ocp )

◆ update_cyqpalm_backend< 8, StorageOrder::ColMajor >() [2/2]

template void cyqlone::qpalm::update_cyqpalm_backend< 8, StorageOrder::ColMajor > ( CyQPALMBackend< 8, StorageOrder::ColMajor > & ,
const LinearOCPStorage & ocp )

◆ make_cyqpalm_backend< 1, StorageOrder::RowMajor >()

template unique_CyQPALMBackend< 1, StorageOrder::RowMajor > cyqlone::qpalm::make_cyqpalm_backend< 1, StorageOrder::RowMajor > ( const CyqloneStorage<> & ocp,
CyqloneData data,
const CyQPALMBackendSettings & settings )

◆ update_cyqpalm_backend< 1, StorageOrder::RowMajor >() [1/2]

template void cyqlone::qpalm::update_cyqpalm_backend< 1, StorageOrder::RowMajor > ( CyQPALMBackend< 1, StorageOrder::RowMajor > & ,
const CyqloneStorage<> & ocp )

◆ update_cyqpalm_backend< 1, StorageOrder::RowMajor >() [2/2]

template void cyqlone::qpalm::update_cyqpalm_backend< 1, StorageOrder::RowMajor > ( CyQPALMBackend< 1, StorageOrder::RowMajor > & ,
const LinearOCPStorage & ocp )

◆ make_cyqpalm_backend< 4, StorageOrder::RowMajor >()

template unique_CyQPALMBackend< 4, StorageOrder::RowMajor > cyqlone::qpalm::make_cyqpalm_backend< 4, StorageOrder::RowMajor > ( const CyqloneStorage<> & ocp,
CyqloneData data,
const CyQPALMBackendSettings & settings )

◆ update_cyqpalm_backend< 4, StorageOrder::RowMajor >() [1/2]

template void cyqlone::qpalm::update_cyqpalm_backend< 4, StorageOrder::RowMajor > ( CyQPALMBackend< 4, StorageOrder::RowMajor > & ,
const CyqloneStorage<> & ocp )

◆ update_cyqpalm_backend< 4, StorageOrder::RowMajor >() [2/2]

template void cyqlone::qpalm::update_cyqpalm_backend< 4, StorageOrder::RowMajor > ( CyQPALMBackend< 4, StorageOrder::RowMajor > & ,
const LinearOCPStorage & ocp )

◆ make_cyqpalm_backend< 8, StorageOrder::RowMajor >()

template unique_CyQPALMBackend< 8, StorageOrder::RowMajor > cyqlone::qpalm::make_cyqpalm_backend< 8, StorageOrder::RowMajor > ( const CyqloneStorage<> & ocp,
CyqloneData data,
const CyQPALMBackendSettings & settings )

◆ update_cyqpalm_backend< 8, StorageOrder::RowMajor >() [1/2]

template void cyqlone::qpalm::update_cyqpalm_backend< 8, StorageOrder::RowMajor > ( CyQPALMBackend< 8, StorageOrder::RowMajor > & ,
const CyqloneStorage<> & ocp )

◆ update_cyqpalm_backend< 8, StorageOrder::RowMajor >() [2/2]

template void cyqlone::qpalm::update_cyqpalm_backend< 8, StorageOrder::RowMajor > ( CyQPALMBackend< 8, StorageOrder::RowMajor > & ,
const LinearOCPStorage & ocp )

Variable Documentation

◆ compute_breakpoints

struct cyqlone::qpalm::compute_breakpoints_fn cyqlone::qpalm::compute_breakpoints

◆ get_partitioned_breakpoints

struct cyqlone::qpalm::get_partitioned_breakpoints_fn cyqlone::qpalm::get_partitioned_breakpoints

◆ get_breakpoints

struct cyqlone::qpalm::get_breakpoints_fn cyqlone::qpalm::get_breakpoints