See the official website: http://codac.io/v2
Codac (Catalog Of Domains And Contractors) is a C++/Python/Matlab library providing tools for interval computations and constraint programming over real numbers, trajectories and sets. It has numerous applications in parameter estimation, guaranteed integration, robot localization, and provides reliable outputs.
The toolbox allows to approximate feasible solutions of non-linear and/or differential systems. Since the solution of these complex systems cannot generally be calculated exactly, Codac uses numerical analysis to compute bounds on the sets of feasible solutions. The assets are guarantee (ensuring that no solutions are lost thanks to rigorous interval arithmetic) and thus exhaustiveness (capturing all possible values when multiple solutions exist).
Codac can therefore be used to establish numerical proofs or approximate solutions for complex systems involving variables of various types, such as real numbers, vectors, trajectories, uncertain sets, graphs, etc. Most of the library's developers are motivated by challenges in mobile robotics, where Codac offers new perspectives.
Recent advances in interval methods have been made by the community, and the Codac library brings together some of the corresponding state-of-the-art implementations, with the goal of making them easy to combine.
One of Codac's applications is to solve systems of equations. The following example [1] computes a reliable outer approximation of the solution set of the equation system:
The solution set is approximated from an initial box
from codac import *
x = VectorVar(3)
f = AnalyticFunction([x], [
-(x[2]^2)+2*x[2]*sin(x[2]*x[0])+cos(x[2]*x[1]),
2*x[2]*cos(x[2]*x[0])-sin(x[2]*x[1])
])
ctc = CtcInverse(f, [0,0])
DefaultFigure.pave([[0,2],[2,4],[0,10]], ctc, 0.004)
The result is a set of non-overlapping boxes containing the set of feasible solutions. The following figure shows a projection of the computed set.
Outer approximation of the solution set, computed with CtcInverse
. Blue parts are guaranteed to be solution-free. Computation time: 0.609s. 3624 boxes.
The previous example showed a way of solving systems of the form
The following code allows to compute the set of vectors
x = VectorVar(2)
f = AnalyticFunction([x], x[0]*cos(x[0]-x[1])+x[1])
sep = SepInverse(f, [-oo,0])
DefaultFigure.pave([[-10,10],[-10,10]], sep, 0.004)
Approximation of an enclosure of the solution set computed with SepInverse
. The blue parts are guaranteed to have no solution, while any vector in the green boxes is a solution to the inequality. Computation time: 0.0809s.
This list is in alphabetical order by surname.
- Auguste Bourgois
- Cyril Bouvier
- Quentin Brateau
- Gilles Chabert
- Julien Damers
- Benoît Desrochers
- Peter Franek
- Maël Godard
- Nuwan Herath M.
- Luc Jaulin
- Fabrice Le Bars
- Morgan Louédec
- Damien Massé
- Bertrand Neveu
- Verlein Radwan
- Andreas Rauh
- Simon Rohou
- Joris Tillet
- Gilles Trombettoni
- Christophe Viel
- Raphael Voges
We appreciate all contributions, whether they are code, documentation, bug reports, or suggestions. If you believe you should be listed here and are not, please contact us to update the list.
The main reference to the Codac library is the following paper:
@article{codac_lib, title={The {C}odac Library}, url={https://cyber.bibl.u-szeged.hu/index.php/actcybern/article/view/4388}, DOI={10.14232/actacyb.302772}, journal={Acta Cybernetica}, volume={26}, number={4}, series = {Special Issue of {SWIM} 2022}, author={Rohou, Simon and Desrochers, Benoit and {Le Bars}, Fabrice}, year={2024}, month={Mar.}, pages={871-887} }