Skip to content

111 create yaml template for problem submission#121

Open
kvdblom wants to merge 6 commits intomainfrom
111-create-yaml-template-for-problem-submission
Open

111 create yaml template for problem submission#121
kvdblom wants to merge 6 commits intomainfrom
111-create-yaml-template-for-problem-submission

Conversation

@kvdblom
Copy link
Copy Markdown
Collaborator

@kvdblom kvdblom commented Nov 19, 2025

Draft yaml template for review

@kvdblom kvdblom linked an issue Nov 19, 2025 that may be closed by this pull request
Copy link
Copy Markdown
Contributor

@Dvermetten Dvermetten left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Collaborator

@CIGbalance CIGbalance left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

Comment thread template.yaml Outdated
Comment thread template.yaml Outdated
- name:
short: BBOB
full: Real-Parameter Black-Box Optimization Benchmarking
suite/generator/single: suite
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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:

OPL/problems.yaml

Line 1107 in 84b34b6

problems:

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.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: create a new issue for this.

Comment thread template.yaml Outdated
Comment thread template.yaml Outdated
Comment thread template.yaml Outdated
Comment thread template.yaml Outdated
Comment thread template.yaml Outdated
Comment thread template.yaml Outdated
Comment thread template.yaml Outdated
Comment thread template.yaml Outdated
@bn12
Copy link
Copy Markdown

bn12 commented Dec 11, 2025

Work in progress ...

`

Please enter the relevant information.

Fields that are not relevant can be left empty.

  • name:
    short: BBOB
    full: Real-Parameter Black-Box Optimization Benchmarking
    suite/generator/single: suite
    objectives:
    number: '1'
    types: single
    1 - single
    2 - bi or multi or multiple
    3 - multi or multiple
    4 or more - many
    scalable - scalable
    variables:
    types: continuous
    continuous or discrete or mixed-integer
    conditional: 'no'
    yes or no
    dimensionality: scalable
    scalable or fixed number or interval or ranges (5-11,19,85)
    constraints:
    present: 'no'
    yes or no
    soft: '0'
    number of soft constraints
    hard: '0'
    number of hard constraints
    boundary/box: 'yes'
    yes or no, in case of yes the number should be equal to the dimensionality under variables
    permutation: 'no'
    yes or no, in case of yes the number should be euqal to the length of the permutation
    dynamic:
    present: 'no'
    yes or no
    types: ''
    ??
    noise: 'no'
    yes or no, guess we don't differentiate types of noise (by now?)
    modality:
    types: 'unimodal, multimodal'
    evaluations:
    multi-fidelity: 'no'
    partial possible: 'no'
    independent objectives: 'no'
    reference:
    links:
    - https://doi.org/10.1080/10556788.2020.1808977
    authors: ''
    contact person: ''
    implementations:
    • name: COCO
      link: https://github.com/numbbo/coco
      languges: 'C, Python'
      evaluation time: 'less than a second'
      specific requirements: 'no'
      source:
      real-world:
      degree: ''
      open/closed: ''
      artificial: 'yes'
      other: 'no'
      textual description:
      general info: ''
      motivation: 'evaluate algorithm performance for typical difficulties that occur in continuous problems'
      challenage/key characteristics: ''
      limitations: ''
      other info: ''
      `

Comment thread template.yaml Outdated
Comment thread template.yaml Outdated
Comment thread template.yaml Outdated
Comment thread template.yaml Outdated
Comment thread template.yaml Outdated
@kvdblom
Copy link
Copy Markdown
Collaborator Author

kvdblom commented Feb 5, 2026

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

Yes we should do that.

@kvdblom
Copy link
Copy Markdown
Collaborator Author

kvdblom commented Feb 5, 2026

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?

We should split between

  • A template
  • An example

@Dvermetten
Copy link
Copy Markdown
Contributor

To check what fields from the other info (based on the form) should be added to the template (taken from a different problem):
other info:
name: null
partial evaluations: Not Present
full name: Electric Motor Design Optimization
constraint properties: Hard Constraints, Soft Constraints, Box Constraints
number of constraints: '12'
type of dynamicism: ''
form of noise model: ''
type of noise space: ''
other noise properties: ''
description of multimodality: Constraints are multimodal
key challenges / characteristics: Time-consuming solution evaluation, highly-constrained
problem
scientific motivation: Challenging to find good solutions in a limited time
limitations: 'Unavailability, even if available, it wouldn''t be helpful to use
for benchmarking due taking a long time to evaluate a single solution '
implementation languages: Python
links to implementations: Implementation not freely available
approximate evaluation time: 8 minutes
links to usage examples: ''
general: This is not an available problem, but could be interesting to show to
researchers which difficulties appear in real-world problems

