-
Refactor
GradientDescentintoGradientDescentType<UpdatePolicyType, DecayPolicyType>and add theDeltaBarDeltaandMomentumDeltaBarDeltaoptimizers (#440). -
Fix an off-by-one bug where the actual number of executed iterations was one fewer than the specified
maxIterations(#443).
-
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_BEHAVIORmacro before includingensmallen.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
lowerBoundandupperBound(#435). Instead, pass an instantiatedBoundaryBoxConstraintto 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 theAugLagrangianoptimizer, 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.
-
Fix include statement in
tests/de_test.cpp(#419). -
Fix
exactObjectiveoutput for SGD-like optimizers when the number of iterations is an even number of epochs (#417). -
Increase tolerance in
demon_sgd_test.cpp(#420). -
Set cmake version range to 3.5...4.0 (#422).
- Remove unused variables to fix compiler warnings (#413).
-
Update to C++14 standard (#400).
-
Bump minimum Armadillo version to 10.8 (#404).
-
For Armadillo 14.2.0 switch to
.index_min()and.index_max()(#409). -
Added IPOP and BIPOP restart mechanisms for CMA-ES. (#403).
-
Fix numerical precision issues for small-gradient L-BFGS scaling factor computations (#392).
-
Ensure the tests are built with optimisation enabled (#394).
-
Clarify return values for different callback types (#383).
-
Fix return types of callbacks (#382).
-
Minor cleanup for printing optimization reports via
Report()(#385).
-
Implementation of Active CMAES (#367).
-
LBFGS: avoid generation of NaNs, and add checks for finite values (#368).
-
Fix CNE test tolerances (#360).
-
Rename
SCDoptimizer, toCD(#379).
- Avoid deprecation warnings in Armadillo 11.2+ (#347).
-
Added DemonSGD and DemonAdam optimizers (#211).
-
Fix bug with Adam-like optimizers not resetting when
resetPolicyistrue. (#340). -
Add Yogi optimizer (#232).
-
Add AdaBelief optimizer (#233).
-
Add AdaSqrt optimizer (#234).
-
Bump check for minimum supported version of Armadillo (#342).
-
Accelerate SGD test time (#330).
-
Fix potential infinite loop in CMAES (#331).
-
Fix SCD partial gradient test (#332).
-
Add gradient value clipping and gradient norm scaling callback (#315).
-
Remove superfluous CMake option to build the tests (#313).
-
Bump minimum Armadillo version to 9.800 (#318).
-
Update Catch2 to 2.13.7 (#322).
-
Remove redundant template argument for C++20 compatibility (#324).
-
Fix MOEAD test stability (#327).
-
CheckArbitraryFunctionTypeAPI extended for MOO support (#283).
-
Add Indicators for Multiobjective optimizers (#285).
-
Make Callback flexible for MultiObjective Optimizers (#289).
-
Add ZDT Test Suite (#273).
-
Add MOEA-D/DE Optimizer (#269).
-
Introduce Policy Methods for MOEA/D-DE (#293).
-
Add Das-Dennis weight initialization method (#295).
-
Add Dirichlet Weight Initialization (#296).
-
Improved installation and compilation instructions (#300).
-
Disable building the tests by default for faster installation (#303).
-
Modify matrix initialisation to take into account default element zeroing in Armadillo 10.5 (#305).
-
Fix CNE test trials (#267).
-
Update Catch2 to 2.13.4 (#268).
-
Add clarifying comments in problems/ implementations (#276).
-
Fix test compilation issue when
ENS_USE_OPENMPis set (#255). -
Fix CNE initial population generation to use normal distribution (#258).
-
Fix compilation warnings (#259).
-
Remove
AdamSchafferFunctionN2Testtest from Adam test suite to prevent spurious issue on some aarch64 (#265).
-
Expand README with example installation and add simple example program showing usage of the L-BFGS optimizer (#248).
-
Refactor tests to increase stability and reduce random errors (#249).
- Fix include order to ensure traits is loaded before reports (#239).
-
Make a few tests more robust (#228).
-
Add release date to version information. (#226)
-
Fix typo in release script (#236).
- Fix implementation of fonesca fleming problem function f1 and f2 type usage and negative signs. (#223)
-
Fix release script (remove hardcoded information, trim leading whitespaces introduced by
wc -lin MacOS) (#216, #220). -
Adjust tolerance for AugLagrangian convergence based on element type (#217).
-
Add NSGA2 optimizer for multi-objective functions (#149).
-
Update automatic website update release script (#207).
-
Clarify and fix documentation for constrained optimizers (#201).
-
Fix L-BFGS convergence when starting from a minimum (#201).
-
Add optimizer summary report callback (#213).
-
Fix total number of epochs and time estimation for ProgressBar callback (#181).
-
Handle SpSubview_col and SpSubview_row in Armadillo 9.870 (#194).
-
Minor documentation fixes (#197).
-
Correction in the formulation of sigma in CMA-ES (#183).
-
Remove deprecated methods from PrimalDualSolver implementation (#185.
-
Update logo (#186).
- Change "mathematical optimization" term to "numerical optimization" in the documentation (#177).
-
Require new HISTORY.md entry for each PR. (#171, #172, #175).
-
Update/fix example documentation (#174).
-
Prevent spurious compiler warnings (#161).
-
Fix minor memory leaks (#167).
-
Revamp CMake configuration (#152).
-
Allow callback instantiation for SGD based optimizer (#138).
-
Minor test stability fixes on i386 (#156).
-
Fix Lookahead MaxIterations() check. (#159).
- Fix Lookahead Synchronization period type (#153).
-
SGD callback test 32-bit safety (big number) (#143).
-
Use "arbitrary" and "separable" terms in static function type checks (#145).
-
Remove 'using namespace std' from
problems/files (#147).
-
All
Optimize()functions now take any matrix type; so, e.g.,arma::fmatorarma::sp_matcan be used for optimization. See the documentation for more details (#113, #119). -
Introduce callback support. Callbacks can be appended as the last arguments of an
Optimize()call, and can perform custom behavior at different points during the optimization. See the documentation for more details (#119). -
Slight speedups for
FrankWolfeoptimizer (#127).
- Fix PSO return type bug (#126).
-
Update HISTORY.md to use Markdown links to the PR and add release names.
-
Fix PSO return type bug (#124).
-
Add option to avoid computing exact objective at the end of the optimization (#109).
-
Fix handling of curvature for BigBatchSGD (#118).
-
Reduce runtime of tests (#118).
-
Introduce local-best particle swarm optimization,
LBestPSO, for unconstrained optimization problems (#86).
-
Fix
-Wreorderinqhadamwarning (#115). -
Fix
-Wunused-private-fieldwarning inspsa(#115). -
Add more warning output for gcc/clang (#116).
- Added QHAdam and QHSGD optimizers (#81).
- Fixes for BigBatchSGD (#91).
- Handle
eig_sym()failures correctly (#100).
-
SPSA test tolerance fix (#97).
-
Minor documentation fixes (#95, #98).
-
Fix newlines at end of file (#92).
-
Fixes for SPSA (#87).
-
Optimized CNE and DE (#90). Changed initial population generation in CNE to be a normal distribution about the given starting point, which should accelerate convergence.
- Minor documentation fixes (#82).
- Fix -Wreorder warning (#75).
- Fix list of contributors.
- Make sure all files end with newlines.
-
Add link to ensmallen PDF to README.md.
-
Minor documentation fixes. Remove too-verbose documentation from source for each optimizer (#61).
-
Add FTML optimizer (#48).
-
Add SWATS optimizer (#42).
-
Add Padam optimizer (#46).
-
Add Eve optimizer (#45).
-
Add ResetPolicy() to SGD-like optimizers (#60).
- Minor documentation fixes.
-
Add WNGrad optimizer.
-
Fix header name in documentation samples.
-
Fixes for GridSearch optimizer.
-
Include documentation with release.
-
Initial release.
-
Includes the ported optimization framework from mlpack (http://www.mlpack.org/).