What’s new#
Version 0.2.0 (development)#
New Nondominated Sorting (Pareto ranking) benchmarks.
pareto_rank()is faster in 3D.
Version 0.1.10 (24/11/2025)#
is_nondominated(): Fix wrong assert (#38).
Version 0.1.9 (31/10/2025)#
hv_contributions()ignores dominated points by default. Setignore_dominated=Falseto restore the previous behavior. The 3D case uses the HVC3D algorithm.New function
any_dominated()to quickly detect if a set is nondominated.New function
generate_ndset()to generate random nondominated sets with different shapes.New example Sampling Random Nondominated Sets.
is_nondominated(),any_dominated(),pareto_rank()now handle single-objective inputs correctly (#27, #29).Ranks returned by
pareto_rank()are 0-based.is_nondominated()andfilter_dominated()are faster for dimensions larger than 3.moocorewheels are now built foraarch64(ARM64) in Linux and Windows. See the installation instructions.is_nondominated()andfilter_dominated()are now stable in 2D and 3D with!keep_weakly, that is, only the first of duplicated points is marked as nondominated.
Version 0.1.8 (15/07/2025)#
Correct license to LGPL v2.1 or later.
Bump dependencies to
cffi>=1.17.1andsetuptools>=77.0.3.eaf(),vorob_t()andvorob_dev()take the set indices as a separate argumentsetsfollowing the API of the R package.New example Empirical Attainment Function.
Document EAF and Vorob’ev expectation and deviation in more detail.
New online dataset:
DTLZLinearShape.8d.front.60pts.10(seeget_dataset()).New default method in
hv_approx(). Computation is now done in C, so it is much faster.hv_contributions()is much faster for 2D inputs.
Version 0.1.7 (04/06/2025)#
hypervolume()now uses the HV3D+ algorithm for the 3D case and the HV4D+ algorithm for the 4D case. For dimensions larger than 4, the recursive algorithm uses HV4D+ as the base case, which is significantly faster.read_datasets()is significantly faster for large files.is_nondominated()andfilter_dominated()are faster for 3D inputs.New function:
hv_contributions().New online datasets:
test2D-200k.inp.xzandran.1000pts.3d.10(seeget_dataset()).
Version 0.1.6 (14/05/2025)#
New function:
largest_eafdiff().New class:
RelativeHypervolume.New dataset
tpls50x20_1_MWT.csv.Extended example Computing Multi-Objective Quality Metrics.
vorobT()andvorobDev()were renamed tovorob_t()andvorob_dev()to follow Python convention.get_dataset_path()andget_dataset()can download large datasets from a remote repository.
Version 0.1.4 (30/10/2024)#
Improved example Using moocore with Pandas to work in Pandas version >= 2.
Changed behavior of
apply_within_sets(). The previous behavior could lead to subtle bugs.
Version 0.1.3 (28/10/2024)#
New:
Hypervolume: Object-oriented API for hypervolume indicator.New:
apply_within_sets(): Utility function to apply operations to individual datasets.New:
is_nondominated_within_sets(): Utility function to identify nondominated points within sets.New example using
pandas.DataFramein Using moocore with Pandas.Fix bug in
normalise()when the input ispandas.DataFrameor some other non-contiguous array.
Version 0.1.2 (18/09/2024)#
New:
hv_approx()Documentation improvements.
New gallery examples.