Sleipnir C++ API
Loading...
Searching...
No Matches
interior_point.hpp
1// Copyright (c) Sleipnir contributors
2
3#pragma once
4
5#include <functional>
6#include <span>
7
8#include <Eigen/Core>
9#include <Eigen/SparseCore>
10
11#include "sleipnir/optimization/solver/exit_status.hpp"
12#include "sleipnir/optimization/solver/iteration_info.hpp"
13#include "sleipnir/optimization/solver/options.hpp"
14#include "sleipnir/util/symbol_exports.hpp"
15
16namespace slp {
17
21struct SLEIPNIR_DLLEXPORT InteriorPointMatrixCallbacks {
41 std::function<double(const Eigen::VectorXd& x)> f;
42
62 std::function<Eigen::SparseVector<double>(const Eigen::VectorXd& x)> g;
63
95 std::function<Eigen::SparseMatrix<double>(const Eigen::VectorXd& x,
96 const Eigen::VectorXd& y,
97 const Eigen::VectorXd& z)>
99
119 std::function<Eigen::VectorXd(const Eigen::VectorXd& x)> c_e;
120
147 std::function<Eigen::SparseMatrix<double>(const Eigen::VectorXd& x)> A_e;
148
168 std::function<Eigen::VectorXd(const Eigen::VectorXd& x)> c_i;
169
196 std::function<Eigen::SparseMatrix<double>(const Eigen::VectorXd& x)> A_i;
197};
198
222SLEIPNIR_DLLEXPORT ExitStatus
223interior_point(const InteriorPointMatrixCallbacks& matrix_callbacks,
224 std::span<std::function<bool(const IterationInfo& info)>>
225 iteration_callbacks,
226 const Options& options,
227#ifdef SLEIPNIR_ENABLE_BOUND_PROJECTION
228 const Eigen::ArrayX<bool>& bound_constraint_mask,
229#endif
230 Eigen::VectorXd& x);
231
232} // namespace slp
Definition interior_point.hpp:21
std::function< Eigen::SparseMatrix< double >(const Eigen::VectorXd &x)> A_i
Definition interior_point.hpp:196
std::function< Eigen::SparseMatrix< double >(const Eigen::VectorXd &x)> A_e
Definition interior_point.hpp:147
std::function< Eigen::SparseVector< double >(const Eigen::VectorXd &x)> g
Definition interior_point.hpp:62
std::function< Eigen::VectorXd(const Eigen::VectorXd &x)> c_e
Definition interior_point.hpp:119
std::function< double(const Eigen::VectorXd &x)> f
Definition interior_point.hpp:41
std::function< Eigen::VectorXd(const Eigen::VectorXd &x)> c_i
Definition interior_point.hpp:168
std::function< Eigen::SparseMatrix< double >(const Eigen::VectorXd &x, const Eigen::VectorXd &y, const Eigen::VectorXd &z)> H
Definition interior_point.hpp:98
Definition iteration_info.hpp:13
Definition options.hpp:15