numbbo / coco

Numerical Black-Box Optimization Benchmarking Framework
https://numbbo.github.io/coco
Other
263 stars 91 forks source link

algorithm identification and listing #1413

Closed nikohansen closed 7 years ago

nikohansen commented 7 years ago

The user should be able to specify a "list of algorithms" in a convenient way. Currently, glob.glob is our method of choice (giving a list of folder names), which works for folder-wise locally stored data. More specifically, "algorithm" means here a "data set" generated from an experiment of one algorithm on one benchmark suite. CAVEAT: such a "data set" is represented as a DataSetList in cocopp, which is a list of DataSets (a DataSet for each problem). However, a DataSetList may hold DataSets from different experiments and algorithms, and often does.

It would be useful to be able to reference remote data (or any data for that matter) via a unique ID in a "list of algorithms", which could be used interchangeably with the folder name. A simple number may be useful, as well as the possibility to define one or several aliases for any stored experiment.

Usecase: defining a list of algorithms to be displayed in the background.

Remark that the load function does not use the folder name as key for DataSetList.dictByAlg, see also issue #1412.

nikohansen commented 7 years ago

See also issue #1533

dtusar commented 7 years ago

Include also this (from #1532, by @nikohansen):

I suggest also to write a helper function which gives access to the test data which are distributed with the code (or downloaded). Like this, the tests don't need to bother getting the path right. We then also could write the above examples such that they actually work out of the box for everyone. For example,

import cocopp
cocopp.test_data_files()
["/Users/hansen/git/coco/code-postprocessing/cocopp/data/MCS.tgz", 
 "/Users/hansen/git/coco/code-postprocessing/cocopp/data/IPOP-CMA-ES.tgz"]

by default or whatever is there in a controlled way.

nikohansen commented 7 years ago

The current solution is:

import cocopp
cocopp.data_archive.find()
['bbob/2009/ALPS_hornby_noiseless.tgz',
 'bbob/2009/AMALGAM_bosman_noiseless.tgz',
 'bbob/2009/BAYEDA_gallagher_noiseless.tgz',
 'bbob/2009/BFGS_ros_noiseless.tgz',
 ...
cocopp.bbob.find()
['2009/ALPS_hornby_noiseless.tgz',
 '2009/AMALGAM_bosman_noiseless.tgz',
 '2009/BAYEDA_gallagher_noiseless.tgz',
 '2009/BFGS_ros_noiseless.tgz',
 ...

and looks workable for the time being, hence this can be close.