File hamiltonian.hpp

template<typename Polytope, typename Point, int simdLen>
class Hamiltonian

Public Functions

inline Hamiltonian(Polytope &boundaries)
inline VT hamiltonian(MT x, MT v)
template<typename MatrixType>
inline IVT is_not_nan(MatrixType x)
inline VT feasible(MT x, MT v)
inline void prepare(pts const &xs)
inline pts DK(pts const &x_bar)
inline pts approxDK(pts const &x_bar, MT &nu)
inline pts DU(pts const &x_bar)
inline void move(pts const &y)
inline void project(pts &xs)
inline VT x_norm(pts const &xs, pts const &dx)

Public Members

bool prepared = false
bool forceUpdate = true
Polytope &P
MT hess
bool dUDx_empty = true
MT last_dUdx
CholObj solver
pts xs
MT x
MT dfx
MT lsc
VT fx
int n
int m
int num_runs = 0
Barrier *barrier
std::unique_ptr<WeightedBarrier> weighted_barrier
Opts &options

Private Types

using VT = typename Polytope::VT
using IVT = Eigen::Array<double, Eigen::Dynamic, 1>
using BVT = Eigen::Matrix<bool, Eigen::Dynamic, Eigen::Dynamic>
using NT = typename Polytope::NT
using MT = typename Polytope::MT
using SpMat = typename Polytope::SpMat
using Tx = FloatArray<double, simdLen>
using CholObj = PackedChol<simdLen, int>
using Opts = typename Polytope::Opts
using pts = std::vector<MT>
using Barrier = two_sided_barrier<Point>
using WeightedBarrier = weighted_two_sided_barrier<Point>