jakobbossek / smoof

Single- and Multi-Objective Optimization Test Functions
http://jakobbossek.github.io/smoof/
Other
36 stars 16 forks source link

Incorrect Instance ID mapping in makeBiObjBBOBFunction #139

Closed schaepermeier closed 1 year ago

schaepermeier commented 2 years ago

The mapping of the bi-objective instance IDs to the instance IDs of the constituent single-objective BBOB functions is implemented incorrectly in makeBiObjBBOBFunction.

Currently, only the base rule is implemented: https://github.com/jakobbossek/smoof/blob/bdb8164839374356ea824e19e1f1f995e08dcf92/R/makeBiObjBBOBFunction.R#L54-L58

However, there exist a number of exceptions to this rule. IIDs 1 and 2 are defined differently for historical reasons of the benchmark. Also, the IID of the second function is incremented if the optima of the constituent functions are too close for any combination of dimensions = 2,3,5,10,20,40 and all relevant (combinations of) constituent functions. See also: http://numbbo.github.io/coco-doc/bbob-biobj/functions/#instances, and its implementation in COCO here: https://github.com/numbbo/coco/blob/29ac4063cea8cf74257e2a0671a6cafc4d5e7752/code-experiments/src/suite_biobj_utilities.c#L136-L238

For all bi-objective IIDs up to 15, which are currently relevant for the benchmark, we get deviations for IIDs 1, 2, 9 and 15. This is easy to check with the lookup table implemented in COCO for these specific instances: https://github.com/numbbo/coco/blob/29ac4063cea8cf74257e2a0671a6cafc4d5e7752/code-experiments/src/suite_biobj_utilities.c#L23-L39

I can provide a PR in a reasonable time. I already implemented this change for another project, though only for the "lookup table" part. Here I would try to implement it as closely to COCO as possible. We could consider interfacing COCO's implementation directly as well, though I am not sure how much work that entails.

jakobbossek commented 1 year ago

Hi, thanks for reporting. I know this issue is quite old, but could you prepare a PR?

schaepermeier commented 1 year ago

@jakobbossek Added the PR :-)

jakobbossek commented 1 year ago

Thanks Lennart! I will have a look at your PR tomorrow.

jakobbossek commented 1 year ago

Merged