@kvdblom
Copy link
Copy Markdown
Collaborator Author

kvdblom commented Feb 11, 2026

To check what fields from the other info (based on the form) should be added to the template (taken from a different problem): other info: name: null partial evaluations: Not Present full name: Electric Motor Design Optimization constraint properties: Hard Constraints, Soft Constraints, Box Constraints number of constraints: '12' type of dynamicism: '' form of noise model: '' type of noise space: '' other noise properties: '' description of multimodality: Constraints are multimodal key challenges / characteristics: Time-consuming solution evaluation, highly-constrained problem scientific motivation: Challenging to find good solutions in a limited time limitations: 'Unavailability, even if available, it wouldn''t be helpful to use for benchmarking due taking a long time to evaluate a single solution ' implementation languages: Python links to implementations: Implementation not freely available approximate evaluation time: 8 minutes links to usage examples: '' general: This is not an available problem, but could be interesting to show to researchers which difficulties appear in real-world problems

I wonder if we should separate this into numbers for soft and hard constraints:

  • number of constraints: '12'

These are currently not yet included

  • form of noise model: ''
  • type of noise space: ''
  • description of multimodality: Constraints are multimodal

@kvdblom
Copy link
Copy Markdown
Collaborator Author

kvdblom commented Feb 11, 2026

Work in progress ...

`

Please enter the relevant information.

Fields that are not relevant can be left empty.

* name:
  short: BBOB
  full: Real-Parameter Black-Box Optimization Benchmarking
  suite/generator/single: suite
  objectives:
  number: '1'
  types: single
  1 - single
  2 - bi or multi or multiple
  3 - multi or multiple
  4 or more - many
  scalable - scalable
  variables:
  types: continuous
  continuous or discrete or mixed-integer
  conditional: 'no'
  yes or no
  dimensionality: scalable
  scalable or fixed number or interval or ranges (5-11,19,85)
  constraints:
  present: 'no'
  yes or no
  soft: '0'
  number of soft constraints
  hard: '0'
  number of hard constraints
  boundary/box: 'yes'
  yes or no, in case of yes the number should be equal to the dimensionality under variables
  permutation: 'no'
  yes or no, in case of yes the number should be euqal to the length of the permutation
  dynamic:
  present: 'no'
  yes or no
  types: ''
  ??
  noise: 'no'
  yes or no, guess we don't differentiate types of noise (by now?)
  modality:
  types: 'unimodal, multimodal'
  evaluations:
  multi-fidelity: 'no'
  partial possible: 'no'
  independent objectives: 'no'
  reference:
  links:
  - https://doi.org/10.1080/10556788.2020.1808977
  authors: ''
  contact person: ''
  implementations:
  
  * name: COCO
    link: https://github.com/numbbo/coco
    languges: 'C, Python'
    evaluation time: 'less than a second'
    specific requirements: 'no'
    source:
    real-world:
    degree: ''
    open/closed: ''
    artificial: 'yes'
    other: 'no'
    textual description:
    general info: ''
    motivation: 'evaluate algorithm performance for typical difficulties that occur in continuous problems'
    challenage/key characteristics: ''
    limitations: ''
    other info: ''
    `

This should be included now

@kvdblom
Copy link
Copy Markdown
Collaborator Author

kvdblom commented Feb 11, 2026

TODO:

  • Definitely still needs a consistency check
  • When we are happy (to avoid double work), split into two files: (a) template.yaml and (b) example.yaml

Comment thread template.yaml
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'
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?!?

Comment thread template.yaml
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
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

Comment thread template.yaml
@@ -0,0 +1,62 @@
# Please enter the information relevant to your problem/suite/generator.
#
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread template.yaml
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
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the number is 0 then we expect a "no", if not, we expect "yes", or?
Do we need the field?

Comment thread template.yaml
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
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can fields "soft" and "hard" be merged to "hardness" or the like?
Possible entries would then be "hard", "soft", or maybe "both"?

Comment thread template.yaml
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
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again I think the field might be economised ;)
If the type is empty, presence would be "no" if not, "yes".

Comment thread template.yaml
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
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as for "dynamic".

Comment thread template.yaml
noise: # Noise on the objective function(s)
present: 'no' # Enter, yes, no, or optional
types: '' # Types of noise that are present
modality:
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread template.yaml
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
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or "some" in case of different groups of objectives who share evaluation properties?

Comment thread template.yaml
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: ''
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?)

Comment thread template.yaml
- 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:
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Plural? Can people leave multiple implementations? Do we want this?

Comment thread template.yaml
- 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'
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 ...

Comment thread template.yaml
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
Copy link
Copy Markdown

@bn12 bn12 Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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" "
?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create YAML template for problem submission

4 participants