No description
  • C++ 98.3%
  • CMake 1.3%
  • Shell 0.4%
Find a file
Marcus Edel 65e0d03339
Merge pull request #399 from IWNMWE/agemoea_igd
Adding AGEMOEA and IGD.
2024-07-30 14:40:17 -04:00
.github Add actions to replace mlpack-bot. (#405) 2024-07-26 16:49:04 +02:00
CMake Fix cmake package export. 2020-05-06 12:25:28 +02:00
doc Remove extra space 2024-07-29 00:19:35 +05:30
include Merge pull request #399 from IWNMWE/agemoea_igd 2024-07-30 14:40:17 -04:00
scripts Merge branch 'master' into release-script-typo-fix 2020-10-31 10:50:04 -04:00
tests Merge pull request #399 from IWNMWE/agemoea_igd 2024-07-30 14:40:17 -04:00
.appveyor.yml bump to armadillo 10.8.2 2024-07-12 17:47:03 +02:00
.gitignore Fixing gradient of Ackley function and including Ackley test for Adam 2019-05-31 04:08:50 -05:00
.travis.yml bump to armadillo 10.8.2 2024-07-12 17:48:55 +02:00
CMakeLists.txt Bump minimum Armadillo version to 10.8.2 2024-07-10 01:42:42 +02:00
CONTRIBUTING.md Update and release version 2.21.1. 2024-02-16 02:33:12 +01:00
COPYRIGHT.txt Fix callback return values and clarify docs (#383) 2023-11-15 02:38:05 +01:00
example.cpp add short example program; expand README with example installation (#248) 2021-02-02 08:56:40 +01:00
HISTORY.md update HISTORY.md 2024-07-10 01:58:28 +02:00
LICENSE.txt Clarify BSL for catch. 2018-10-03 20:18:57 -04:00
README.md update requirement to C++14 and remove outdated info 2024-06-08 11:41:55 +02:00
UPDATING.txt Clarify versioning policy in the root directory. 2018-10-18 00:55:08 -04:00

ensmallen: a C++ header-only library for numerical optimization

ensmallen is a high-quality C++ library for non-linear numerical optimization.

ensmallen provides many types of optimizers that can be used for virtually any numerical optimization task. This includes gradient descent techniques, gradient-free optimizers, and constrained optimization. Examples include L-BFGS, SGD, CMAES and Simulated Annealing. ensmallen also allows optional callbacks to customize the optimization process.

Documentation and downloads: https://ensmallen.org

Requirements

Installation

ensmallen can be installed in several ways: either manually or via cmake, with or without root access.

The cmake based installation will check the requirements and optionally build the tests. If cmake 3.3 (or a later version) is not already available on your system, it can be obtained from cmake.org.

Example cmake based installation with root access:

mkdir build
cd build
cmake ..
sudo make install

Example cmake based installation without root access, installing into /home/blah/ (adapt as required):

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/home/blah/
make install

The above will create a directory named /home/blah/include/ and place all ensmallen headers there.

To optionally build and run the tests (after running cmake as above), use the following additional commands:

make ensmallen_tests
./ensmallen_tests --durations yes

Manual installation involves simply copying the include/ensmallen.hpp header and the associated include/ensmallen_bits directory to a location such as /usr/include/ which is searched by your C++ compiler. If you can't use sudo or don't have write access to /usr/include/, use a directory within your own home directory (eg. /home/blah/include/).

Example Compilation

If you have installed ensmallen in a standard location such as /usr/include/:

g++ prog.cpp -o prog -O2 -larmadillo

If you have installed ensmallen in a non-standard location, such as /home/blah/include/, you will need to make sure that your C++ compiler searches /home/blah/include/ by explicitly specifying the directory as an argument/option. For example, using the -I switch in gcc and clang:

g++ prog.cpp -o prog -O2 -I /home/blah/include/ -larmadillo

Example Optimization

See example.cpp for example usage of the L-BFGS optimizer in a linear regression setting.

License

Unless stated otherwise, the source code for ensmallen is licensed under the 3-clause BSD license (the "License"). A copy of the License is included in the "LICENSE.txt" file. You may also obtain a copy of the License at http://opensource.org/licenses/BSD-3-Clause

Citation

Please cite the following paper if you use ensmallen in your research and/or software. Citations are useful for the continued development and maintenance of the library.

@article{ensmallen_JMLR_2021,
  author  = {Ryan R. Curtin and Marcus Edel and Rahul Ganesh Prabhu and Suryoday Basak and Zhihao Lou and Conrad Sanderson},
  title   = {The ensmallen library for flexible numerical optimization},
  journal = {Journal of Machine Learning Research},
  year    = {2021},
  volume  = {22},
  number  = {166},
  pages   = {1--6},
  url     = {http://jmlr.org/papers/v22/20-416.html}
}

Developers and Contributors

  • Ryan Curtin
  • Dongryeol Lee
  • Marcus Edel
  • Sumedh Ghaisas
  • Siddharth Agrawal
  • Stephen Tu
  • Shikhar Bhardwaj
  • Vivek Pal
  • Sourabh Varshney
  • Chenzhe Diao
  • Abhinav Moudgil
  • Konstantin Sidorov
  • Kirill Mishchenko
  • Kartik Nighania
  • Haritha Nair
  • Moksh Jain
  • Abhishek Laddha
  • Arun Reddy
  • Nishant Mehta
  • Trironk Kiatkungwanglai
  • Vasanth Kalingeri
  • Zhihao Lou
  • Conrad Sanderson
  • Dan Timson
  • N Rajiv Vaidyanathan
  • Roberto Hueso
  • Sayan Goswami