111 create yaml template for problem submission#121
Conversation
Dvermetten
left a comment
There was a problem hiding this comment.
Maybe it would be useful to have some sort of comments to describe what the fields are / what would be valid input, specifically for the cases where there is a difference between quoted and non-quoted input. Example:
variables: # information about the input variables
types: continuous # can be one of (continuous, integer, binary, mixed)
conditional: 'no' # whether there are conditional dependencies between variables, 'yes' or 'no'
dimensionality: scalable # number of input variables, either as a number (in quotes) or scalable
CIGbalance
left a comment
There was a problem hiding this comment.
Thanks for this! The comments are mostly easy fixes or not that serious.
But I am mostly wondering of how this is supposed to be used? It is called a template, but it has BBOB-specific entries? I think this increases the risk of biasing the results.
I think I would suggest doing a template with a lot more comments (like @Dvermetten suggested) and then we can use this as real data as well as link to it as an example?
| - name: | ||
| short: BBOB | ||
| full: Real-Parameter Black-Box Optimization Benchmarking | ||
| suite/generator/single: suite |
There was a problem hiding this comment.
I still think it would be best to enter problems separately, but I understand the necessity of streamlining this process. So if we want to allow entering suites, maybe we have different templates? Because some values might only make sense for a suite? Otherwise, for a suite, a lot of the input would be "varies" for number of objectives, variables, constraints, dynamic, noise, etc?
There was a problem hiding this comment.
Yes, it would be nice to have problems separately, I have also prototyped how it might work to have both the suite and component problems, see here:
Line 1107 in 84b34b6
I am not sure about separate templates for suites or problems, but we can think about this and discuss what makes sense. I would imagine, e.g., the BBOB sphere still has a bunch of "varies", because it is scalable in the number of variables for example. For a suite, I would want an exhaustive list (e.g., noise: yes, no / optional, or something like that) of the options, rather than a vague "varies". I will describe this in a comment in the template.
There was a problem hiding this comment.
TODO: create a new issue for this.
|
Work in progress ... ` Please enter the relevant information.Fields that are not relevant can be left empty.
|
Yes we should do that. |
We should split between
|
|
To check what fields from the other info (based on the form) should be added to the template (taken from a different problem): |
I wonder if we should separate this into numbers for soft and hard constraints:
These are currently not yet included
|
This should be included now |
|
TODO:
|
| number: '1' # (list of) fixed numbers, or ranges (5-11,19,85), scalable if it can be any value | ||
| variables: # Information about the input variables | ||
| types: continuous # Can be one or more of (continuous, integer, binary, categorical, mixed) in case of mixed, describe which mixes are possible | ||
| conditional: 'no' # Whether there are conditional dependencies between variables, 'yes' or 'no' |
There was a problem hiding this comment.
I'm unsure whether this information is needed. I would always say "yes" since I can't imagine a situation where there are no dependencies but I guess there surely are. Anyhow, I wonder whether this has any value?!?
| types: continuous # Can be one or more of (continuous, integer, binary, categorical, mixed) in case of mixed, describe which mixes are possible | ||
| conditional: 'no' # Whether there are conditional dependencies between variables, 'yes' or 'no' | ||
| dimensionality: | ||
| scalable: 'yes' # Is the dimensionality scalable yes or no |
There was a problem hiding this comment.
If the number is a range (or "any"), it's scalable, if not, it's not.
Isn't it that simple?
And if not, is the field really required or just for experts?
| @@ -0,0 +1,62 @@ | |||
| # Please enter the information relevant to your problem/suite/generator. | |||
| # | |||
There was a problem hiding this comment.
General comment:
I'd prefer to have the number of fields as small as possible to just not discourage people from filling the template. That's why I question every entry and try to keep the template as easy as possible.
I also think the template should not address optimisation experts but domain experts who might not be aware of our terminology.
| scalable: 'yes' # Is the dimensionality scalable yes or no | ||
| number: '2-40' # (list of) fixed numbers, or ranges (5-11,19,85), or 'any' if it can be any value | ||
| constraints: | ||
| present: 'no' # Whether there are constraints yes or no |
There was a problem hiding this comment.
If the number is 0 then we expect a "no", if not, we expect "yes", or?
Do we need the field?
| constraints: | ||
| present: 'no' # Whether there are constraints yes or no | ||
| soft: 'no' # Whether there are soft constraints yes or no | ||
| hard: 'no' # Whether there are hard constraints yes or no |
There was a problem hiding this comment.
Can fields "soft" and "hard" be merged to "hardness" or the like?
Possible entries would then be "hard", "soft", or maybe "both"?
| boundary/box: 'yes' # Is the problem box-constrained yes, no, or some (if only some variables are bounded) | ||
| permutation: 'no' # Variables must be a permutation yes, no, or some | ||
| dynamic: # Dynamic properties, e.g., changing objective functions | ||
| present: 'no' # Enter, yes, no, or optional |
There was a problem hiding this comment.
Again I think the field might be economised ;)
If the type is empty, presence would be "no" if not, "yes".
| present: 'no' # Enter, yes, no, or optional | ||
| types: '' # Types of dynamic behaviour that are present | ||
| noise: # Noise on the objective function(s) | ||
| present: 'no' # Enter, yes, no, or optional |
| noise: # Noise on the objective function(s) | ||
| present: 'no' # Enter, yes, no, or optional | ||
| types: '' # Types of noise that are present | ||
| modality: |
There was a problem hiding this comment.
It's complex ...
What do we need this information for? Do we need it?
I agree that modality is important but there is way more to it than just "uni" or "multi" and just this doesn't really help IMO.
| evaluations: | ||
| multi-fidelity: 'no' # Whether evaluations can be performed at multiple fidelities, yes, no, or optional | ||
| partial possible: 'no' # Whether evaluation of subset(s) of decision variables are possible | ||
| independent objectives: 'no' # Can objective functions be evaluated independently of each other yes or no |
There was a problem hiding this comment.
Or "some" in case of different groups of objectives who share evaluation properties?
| links: | ||
| - https://doi.org/10.1080/10556788.2020.1808977 # URL to source or closely related research article, preferably DOI based. Add a new line below for each additional article. | ||
| authors: 'Nikolaus Hansen, Anne Auger, Raymond Ros, Olaf Mersmann, Tea Tušar, Dimo Brockhoff' | ||
| contact person: '' |
There was a problem hiding this comment.
a possible value could be "any" in the sense of "any of the above" but leaving this field empty is confusing. (please don't contact us?)
| - https://doi.org/10.1080/10556788.2020.1808977 # URL to source or closely related research article, preferably DOI based. Add a new line below for each additional article. | ||
| authors: 'Nikolaus Hansen, Anne Auger, Raymond Ros, Olaf Mersmann, Tea Tušar, Dimo Brockhoff' | ||
| contact person: '' | ||
| implementations: |
There was a problem hiding this comment.
Plural? Can people leave multiple implementations? Do we want this?
| - name: COCO # Name of the tool/library/package | ||
| link: https://github.com/numbbo/coco | ||
| languages: 'C/C++, Python, Java, Matlab/Octave' # Programming languages the implementation can be used with | ||
| evaluation time: 'less than a second' # Choose: 'less than a second', 'seconds', 'minutes', 'hours', 'days' |
There was a problem hiding this comment.
Is it clear that we refer to a single fitness/objective function evaluation time here? (not a whole opt. run)
And I guess we expect the maximum in case of "independent objectives" (different evaluation times) above? Maybe better put a field "time" in the group of "evaluations"? I don't know ...
| specific requirements: 'no' # Can be things like memory/GPU requirements, or the need for a specific simulator. Enter 'no' if none. | ||
| source: | ||
| origin: 'artificial' # Is the problem artificial, real-world, or real-world-like | ||
| real-world: # In case it is real-world (like), provide details |
There was a problem hiding this comment.
We don't expect any entry here, right?
Can't we just put a comment to the two (sub-) fields following like
" in case of "real-world" or "real-world-like" "
?
Draft yaml template for review