Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Benchmarking with Egg Holder function #1

Open
StepanOzana opened this issue Nov 27, 2023 · 1 comment
Open

Benchmarking with Egg Holder function #1

StepanOzana opened this issue Nov 27, 2023 · 1 comment

Comments

@StepanOzana
Copy link

Hi,
I performed a few tests using an EggHolder function according to https://www.sfu.ca/~ssurjano/egg.html
Mostly it returns the expected results but not everytime.
I also wonder why the algorithm shows <0> indicating the ideal perfect accuracy in the last iteration.

226: <1.13687e-13> (-959.641) 512 404.232
227: <0> (-959.641) 512 404.232

Is there any way how to achieve the expected results everytime?

Here is my code:
https://drive.google.com/file/d/1rYvFGdhi8TAReqwBXG_O5w7h2Xl-Ip1W/view?usp=sharing

screenshot01
screenshot02

@eduardotrincaoconceicao
Copy link
Owner

eduardotrincaoconceicao commented Nov 27, 2023

Differential Evolution (DE) is a stochastic global optimization algorithm. Most of the time a stochastic optimizer converges to the/a global optimum; inevitably, sometimes it will converge to a local optimum. This is precisely what your results exhibit. Furthermore, different replication runs even when converging to the same optimum will produce slightly different results. It is intrinsic to the nature of this class of algorithms. (Therefore, to obtain reproducibility it is necessary to set the seed of the random number generator before calling jde.)

Only a deterministic optimization procedure will ensure the same exact result for different replication runs.

DE evolves a population of candidate solutions. At each iteration/generation jde tracks the absolute value difference between the candidate solution with the best objective function value and that with the median one, stopping the algorithm below a certain threshold. A value of zero means that half of the population has reached the best objective function value so far with identical values within the numerical precision of the computer. You can check this by using details = true and examining the poppar and popcost fields in the output structure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants