After several years of development, I share with you Metaheuristics.jl
This package implements state-of-the-art metaheuristic algorithms for single and multi-objective optimization. The aim of this package is to provide easy to use (and fast) metaheuristics for numerical global optimization.
Metaheuristics.jl includes:
Popular algorithms such as Differential Evolution, PSO, NSGA-II, NSGA-III, and moreβ¦
Performance Indicators such as IGD, hypervolume, among others.
Test Problems for single and multi-objective optimization.
Congratulations on the package! I see you have some constraint handling in some of the algorithms. I think this might be the first Julia package for metaheuristics that can handle equality and inequality constraints natively. Would be great to create a wrapper for Metaheuristics in Nonconvex.jl.
Very often I need to optimize expensive black-box functions, and having an optimizer that offers multi-threaded, simultaneous evaluation of multiple candidate solutions significantly reduces execution time. Please consider adding this option to your population-based optimizers.
Say, I am only an occasional user to this interesting package.
After working fine earlier, now it seems that it does not regocnize βBitArraySpaceβ
UndefVarError: `BitArraySpace` not defined
I have tried Metaheuristics.BitArraySpace, etc and looked all over, but cannot figure out why the same code which worked earlier now does not work
Thanks for any hints
Hi! Thank you for the package - it is absolutely great.
I have just one question:
How does Metaheuristics.jl βpenalizeβ the objective function for not satisfying the constraints? From what I gather, it doesnβt use penalty method. Does it use something along the lines f^{\prime}(x) = f(x) (1 + \sum |g(x)|)?
Looking at the list of algorithms Algorithms Β· Metaheuristics.jl, I would say that the question shouldnβt be asked at the higher level of Metaheuristics.jl, but at the lower level of each algo, since some of them donβt support constraint.
Looking at the classical DE algo, I see no discussion of constraints in the doc. I looked at the DE code, but found nothing about constraints in DE.jl. However, there is a epsilonDE.jl which seems to be specialized for constrainted problem. But is this epsilonDE documented? Or is there an automatic switch to epsilonDE when calling DE solver on a constrained problem?
Ah yes, my mistake. Since DE and epsilonDE are siblings in the source tree, I was expecting them side-by-side in the table.
But now back to @AkchurinDA question: how are constraints implemented? Actually, to make things tidier, I suggest @AkchurinDA could create a dedicated thread .