4#ifndef _Stroika_Foundation_Math_Optimization_DownhillSimplexMinimization_h_
5#define _Stroika_Foundation_Math_Optimization_DownhillSimplexMinimization_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
12#include "Stroika/Foundation/Containers/Sequence.h"
21namespace Stroika::Foundation::Math::Optimization::DownhillSimplexMinimization {
23 using Characters::String;
24 using Containers::Sequence;
29 template <
typename FLOAT_TYPE>
30 using TargetFunction = function<FLOAT_TYPE (
const Sequence<FLOAT_TYPE>&)>;
35 template <
typename FLOAT_TYPE>
37 optional<unsigned int> fMaxIterations;
38 optional<FLOAT_TYPE> fNoImprovementThreshold;
40 nonvirtual
String ToString ()
const;
46 template <
typename FLOAT_TYPE>
50 unsigned int fIterationCount{};
52 nonvirtual
String ToString ()
const;
84 template <
typename FLOAT_TYPE>
95#include "DownhillSimplexMinimization.inl"
Results< FLOAT_TYPE > Run(const TargetFunction< FLOAT_TYPE > &function2Minimize, const Sequence< FLOAT_TYPE > &initialValues, const Options< FLOAT_TYPE > &options=Options< FLOAT_TYPE >{})
Downhill Simplex Minimization, AKA Nelder-Mead algorithm, to compute minimization.
String is like std::u32string, except it is much easier to use, often much more space efficient,...
A generalization of a vector: a container whose elements are keyed by the natural numbers.