From a005504ac3f19473bc57e4035397e23fcea1610e Mon Sep 17 00:00:00 2001 From: Dvermetten Date: Tue, 21 Apr 2026 14:39:36 +0200 Subject: [PATCH 1/5] Draft template based on new schema --- template.yaml | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 template.yaml diff --git a/template.yaml b/template.yaml new file mode 100644 index 0000000..d4bb9b8 --- /dev/null +++ b/template.yaml @@ -0,0 +1,53 @@ +# Please enter the information relevant to your problem/suite/generator. +# +# Instructions: +# - Give your entry a unique id (e.g., "my_problem"). +# - Enter null for fields where the value is unknown. +# - If there are any properties you want to add, use the 'tags' list to add them. +your_problem_id: + name: short_problem_name + long_name: your_full_problem_name + type: problem # One of problem, suite or generator + variables: # For each variable type, enter the number of variables of that type, or a range by specifiying min and/or max + binary: 0 # Number of this varialbe type + categorical: [0,5] # Options for numbers of this variable type (here, the suite has problems with either 0 or 5 categorical variables) + continuous: # For a range, you can specify the bounds + max: 80 + min: 1 + integer: # Or specify only one of the bounds, and leave the other as null + max: 5 + objectives: # For objectives, also indicate the number, either as an integer, list or range + - 1 + constraints: #constraints refers to hard constrains (violations don't have a true fitness value) + #Similar to variables, specify for each type of constraints the number, list, or a range. + box: 1 + soft_constraints: + linear: + max: 5 + function: [5, 10] + allows_partial_evaluation: yes / no / some #Whether evaluation of subset(s) of decision variables are possible + can_evaluate_objectives_independently: yes / no / some # Can objective functions be evaluated independently of each other yes, no or some + code_examples: null #Link to a code example in the OPL repository + description: lorem ipsum #Textual description of the problem/suite/generator + dynamic_type: null #If the problem is dynamic, specify the type of dynamics. If not, enter null. + fidelity_levels: 1 #Number of fidelity levels, if applicable. If not, enter 1. + modality: null #list of modalities (e.g. unimodal, multimodal) + noise_type: null #type of noise (e.g. additive, multiplicative, heteroscedastic) + references: null #list of references or citations + source: null #source of the problem/suite/generator + tags: null #list of tags or keywords + instances: null #For problems, specify the number of instances, or a list of instance ids, or a range of instance ids. For suites, specify the number of problems, or a list of problem ids, or a range of problem ids. For generators, specify the number of problems that can be generated, or a list of problem ids that can be generated, or a range of problem ids that can be generated. + problems: null #For suites, optionally specify the problems that are part of the suite. Each problem should then have a unique id, and be another entry in this yaml file. For generators, specify the problems that can be generated. Each problem should have a unique id, and be another entry in this yaml file. For problems, enter null. + implementations: + - your_implementation #If available, make an entry for the implementation of the problem/suite/generator as well. You can list multiple implementations if needed +your_implementation: #implementations should also have unique identifiers + name: your_implementation + description: lorem ipsum #textual description of the implementation + link: + - type: GitHub + url: github.com/yourproject + - type: Package + url: linktoyourpackage + language: python # language of the implementation + evaluation_time: seconds #approximate time for a single full function evaluation + requirements: null #any important requirements to be able to run your implemenation \ No newline at end of file From a4a1543770c4a1b12a390df4ceadc809fc199666 Mon Sep 17 00:00:00 2001 From: Dvermetten Date: Tue, 21 Apr 2026 16:06:19 +0200 Subject: [PATCH 2/5] Add two example yaml files --- examples/GKLS.yaml | 42 +++++++++ examples/ShapeOptimizationCFD.yaml | 145 +++++++++++++++++++++++++++++ 2 files changed, 187 insertions(+) create mode 100644 examples/GKLS.yaml create mode 100644 examples/ShapeOptimizationCFD.yaml diff --git a/examples/GKLS.yaml b/examples/GKLS.yaml new file mode 100644 index 0000000..77281f2 --- /dev/null +++ b/examples/GKLS.yaml @@ -0,0 +1,42 @@ +gkls: + name: GKLS + long_name: GKLS Generator + type: generator + variables: + binary: 0 + categorical: 0 + continuous: + integer: 0 + objectives: + - 1 + constraints: + soft_constraints: + box: 0 + allows_partial_evaluation: no + can_evaluate_objectives_independently: no + code_examples: null + description: a set of test problems is constructed by defining a convex quadratic function which is systematically distorted by polynomials in order to produce local (and one global) minima + dynamic_type: null + fidelity_levels: 1 + modality: + - unimodal + - multimodal + noise_type: null + references: + - title: Algorithm 829 Software for Generation ofClasses of Test Functions with Known Localand Global Minima for Global Optimization + authors: MARCO GAVIANO, DMITRI E. KVASOV, DANIELA LERA and YAROSLAV D. SERGEYEV + url: https://dl.acm.org/doi/epdf/10.1145/962437.962444 + source: artificial + tags: null + implementations: + - gkls_c +gkls_c: + name: GKLS_C + description: Original C-implementation of GKLS + link: + - type: zipfils + url: https://netlib.org/toms/829.gz + language: C + evaluation_time: null + requirements: null + diff --git a/examples/ShapeOptimizationCFD.yaml b/examples/ShapeOptimizationCFD.yaml new file mode 100644 index 0000000..0de3165 --- /dev/null +++ b/examples/ShapeOptimizationCFD.yaml @@ -0,0 +1,145 @@ +shapoptcfd: + name: ShapeOptimisation w CFD + long_name: Computationally Expensive Shape Optimisation Problems Using Computational Fluid Dynamics + type: suite + variables: + binary: 0 + categorical: 0 + continuous: + min: 2 + integer: 0 + objectives: + - [1,2] + constraints: + function: + min: 1 + box: 1 + soft_constraints: null + allows_partial_evaluation: no + can_evaluate_objectives_independently: no + code_examples: null + description: A Suite of Computationally Expensive Shape Optimisation Problems Using Computational Fluid Dynamics + dynamic_type: null + fidelity_levels: 1 + modality: null + noise_type: null + references: + - title: A Suite of Computationally Expensive Shape Optimisation Problems Using Computational Fluid Dynamics + authors: S. Daniels, A. Rahat, R. Everson, G. Tabor and J. Fieldsend. + url: https://link.springer.com/chapter/10.1007/978-3-319-99259-4_24 + source: real-world + tags: null + problems: + - pitzdaily + - kaplandrafttube + - heatexchanger + implementations: + - shapeopt +shapeopt: + name: shapeopt + description: Original implementation of ShapeOptimisation w CFD + link: + - type: repository + url: https://bitbucket.org/arahat/cfd-test-problem-suite/src/master/ + language: Python + evaluation_time: 30-1000 seconds + requirements: Relies on OpenFOAM +pitzdaily: + name: PitzDaily + long_name: PitzDaily Shape Optimisation Problem + type: problem + variables: + binary: 0 + categorical: 0 + continuous: + min: 2 + integer: 0 + objectives: + - 1 + constraints: + function: + min: 1 + box: 1 + soft_constraints: null + allows_partial_evaluation: no + can_evaluate_objectives_independently: no + code_examples: null + description: A Computationally Expensive Shape Optimisation Problem Using Computational Fluid Dynamics + dynamic_type: null + fidelity_levels: 1 + modality: null + noise_type: null + references: + - title: A Suite of Computationally Expensive Shape Optimisation Problems Using Computational Fluid Dynamics + authors: S. Daniels, A. Rahat, R. Everson, G. Tabor and J. Fieldsend. + url: https://link.springer.com/chapter/10.1007/978-3-319-99259-4_24 + source: real-world + tags: null + implementations: + - shapeopt +kaplandrafttube: + name: Kaplan Draft Tube + long_name: Sharp-heeled Kaplan Draft Tube Shape Optimisation Problem + type: problem + variables: + binary: 0 + categorical: 0 + continuous: + min: 2 + integer: 0 + objectives: + - 1 + constraints: + function: + min: 1 + box: 1 + soft_constraints: null + allows_partial_evaluation: no + can_evaluate_objectives_independently: no + code_examples: null + description: A Computationally Expensive Shape Optimisation Problem Using Computational Fluid Dynamics + dynamic_type: null + fidelity_levels: 1 + modality: null + noise_type: null + references: + - title: A Suite of Computationally Expensive Shape Optimisation Problems Using Computational Fluid Dynamics + authors: S. Daniels, A. Rahat, R. Everson, G. Tabor and J. Fieldsend. + url: https://link.springer.com/chapter/10.1007/978-3-319-99259-4_24 + source: real-world + tags: null + implementations: + - shapeopt +heatexchanger: + name: Heat Exchanger + long_name: Heat Exchanger Shape Optimisation Problem + type: problem + variables: + binary: 0 + categorical: 0 + continuous: + min: 2 + integer: 0 + objectives: + - 2 + constraints: + function: + min: 1 + box: 1 + soft_constraints: null + allows_partial_evaluation: no + can_evaluate_objectives_independently: no + code_examples: null + description: A Computationally Expensive Shape Optimisation Problem Using Computational Fluid Dynamics + dynamic_type: null + fidelity_levels: 1 + modality: null + noise_type: null + references: + - title: A Suite of Computationally Expensive Shape Optimisation Problems Using Computational Fluid Dynamics + authors: S. Daniels, A. Rahat, R. Everson, G. Tabor and J. Fieldsend. + url: https://link.springer.com/chapter/10.1007/978-3-319-99259-4_24 + source: real-world + tags: null + implementations: + - shapeopt From f502f8ba61d508b64f78b8d0f14d8dd3f9c66755 Mon Sep 17 00:00:00 2001 From: Koen van der Blom Date: Wed, 22 Apr 2026 14:36:29 +0200 Subject: [PATCH 3/5] Standardise formatting + fix typos. --- template.yaml | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/template.yaml b/template.yaml index d4bb9b8..3096aea 100644 --- a/template.yaml +++ b/template.yaml @@ -3,13 +3,13 @@ # Instructions: # - Give your entry a unique id (e.g., "my_problem"). # - Enter null for fields where the value is unknown. -# - If there are any properties you want to add, use the 'tags' list to add them. +# - If there are any additional properties you want to add, use the 'tags' list to add them. your_problem_id: name: short_problem_name long_name: your_full_problem_name type: problem # One of problem, suite or generator - variables: # For each variable type, enter the number of variables of that type, or a range by specifiying min and/or max - binary: 0 # Number of this varialbe type + variables: # For each variable type, enter the number of variables of that type, or a range by specifying min and/or max + binary: 0 # Number of this variable type categorical: [0,5] # Options for numbers of this variable type (here, the suite has problems with either 0 or 5 categorical variables) continuous: # For a range, you can specify the bounds max: 80 @@ -18,36 +18,36 @@ your_problem_id: max: 5 objectives: # For objectives, also indicate the number, either as an integer, list or range - 1 - constraints: #constraints refers to hard constrains (violations don't have a true fitness value) - #Similar to variables, specify for each type of constraints the number, list, or a range. + constraints: # Constraints refers to hard constrains (violations don't have a true fitness value) + # Similar to variables, specify for each type of constraints the number, list, or a range. box: 1 soft_constraints: linear: max: 5 function: [5, 10] - allows_partial_evaluation: yes / no / some #Whether evaluation of subset(s) of decision variables are possible + allows_partial_evaluation: yes / no / some # Whether evaluation of subset(s) of decision variables are possible can_evaluate_objectives_independently: yes / no / some # Can objective functions be evaluated independently of each other yes, no or some - code_examples: null #Link to a code example in the OPL repository - description: lorem ipsum #Textual description of the problem/suite/generator - dynamic_type: null #If the problem is dynamic, specify the type of dynamics. If not, enter null. - fidelity_levels: 1 #Number of fidelity levels, if applicable. If not, enter 1. - modality: null #list of modalities (e.g. unimodal, multimodal) - noise_type: null #type of noise (e.g. additive, multiplicative, heteroscedastic) - references: null #list of references or citations - source: null #source of the problem/suite/generator - tags: null #list of tags or keywords - instances: null #For problems, specify the number of instances, or a list of instance ids, or a range of instance ids. For suites, specify the number of problems, or a list of problem ids, or a range of problem ids. For generators, specify the number of problems that can be generated, or a list of problem ids that can be generated, or a range of problem ids that can be generated. - problems: null #For suites, optionally specify the problems that are part of the suite. Each problem should then have a unique id, and be another entry in this yaml file. For generators, specify the problems that can be generated. Each problem should have a unique id, and be another entry in this yaml file. For problems, enter null. + code_examples: null # Link to a code example in the OPL repository + description: lorem ipsum # Textual description of the problem/suite/generator + dynamic_type: null # If the problem is dynamic, specify the type of dynamics. If not, enter null. + fidelity_levels: 1 # Number of fidelity levels, if applicable. If not, enter 1. + modality: null # List of modalities (e.g. unimodal, multimodal) + noise_type: null # Type of noise (e.g. additive, multiplicative, heteroscedastic) + references: null # List of references or citations + source: null # Source of the problem/suite/generator + tags: null # List of tags or keywords + instances: null # For problems, specify the number of instances, or a list of instance ids, or a range of instance ids. For suites, specify the number of problems, or a list of problem ids, or a range of problem ids. For generators, specify the number of problems that can be generated, or a list of problem ids that can be generated, or a range of problem ids that can be generated. + problems: null # For suites, optionally specify the problems that are part of the suite. Each problem should then have a unique id, and be another entry in this yaml file. For generators, specify the problems that can be generated. Each problem should have a unique id, and be another entry in this yaml file. For problems, enter null. implementations: - - your_implementation #If available, make an entry for the implementation of the problem/suite/generator as well. You can list multiple implementations if needed -your_implementation: #implementations should also have unique identifiers + - your_implementation # If available, make an entry for the implementation of the problem/suite/generator as well. You can list multiple implementations if needed +your_implementation: # Implementations should also have unique identifiers name: your_implementation - description: lorem ipsum #textual description of the implementation + description: lorem ipsum # Textual description of the implementation link: - type: GitHub url: github.com/yourproject - type: Package url: linktoyourpackage language: python # language of the implementation - evaluation_time: seconds #approximate time for a single full function evaluation - requirements: null #any important requirements to be able to run your implemenation \ No newline at end of file + evaluation_time: seconds # Approximate time for a single full function evaluation + requirements: null # Any important requirements to be able to run your implementation From 940b9185bb309532e37fb95154dae7b261639cf8 Mon Sep 17 00:00:00 2001 From: Koen van der Blom Date: Wed, 22 Apr 2026 15:26:23 +0200 Subject: [PATCH 4/5] Start updating template: implementation + problem until objectives. --- template.yaml | 45 ++++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/template.yaml b/template.yaml index 3096aea..1c2a5fe 100644 --- a/template.yaml +++ b/template.yaml @@ -1,13 +1,28 @@ -# Please enter the information relevant to your problem/suite/generator. +# Please enter the information relevant to your problem/suite/generator/implementation. # # Instructions: -# - Give your entry a unique id (e.g., "my_problem"). # - Enter null for fields where the value is unknown. # - If there are any additional properties you want to add, use the 'tags' list to add them. -your_problem_id: - name: short_problem_name - long_name: your_full_problem_name + +# Problem / suite / generator example +your_problem_id: # Unique ID for the entry (e.g., "my_problem"). type: problem # One of problem, suite or generator + name: short_problem_name # Short problem name / abbreviation + long_name: your_full_problem_name # Full problem name + description: lorem ipsum # Textual description of the problem/suite/generator + tags: # List of tags or keywords not covered by other properties, examples below + - Convex Pareto front + - Disconnected Pareto front segments + references: # List of references or citations + - title: Good Work + authors: + - Author One + - Author Two + link: https://url.mine + implementations: # List with implementation IDs, multiple can be listed + - your_implementation # If the implementation you want to refer to does not exist yet, make an entry for the implementation of the problem/suite/generator as well. + objectives: # The number of objectives: either as an integer, list or range + - 1 variables: # For each variable type, enter the number of variables of that type, or a range by specifying min and/or max binary: 0 # Number of this variable type categorical: [0,5] # Options for numbers of this variable type (here, the suite has problems with either 0 or 5 categorical variables) @@ -16,8 +31,6 @@ your_problem_id: min: 1 integer: # Or specify only one of the bounds, and leave the other as null max: 5 - objectives: # For objectives, also indicate the number, either as an integer, list or range - - 1 constraints: # Constraints refers to hard constrains (violations don't have a true fitness value) # Similar to variables, specify for each type of constraints the number, list, or a range. box: 1 @@ -28,26 +41,24 @@ your_problem_id: allows_partial_evaluation: yes / no / some # Whether evaluation of subset(s) of decision variables are possible can_evaluate_objectives_independently: yes / no / some # Can objective functions be evaluated independently of each other yes, no or some code_examples: null # Link to a code example in the OPL repository - description: lorem ipsum # Textual description of the problem/suite/generator dynamic_type: null # If the problem is dynamic, specify the type of dynamics. If not, enter null. fidelity_levels: 1 # Number of fidelity levels, if applicable. If not, enter 1. modality: null # List of modalities (e.g. unimodal, multimodal) noise_type: null # Type of noise (e.g. additive, multiplicative, heteroscedastic) - references: null # List of references or citations source: null # Source of the problem/suite/generator - tags: null # List of tags or keywords instances: null # For problems, specify the number of instances, or a list of instance ids, or a range of instance ids. For suites, specify the number of problems, or a list of problem ids, or a range of problem ids. For generators, specify the number of problems that can be generated, or a list of problem ids that can be generated, or a range of problem ids that can be generated. problems: null # For suites, optionally specify the problems that are part of the suite. Each problem should then have a unique id, and be another entry in this yaml file. For generators, specify the problems that can be generated. Each problem should have a unique id, and be another entry in this yaml file. For problems, enter null. - implementations: - - your_implementation # If available, make an entry for the implementation of the problem/suite/generator as well. You can list multiple implementations if needed -your_implementation: # Implementations should also have unique identifiers + +# Implementation example +your_implementation: # Unique ID for the implementation (e.g., "my_implementation"). + type: implementation # The type is always implementation here name: your_implementation description: lorem ipsum # Textual description of the implementation - link: - - type: GitHub - url: github.com/yourproject + links: # A list of links to the implementation sources can be provided + - type: GitHub # Optionally specifiy the type of the link + url: github.com/yourproject # URL - type: Package url: linktoyourpackage - language: python # language of the implementation + language: Python # Language of the implementation evaluation_time: seconds # Approximate time for a single full function evaluation requirements: null # Any important requirements to be able to run your implementation From ddc81cd4b4ef0a5afca9df98e45bfc57643127b7 Mon Sep 17 00:00:00 2001 From: Koen van der Blom Date: Wed, 22 Apr 2026 17:23:51 +0200 Subject: [PATCH 5/5] Update template for revised schema. --- template.yaml | 65 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 22 deletions(-) diff --git a/template.yaml b/template.yaml index 1c2a5fe..0d1f42c 100644 --- a/template.yaml +++ b/template.yaml @@ -22,30 +22,51 @@ your_problem_id: # Unique ID for the entry (e.g., "my_problem"). implementations: # List with implementation IDs, multiple can be listed - your_implementation # If the implementation you want to refer to does not exist yet, make an entry for the implementation of the problem/suite/generator as well. objectives: # The number of objectives: either as an integer, list or range - - 1 - variables: # For each variable type, enter the number of variables of that type, or a range by specifying min and/or max - binary: 0 # Number of this variable type - categorical: [0,5] # Options for numbers of this variable type (here, the suite has problems with either 0 or 5 categorical variables) - continuous: # For a range, you can specify the bounds - max: 80 - min: 1 - integer: # Or specify only one of the bounds, and leave the other as null - max: 5 - constraints: # Constraints refers to hard constrains (violations don't have a true fitness value) - # Similar to variables, specify for each type of constraints the number, list, or a range. - box: 1 - soft_constraints: - linear: - max: 5 - function: [5, 10] - allows_partial_evaluation: yes / no / some # Whether evaluation of subset(s) of decision variables are possible + min: 2 + max: 5 + variables: # For each variable type + - type: continuous # Type of variable, one of: continuous, integer, binary, categorical, unknown + dim: # Number of variables as int, list of ints, or range with min and/or max + min: 1 + max: 80 + - type: integer + dim: + max: 5 # Or specify only one of the bounds, and leave the other as null + - type: binary + dim: 100 # A single value + - type: categorical + dim: [0,5] # List of possible values + - type: unknown # If the variable type(s) are unknown, the number of dimensions can still be given + dim: 42 + constraints: # Constraints can be give as a list + - type: box # Constraints have a type: box, linear, function, or unknown + number: 1 # The number of each type of constraint can be given as int, list of ints, or as range with min and max + - type: linear + hard: yes # This is a hard constraint, other options are: no, some, ? + equality: yes # This is an equality constraint, other options are: no, some, ? + number: [2,5] # There can be two or five constraints of this type + - type: function # This is a non-linear constraint + hard: no # This is a soft constraint + equality: no # This is an inequality constraint + number: # There can be between 5 and 10 constraints of this type + min: 5 + max: 10 + - type: unknown # The type of these constraints is unknown + number: 3 + dynamic_type: null # List of the dynamic properties, or null. + noise_type: # List of the types of noise, or null, e.g.: + - additive + - multiplicative + - heteroscedastic + allows_partial_evaluation: null # Whether evaluation of subset(s) of decision variables are possible. Can be: yes, no, some, ? can_evaluate_objectives_independently: yes / no / some # Can objective functions be evaluated independently of each other yes, no or some + modality: null # List of modality types (e.g. unimodal, multimodal) + fidelity_levels: 1 # Number or list of fidelity levels for multi-fidelity problems. If single fidelity, enter 1. + evaluation_time: # Approximate time for a single full function evaluation + - seconds + - minutes code_examples: null # Link to a code example in the OPL repository - dynamic_type: null # If the problem is dynamic, specify the type of dynamics. If not, enter null. - fidelity_levels: 1 # Number of fidelity levels, if applicable. If not, enter 1. - modality: null # List of modalities (e.g. unimodal, multimodal) - noise_type: null # Type of noise (e.g. additive, multiplicative, heteroscedastic) - source: null # Source of the problem/suite/generator + source: Real-world # Source of the problem(s), e.g., artificial, real-world instances: null # For problems, specify the number of instances, or a list of instance ids, or a range of instance ids. For suites, specify the number of problems, or a list of problem ids, or a range of problem ids. For generators, specify the number of problems that can be generated, or a list of problem ids that can be generated, or a range of problem ids that can be generated. problems: null # For suites, optionally specify the problems that are part of the suite. Each problem should then have a unique id, and be another entry in this yaml file. For generators, specify the problems that can be generated. Each problem should have a unique id, and be another entry in this yaml file. For problems, enter null.