Skip to content

Releases: JuliaReach/LazySets.jl

v1.14.1

05 Jul 07:32
v1.14.1
2270cc9
Compare
Choose a tag to compare

Bug fixes

  • pass backend argument in concrete minkowski sum (#1495)
  • fix rank for sparse submatrix (#1498)

v1.14.0

03 Jul 14:36
v1.14.0
fb09c20
Compare
Choose a tag to compare

Breaking changes

  • moved some internal helper functions to new Arrays module (#1452)
  • renamed delete_zero_columns -> delete_zero_columns! and moved to new Arrays module (#1452)
  • renamed UnitVector -> SingleEntryVector and moved to new Arrays module (#1452)
  • renamed iscounterclockwise -> is_cyclic_permutation (#1464)
  • delete sorting in two-points convex hull (#1472)

Features

  • added concrete linear_map of a lazy Translation (#1442)
  • added is_intersection_empty between two CartesianProductArrays and between CartesianProductArray and HPolyhedron (#1421)
  • added concrete intersection between two CartesianProductArrays (#1421)
  • added decomposed intersection between CartesianProductArray and AbstractPolyhedron (#1421)
  • added AbstractZonotope interface (#1443)
  • added concrete minkowski_sum for AbstractZonotope (#1444)
  • approximate membership test for vectors (#1484)
  • approximate ispermutation test for numbers in floating point (#1484)
  • added concrete minkowski sum between polytopes (#1479), and updated the remove_redundant_vertices function (#1490)

Bug fixes

  • added a precondition check to constraints_list of Zonotopes (#1451), for which we also defined rank for sparse matrices (#1469)
  • fixed witness production in isdisjoint for hyperrectangles (#1465)
  • fixed a bug in the concrete Minkowski sum of polygons in vertex representation (#1474)

Enhancements

  • (internal refactoring) outsourced package-requirement messages to a central place (#1445)
  • added efficient version of convex_hull for four vertices in 2D (#1434)
  • faster support function for AbstractHyperrectangle, AbstractSingleton, Interval, and ZeroSet (#1454)
  • let identity version of overapproximate accept additional arguments (#1489)
  • removed Pkg requirement (#1492)

v1.13.0

13 Jun 22:13
v1.13.0
a5545ae
Compare
Choose a tag to compare

Breaking changes

  • SparseMatrixExp and ProjectionSparseMatrixExp received new type parameters for the matrices (#1401)
  • removed Compat requirement and dropped remaining support for pre-v1.0-Julia versions (#1406)
  • added a type parameter to HalfSpace for the direction vector; removed the numeric-type convert method for HalfSpace (#1412)

Features

  • added lazy Rectification operation (#1372, #1376)
  • added isapprox () between LazySets (#1409)
  • added decomposed linear map of a CartesianProductArray (via overapproximate) (#1419)
  • added TaylorModel overapproximation using a Zonotope (#1433)

Bug fixes

  • consistently return an EmptySet if the concrete intersection of two AbstractPolyhedron instances is empty (#1414)

Enhancements

  • VPolygon has a new parameter for the type of vector of the vertices (#1385)
  • generalized sparse-matrix types (SparseMatrixExp, ProjectionSparseMatrixExp, isinvertible) (#1401)
  • improved plotting of LazySets (1D sets can be plotted; vectors of sets now use individual plot recipes, which can be circumvented with a new fast option if compilation is too heavy) (#1400, #1426)
  • faster convex hull of a triangle (#1411)
  • the list of vertices of a lazy linear map now computes their convex hull by default and is controlled with the prune keyword argument (#1428)

v1.12.0

21 May 15:36
v1.12.0
18ea53d
Compare
Choose a tag to compare

Announcements

First-time contributors:

Breaking changes

  • We dropped support for Julia versions older than v1.0 (#1322)
  • Plot recipes now use iterative refinement by default (#1303)
  • Changed (increased) the default absolute zero tolerance for Floats (#1341)

Features

  • Conversion of hyperrectangles to cartesian products of intervals (#1336)
  • Set difference between intervals (#1330)
  • Set membership for lazy translation (#1363)
  • Concrete intersection between an Interval and general LazySets (#1345)
  • Added PolynomialZonotope set representation (#1370)
  • Concrete minkowski_sum for VPolygons (#1377)

Bug fixes

  • Fix diagonal matrix times UnitVector (#1362)
  • tohrep of an empty VPolytope/VPolygon now returns an EmptySet (#1371)
  • The convex hull of empty VPolytope's is an empty VPolytope (#1369)
  • Conversion to polyhedron now doesn't break with an empty VPolytope (#1373)

Enhancements

  • Faster disjointness check for intervals (#1323)
  • Added a generators getter for Zonotopes (#1313)
  • Robust point-in-polygon check (#1340)
  • In conversion from HPolytope to HPolygon, set the prune option such that it removes redundant constraints by default (#1342)
  • We revised plot recipes defaults, letting alpha < 1 and aspectratio=1, and properly used the no-alias version of the argument names (#1304)
  • Compute vertices of HPolytope in two-dimensions using the algorithm for convex polygons (#1338)
  • Added _isapprox for general Reals (#1367)
  • Faster concrete intersection between an Interval and a polyhedron (#1345)
  • Improve binary convex hull of VPolytope, using specializations for dimensions 1 and 2 (#1369)

v1.11.0

28 Apr 19:02
8230c8c
Compare
Choose a tag to compare

Announcements

This is the last release compatible with Julia v0.6/v0.7.
The release here on Github is fully compatible with Julia v0.6/v0.7/v1.0/v1.1.
If you install LazySets through Julia's package manager, then this version will only be available in v0.6 (through METADATA) and again in v1.0 (through General) with slight administrative changes.

Breaking changes

  • the keyword argument use_polyhedra_library in the intersection of two AbstractPolyhedron was removed; instead use intersection(P, Q, backend=...) with an appropriate Polyhedra backend, or use backend=GLPKSolverLP() to run a feasibility LP (#1253)
  • Expokit, used in LazySets for working with matrix exponentials, is now an optional dependency; users have to load this package manually if they want to use that functionality (#1290)

Features

  • added new template directions:
    • SphericalDirections in 3D (#1255),
    • PolarDirections in 2D (#1259)
  • added a split method for abstract hyperrectangles (#1264)
  • added support function methods for Zonotope and Ellipsoid (#1273)
  • added isdisjoint for two Zonotopes (#1269)

Bug fixes

  • fixed an ambiguity in the overapproximation of the lazy Intersection between two polytopes (#1257)
  • fixed a BoundsError when trying to plot polytopes which are empty (#1274)
  • a translation of a set X along a vector v can be applied from the left (v + X) as well as from the right (X + v) (#1302)

Enhancements

  • added a plot recipe for EmptySet (#1254)
  • improve convex hull docs and better error messages (#1282, #1285)
  • better error messages for inclusion and membership that cover the common misuses (#1299)
  • set inclusion between a LazySet and an AbstractPolyhedron now uses the robust comparison method _leq from src/comparisons.jl (#1297)
  • made Expokit an optional dependency (#1290)

v1.10.0

25 Mar 03:32
67444d2
Compare
Choose a tag to compare

Announcements

Note: this release is fully compatible with Julia v0.6/v0.7/v1.0/v1.1.

Features

  • added convert from hyperrectangular sets to Hyperrectangle (#1224) and CartesianProduct of hyperrectangles to Hyperrectangle or to Zonotope #1221)
  • added for CartesianProductArrays (#1225)
  • added convert from CartesianProduct of Zonotopes to a new Zonotope (#1228)
  • added convert of the lazy LinearMap of a hyperrectangular set to a Zonotope (#1232), and LinearMap of a CartesianProduct to a Zonotope (#1237)
  • added constraints_list for Zonotopes of order < 1 (just falls back to vertex representation) (#1241)

Bug fixes

  • fixed crash in reduce_order for Zonotopes with order smaller than one (#1247)
  • fixed overapproximate of a ConvexHull of two Zonotopes for order smaller than one (#1248)

Enhancements

  • revised usage of import and using (and hence fewer conflicts with other packages) (#1218)
  • added faster constraints_list for ResetMap of a hyperrectangular set (#1217)
  • Zonotopes now automatically remove zero generators (#1246)

v1.9.0

09 Mar 12:59
869a23c
Compare
Choose a tag to compare

Announcements

Note: this release is fully compatible with Julia v0.6/v0.7/v1.0/v1.1.

Breaking changes

  • The interface for decompose has changed. We now require three arguments: the set, the partition (although there is an option to specify a uniform block size), and a single option for approximation (#1179)

Features

  • added a lazy Translation and a concrete translate operation (#1173, #1192)
  • added an extension to the subtypes function, to be used as subtypes(interface, concrete::Bool) that returns all concrete subtypes of a given interface (#1185)
  • added a lazy Complement operation (#1204, #1206)
  • added concrete projection for HalfSpace and HPolyhedron (#1213)
  • added conversion to and from IntervalBox types from IntervalArithmetic (#1215)

Bug fixes

  • HPolyhedron's isempty method does not require the package Polyhedra anymore (#1195)
  • fixed dim of a UnionSet (#1200)
  • fixed constrained_dimensions of HalfSpace with sparse normal vector (#1212)

Enhancements

  • overapproximate for template directions now also accepts the raw type (i.e., without instantiating the dimension) (#1197)
  • the overapproximation of the convex hull of two zonotopes with another zonotope can now be used with zonotopes of different order (#1205)

v1.8.0

01 Mar 15:56
3042236
Compare
Choose a tag to compare

Announcements

Note: this release is fully compatible with Julia v0.6/v0.7/v1.0/v1.1.

Features

  • the unary function convex_hull(::Vector{AbstractVector}) now accepts points of arbitrary dimension >= 1, using specific algorithms for the uni-dimensional, two-dimensional and higher dimensional cases (#1168)
  • use promotion for the concrete linear map of polyhedra, allowing to use mixed numeric types (#1153)

Bug fixes

  • fixed an index problem in constraints_list of Zonotope (#1153)
  • fixed a crash in linear_map for polyhedra if the matrix was non-square (#1164)
  • fixed return type for rectangular linear maps (#1167)

Enhancements

  • × is now exported correctly (#1149)
  • conversion from polytopic types to HPolytope now call the constraints_list method (required by the interface), see (#1155)
  • conversion from one-dimensional hyperrectangular sets to interval (#1157)
  • overapproximation of hyperrectangular sets with intervals is faster, now falling back to a specific convert method (#1157)
  • faster overapproximation of CartesianProductArray of hyperrectangular sets (#1162)
  • faster hyperrectangular approximation of the lazy linear map of a hyperrectangular set (#1172)
  • faster overapproximate with HPolygon and box directions (#1180)

v1.7.0

23 Feb 13:50
08a965b
Compare
Choose a tag to compare

Announcements

Note: this release is fully compatible with Julia v0.6/v0.7/v1.0/v1.1.

Breaking changes

  • The output type of the concrete linear_map of polytopes has changed in some cases. In particular, in 2D we now create polygon types (HPolygon/VPolygon), and we try to stay close to the input type. We have also removed the option output_type. Use convert on the result to imitate the old behavior. (#1093)

Features

  • added remove_redundant_constraints for removing redundant constraints of an HPolygon, which is now used by default (#898)
  • added Universe set type (#1098, #1121)
  • added constraints_list from matrix and vector, and corresponding constructors for HPolygon/HPolygonOpt (#1102)
  • added lazy Resetmap operation type (#1114)
  • added concrete intersection between AbstractPolyhedron (#1120)
  • added concrete intersection between AbstractPolyhedron and polytopic ResetMap (#1139)

Bug fixes

  • fixed crash for isinvertible for sparse matrices (by converting to a dense matrix) (#1093)

Enhancements

  • added a new section on the LazySets manual about lazy intersections (#1089)
  • added the optional argument use_inv in the concrete linear_map of polyhedra to allow using either the pre-calculated full matrix inverse, inv(M), or to use left division over each normal direction (#1080, #1093)

v1.6.0

27 Jan 16:12
79a9678
Compare
Choose a tag to compare

Note: this release is fully compatible with Julia v0.7/1.0 and also with Julia v0.6.

Breaking changes

  • removed the conversion constructor for HPolygon and HPolytope; use convert(HPolytope, S) and convert(HPolygon, S) instead (#978)

Features

  • added most standard methods for UnionSet and UnionSetArray (#1012)
  • added membership test for VPolytope (#999)
  • added subset test for HPolyhedron (#975)
  • added linear_map for more sets:
    • HPolyhedron (requires map to be invertible) and HPolytope (#980),
    • Intersection (#1065),
    • EmptySet (#1062),
    • HalfSpace (#1067)
  • added split method for zonotopes (#1018)
  • added use_type_assumption option to isbounded for thoroughly checking for boundedness of HPolytope and HPolygon (#978)
  • added check_boundedness option to the constructor of HPolytope and HPolygon (#978)
  • added constraints_list for Hyperplane and Line (#1046), LinearMap (#1058), Intersection and IntersectionArray (#1053)
  • added tosimplehrep (#1053)
  • added remove_redundant_constraints and remove_redundant_constraints! (#1053)
  • added concrete intersection with LinearMap (#1069)
  • added AbstractPolyhedron interface (#1077)

Bug fixes

  • fixed isdisjoint between polyhedra (#1044)
  • fixed tohrep of VPolygon (#1072)
  • fixed an unbounded support value for an Intersection with a bounded set and an HPolyhedron (#1075)

Enhancements

  • efficient concrete intersection with AbstractSingleton (#1027)
  • intersection of polyhedra now makes use of remove_redundant_constraints by default, and it returns an empty set if the intersection is detected to be empty (#1040); use the use_polyhedra_interface=true keyword in intersection to get the old behavior
  • isempty for HPolyhedron and HPolytope does not require Polyhedra anymore (#1056)