All Projects → EmbersArc → EiCOS

EmbersArc / EiCOS

Licence: MIT License
A C++ Second Order Cone Solver based on Eigen

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to EiCOS

dfogn
DFO-GN: Derivative-Free Optimization using Gauss-Newton
Stars: ✭ 20 (+66.67%)
Mutual labels:  numerical-optimization
RcppEigen
Rcpp integration for the Eigen templated linear algebra library
Stars: ✭ 89 (+641.67%)
Mutual labels:  eigen-library
lpsolvers
Linear programming solvers in Python with a unified API
Stars: ✭ 20 (+66.67%)
Mutual labels:  numerical-optimization
ForBES
Generic and efficient MATLAB solver for nonsmooth optimization problems
Stars: ✭ 19 (+58.33%)
Mutual labels:  numerical-optimization
ASALI
Do you work with chemical reactors? Are you curious about them? ASALI is the open-source code that you are looking for. Chemical reactor models, transport/thermodynamic properties of gases, equilibrium calculations. ASALI couples all these features with an user friendly graphical interface. Modeling catalytic reactors has never been so easy.
Stars: ✭ 38 (+216.67%)
Mutual labels:  eigen-library
pdfo
Powell's Derivative-Free Optimization solvers
Stars: ✭ 56 (+366.67%)
Mutual labels:  numerical-optimization
Cpp-Examples
Numerical C++ examples.
Stars: ✭ 38 (+216.67%)
Mutual labels:  eigen-library
GALAHAD
A library of modern Fortran modules for nonlinear optimization
Stars: ✭ 60 (+400%)
Mutual labels:  numerical-optimization
ProximalOperators.jl
Proximal operators for nonsmooth optimization in Julia
Stars: ✭ 119 (+891.67%)
Mutual labels:  numerical-optimization
MIPT-Opt
A course on Optimization Methods
Stars: ✭ 128 (+966.67%)
Mutual labels:  numerical-optimization
Ceres Solver
A large scale non-linear optimization library
Stars: ✭ 2,180 (+18066.67%)
Mutual labels:  numerical-optimization
HOT
Hierarchical Optimization Time Integration (HOT) for efficient implicit timestepping of the material point method (MPM)
Stars: ✭ 83 (+591.67%)
Mutual labels:  numerical-optimization
GurobiLink
Wolfram Language interface to the Gurobi numerical optimization library
Stars: ✭ 16 (+33.33%)
Mutual labels:  numerical-optimization
osqp
The Operator Splitting QP Solver
Stars: ✭ 929 (+7641.67%)
Mutual labels:  numerical-optimization
seminars-fivt
Seminars on optimization methods for DIHT MIPT
Stars: ✭ 23 (+91.67%)
Mutual labels:  numerical-optimization
A- Guide -to Data Sciecne from mathematics
It is a blueprint to data science from the mathematics to algorithms. It is not completed.
Stars: ✭ 25 (+108.33%)
Mutual labels:  numerical-optimization
qdldl
A free LDL factorisation routine
Stars: ✭ 54 (+350%)
Mutual labels:  numerical-optimization
pikaia
Modern Fortran Edition of the Pikaia Genetic Algorithm
Stars: ✭ 29 (+141.67%)
Mutual labels:  numerical-optimization
PyGRANSO
PyGRANSO: A PyTorch-enabled port of GRANSO with auto-differentiation
Stars: ✭ 19 (+58.33%)
Mutual labels:  numerical-optimization
slsqp
Modern Fortran Edition of the SLSQP Optimizer
Stars: ✭ 57 (+375%)
Mutual labels:  numerical-optimization

logo

Eigen Conic Solver

A C++ Second Order Cone Solver for problems of the form

equation

symbols

The last constraint is generalized and includes both the positive orthant and second order cones, so that the top rows of G represent the linear constraints

equation

and the remaining rows contain stacked representations of the second order cones:

equation

Usage

#include "eicos.hpp"

Eigen::SparseMatrix<double> G, A;
Eigen::VectorXd c, h, b;
Eigen::VectorXi q;

// (Set up problem data)

// Construct a solver instance
EiCOS::Solver solver(G, A, c, h, b, q);

// Solve the problem
solver.solve()

// Save the solution
Eigen::VectorXd s = solver.solution();

// (Change entries in G, A, c, h, b)

// Update problem data: Using this method instead of constructing a new problem can
// save a lot of time, especially for larger problems. The only restriction is that 
// the sparsity pattern and dimensions must be the same as in the original problem.
solver.updateData(G, A, c, h, b);

// Rinse and repeat
solver.solve()

Dependencies

  • Eigen for linear algebra functionality
  • fmt (optional) for printing and formatting

CMake

To use the solver with a cmake project, simply include the subdirectory and link the library.

add_subdirectory(EiCOS)
target_link_libraries(my_library eicos)

Credits

This solver is entirely based on ECOS.

  • Alexander Domahidi (ECOS principal developer)
  • Eric Chu (ECOS unit tests)
  • Stephen Boyd (methods and maths)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].