- The public API has been completely rewritten
- The previous macros such as
@constraint
have been removed - The API now uses symbolic variables from
Symbolics.jl
- See the README for usage examples
- The minimum Julia version supported is now Julia 1.1
- Contractor can be make by just function name only
- New type of Contractor named as
BasicContractor
can be construct which only contain fields of useful data.
- The minimum Julia version supported is now Julia 1.0.
- By the help of
ModelingToolkit.jl
we can construct contractors and separators without the use of macros.
- The minimum Julia version supported is now Julia 0.7. The package is fully compatible with Julia 1.0.
- Pavings are now immutable, so
refine!
no longer works.
- The minimum Julia version required has been bumped to 0.6; this will be the last release to support 0.6.
The reverse functions used for constraint propagation have been factored out into the IntervalContractors.jl
package.
- The minimum Julia version required has been bumped to 0.5
- Objects such as
Contractor
have been simplified by putting functions and the code that generated them inside aGeneratedFunction
type
- The dependency on
ValidatedNumerics.jl
has been replaced byIntervalArithmetic.jl
andIntervalRootFinding.jl
- API change: Contractors now have their dimension as a type parameter
- Refactoring for type stability
- Removed reference to FixedSizeArrays; everything (including
bisect
) is now provided byIntervalArithmetic
- Removed all functions acting directly on
Interval
s andIntervalBox
es that should belong toIntervalArithmetic
- Generated code uses simpler symbols
- Example notebooks have been split out into a separate repository: https://github.com/dpsanders/IntervalConstraintProgrammingNotebooks
@function f(x) = 4x
defines a function- Functions may be used inside constraints
- Functions may be iterated
- Functions may be multi-dimensional
- Local variables may be introduced
- Simple plotting solution for the results of
pave
usingPlots.jl
recipes (viaIntervalArithmetic.jl
):
using Plots
gr() # preferred (fast) backed for `Plots.jl`
plot(paving.inner)
plot!(paving.boundary)
- Major internals rewrite
- Unary minus and
power_rev
with odd powers now work correctly - Examples updated
- Basic documentation using
Documenter.jl
-
Renamed
setinverse
topave
-
External constants may now be used in
@constraint
, e.g.
a, b = 1, 2
C = @constraint (x-$a)^2 + (y-$b)^2
The constraint will not change if the constants are changed, but may be
updated (changed) by calling the same @constraint
command again.
-
setinverse
now returns an object of typePaving
#17 -
refine!
function added to refine an existingPaving
to a lower tolerance #17 -
vol
has been renamed toVol
, and is applied directly to aPaving
object. -
Internal variable names in generated code are now of form
_z_1_
instead ofz1
to eliminate collisions with user-defined variables #20
-
Add
sqrtRev
reverse-mode function -
Add solid torus example, including 3D visualization with GLVisualize
-
Tests pass with Julia 0.5
-
Basic functionality working (separators and
setinverse
) -
Vol
function calculates the Volume of the set produced bysetinverse
; returns objects of typeVol
parametrised by the dimension$d$ of the set (i.e.$d$ -dimensional Lebesgue measure), which are interval ranges