-
Notifications
You must be signed in to change notification settings - Fork 90
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
[Bug report] Logger logging noisy function values instead of noisy-free ones for the bbob-noisy
suite (?).
#2249
Comments
Actually, I was just going through the |
Maybe you can link the to place in the code you are referring to, but isn't the |
bbob-noisy
suite.bbob-noisy
suite (?).
To me it actually looks like it is all the way round, here's why: In the
I assume it is the function that the logger calls for evaluating the objective and constraints (when present). The evaluation of the objective function, is done in the following way:
The only lines that are of interest for us now are the following two:
and the last one that I pasted here:
So it looks like that the logger uses the If we look in the It is defined in the following way:
I think that this should mean that the logger is still logging the correct 'noise-free' value... If this is actually the case, for now I wouldn't be able to say what might have cause the strange behavior we observed the other day by the random search. |
A technical hint, you can create links to the code by clicking on the line number when looking at the code at Github in the browser. |
I don't see how this considers my original point though. I think, as I wrote, the Given that by evaluating the |
Bug description
I ran some experiments on the
bbob-noisy
suite and yesterday, while we were discussing about the results with @nikohansen and @brockho,, we found out a pretty weird behavior of the algorithms on the newly implementedbbob-noisy
test suite, thus we decided to run a random search as well and compare the results of our run with the data archive from 2009 and we found out that they seemed to be pretty different, so we decided to look at theexdata
folder, which is created (I gues by thecma
code) when an experiment is run and we found out that, most likely, the root cause of this weird behaviour, except for some difference in the algorithm's settings (which are not relevant in the case of random search), were probably due to some problem in the logging facilities, especially relative to the logging of the noisy objective functions. Indeed, if we look at one example, let' say run on the F101 I 1 of the bbob-noisy suite, and wze runhead ./exdata/results/fmin2_1000x_on_bbob/data_f1/bbobexp_f1_DIM2.dat
, the first lines are:So, if the third number (+1.402094080e+00) is the noise free function value minus fopt (7.948000000000e+01) and the fourth is the measured (noisy) fitness (+8.088209408e+01), the we would expect, since the function is noisy, to have:
noise-free fitness - Fopt (7.948000000000e+01) + sum g_i + Fopt != measured fitness
, but1.402094080e+00 + 7.948000000000e+01 = +8.088209408e+01
So this means that the logger is actually logging the noisy function values, which I guess is not the wanted behavior and is probably going to reveal itself as being the cause of these weird results that we were observing yesterday.
Does what I am saying make any sense at all??
Further Considerations
We though that a potentially useful way to proceed would be to add a flag to the
coco_problem_t
"class", something likeint is_noisy_problem
and then, at each evaluation, saving the noise free function value somewhere (most likely in thedata
attribute ofcoco_problem_t
) and then have the logger check theis_noisy_problem
flag for each problem and go and retrieve this noise free value that we will be storing somewhere instead of the function value in they
array...I will now create a new branch from feat-noisy-suite and try to adjust the code accordingly.
Thank you very much for your time and attention!
Best regards,
Lorenzo
The text was updated successfully, but these errors were encountered: