https://github.com/juliaintervals/intervalconstraintprogramming.jl
Calculate rigorously the feasible region for a set of real-valued inequalities with Julia
https://github.com/juliaintervals/intervalconstraintprogramming.jl
Last synced: 5 months ago
JSON representation
Calculate rigorously the feasible region for a set of real-valued inequalities with Julia
- Host: GitHub
- URL: https://github.com/juliaintervals/intervalconstraintprogramming.jl
- Owner: JuliaIntervals
- License: other
- Created: 2016-04-08T03:54:37.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2024-12-09T00:51:55.000Z (7 months ago)
- Last Synced: 2025-01-20T19:24:54.104Z (6 months ago)
- Language: Julia
- Homepage:
- Size: 2.51 MB
- Stars: 66
- Watchers: 8
- Forks: 16
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Changelog: NEWS.md
- License: LICENSE.md
Awesome Lists containing this project
README
# IntervalConstraintProgramming.jl
[](https://github.com/JuliaIntervals/IntervalConstraintProgramming.jl/actions/workflows/CI.yml)
[](https://juliaintervals.github.io/pages/packages/intervalconstraintprogramming/)This Julia package allows us to specify a set of constraints on real-valued variables,
given by inequalities, and
rigorously calculate (inner and outer approximations to) the *feasible set*,
i.e. the set that satisfies the constraints.The package is based on interval arithmetic using the
[`IntervalArithmetic.jl`](https://github.com/JuliaIntervals/IntervalArithmetic.jl) package (co-written by the author),
in particular multi-dimensional `IntervalBox`es (i.e. Cartesian products of one-dimensional intervals).## Basic usage
```jl
using IntervalArithmetic, IntervalArithmetic.Symbols
using IntervalConstraintProgramming
using IntervalBoxes
using Symbolicsvars = @variables x, y
C1 = constraint(x^2 + 2y^2 ≥ 1, vars)
C2 = constraint(x^2 + y^2 + x * y ≤ 3, vars)
C = C1 ⊓ C2X = IntervalBox(-5..5, 2)
tolerance = 0.05
inner, boundary = pave(X, C, tolerance)# plot the result:
using Plotsplot(collect.(inner), aspectratio=1, lw=0, label="inner");
plot!(collect.(boundary), aspectratio=1, lw=0, label="boundary")
```- The inner, blue, region is guaranteed to lie *inside* the constraint set.
- The outer, white, region is guaranteed to lie *outside* the constraint set.
- The in-between, red, region is not known at this tolerance.
## Author
- [David P. Sanders](http://sistemas.fciencias.unam.mx/~dsanders),
Departamento de Física, Facultad de Ciencias, Universidad Nacional Autónoma de México (UNAM)## References:
- *Applied Interval Analysis*, Luc Jaulin, Michel Kieffer, Olivier Didrit, Eric Walter (2001)
- Introduction to the Algebra of Separators with Application to Path Planning, Luc Jaulin and Benoît Desrochers, *Engineering Applications of Artificial Intelligence* **33**, 141–147 (2014)## Acknowledements
Financial support is acknowledged from DGAPA-UNAM PAPIME grants PE-105911 and PE-107114, and DGAPA-UNAM PAPIIT grant IN-117214, and from a CONACYT-Mexico sabbatical fellowship. The author thanks Alan Edelman and the Julia group for hospitality during his sabbatical visit. He also thanks Luc Jaulin and Jordan Ninin for the [IAMOOC](http://iamooc.ensta-bretagne.fr/) online course, which introduced him to this subject.