All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.13.1 - 2024-11-08
- use unzip to support 1.69.0 as MSRV
- clippy lints
- add codspeed link to readme
- change indents
0.13.0 - 2024-11-05
- add optional parameter names field to
Status
- add
serde
serialization and deserialization toStatus
- switch to codspeed for benchmarks
0.12.2 - 2024-10-24
- change default tolerances to be a bit more realistic
0.12.1 - 2024-10-21
- store
Algorithm
in aBox
inMinimizer
and addnew_from_box
constructor - add trait bound to constructor
- add test for constructors
0.12.0 - 2024-10-21
- use
dyn-clone
to passAlgorithm
s toMinimizer
s by reference
- add criterion benchmark comparison for PRs
- update documentation to reflect the output of pretty-printing a
Status
0.11.3 - 2024-10-19
- add a feature to make Ctrl-C gracefully stop the algorithm and return the fit result with a message
0.11.2 - 2024-10-17
- allow
Observer
s to modify fitStatus
and terminate minimization
0.11.1 - 2024-10-17
- relocate html docs header
- fix link in README
- Merge branch 'main' of https://github.com/denehoffman/ganesh
- correct default in docstring
- add comma
0.11.0 - 2024-09-12
- add
Display
toMinimizer
- add initial value and bounds to
Status
and improveDisplay
output - add (sketchy) function to check if a parameter is at its bounds
- add
UpperExp
trait bound toMinimizer
Display
- make sure
Status
is reset on a new run of the same minimizer
- move all
Status
structs out ofAlgorithm
s and intoMinimizer
andAlgorithm
method signatures
0.10.0 - 2024-09-10
- move Hessian inversion to
Status
and addhess
field
- use cargo-llvm-cov (messed up git history on previous attempt)
- use correct internal/external bounded/regular calls in all algorithms
- change finite difference delta
- Merge pull request #31 from denehoffman/hotfixes
- change implementation of Hessian to use gradients
- fix link
0.9.1 - 2024-09-09
- ensure all algorithms reset completely when their initialize method is called
- use set_cov to also calculate errors, change method to take an
Option
- update BFGS and L-BFGS methods to be closer to the implementation for L-BFGS-B and fix errors in L-BFGS causing incorrect convergence
- update readme and main doc
- add basic convergence tests to all algorithms
- add leading signs to
Status
Display
method - improve pretty printing for
Status
0.9.0 - 2024-09-09
- add errors to all algorithms
- add Hessian evaluation to
Function
trait - kickstart BFGS with H-inverse scaling
- switch to using nalgebra data structures by default
- simplify L-BFGS algorithm and ensure the first few steps are computed correctly
- left and right matrices were switched by accident
- make terminator epsilon fields public for BFGS methods, set default f tolerance to epsilon rather than its cube root
0.8.5 - 2024-09-09
- reboot L-BFGS-B on invalid line searches
- follow strong Wolfe condition a bit more carefully
- make bounds inclusive
- ensure sufficient decrease is met before marking line search as valid
- make
g_eval
increment gradient evaluations rather than function evaluations - use trait to implement ordering on float-like generics
- remove unused import
- remove comment
0.8.4 - 2024-09-03
- use absolute value for absolute tolerance
- reverse some dot products with the wrong dimensions
0.8.3 - 2024-09-03
- switch sign on function termination condition
0.8.2 - 2024-09-03
- add function value terminators for BFGS algorithms
- add function value terminators for BFGS algorithms
0.8.1 - 2024-09-03
- add gradient tolerance to L-BFGS-B
- Merge branch 'main' into development
- export BFGS methods in mod
0.8.0 - 2024-09-03
- add L-BFGS-B algorithm
- update line search to take a
max_step
optional argument and return a bool flag of validity rather than anOption
- add
LineSearch
trait and implementations of BFGS and L-BFGS algorithms - update
NelderMead
to count gradient evals and use bounded interface - add bounded evaluation shortcuts to
Function
trait and count gradient evaluations inStatus
- simplify logic by removing internal
m
- change to inequality to ensure a proper status message if the max iterations are passed
- fix brackets in readme and update main lib docs
- update readme
- remove unused collections module
0.7.1 - 2024-08-23
- fix doctests
- make minimize return
Result<(), E>
and storeStatus
in theMinimizer
struct
0.7.0 - 2024-08-23
- add useful assert warning for trying to construct a
NelderMead
Simplex
with fewer than 2 points - add check to make sure starting position is within bounds
- add display method, methods for getting
lower
andupper
bounds, andcontains
method forBounds
- add
Debug
s toNelderMead
- add preliminary implementation of BFGS algorithm
- add method to return the gradient and inverse of Hessian matrix
- remove tracking
main.rs
, which I use for quick demos - adaptive Nelder-Mead now requires inputting the dimension
- remove out-of-bounds issue
- step direction should be opposite the gradient
p
is-grad_f
so this was right all along- allow expect in Hessian inverse function
- update BFGS algorithm to recent changes with ganesh
- change
learning_rate
to anOption
in gradient descent
- adds documentation to all parts of crate, additionally makes some
Algorithm
methods returnResult
s now - fix typo in example
- update dependencies
- update licensing
- switch license to MIT
- add Bounds section to TOC
- correct statements about
Function
trait in readme - typo in readme
- update README.md
- major rewrite of library, adds experimental bounds to Nelder Mead
- qualify path to
abs
function - Merge remote-tracking branch 'origin/bfgs' into development
- change slice to
DVector
in documentation - update docs and fix links/footnotes
0.6.0 - 2024-08-17
- reduces the
Field
trait to usenum
traits rather thannalgebra
'sRealField
- ensure all methods use the
Field
trait rather than justFloat
for better compatibility - re-export
nalgebra::DVector
- fix some of the documentation to reflect recent changes to the crate
0.5.0 - 2024-08-15
- change most slice types to
nalgebra::DVector
s to make algorithms more ergonomic, addLineSearch
algorithms
0.4.0 - 2024-07-30
- undo changes to previous version, lifetimes make things more difficult to work with for end-users. Removed NelderMeadMessage.
0.3.1 - 2024-07-30
- change functions to references to avoid cloning any underlying function data
0.3.0 - 2024-07-19
- switch &Option to Option<&args> and remove messages in favor of extending Minimizer trait
- add Send/Sync to Function
- change callback to no longer be optional, this just required typing None::<fn(&)> everywhere which is way uglier than ||{}
- make callback optional to avoid toilet bowl closure
- Merge branch 'development' of github.com:denehoffman/ganesh into development
- update crate docs to reflect new changes
- add wordmark
- add logo to readme
- remove num::Float trait dependence
- add logo
- Merge branch 'main' into development
0.2.0 - 2024-07-14
- re-implement args that were lost in merge
- move main traits to core module and modify gradient and hessian methods to work better at larger values
- update docstrings to reflect arguments
- Merge branch 'development' of https://github.com/denehoffman/ganesh into development
- add benchmark
- release
0.1.0 - 2024-07-13
- switch to typed-builder for Result-less builder patterns
- first commit, basic traits, some test functions, and some basic optimization algorithms
- ignore doctests that aren't meant to be tests
- add metadata to Cargo.toml
- create release.yml
- fix \geq symbol
- update documentation to match README and newer features
- Create LICENSE
- add workflows
- many interconnected changes that I don't care to write individual commits for
- remove BFGS algorithm (for now)
- add KaTeX header
- create README.md