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?!?
There was a problem hiding this comment.
Here, conditional refers to some variables only being active when some condition is met (e.g. in a configuration scenario, variable 'restart_threshold' only is used when 'uses_restarts' is True
| 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?
There was a problem hiding this comment.
Generally yes, but you might have a suite with a problem with fixed dimensionality 5 and one with 10, then number is 5-10, but the dimensionality is not scalable
| @@ -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.
There was a problem hiding this comment.
For domain experts, we have the simplified interface via the google form. In the template, we want to leave as much flexibility as possible for people with more detailed information about the problem they are submitting
| 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".
There was a problem hiding this comment.
It would become hard to infer for optional or unknown, so might be easiest to still have the field even if it can become redundant
| 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?)
There was a problem hiding this comment.
Contact person does not need to be an author, could also be maintainer,... or noone if something is abandoned, but we still want to have it in the database. But it should not be under reference to avoid confusion, rather be its own top-level field
| - 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?
There was a problem hiding this comment.
Yes, it can be useful for example if suites are implemented in different software for different languages
There was a problem hiding this comment.
Yes, there can be multiple independent implementations and I think that's fine.
| - 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 ...
There was a problem hiding this comment.
Yes, we should add a description that we want the time to evaluate a full solution
| 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" "
?
There was a problem hiding this comment.
Yes, we can remove this subheader and put it directly at the property description
| dimensionality: | ||
| 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: |
There was a problem hiding this comment.
Do we want an enumeration of constraints? Then we can have one or many soft constraints, one or many box/boundary constraints etc.
It would also allow us to add linear or quadratic constraints in a natural way.
F.E.:
constraints:
- type: box
soft: yes # Defaults to no
number: 2 # Number of variables that are box constraint
- type: linear
soft: no # Default but doesn't hurt
number: 10
- type: permutation
number: 1No entries in the constraints list means the problem is unconstrained.
There was a problem hiding this comment.
Sounds like a good idea
| - 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.
Again, I would prefer a definitive entry. I.e. I would have entered 4 or 5 entries for COCO (one for each language). Hiding the languages in a string seems odd. At least make languages a list.
There was a problem hiding this comment.
Agreed, will make this a list
| textual description: | ||
| general info: '' | ||
| motivation: 'evaluate algorithm performance for typical difficulties that occur in continuous problems' | ||
| challenge/key characteristics: '' | ||
| limitations: '' | ||
| example links: '' # URLs to examples where it was used (e.g., scientific articles) - Note: URLs to where it was proposed should go under the 'reference' field. |
There was a problem hiding this comment.
Do we really want this? Most of it sounds like it could be debated forever.
Draft yaml template for review