Releases: ToKiNoBug/HeuristicFlow
Releases · ToKiNoBug/HeuristicFlow
HeuristicFlow v1.6.3
HeuristicFlow v1.6.2.1
This version has no new algorithms but some slight new tools.
Updates
- You can convert a
double
to its bianry form with functionconstexpr heu::binCode heu::encode(double)
, whereheu::binCode
is a 64 btis unsigned enumeration type. For inverse conversion, useconstexpr double heu::decode(heu::binCode)
. These two functions computes at compile time. - New box constraints :
heu::FixedDiscreteBox
andheu::FixedContinousBox
. You should pass the range via template parameter so that the range is fixed at compile time. For C++17, floating-point can't be passed through template parameters, so we haveheu::FixedContinousBox17
, which receives range data inheu::binCode
s.
HeuristicFlow v1.6.2
Updates:
- Add 10 selection methods for
SOGA
:RouletteWheel
,Tournament
,MonteCarlo
,Probability
,LinearRank
,ExponentialRank
,Boltzmann
andEliteReserved
. Selectiong method can also be determined at runtime. - Matrix types in SimpleMatrix module can evulate between different types.
- Box constraint in EAGloable module is rewritten.
- Add infinite box constraint (initialize by gaussian distribution).
- The PSO module has its own special box constraint.
Full Changelog: v1.6.1...v1.6.2
HeuristicFlow v1.6.0
Updates :
- New module : Atomic Orbit Search (AOS) and a new algorithm of the same name
- 19 template test functions for single-objective solvers (4 scalable and 15 nonscalable) in module EAGlobal
- You can call them like
heu::testFunctions<Eigen::Array2d,double>::eggHolder
.
- You can call them like
heu::array_traits<class T>
: New metafunction that are able to tell attributes of a general vector class like type, compile-time-size, element-type and whether a Eigen class or not.- Box constraints have new member fuction
applyConstraint(...)
now.
Changes :
- Depends on C++17 now.
HeuristicFlow v1.5.0
Updates:
- Add PSODefaults.
Changes:
- Generate document by doxygen
- Optimized NSGA2's performance.
- Add denpendent : libEigen
- ...
HeuristicFlow v1.4.1
Updates:
- Compability to C++14
- Versatile box constraint for all kinds of real, binary and symbolic encoding. You can assign much more variables at compile time.
- More default GA operators under box constriant : iFunNd,iFunXd, iFunNb, iFunXb, iFunNs, iFunXs, mFun_d, mFun_b and mFun_s.
- PSO module supports compile time initializpr now.
Changes:
- Macro in source file Heu_MAKE_GLOBAL no longer required.
HeuristicFlow v1.4.0
Updates:
- New module : EAGlobal
- Box constraint for GA
- min and max function with multiple parameters
Changes:
- GA now supports compile-time function binding
- NSGA2 uses an adaptively normalized congestion now
- Renamed OtGlobal after HfGlobal
HeuristicFlow v1.3.3
This project has been renamed as HeuristicFlow, while previous namespace name OptimT
was renamed as Heu
.
Updates:
- New MOEA: NSGA3
- New generic function to compute matrix product and inverse matrix using
Heu::MatrixDynamicSize
andHeu::MatrixFixedSize
. - MatrixMap.
- 2 methods to convey floating point numbers in template under C++20. (
Heu::DivCode
andHeu::PowCode
)
Changes:
- Macro
OptimT_DO_PARALLELIZE
is replaced byHeu_USE_THREADS
. - Macro
OptimT_NSGA2_RunTimeObjNum_MaxRTObjNum
is replaced byHeu_MOGA_MaxRunTimeObjNum
. - Macro
OptimT_USE_EIGEN
,OptimT_GA_USE_EIGEN
andOptimT_PSO_USE_EIGEN
are no longer required. Partial specializations for Eigen will be activated once you included Eigen before this lib.
Bugs Fixed:
- Fixed the bug that the size of MOGA's Pareto frontier exceeds the population size.
OptimTemplates v1.3.2
Updates:
- Fresher API : replace
std::tuple<Args...>
with single custom type. - Replace
otherOptFun
with virtual functionvirtual void customOptAfterEachGeneration()
. - Testing version of NSGA3.
Bugs fixed:
- Fixed the bug that
MatrixDynamicSize
failed to compile in debug mode -- static member are now encapsulated in static function.
Changes:
- When no other parameters provided,
Args_t
won't appear in initialize and fitness functions
OptimTemplates v1.3.1
Updates:
- NSGA2 now supports using Eigen's array types (
Eigen::Array<double,...>
) as fitness value with vectorized implementation of selection operation. - NSGA2 now supports working with runtime objective numbers.
Changes:
- New classes: MOGAAbstract, MOGABase, NSGABase, NSGA2Base (All of them are used to reduce code duplication while supporting runtime objective numbers and boosting with eigen arrays).