|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | 03-May-2022 | - |
| ecos_bb/ | H | 21-Oct-2020 | - | 1,563 | 1,199 |
| external/ | H | 21-Oct-2020 | - | 5,000 | 2,451 |
| include/ | H | 21-Oct-2020 | - | 1,557 | 637 |
| src/ | H | 21-Oct-2020 | - | 5,394 | 3,455 |
| test/ | H | 21-Oct-2020 | - | 4,737 | 3,779 |
| vstudio/ | H | 03-May-2022 | - | 1,323 | 1,321 |
| .bumpversion.cfg | H A D | 21-Oct-2020 | 87 | 7 | 5 |
| .gitignore | H A D | 21-Oct-2020 | 296 | 35 | 27 |
| .travis.yml | H A D | 21-Oct-2020 | 477 | 22 | 21 |
| CONTRIBUTING.md | H A D | 21-Oct-2020 | 7.1 KiB | 83 | 59 |
| COPYING | H A D | 21-Oct-2020 | 34.3 KiB | 675 | 553 |
| Makefile | H A D | 21-Oct-2020 | 3.3 KiB | 105 | 70 |
| README.md | H A D | 21-Oct-2020 | 4.2 KiB | 103 | 77 |
| ecos.mk | H A D | 21-Oct-2020 | 1.4 KiB | 64 | 36 |
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