Released Sept. 30, 2025.
-
SGD-like optimizers now all divide the step size by the batch size so that step sizes don't need to be tuned in addition to batch sizes. If you require behavior from ensmallen 2, define the
ENS_OLD_SEPARABLE_STEP_BEHAVIOR
macro before including ensmallen.hpp (#431). -
Remove deprecated
ParetoFront()
andParetoSet()
from multi-objective optimizers (#435). Instead, pass objects to theOptimize()
function; see the documentation for each multi-objective optimizer for more details. A typical transition will change code like:optimizer.Optimize(objectives, coordinates); arma::cube paretoFront = optimizer.ParetoFront(); arma::cube paretoSet = optimizer.ParetoSet();
to instead gather the Pareto front and set in the call:
arma::cube paretoFront, paretoSet; optimizer.Optimize(objectives, coordinates, paretoFront, paretoSet);
-
Remove deprecated constructor for Active CMA-ES that takes
lowerBound
andupperBound
(#435). Instead, pass an instantiatedBoundaryBoxConstraint
to the constructor. A typical transition will change code like:ActiveCMAES<FullSelection, BoundaryBoxConstraint> opt(lambda, lowerBound, upperBound, ...);
into
ActiveCMAES<FullSelection, BoundaryBoxConstraint> opt(lambda, BoundaryBoxConstraint(lowerBound, upperBound), ...);
-
Add proximal gradient optimizers for L1-constrained and other related problems:
FBS
,FISTA
, andFASTA
(#427). See the documentation for more details. -
The
Lambda()
andSigma()
functions of theAugLagrangian
optimizer, which could be used to retrieve the Lagrange multipliers and penalty parameter after optimization, are now deprecated (#439). Instead, pass a vector and a double to theOptimize()
function directly:augLag.Optimize(function, coordinates, lambda, sigma)
and these will be filled with the final Lagrange multiplier estimates and penalty parameters.