-
Notifications
You must be signed in to change notification settings - Fork 610
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
Clarification of potential bug in ISRES implementation #590
Comments
I haven't looked at this code for years, but it's possible you are right. Can you try the modified version on a test problem? |
I just tried both versions with the test-tool (testopt) on all objective functions with seed equaling to There is for some values a slight difference, the biggest one is at Here is the output with the current version of ISRES:
And here is the output with my proposed modification. For convenience I added an additional printf-statement to the ISRES implementation.
What is your opinion about that? |
What stopping criteria are you using? I would use something like It would be good to try it on a problem with a nonlinear constraint, e.g. https://github.com/stevengj/nlopt/blob/master/test/t_tutorial.cxx (probably after #591 is merged so that you can see the evaluation count). Update: I tried the old and new versions of (As I said, I don't remember this code very well; I'd have to go back and read it and the paper carefully to be sure what was intended here.) |
In the referenced paper, the ISRES algorithm contains the following line for differential variation of the best$k < \mu$ :
In the corresponding code this is stated as
xs[rk*n+j] += GAMMA * (x0[j] - xs[(k+1)*n+j])
where
int rk = irank[k];
Since$x_k'$ and $x_i$ , shouldn't for referencing $x_{i+1}$ instead of
xs[rk*n+j]
references similarlyxs[(k+1)*n+j]
,the following be used:
xs[irank[k+1]*n+j]
?My current understanding is that$k+1$ in the population set, but which is - from my understanding of the algorithm at this point - not necessarily the ranked point $x_{i+1}$ that should be actually accessed.
xs[(k+1)*n+j]
just references the point with indexFull affected line can be found here:
nlopt/src/algs/isres/isres.c
Line 260 in 128b04c
Would appreciate any comments or clarifications regarding this matter.
The text was updated successfully, but these errors were encountered: