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

Request: No improvement stopping criteria #424

Open
DGIorio opened this issue Apr 29, 2020 · 3 comments
Open

Request: No improvement stopping criteria #424

DGIorio opened this issue Apr 29, 2020 · 3 comments

Comments

@DGIorio
Copy link

DGIorio commented Apr 29, 2020

Hello,
I would like to request the addition of a stopping criteria that stops the optimization process when there is no improvement in the best fitness in some number of generations. So the user would set a maximum number of generations to stop when there is no improvement.

It may cause some premature exit, but it can reduce the computational effort.

@darioizzo
Copy link
Member

I agree that such a stopping criteria is very useful and is missing in pagmo. It would be ideal to implement such a feature at a global level so that its then propagated to all UDAs, but thats difficult as each algorithm behvaior is encapsulated in its evolve method.

As a consequence, all stopping criterias are implemented at the UDA level, so that each UDA have different ones. We try to uniform the stopping criteria across UDAs, but thats done "manually" whenever we implement a UDA. So far the three main stopping criteria we try to have in mind when implementing a UDA are fevals, ftol and xtol.

To conclude, this feature would have to be implemented at the UDA level, and likely cannot be a property of the whole pagmo suite, only of single UDAs.

@darioizzo
Copy link
Member

darioizzo commented Apr 29, 2020

Maybe one could write some external util delegated to check if there were improvement in the champion (only for single objective) over tha last N fevals and signal it to the UDA. This would mean to add in the single UDAs that allow it a call to this util and a new exit point in each of the evolve?

@bluescarni
Copy link
Member

I think the best path would be to uniform the behaviour across the existing UDAs wrt stopping criteria, which could probably be done without too much code repetition if we find the right abstraction.

But I think that adding this feature to the general UDA interface would be overengineering.

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

No branches or pull requests

2 participants