• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

ecos_bb/H21-Oct-2020-1,5631,199

external/H21-Oct-2020-5,0002,451

include/H21-Oct-2020-1,557637

src/H21-Oct-2020-5,3943,455

test/H21-Oct-2020-4,7373,779

vstudio/H03-May-2022-1,3231,321

.bumpversion.cfgH A D21-Oct-202087 75

.gitignoreH A D21-Oct-2020296 3527

.travis.ymlH A D21-Oct-2020477 2221

CONTRIBUTING.mdH A D21-Oct-20207.1 KiB8359

COPYINGH A D21-Oct-202034.3 KiB675553

MakefileH A D21-Oct-20203.3 KiB10570

README.mdH A D21-Oct-20204.2 KiB10377

ecos.mkH A D21-Oct-20201.4 KiB6436

README.md

1Embedded Conic Solver (ECOS)
2====
3
4[![Build Status](https://travis-ci.org/embotech/ecos.svg?branch=master)](https://travis-ci.org/embotech/ecos)
5[![Windows Build](https://ci.appveyor.com/api/projects/status/github/embotech/ecos)](https://ci.appveyor.com/api/projects/status/github/embotech/ecos)
6[![Coverage Status](https://coveralls.io/repos/embotech/ecos/badge.svg?branch=develop)](https://coveralls.io/r/embotech/ecos)
7
8ECOS is a numerical software for solving convex second-order cone programs (SOCPs) of type
9```
10min  c'*x
11s.t. A*x = b
12     G*x <=_K h
13```
14where the last inequality is generalized, i.e. `h - G*x` belongs to the cone `K`.
15ECOS supports the positive orthant `R_+`, second-order cones `Q_n` defined as
16```
17Q_n = { (t,x) | t >= || x ||_2 }
18```
19with t a scalar and `x` in `R_{n-1}`,
20and the exponential cone `K_e` defined as
21```
22K_e = closure{(x,y,z) | exp(x/z) <= y/z, z>0}
23```
24where `(x,y,z)` is in `R_3`.
25The cone `K` is therefore
26a direct product of the positive orthant, second-order, and exponential cones:
27```
28K = R_+ x Q_n1 x ... x Q_nN x K_e x ... x K_e
29```
30
31
32Mixed-Integer SOCPs (ECOS_BB)
33----
34Through a recent extension by Han Wang, ECOS now comes with a branch-and-bound procedure (a direct translation of Stephen Boyd's [lecture slides](http://stanford.edu/class/ee364b/lectures/bb_slides.pdf)) called `ECOS_BB` for solving mixed-integer or mixed-boolean programs of the form
35
36```
37min  c'*x
38s.t. A*x = b
39     G*x <=_K h
40     some x_i in {0,1}
41     some x_j integer
42```
43
44Note: the branch-and-bound module has been designed to solve small problems at acceptable speeds and with minimum added code complexity (ca. 200 lines of code on top of ECOS).
45
46Interfaces
47----
48
49ECOS has numerous interfaces, each hosted in a separate git repository. The core ECOS solver (this repository) is included in the interface repositories as a submodule. You should run `git submodule init` and `git submodule update` after cloning the interface repositories.
50
51* [MATLAB interface](https://github.com/embotech/ecos-matlab)
52* [Python interface](https://github.com/embotech/ecos-python)
53* [Julia interface](https://github.com/JuliaOpt/ECOS.jl)
54* [R interface](https://github.com/bnaras/ECOSolveR). Also on [CRAN](https://cran.r-project.org/package=ECOSolveR).
55
56
57Please refer to the corresponding repositories or the [wiki](https://github.com/embotech/ecos/wiki) for information on how to install and use ECOS through these interfaces.
58
59
60License
61----
62
63ECOS is distributed under the [GNU General Public License v3.0](http://www.gnu.org/copyleft/gpl.html). Other licenses for the core solver may be available upon request from [embotech](http://www.embotech.com).
64
65
66Documentation
67----
68The current home of the documentation is [here](https://github.com/embotech/ecos/wiki). If you find something is missing, feel free to open an issue and describe what you'd like to be documented better.
69
70
71Credits
72----
73
74The solver is essentially based on Lieven Vandenberghe's [CVXOPT](http://cvxopt.org) [ConeLP](http://www.ee.ucla.edu/~vandenbe/publications/coneprog.pdf) solver, although it differs in the particular way the linear systems are treated.
75
76The following people have been, and are, involved in the development and maintenance of ECOS:
77
78+ Alexander Domahidi (principal developer)
79+ Eric Chu (Python interface, unit tests)
80+ Stephen Boyd (methods and maths)
81+ Michael Grant (CVX interface)
82+ Johan Löfberg (YALMIP interface)
83+ João Felipe Santos, Iain Dunning (Julia inteface)
84+ Han Wang (ECOS branch and bound wrapper)
85+ Santiago Akle (Exponential cone method and extension)
86
87The main technical idea behind ECOS is described in a short [paper](http://www.stanford.edu/~boyd/papers/ecos.html). More details are given in Alexander Domahidi's [PhD Thesis](http://e-collection.library.ethz.ch/view/eth:7611?q=domahidi) in Chapter 9.
88
89The algorithm for exponential cones can be found in Santiago Akle's
90[PhD Thesis](http://searchworks.stanford.edu/view/10769798) in Chapter 10.
91
92If you find ECOS useful, you can cite it using the following BibTex entry:
93
94```
95@INPROCEEDINGS{bib:Domahidi2013ecos,
96author={Domahidi, A. and Chu, E. and Boyd, S.},
97booktitle={European Control Conference (ECC)},
98title={{ECOS}: {A}n {SOCP} solver for embedded systems},
99year={2013},
100pages={3071-3076}
101}
102```
103