diff --git a/SCHEMA.md b/SCHEMA.md index f62ed83..cc42b01 100644 --- a/SCHEMA.md +++ b/SCHEMA.md @@ -22,6 +22,7 @@ Three design choices shape everything below: - [Library](#library) - [Thing types](#thing-types) - [Implementation](#implementation) + - [Reference](#reference) - [ProblemLike](#problemlike) (shared fields) - [Problem](#problem) - [Suite](#suite) @@ -29,7 +30,7 @@ Three design choices shape everything below: - [Shared building blocks](#shared-building-blocks) - [Variable](#variable) / [VariableType](#variabletype) - [Constraint](#constraint) / [ConstraintType](#constrainttype) - - [Reference](#reference) / [Link](#link) + - [Link](#link) - [ValueRange](#valuerange) - [YesNoSome](#yesnosome) @@ -50,26 +51,33 @@ IDs are free-form but must be unique and the convention is to add a prefix marki | Prefix | Type | |---------|------------------| | `impl_` | Implementation | +| `ref_` | Reference | | `fn_` | Problem | | `suite_`| Suite | | `gen_` | Generator | -On load the library validates that every ID referenced by a suite (`problems`) or problem (`implementations`) exists and has the correct type. Suites also have their `fidelity_levels` auto-populated from their problems. +On load the library validates that every ID referenced by a suite (`problems`), problem (`implementations`), or any [ProblemLike](#problemlike) (`references`) exists and has the correct type. Suites also have their `fidelity_levels` auto-populated from their problems. ```yaml impl_coco: type: implementation name: COCO description: Comparing Continuous Optimisers +ref_bbob: + type: reference + title: "Real-Parameter Black-Box Optimization Benchmarking: Experimental Setup" + link: {type: url, url: "https://numbbo.github.io/coco/"} fn_sphere: type: problem name: Sphere objectives: [1] implementations: [impl_coco] + references: [ref_bbob] suite_bbob: type: suite name: BBOB problems: [fn_sphere] + references: [ref_bbob] ``` --- @@ -119,6 +127,32 @@ impl_py_cocoex: - {type: package, url: https://pypi.org/project/coco-experiment/} ``` +### Reference + +A bibliographic pointer stored at the top level of the [Library](#library) so that a single reference can be shared by multiple problems, suites, generators, and implementations. +Requires either a `title` or a `link` and optionally a list of `authors`. + +| Field | Type | Notes | +|-----------|------------------------|------------------------------------------| +| `title` | str? | required if `link` is not given | +| `authors` | list of str? | | +| `link` | [Link](#link)? | required if `title` is not given | + +```yaml +ref_honey_badger: + type: reference + title: "Honey Badger Algorithm: New metaheuristic algorithm for solving optimization problems." + authors: + - Fatma A. Hashim + - Essam H. Houssein + - Kashif Hussain + - Mai S. Mabrouk + - Walid Al-Atabany + link: {type: doi, url: "https://doi.org/10.1016/j.matcom.2021.08.013"} +``` + +[ProblemLike](#problemlike) entities refer to a reference by its ID in the `references` field. + ### ProblemLike Fields shared by [Problem](#problem), [Suite](#suite), and [Generator](#generator). @@ -130,7 +164,7 @@ The schema deliberately puts most descriptive fields here so suites can be chara | `long_name` | str? | | | `description` | str? (markdown) | longer prose | | `tags` | set of str? | free-form keywords | -| `references` | set of [Reference](#reference)? | | +| `references` | set of IDs? | must resolve to [Reference](#reference)s | | `implementations` | set of IDs? | must resolve to [Implementation](#implementation)s | | `objectives` | set of int? | e.g. `{1}`, `{2, 3}` — **not** a ValueRange | | `variables` | set of [Variable](#variable)? | | @@ -259,23 +293,6 @@ constraints: `box | linear | function | unknown`. `function` covers non-linear/black-box constraints. -### Reference - -Bibliographic pointer. -Requires either a `title` or a `link` and optionally a list of `authors`. - -```yaml -references: - - title: "Honey Badger Algorithm: New metaheuristic algorithm for solving optimization problems." - authors: - - Fatma A. Hashim - - Essam H. Houssein - - Kashif Hussain - - Mai S. Mabrouk - - Walid Al-Atabany - link: {type: doi, url: "https://doi.org/10.1016/j.matcom.2021.08.013"] -``` - ### Link `{type?: str, url: str}`. diff --git a/examples/cobi.py b/examples/cobi.py index 2e534e4..571bba8 100644 --- a/examples/cobi.py +++ b/examples/cobi.py @@ -20,6 +20,12 @@ requirements="https://github.com/numbbo/cobi-problem-generator/blob/main/requirements.txt", ) +things["cobi_ref"] = Reference( + title="Pareto Set Characterization in Constrained Multiobjective Optimization and the COBI Problem Generator", + authors=["Anne Auger", "Dimo Brockhoff", "Luka Opravš", "Tea Tušar"], + link={"type": "arxiv", "url": "https://arxiv.org/abs/2604.09131"}, +) + things["cobi_problem"] = Generator( name="COBI Problem", description="Generator of COnstrained BI-objective optimization problems", @@ -32,13 +38,7 @@ "multi-peak", "convex-quadratic", }, - references=[ - Reference( - title="Pareto Set Characterization in Constrained Multiobjective Optimization and the COBI Problem Generator", - authors=["Anne Auger", "Dimo Brockhoff", "Luka Opravš", "Tea Tušar"], - link={"type": "arxiv", "url": "https://arxiv.org/abs/2604.09131"}, - ) - ], + references={"cobi_ref"}, objectives={2}, variables=[Variable(type="continuous", dim={"min": 1})], implementations={"cobi_impl"}, diff --git a/examples/emdo.py b/examples/emdo.py index 7a4504d..4f51f06 100644 --- a/examples/emdo.py +++ b/examples/emdo.py @@ -1,4 +1,4 @@ -from opltools import Library, Problem, Implementation +from opltools import Library, Problem, Implementation, Reference from pydantic_yaml import to_yaml_str #! - name: Electric Motor Design Optimization @@ -39,6 +39,11 @@ language="python", evaluation_time=["8 minutes"] ), + "ref_emdo": Reference( + title="A Multi-Step Evaluation Process in Electric Motor Design", + authors=["Tea Tušar", "Peter Korošec", "Bogdan Filipič"], + link={"url": "https://dis.ijs.si/tea/Publications/Tusar23Multistep.pdf"}, + ), "fn_emdo": Problem( name="Electric Motor Design Optimization", description="""# Goal @@ -67,14 +72,7 @@ noise_type=["yes"], fidelity_levels=[1], source=["real-world"], - references=[ - { - "title": "A Multi-Step Evaluation Process in Electric Motor Design", - "lang": "sj", - "authors": ["Tea Tušar", "Peter Korošec", "Bogdan Filipič"], - "link": {"url": "https://dis.ijs.si/tea/Publications/Tusar23Multistep.pdf"} - } - ], + references={"ref_emdo"}, implementations=["impl_emdo"] ) }) diff --git a/examples/problems.py b/examples/problems.py index 0a2d4ea..7011a89 100644 --- a/examples/problems.py +++ b/examples/problems.py @@ -81,6 +81,271 @@ ) +# ===================================================================== +# Shared references (reused by multiple YAML entries). +# ===================================================================== + +things["ref_coco_a_platform_for"] = Reference( + title="COCO: a platform for comparing continuous optimizers in a black-box setting", + link=Link(url="https://doi.org/10.1080/10556788.2020.1808977"), +) +things["ref_bbob_bi_objective_test_suite"] = Reference( + title="BBOB bi-objective test suite", + link=Link(url="https://doi.org/10.48550/arXiv.1604.00359"), +) +things["ref_real_parameter_black_box"] = Reference( + title="Real-parameter black-box optimization benchmarking: noisy functions definitions", + link=Link(url="https://hal.inria.fr/inria-00369466"), +) +things["ref_bbob_large_scale_test_suite"] = Reference( + title="BBOB large-scale test suite", + link=Link(url="https://doi.org/10.48550/arXiv.1903.06396"), +) +things["ref_bbob_mixed_integer_test_suite"] = Reference( + title="BBOB bi-objective mixed-integer test suite", + link=Link(url="https://doi.org/10.1145/3321707.3321868"), +) +things["ref_bbob_constrained_documentation"] = Reference( + title="bbob-constrained documentation", + link=Link(url="http://numbbo.github.io/coco-doc/bbob-constrained/"), +) +things["ref_comparison_of_multiobjective_evolutionary"] = Reference( + title="Comparison of multiobjective evolutionary algorithms: empirical results", + authors=["Eckart Zitzler", "Kalyanmoy Deb", "Lothar Thiele"], + link=Link(url="https://doi.org/10.1162/106365600568202"), +) +things["ref_scalable_multi_objective_optimization"] = Reference( + title="Scalable multi-objective optimization test problems", + authors=["Kalyanmoy Deb", "Lothar Thiele", "Marco Laumanns", "Eckart Zitzler"], + link=Link(url="https://doi.org/10.1109/CEC.2002.1007032"), +) +things["ref_a_review_of_multiobjective"] = Reference( + title="A review of multiobjective test problems and a scalable test problem toolkit", + authors=["Simon Huband", "Philip Hingston", "Luigi Barone", "Lyndon While"], + link=Link(url="https://doi.org/10.1109/TEVC.2005.861417"), +) +things["ref_cdmp_benchmark"] = Reference( + title="CDMP benchmark", + link=Link(url="https://doi.org/10.1145/3321707.3321878"), +) +things["ref_sdp_dynamic_multi_objective_benchmark"] = Reference( + title="SDP dynamic multi-objective benchmark", + link=Link(url="https://doi.org/10.1109/TCYB.2019.2896021"), +) +things["ref_maop_benchmark"] = Reference( + title="MaOP benchmark", + link=Link(url="https://doi.org/10.1016/j.swevo.2019.02.003"), +) +things["ref_bp_benchmark"] = Reference( + title="BP benchmark", + link=Link(url="https://doi.org/10.1109/CEC.2019.8790277"), +) +things["ref_gpd_generator"] = Reference( + title="GPD generator", + link=Link(url="https://doi.org/10.1016/j.asoc.2020.106139"), +) +things["ref_evolutionary_many_task_optimization"] = Reference( + title="Evolutionary many-task optimization framework", + link=Link(url="https://doi.org/10.48550/arXiv.2110.08033"), +) +things["ref_mmopp_technical_report"] = Reference( + title="MMOPP technical report", + link=Link(url="http://www5.zzu.edu.cn/system/_content/download.jsp?urltype=news.DownloadAttachUrl&owner=1327567121&wbfileid=4764412"), +) +things["ref_cfd_test_problem_suite"] = Reference( + title="CFD test problem suite", + link=Link(url="https://doi.org/10.1007/978-3-319-99259-4_24"), +) +things["ref_game_benchmark_for_evolutionary"] = Reference( + title="Game benchmark for evolutionary algorithms", + link=Link(url="https://doi.org/10.1145/3321707.3321805"), +) +things["ref_car_structure_design_benchmark"] = Reference( + title="Car structure design benchmark", + link=Link(url="https://doi.org/10.1145/3205651.3205702"), +) +things["ref_bbcomp_emo_2017"] = Reference( + title="BBComp EMO 2017", + link=Link(url="https://www.ini.rub.de/PEOPLE/glasmtbl/projects/bbcomp/"), +) +things["ref_jpnsec_ec_symposium_2019_competition"] = Reference( + title="JPNSEC EC-Symposium 2019 competition", + link=Link(url="http://www.jpnsec.org/files/competition2019/EC-Symposium-2019-Competition-English.html"), +) +things["ref_easy_to_evaluate_real"] = Reference( + title="Easy-to-evaluate real-world multi-objective optimization problems", + authors=["Ryoji Tanabe", "Hisao Ishibuchi"], + link=Link(url="https://doi.org/10.1016/j.asoc.2020.106078"), +) +things["ref_radar_waveform_design"] = Reference( + title="Radar waveform design", + link=Link(url="https://doi.org/10.1007/978-3-540-70928-2_53"), +) +things["ref_mf2_a_collection_of"] = Reference( + title="mf2: a collection of multi-fidelity benchmark functions in Python", + link=Link(url="https://doi.org/10.21105/joss.02049"), +) +things["ref_amvop"] = Reference( + title="RWMVOP", + link=Link(url="https://doi.org/10.1109/TEVC.2013.2281531"), +) +things["ref_sbox_cost"] = Reference( + title="SBOX-COST", + link=Link(url="https://doi.org/10.48550/arXiv.2305.12221"), +) +things["ref_on_the_design_of"] = Reference( + title="On the design of multi-objective evolutionary algorithms based on NK-landscapes", + link=Link(url="https://doi.org/10.1016/j.ejor.2012.12.019"), +) +things["ref_mubqp_benchmark"] = Reference( + title="mUBQP benchmark", + link=Link(url="https://doi.org/10.1016/j.asoc.2013.11.008"), +) +things["ref_on_the_impact_of"] = Reference( + title="On the impact of multi-objective scalability for the ρmTSP", + link=Link(url="https://doi.org/10.1007/978-3-319-45823-6_40"), +) +things["ref_benchmark_functions_for_cec"] = Reference( + title="Benchmark Functions for CEC 2015 Special Session and Competition on Dynamic Multi-objective Optimization", +) +things["ref_ealain"] = Reference( + title="Ealain", + link=Link(url="https://doi.org/10.1145/3638530.3654299"), +) +things["ref_ma_bbob"] = Reference( + title="MA-BBOB", + link=Link(url="https://doi.org/10.1145/3673908"), +) +things["ref_mpm2_technical_report_tr15_01"] = Reference( + title="MPM2 technical report TR15-01", + link=Link(url="https://ls11-www.cs.tu-dortmund.de/_media/techreports/tr15-01.pdf"), +) +things["ref_convex_dtlz2"] = Reference( + title="Convex DTLZ2", + link=Link(url="https://doi.org/10.1109/TEVC.2013.2281535"), +) +things["ref_inverted_dtlz1"] = Reference( + title="Inverted DTLZ1", + link=Link(url="https://doi.org/10.1109/TEVC.2013.2281534"), +) +things["ref_minus_dtlz_minus_wfg"] = Reference( + title="Minus DTLZ / Minus WFG", + link=Link(url="https://doi.org/10.1109/TEVC.2016.2587749"), +) +things["ref_linkage_zdt_dtlz_variants"] = Reference( + title="Linkage ZDT/DTLZ variants", + link=Link(url="https://doi.org/10.1145/1143997.1144179"), +) +things["ref_cec2018_dmop_competition_tr"] = Reference( + title="CEC2018 DMOP Competition TR", + link=Link(url="https://www.academia.edu/download/94499025/TR-CEC2018-DMOP-Competition.pdf"), +) +things["ref_modact"] = Reference( + title="MODAct", + link=Link(url="https://doi.org/10.1109/TEVC.2020.3020046"), +) +things["ref_iohclustering"] = Reference( + title="IOHClustering", + link=Link(url="https://arxiv.org/pdf/2505.09233"), +) +things["ref_gnbg_ii"] = Reference( + title="GNBG-II", + link=Link(url="https://dl.acm.org/doi/pdf/10.1145/3712255.3734271"), +) +things["ref_gnbg"] = Reference( + title="GNBG", + link=Link(url="https://arxiv.org/abs/2312.07083"), +) +things["ref_dynamicbinval"] = Reference( + title="DynamicBinVal", + link=Link(url="https://arxiv.org/pdf/2404.15837"), +) +things["ref_pbo_benchmarks"] = Reference( + title="PBO benchmarks", + link=Link(url="https://dl.acm.org/doi/pdf/10.1145/3319619.3326810"), +) +things["ref_w_model"] = Reference( + title="W-model", + link=Link(url="https://dl.acm.org/doi/abs/10.1145/3205651.3208240"), +) +things["ref_submodular_optimization_benchmark"] = Reference( + title="Submodular optimization benchmark", + link=Link(url="https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=10254181"), +) +things["ref_cec2013_definitions"] = Reference( + title="CEC2013 definitions", + link=Link(url="https://peerj.com/articles/cs-2671/CEC2013.pdf"), +) +things["ref_cec2022_tr"] = Reference( + title="CEC2022 TR", + link=Link(url="https://github.com/P-N-Suganthan/2022-SO-BO/blob/main/CEC2022%20TR.pdf"), +) +things["ref_onemax_sphere_zeromax_sphere"] = Reference( + title="Mixed-variable multi-objective test problems", + link=Link(url="https://doi.org/10.1145/3449726.3459521"), +) +things["ref_porkchop_plot_interplanetary_trajectory"] = Reference( + title="Porkchop plot interplanetary trajectory benchmark", + link=Link(url="https://doi.org/10.1109/CEC65147.2025.11042973"), +) +things["ref_kinematics_of_a_robot_arm"] = Reference( + title="Kinematics of a robot arm", + link=Link(url="https://doi.org/10.1023/A:1013258808932"), +) +things["ref_vehicledynamics_benchmark"] = Reference( + title="VehicleDynamics benchmark", + link=Link(url="https://www.scitepress.org/Papers/2023/121580/121580.pdf"), +) +things["ref_mechbench"] = Reference( + title="MECHBench", + link=Link(url="https://arxiv.org/abs/2511.10821"), +) +things["ref_expobench"] = Reference( + title="EXPObench", + link=Link(url="https://doi.org/10.1016/j.asoc.2023.110744"), +) +things["ref_gasoline_direct_injection_engine_design"] = Reference( + title="Gasoline direct injection engine design", + link=Link(url="https://doi.org/10.1016/j.ejor.2022.08.032"), +) +things["ref_beacon"] = Reference( + title="BEACON", + link=Link(url="https://dl.acm.org/doi/10.1145/3712255.3734303"), +) +things["ref_tulipaenergymodel_jl_scientific_references"] = Reference( + title="TulipaEnergyModel.jl scientific references", + link=Link(url="https://tulipaenergy.github.io/TulipaEnergyModel.jl/stable/40-scientific-foundation/45-scientific-references"), +) +things["ref_brachytherapy_treatment_planning"] = Reference( + title="Brachytherapy treatment planning", + link=Link(url="https://www.sciencedirect.com/science/article/pii/S1538472123016781"), +) +things["ref_fleetopt"] = Reference( + title="FleetOpt", + link=Link(url="https://dl.acm.org/doi/abs/10.1145/3638530.3664137"), +) +things["ref_building_spatial_design"] = Reference( + title="Building spatial design", + link=Link(url="https://hdl.handle.net/1887/81789"), +) +things["ref_a_multi_step_evaluation"] = Reference( + title="A Multi-Step Evaluation Process in Electric Motor Design", + authors=["Tea Tušar", "Peter Korošec", "Bogdan Filipič"], + link=Link(url="https://dis.ijs.si/tea/Publications/Tusar23Multistep.pdf"), +) +things["ref_cuter"] = Reference( + title="CUTEr", + link=Link(url="https://dl.acm.org/doi/10.1145/962437.962439"), +) +things["ref_cutest"] = Reference( + title="CUTEst", + link=Link(url="https://link.springer.com/article/10.1007/s10589-014-9687-3"), +) +things["ref_puboi"] = Reference( + title="PUBOi", + link=Link(url="https://link.springer.com/chapter/10.1007/978-3-031-04148-8_12"), +) + # ===================================================================== # Entries # ===================================================================== @@ -104,13 +369,7 @@ objectives={1}, variables=[Variable(type="continuous", dim=ValueRange(min=1))], modality={"multimodal"}, - references=[ - Reference( - title="COCO: a platform for comparing continuous optimizers in a black-box setting", - authors=[], - link=Link(url="https://doi.org/10.1080/10556788.2020.1808977"), - ) - ], + references={"ref_coco_a_platform_for"}, implementations={"impl_coco"}, ) @@ -133,13 +392,7 @@ objectives={2}, variables=[Variable(type="continuous", dim=ValueRange(min=2, max=40))], modality={"multimodal"}, - references=[ - Reference( - title="BBOB bi-objective test suite", - authors=[], - link=Link(url="https://doi.org/10.48550/arXiv.1604.00359"), - ) - ], + references={"ref_bbob_bi_objective_test_suite"}, implementations={"impl_coco"}, ) @@ -163,13 +416,7 @@ variables=[Variable(type="continuous", dim=ValueRange(min=1))], modality={"multimodal"}, noise_type={"noisy"}, - references=[ - Reference( - title="Real-parameter black-box optimization benchmarking: noisy functions definitions", - authors=[], - link=Link(url="https://hal.inria.fr/inria-00369466"), - ) - ], + references={"ref_real_parameter_black_box"}, implementations={"impl_coco_legacy"}, ) @@ -192,13 +439,7 @@ objectives={1}, variables=[Variable(type="continuous", dim=ValueRange(min=20, max=640))], modality={"multimodal"}, - references=[ - Reference( - title="BBOB large-scale test suite", - authors=[], - link=Link(url="https://doi.org/10.48550/arXiv.1903.06396"), - ) - ], + references={"ref_bbob_large_scale_test_suite"}, implementations={"impl_coco"}, ) @@ -224,13 +465,7 @@ Variable(type="integer", dim=ValueRange(min=5, max=160)), ], modality={"multimodal"}, - references=[ - Reference( - title="BBOB mixed-integer test suite", - authors=[], - link=Link(url="https://doi.org/10.1145/3321707.3321868"), - ) - ], + references={"ref_bbob_mixed_integer_test_suite"}, implementations={"impl_coco"}, ) @@ -256,13 +491,7 @@ Variable(type="integer", dim=ValueRange(min=5, max=160)), ], modality={"multimodal"}, - references=[ - Reference( - title="BBOB bi-objective mixed-integer test suite", - authors=[], - link=Link(url="https://doi.org/10.1145/3321707.3321868"), - ) - ], + references={"ref_bbob_mixed_integer_test_suite"}, implementations={"impl_coco"}, ) @@ -286,13 +515,7 @@ variables=[Variable(type="continuous", dim=ValueRange(min=2, max=40))], constraints=[Constraint(hard="yes")], modality={"multimodal"}, - references=[ - Reference( - title="bbob-constrained documentation", - authors=[], - link=Link(url="http://numbbo.github.io/coco-doc/bbob-constrained/"), - ) - ], + references={"ref_bbob_constrained_documentation"}, implementations={"impl_coco"}, ) @@ -347,13 +570,7 @@ Variable(type="continuous", dim=ValueRange(min=1)), Variable(type="binary", dim=ValueRange(min=1)), ], - references=[ - Reference( - title="Comparison of multiobjective evolutionary algorithms: empirical results", - authors=["Eckart Zitzler", "Kalyanmoy Deb", "Lothar Thiele"], - link=Link(url="https://doi.org/10.1162/106365600568202"), - ) - ], + references={"ref_comparison_of_multiobjective_evolutionary"}, implementations={"impl_pymoo"}, ) @@ -376,13 +593,7 @@ # FIXME: original "2+" - schema requires set[int]; truncated to 2..10. objectives=set(range(2, 11)), variables=[Variable(type="continuous", dim=ValueRange(min=1))], - references=[ - Reference( - title="Scalable multi-objective optimization test problems", - authors=["Kalyanmoy Deb", "Lothar Thiele", "Marco Laumanns", "Eckart Zitzler"], - link=Link(url="https://doi.org/10.1109/CEC.2002.1007032"), - ) - ], + references={"ref_scalable_multi_objective_optimization"}, implementations={"impl_pymoo"}, ) @@ -405,13 +616,7 @@ # FIXME: original "2+" - truncated to 2..10. objectives=set(range(2, 11)), variables=[Variable(type="continuous", dim=ValueRange(min=1))], - references=[ - Reference( - title="A review of multiobjective test problems and a scalable test problem toolkit", - authors=["Simon Huband", "Philip Hingston", "Luigi Barone", "Lyndon While"], - link=Link(url="https://doi.org/10.1109/TEVC.2005.861417"), - ) - ], + references={"ref_a_review_of_multiobjective"}, implementations={"impl_pymoo"}, ) @@ -438,13 +643,7 @@ constraints=[Constraint(hard="yes")], dynamic_type={"unknown"}, noise_type={"unknown"}, - references=[ - Reference( - title="CDMP benchmark", - authors=[], - link=Link(url="https://doi.org/10.1145/3321707.3321878"), - ) - ], + references={"ref_cdmp_benchmark"}, ) #! - name: SDP @@ -469,13 +668,7 @@ variables=[Variable(type="continuous", dim=ValueRange(min=1))], dynamic_type={"dynamic"}, noise_type={"unknown"}, - references=[ - Reference( - title="SDP dynamic multi-objective benchmark", - authors=[], - link=Link(url="https://doi.org/10.1109/TCYB.2019.2896021"), - ) - ], + references={"ref_sdp_dynamic_multi_objective_benchmark"}, ) #! - name: MaOP @@ -499,13 +692,7 @@ objectives=set(range(2, 11)), variables=[Variable(type="continuous", dim=ValueRange(min=1))], noise_type={"unknown"}, - references=[ - Reference( - title="MaOP benchmark", - authors=[], - link=Link(url="https://doi.org/10.1016/j.swevo.2019.02.003"), - ) - ], + references={"ref_maop_benchmark"}, ) #! - name: BP @@ -529,13 +716,7 @@ objectives=set(range(2, 11)), variables=[Variable(type="continuous", dim=ValueRange(min=1))], noise_type={"unknown"}, - references=[ - Reference( - title="BP benchmark", - authors=[], - link=Link(url="https://doi.org/10.1109/CEC.2019.8790277"), - ) - ], + references={"ref_bp_benchmark"}, ) #! - name: GPD @@ -560,13 +741,7 @@ variables=[Variable(type="continuous", dim=ValueRange(min=1))], constraints=[Constraint(hard="some")], noise_type={"optional"}, - references=[ - Reference( - title="GPD generator", - authors=[], - link=Link(url="https://doi.org/10.1016/j.asoc.2020.106139"), - ) - ], + references={"ref_gpd_generator"}, ) #! - name: ETMOF @@ -593,13 +768,7 @@ objectives=set(range(2, 51)), variables=[Variable(type="continuous", dim=ValueRange(min=25, max=10000))], dynamic_type={"dynamic"}, - references=[ - Reference( - title="Evolutionary many-task optimization framework", - authors=[], - link=Link(url="https://doi.org/10.48550/arXiv.2110.08033"), - ) - ], + references={"ref_evolutionary_many_task_optimization"}, implementations={"impl_etmof"}, ) @@ -629,15 +798,7 @@ variables=[Variable(type="unknown")], constraints=[Constraint(hard="yes")], modality={"multimodal"}, - references=[ - Reference( - title="MMOPP technical report", - authors=[], - link=Link( - url="http://www5.zzu.edu.cn/system/_content/download.jsp?urltype=news.DownloadAttachUrl&owner=1327567121&wbfileid=4764412" - ), - ) - ], + references={"ref_mmopp_technical_report"}, implementations={"impl_mmopp"}, ) @@ -669,13 +830,7 @@ variables=[Variable(type="unknown", dim=ValueRange(min=1))], constraints=[Constraint(hard="yes")], source={"real-world"}, - references=[ - Reference( - title="CFD test problem suite", - authors=[], - link=Link(url="https://doi.org/10.1007/978-3-319-99259-4_24"), - ) - ], + references={"ref_cfd_test_problem_suite"}, implementations={"impl_cfd"}, ) @@ -707,13 +862,7 @@ noise_type={"noisy"}, modality={"multimodal"}, source={"real-world"}, - references=[ - Reference( - title="Game benchmark for evolutionary algorithms", - authors=[], - link=Link(url="https://doi.org/10.1145/3321707.3321805"), - ) - ], + references={"ref_game_benchmark_for_evolutionary"}, implementations={"impl_gbea"}, ) @@ -744,13 +893,7 @@ variables=[Variable(type="integer", dim=ValueRange(min=144, max=222))], constraints=[Constraint(hard="yes", number=54)], source={"real-world"}, - references=[ - Reference( - title="Car structure design benchmark", - authors=[], - link=Link(url="https://doi.org/10.1145/3205651.3205702"), - ) - ], + references={"ref_car_structure_design_benchmark"}, implementations={"impl_car_structure"}, ) @@ -783,13 +926,7 @@ objectives={2}, variables=[Variable(type="continuous", dim=ValueRange(min=4, max=24))], source={"real-world"}, - references=[ - Reference( - title="BBComp EMO 2017", - authors=[], - link=Link(url="https://www.ini.rub.de/PEOPLE/glasmtbl/projects/bbcomp/"), - ) - ], + references={"ref_bbcomp_emo_2017"}, implementations={"impl_emo2017"}, ) @@ -825,15 +962,7 @@ variables=[Variable(type="continuous", dim=32)], constraints=[Constraint(hard="yes", number=22)], source={"real-world"}, - references=[ - Reference( - title="JPNSEC EC-Symposium 2019 competition", - authors=[], - link=Link( - url="http://www.jpnsec.org/files/competition2019/EC-Symposium-2019-Competition-English.html" - ), - ) - ], + references={"ref_jpnsec_ec_symposium_2019_competition"}, implementations={"impl_jsec2019"}, ) @@ -859,13 +988,7 @@ Variable(type="integer", dim=ValueRange(min=2, max=7)), ], source={"real-world-like"}, - references=[ - Reference( - title="Easy-to-evaluate real-world multi-objective optimization problems", - authors=["Ryoji Tanabe", "Hisao Ishibuchi"], - link=Link(url="https://doi.org/10.1016/j.asoc.2020.106078"), - ) - ], + references={"ref_easy_to_evaluate_real"}, implementations={"impl_reproblems"}, ) @@ -892,13 +1015,7 @@ ], constraints=[Constraint(hard="yes")], source={"real-world-like"}, - references=[ - Reference( - title="Easy-to-evaluate real-world multi-objective optimization problems", - authors=["Ryoji Tanabe", "Hisao Ishibuchi"], - link=Link(url="https://doi.org/10.1016/j.asoc.2020.106078"), - ) - ], + references={"ref_easy_to_evaluate_real"}, implementations={"impl_reproblems"}, ) @@ -927,13 +1044,7 @@ variables=[Variable(type="integer", dim=ValueRange(min=4, max=12))], constraints=[Constraint(hard="yes")], source={"real-world"}, - references=[ - Reference( - title="Radar waveform design", - authors=[], - link=Link(url="https://doi.org/10.1007/978-3-540-70928-2_53"), - ) - ], + references={"ref_radar_waveform_design"}, implementations={"impl_radar_waveform"}, ) @@ -962,13 +1073,7 @@ objectives={1}, variables=[Variable(type="continuous", dim=ValueRange(min=1))], fidelity_levels={1, 2}, - references=[ - Reference( - title="mf2: a collection of multi-fidelity benchmark functions in Python", - authors=[], - link=Link(url="https://doi.org/10.21105/joss.02049"), - ) - ], + references={"ref_mf2_a_collection_of"}, implementations={"impl_mf2"}, ) @@ -996,13 +1101,7 @@ Variable(type="categorical", dim=ValueRange(min=1)), ], modality={"multimodal"}, - references=[ - Reference( - title="AMVOP", - authors=[], - link=Link(url="https://doi.org/10.1109/TEVC.2013.2281531"), - ) - ], + references={"ref_amvop"}, ) #! - name: RWMVOP @@ -1030,13 +1129,7 @@ ], constraints=[Constraint(hard="yes")], source={"real-world"}, - references=[ - Reference( - title="RWMVOP", - authors=[], - link=Link(url="https://doi.org/10.1109/TEVC.2013.2281531"), - ) - ], + references={"ref_amvop"}, ) #! - name: SBOX-COST @@ -1060,13 +1153,7 @@ objectives={1}, variables=[Variable(type="continuous", dim=ValueRange(min=1))], modality={"multimodal"}, - references=[ - Reference( - title="SBOX-COST", - authors=[], - link=Link(url="https://doi.org/10.48550/arXiv.2305.12221"), - ) - ], + references={"ref_sbox_cost"}, implementations={"impl_iohexperimenter"}, ) @@ -1092,13 +1179,7 @@ objectives=set(range(1, 11)), variables=[Variable(type="binary", dim=ValueRange(min=1))], modality={"multimodal"}, - references=[ - Reference( - title="On the design of multi-objective evolutionary algorithms based on NK-landscapes", - authors=[], - link=Link(url="https://doi.org/10.1016/j.ejor.2012.12.019"), - ) - ], + references={"ref_on_the_design_of"}, implementations={"impl_mocobench"}, ) @@ -1124,13 +1205,7 @@ objectives=set(range(1, 11)), variables=[Variable(type="binary", dim=ValueRange(min=1))], modality={"multimodal", "quadratic"}, - references=[ - Reference( - title="mUBQP benchmark", - authors=[], - link=Link(url="https://doi.org/10.1016/j.asoc.2013.11.008"), - ) - ], + references={"ref_mubqp_benchmark"}, implementations={"impl_mocobench"}, ) @@ -1157,13 +1232,7 @@ objectives=set(range(1, 11)), variables=[Variable(type="unknown", dim=ValueRange(min=1))], modality={"multimodal", "quadratic"}, - references=[ - Reference( - title="On the impact of multi-objective scalability for the ρmTSP", - authors=[], - link=Link(url="https://doi.org/10.1007/978-3-319-45823-6_40"), - ) - ], + references={"ref_on_the_impact_of"}, implementations={"impl_mocobench"}, ) @@ -1189,12 +1258,7 @@ variables=[Variable(type="continuous")], constraints=[Constraint(hard="?")], dynamic_type={"dynamic"}, - references=[ - Reference( - title="Benchmark Functions for CEC 2015 Special Session and Competition on Dynamic Multi-objective Optimization", - authors=[], - ) - ], + references={"ref_benchmark_functions_for_cec"}, ) #! - name: Ealain @@ -1230,13 +1294,7 @@ dynamic_type={"optional"}, fidelity_levels={1, 2}, source={"real-world-like"}, - references=[ - Reference( - title="Ealain", - authors=[], - link=Link(url="https://doi.org/10.1145/3638530.3654299"), - ) - ], + references={"ref_ealain"}, implementations={"impl_ealain"}, ) @@ -1271,13 +1329,7 @@ variables=[Variable(type="continuous", dim=ValueRange(min=1))], modality={"multimodal"}, source={"artificial"}, - references=[ - Reference( - title="MA-BBOB", - authors=[], - link=Link(url="https://doi.org/10.1145/3673908"), - ) - ], + references={"ref_ma_bbob"}, implementations={"impl_ma_bbob", "impl_iohexperimenter"}, ) @@ -1313,13 +1365,7 @@ objectives={1}, variables=[Variable(type="continuous", dim=ValueRange(min=1))], modality={"multimodal"}, - references=[ - Reference( - title="MPM2 technical report TR15-01", - authors=[], - link=Link(url="https://ls11-www.cs.tu-dortmund.de/_media/techreports/tr15-01.pdf"), - ) - ], + references={"ref_mpm2_technical_report_tr15_01"}, implementations={"impl_mpm2"}, ) @@ -1344,13 +1390,7 @@ # FIXME: original "2+" - truncated to 2..10. objectives=set(range(2, 11)), variables=[Variable(type="continuous", dim=ValueRange(min=1))], - references=[ - Reference( - title="Convex DTLZ2", - authors=[], - link=Link(url="https://doi.org/10.1109/TEVC.2013.2281535"), - ) - ], + references={"ref_convex_dtlz2"}, ) #! - name: Inverted DTLZ1 @@ -1374,13 +1414,7 @@ # FIXME: original "2+" - truncated to 2..10. objectives=set(range(2, 11)), variables=[Variable(type="continuous", dim=ValueRange(min=1))], - references=[ - Reference( - title="Inverted DTLZ1", - authors=[], - link=Link(url="https://doi.org/10.1109/TEVC.2013.2281534"), - ) - ], + references={"ref_inverted_dtlz1"}, ) #! - name: Minus DTLZ @@ -1404,13 +1438,7 @@ # FIXME: original "2+" - truncated to 2..10. objectives=set(range(2, 11)), variables=[Variable(type="continuous", dim=ValueRange(min=1))], - references=[ - Reference( - title="Minus DTLZ / Minus WFG", - authors=[], - link=Link(url="https://doi.org/10.1109/TEVC.2016.2587749"), - ) - ], + references={"ref_minus_dtlz_minus_wfg"}, ) #! - name: Minus WFG @@ -1434,13 +1462,7 @@ # FIXME: original "2+" - truncated to 2..10. objectives=set(range(2, 11)), variables=[Variable(type="continuous", dim=ValueRange(min=1))], - references=[ - Reference( - title="Minus DTLZ / Minus WFG", - authors=[], - link=Link(url="https://doi.org/10.1109/TEVC.2016.2587749"), - ) - ], + references={"ref_minus_dtlz_minus_wfg"}, ) #! - name: L1-ZDT @@ -1468,13 +1490,7 @@ Variable(type="continuous", dim=ValueRange(min=1)), Variable(type="binary", dim=ValueRange(min=1)), ], - references=[ - Reference( - title="Linkage ZDT/DTLZ variants", - authors=[], - link=Link(url="https://doi.org/10.1145/1143997.1144179"), - ) - ], + references={"ref_linkage_zdt_dtlz_variants"}, ) #! - name: L2-ZDT @@ -1501,13 +1517,7 @@ Variable(type="continuous", dim=ValueRange(min=1)), Variable(type="binary", dim=ValueRange(min=1)), ], - references=[ - Reference( - title="Linkage ZDT/DTLZ variants", - authors=[], - link=Link(url="https://doi.org/10.1145/1143997.1144179"), - ) - ], + references={"ref_linkage_zdt_dtlz_variants"}, ) #! - name: L3-ZDT @@ -1534,13 +1544,7 @@ Variable(type="continuous", dim=ValueRange(min=1)), Variable(type="binary", dim=ValueRange(min=1)), ], - references=[ - Reference( - title="Linkage ZDT/DTLZ variants", - authors=[], - link=Link(url="https://doi.org/10.1145/1143997.1144179"), - ) - ], + references={"ref_linkage_zdt_dtlz_variants"}, ) #! - name: L2-DTLZ @@ -1565,13 +1569,7 @@ # FIXME: original "2+" - truncated to 2..10. objectives=set(range(2, 11)), variables=[Variable(type="continuous", dim=ValueRange(min=1))], - references=[ - Reference( - title="Linkage ZDT/DTLZ variants", - authors=[], - link=Link(url="https://doi.org/10.1145/1143997.1144179"), - ) - ], + references={"ref_linkage_zdt_dtlz_variants"}, ) #! - name: L3-DTLZ @@ -1596,13 +1594,7 @@ # FIXME: original "2+" - truncated to 2..10. objectives=set(range(2, 11)), variables=[Variable(type="continuous", dim=ValueRange(min=1))], - references=[ - Reference( - title="Linkage ZDT/DTLZ variants", - authors=[], - link=Link(url="https://doi.org/10.1145/1143997.1144179"), - ) - ], + references={"ref_linkage_zdt_dtlz_variants"}, ) #! - name: CEC2018 DT - CEC2018 Competition on Dynamic Multiobjective Optimisation @@ -1630,13 +1622,7 @@ variables=[Variable(type="unknown", dim=ValueRange(min=1))], dynamic_type={"dynamic"}, source={"artificial"}, - references=[ - Reference( - title="CEC2018 DMOP Competition TR", - authors=[], - link=Link(url="https://www.academia.edu/download/94499025/TR-CEC2018-DMOP-Competition.pdf"), - ) - ], + references={"ref_cec2018_dmop_competition_tr"}, implementations={"impl_pymoo"}, ) @@ -1673,13 +1659,7 @@ ], constraints=[Constraint(hard="yes")], source={"real-world"}, - references=[ - Reference( - title="MODAct", - authors=[], - link=Link(url="https://doi.org/10.1109/TEVC.2020.3020046"), - ) - ], + references={"ref_modact"}, implementations={"impl_modact", "impl_pymoo"}, ) @@ -1711,13 +1691,7 @@ variables=[Variable(type="continuous", dim=ValueRange(min=1))], modality={"multimodal"}, source={"artificial-from-real-data"}, - references=[ - Reference( - title="IOHClustering", - authors=[], - link=Link(url="https://arxiv.org/pdf/2505.09233"), - ) - ], + references={"ref_iohclustering"}, implementations={"impl_iohclustering"}, ) things["gen_iohclustering"] = Generator( @@ -1727,13 +1701,7 @@ variables=[Variable(type="continuous", dim=ValueRange(min=1))], modality={"multimodal"}, source={"artificial-from-real-data"}, - references=[ - Reference( - title="IOHClustering", - authors=[], - link=Link(url="https://arxiv.org/pdf/2505.09233"), - ) - ], + references={"ref_iohclustering"}, implementations={"impl_iohclustering"}, ) @@ -1767,13 +1735,7 @@ objectives={1}, variables=[Variable(type="continuous", dim=ValueRange(min=1))], source={"artificial"}, - references=[ - Reference( - title="GNBG-II", - authors=[], - link=Link(url="https://dl.acm.org/doi/pdf/10.1145/3712255.3734271"), - ) - ], + references={"ref_gnbg_ii"}, implementations={"impl_gnbg_ii", "impl_iohgnbg"}, ) things["gen_gnbg_ii"] = Generator( @@ -1782,13 +1744,7 @@ objectives={1}, variables=[Variable(type="continuous", dim=ValueRange(min=1))], source={"artificial"}, - references=[ - Reference( - title="GNBG-II", - authors=[], - link=Link(url="https://dl.acm.org/doi/pdf/10.1145/3712255.3734271"), - ) - ], + references={"ref_gnbg_ii"}, implementations={"impl_gnbg_ii", "impl_iohgnbg"}, ) @@ -1817,13 +1773,7 @@ objectives={1}, variables=[Variable(type="continuous", dim=ValueRange(min=1))], source={"artificial"}, - references=[ - Reference( - title="GNBG", - authors=[], - link=Link(url="https://arxiv.org/abs/2312.07083"), - ) - ], + references={"ref_gnbg"}, implementations={"impl_gnbg"}, ) things["gen_gnbg"] = Generator( @@ -1832,13 +1782,7 @@ objectives={1}, variables=[Variable(type="continuous", dim=ValueRange(min=1))], source={"artificial"}, - references=[ - Reference( - title="GNBG", - authors=[], - link=Link(url="https://arxiv.org/abs/2312.07083"), - ) - ], + references={"ref_gnbg"}, implementations={"impl_gnbg"}, ) @@ -1863,13 +1807,7 @@ variables=[Variable(type="binary", dim=ValueRange(min=1))], dynamic_type={"dynamic"}, source={"artificial"}, - references=[ - Reference( - title="DynamicBinVal", - authors=[], - link=Link(url="https://arxiv.org/pdf/2404.15837"), - ) - ], + references={"ref_dynamicbinval"}, implementations={"impl_iohexperimenter"}, ) @@ -1893,13 +1831,7 @@ objectives={1}, variables=[Variable(type="binary", dim=ValueRange(min=1))], source={"artificial"}, - references=[ - Reference( - title="PBO benchmarks", - authors=[], - link=Link(url="https://dl.acm.org/doi/pdf/10.1145/3319619.3326810"), - ) - ], + references={"ref_pbo_benchmarks"}, implementations={"impl_iohexperimenter"}, ) @@ -1929,15 +1861,7 @@ objectives={1}, variables=[Variable(type="binary", dim=ValueRange(min=1))], source={"artificial"}, - references=[ - Reference( - title="W-model", - authors=[], - link=Link( - url="https://dl.acm.org/doi/abs/10.1145/3205651.3208240" - ), - ) - ], + references={"ref_w_model"}, implementations={"impl_wmodel"}, ) @@ -1962,13 +1886,7 @@ objectives={1}, variables=[Variable(type="binary", dim=ValueRange(min=1))], source={"artificial"}, - references=[ - Reference( - title="Submodular optimization benchmark", - authors=[], - link=Link(url="https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=10254181"), - ) - ], + references={"ref_submodular_optimization_benchmark"}, implementations={"impl_iohexperimenter"}, ) @@ -1997,13 +1915,7 @@ objectives={1}, variables=[Variable(type="continuous", dim=ValueRange(min=1))], source={"artificial"}, - references=[ - Reference( - title="CEC2013 definitions", - authors=[], - link=Link(url="https://peerj.com/articles/cs-2671/CEC2013.pdf"), - ) - ], + references={"ref_cec2013_definitions"}, implementations={"impl_cec2013", "impl_iohexperimenter"}, ) @@ -2032,13 +1944,7 @@ objectives={1}, variables=[Variable(type="continuous", dim=ValueRange(min=1))], source={"artificial"}, - references=[ - Reference( - title="CEC2022 TR", - authors=[], - link=Link(url="https://github.com/P-N-Suganthan/2022-SO-BO/blob/main/CEC2022%20TR.pdf"), - ) - ], + references={"ref_cec2022_tr"}, implementations={"impl_cec2022", "impl_iohexperimenter"}, ) @@ -2065,13 +1971,7 @@ Variable(type="continuous", dim=ValueRange(min=1)), ], source={"artificial"}, - references=[ - Reference( - title="Onemax+Sphere / Zeromax+Sphere", - authors=[], - link=Link(url="https://doi.org/10.1145/3449726.3459521"), - ) - ], + references={"ref_onemax_sphere_zeromax_sphere"}, ) #! - name: Onemax+Sphere / DeceptiveTrap+RotatedEllipsoid @@ -2097,13 +1997,7 @@ Variable(type="continuous", dim=ValueRange(min=1)), ], source={"artificial"}, - references=[ - Reference( - title="Mixed-variable multi-objective test problems", - authors=[], - link=Link(url="https://doi.org/10.1145/3449726.3459521"), - ) - ], + references={"ref_onemax_sphere_zeromax_sphere"}, ) #! - name: InverseDeceptiveTrap+RotatedEllipsoid / DeceptiveTrap+RotatedEllipsoid @@ -2129,13 +2023,7 @@ Variable(type="continuous", dim=ValueRange(min=1)), ], source={"artificial"}, - references=[ - Reference( - title="Mixed-variable multi-objective test problems", - authors=[], - link=Link(url="https://doi.org/10.1145/3449726.3459521"), - ) - ], + references={"ref_onemax_sphere_zeromax_sphere"}, ) #! - name: PorkchopPlotInterplanetaryTrajectory @@ -2168,13 +2056,7 @@ variables=[Variable(type="continuous", dim=2)], modality={"multimodal"}, source={"real-world"}, - references=[ - Reference( - title="Porkchop plot interplanetary trajectory benchmark", - authors=[], - link=Link(url="https://doi.org/10.1109/CEC65147.2025.11042973"), - ) - ], + references={"ref_porkchop_plot_interplanetary_trajectory"}, implementations={"impl_transfer_rf_bbob_rw"}, ) @@ -2198,13 +2080,7 @@ variables=[Variable(type="continuous", dim=21)], modality={"unimodal"}, source={"real-world"}, - references=[ - Reference( - title="Kinematics of a robot arm", - authors=[], - link=Link(url="https://doi.org/10.1023/A:1013258808932"), - ) - ], + references={"ref_kinematics_of_a_robot_arm"}, implementations={"impl_transfer_rf_bbob_rw"}, ) @@ -2233,13 +2109,7 @@ variables=[Variable(type="continuous", dim=2)], modality={"multimodal"}, source={"real-world"}, - references=[ - Reference( - title="VehicleDynamics benchmark", - authors=[], - link=Link(url="https://www.scitepress.org/Papers/2023/121580/121580.pdf"), - ) - ], + references={"ref_vehicledynamics_benchmark"}, implementations={"impl_vehicle_dynamics"}, ) @@ -2290,13 +2160,7 @@ modality={"multimodal"}, allows_partial_evaluation="no", source={"real-world"}, - references=[ - Reference( - title="MECHBench", - authors=[], - link=Link(url="https://arxiv.org/abs/2511.10821"), - ) - ], + references={"ref_mechbench"}, implementations={"impl_mechbench"}, ) @@ -2355,13 +2219,7 @@ noise_type={"observational", "real-life"}, allows_partial_evaluation="no", source={"real-world"}, - references=[ - Reference( - title="EXPObench", - authors=[], - link=Link(url="https://doi.org/10.1016/j.asoc.2023.110744"), - ) - ], + references={"ref_expobench"}, implementations={"impl_expobench"}, ) @@ -2403,13 +2261,7 @@ constraints=[Constraint(hard="yes", number=5)], fidelity_levels={1, 2}, source={"real-world"}, - references=[ - Reference( - title="Gasoline direct injection engine design", - authors=[], - link=Link(url="https://doi.org/10.1016/j.ejor.2022.08.032"), - ) - ], + references={"ref_gasoline_direct_injection_engine_design"}, implementations={"impl_gasoline"}, ) @@ -2457,13 +2309,7 @@ modality={"multimodal"}, allows_partial_evaluation="no", source={"artificial"}, - references=[ - Reference( - title="BEACON", - authors=[], - link=Link(url="https://dl.acm.org/doi/10.1145/3712255.3734303"), - ) - ], + references={"ref_beacon"}, implementations={"impl_beacon"}, ) @@ -2518,15 +2364,7 @@ modality={"unimodal"}, fidelity_levels={1, 2}, source={"real-world"}, - references=[ - Reference( - title="TulipaEnergyModel.jl scientific references", - authors=[], - link=Link( - url="https://tulipaenergy.github.io/TulipaEnergyModel.jl/stable/40-scientific-foundation/45-scientific-references" - ), - ) - ], + references={"ref_tulipaenergymodel_jl_scientific_references"}, implementations={"impl_tulipa"}, ) @@ -2590,13 +2428,7 @@ fidelity_levels={1, 2}, allows_partial_evaluation="yes", source={"real-world"}, - references=[ - Reference( - title="Brachytherapy treatment planning", - authors=[], - link=Link(url="https://www.sciencedirect.com/science/article/pii/S1538472123016781"), - ) - ], + references={"ref_brachytherapy_treatment_planning"}, ) #! - name: FleetOpt @@ -2624,13 +2456,7 @@ constraints=[Constraint(hard="yes")], allows_partial_evaluation="yes", source={"real-world"}, - references=[ - Reference( - title="FleetOpt", - authors=[], - link=Link(url="https://dl.acm.org/doi/abs/10.1145/3638530.3664137"), - ) - ], + references={"ref_fleetopt"}, ) #! - name: Building spatial design @@ -2677,13 +2503,7 @@ ], allows_partial_evaluation="no", source={"real-world"}, - references=[ - Reference( - title="Building spatial design", - authors=[], - link=Link(url="https://hdl.handle.net/1887/81789"), - ) - ], + references={"ref_building_spatial_design"}, implementations={"impl_bso_toolbox"}, ) @@ -2750,13 +2570,7 @@ modality={"multimodal"}, allows_partial_evaluation="no", source={"real-world"}, - references=[ - Reference( - title="A Multi-Step Evaluation Process in Electric Motor Design", - authors=["Tea Tušar", "Peter Korošec", "Bogdan Filipič"], - link=Link(url="https://dis.ijs.si/tea/Publications/Tusar23Multistep.pdf"), - ) - ], + references={"ref_a_multi_step_evaluation"}, implementations={"impl_emdo"}, ) @@ -2876,13 +2690,7 @@ constraints=[Constraint(hard="yes")], allows_partial_evaluation="no", source={"artificial"}, - references=[ - Reference( - title="CUTEr", - authors=[], - link=Link(url="https://dl.acm.org/doi/10.1145/962437.962439"), - ) - ], + references={"ref_cuter"}, ) #! - name: CUTEst @@ -2930,13 +2738,7 @@ modality={"multimodal"}, allows_partial_evaluation="no", source={"artificial"}, - references=[ - Reference( - title="CUTEst", - authors=[], - link=Link(url="https://link.springer.com/article/10.1007/s10589-014-9687-3"), - ) - ], + references={"ref_cutest"}, implementations={"impl_pycutest"}, ) @@ -2975,13 +2777,7 @@ variables=[Variable(type="binary", dim=ValueRange(min=1))], allows_partial_evaluation="no", source={"artificial"}, - references=[ - Reference( - title="PUBOi", - authors=[], - link=Link(url="https://link.springer.com/chapter/10.1007/978-3-031-04148-8_12"), - ) - ], + references={"ref_puboi"}, implementations={"impl_puboi"}, ) diff --git a/problems.yaml b/problems.yaml index ea3b7af..3268ead 100644 --- a/problems.yaml +++ b/problems.yaml @@ -33,19 +33,19 @@ fn_building_spatial: - equality: null hard: yes number: null - type: unknown + type: box - equality: null hard: yes number: null - type: box + type: unknown description: Optimise the spatial layout of a building to minimise energy consumption for climate control and minimise the strain on the structure. Many hard constraints; mixed-variable (continuous+binary); expensive evaluations. dynamic_type: null evaluation_time: - - 1 second - 40 seconds + - 1 second fidelity_levels: null implementations: - impl_bso_toolbox @@ -57,11 +57,7 @@ fn_building_spatial: objectives: - 2 references: - - authors: [] - link: - type: null - url: https://hdl.handle.net/1887/81789 - title: Building spatial design + - ref_building_spatial_design source: - real-world tags: null @@ -70,11 +66,11 @@ fn_building_spatial: - dim: max: null min: 1 - type: binary + type: continuous - dim: max: null min: 1 - type: continuous + type: binary fn_convex_dtlz2: allows_partial_evaluation: null can_evaluate_objectives_independently: null @@ -101,11 +97,7 @@ fn_convex_dtlz2: - 9 - 10 references: - - authors: [] - link: - type: null - url: https://doi.org/10.1109/TEVC.2013.2281535 - title: Convex DTLZ2 + - ref_convex_dtlz2 source: null tags: null type: problem @@ -123,14 +115,14 @@ fn_emdo: hard: yes number: 12 type: unknown - - equality: null - hard: yes - number: null - type: box - equality: null hard: some number: null type: unknown + - equality: null + hard: yes + number: null + type: box description: "# Goal\nFind a design of a synchronous electric motor for power steering systems that minimizes costs and satisfies all constraints.\n\n# Motivation\n\ Challenging to find good solutions in a limited time.\n\n# Key Challenges\n* Time-consuming @@ -153,14 +145,7 @@ fn_emdo: objectives: - 1 references: - - authors: - - Tea Tušar - - Peter Korošec - - Bogdan Filipič - link: - type: null - url: https://dis.ijs.si/tea/Publications/Tusar23Multistep.pdf - title: A Multi-Step Evaluation Process in Electric Motor Design + - ref_a_multi_step_evaluation source: - real-world tags: null @@ -194,11 +179,7 @@ fn_fleetopt: objectives: - 1 references: - - authors: [] - link: - type: null - url: https://dl.acm.org/doi/abs/10.1145/3638530.3664137 - title: FleetOpt + - ref_fleetopt source: - real-world tags: null @@ -237,20 +218,16 @@ fn_gasoline: objectives: - 2 references: - - authors: [] - link: - type: null - url: https://doi.org/10.1016/j.ejor.2022.08.032 - title: Gasoline direct injection engine design + - ref_gasoline_direct_injection_engine_design source: - real-world tags: null type: problem variables: - - dim: 7 - type: integer - dim: 7 type: continuous + - dim: 7 + type: integer fn_invdeceptive_deceptive_rotell: allows_partial_evaluation: null can_evaluate_objectives_independently: null @@ -269,11 +246,7 @@ fn_invdeceptive_deceptive_rotell: objectives: - 2 references: - - authors: [] - link: - type: null - url: https://doi.org/10.1145/3449726.3459521 - title: Mixed-variable multi-objective test problems + - ref_onemax_sphere_zeromax_sphere source: - artificial tags: null @@ -282,11 +255,11 @@ fn_invdeceptive_deceptive_rotell: - dim: max: null min: 1 - type: binary + type: continuous - dim: max: null min: 1 - type: continuous + type: binary fn_inverted_dtlz1: allows_partial_evaluation: null can_evaluate_objectives_independently: null @@ -313,11 +286,7 @@ fn_inverted_dtlz1: - 9 - 10 references: - - authors: [] - link: - type: null - url: https://doi.org/10.1109/TEVC.2013.2281534 - title: Inverted DTLZ1 + - ref_inverted_dtlz1 source: null tags: null type: problem @@ -354,12 +323,7 @@ fn_jsec2019: - 4 - 5 references: - - authors: [] - link: - type: null - url: - http://www.jpnsec.org/files/competition2019/EC-Symposium-2019-Competition-English.html - title: JPNSEC EC-Symposium 2019 competition + - ref_jpnsec_ec_symposium_2019_competition source: - real-world tags: null @@ -385,11 +349,7 @@ fn_onemax_sphere_deceptive_rotell: objectives: - 2 references: - - authors: [] - link: - type: null - url: https://doi.org/10.1145/3449726.3459521 - title: Mixed-variable multi-objective test problems + - ref_onemax_sphere_zeromax_sphere source: - artificial tags: null @@ -398,11 +358,11 @@ fn_onemax_sphere_deceptive_rotell: - dim: max: null min: 1 - type: binary + type: continuous - dim: max: null min: 1 - type: continuous + type: binary fn_onemax_sphere_zeromax_sphere: allows_partial_evaluation: null can_evaluate_objectives_independently: null @@ -421,11 +381,7 @@ fn_onemax_sphere_zeromax_sphere: objectives: - 2 references: - - authors: [] - link: - type: null - url: https://doi.org/10.1145/3449726.3459521 - title: Onemax+Sphere / Zeromax+Sphere + - ref_onemax_sphere_zeromax_sphere source: - artificial tags: null @@ -434,11 +390,11 @@ fn_onemax_sphere_zeromax_sphere: - dim: max: null min: 1 - type: binary + type: continuous - dim: max: null min: 1 - type: continuous + type: binary fn_radar_waveform: allows_partial_evaluation: null can_evaluate_objectives_independently: null @@ -462,11 +418,7 @@ fn_radar_waveform: objectives: - 9 references: - - authors: [] - link: - type: null - url: https://doi.org/10.1007/978-3-540-70928-2_53 - title: Radar waveform design + - ref_radar_waveform_design source: - real-world tags: null @@ -502,11 +454,7 @@ gen_beacon: objectives: - 2 references: - - authors: [] - link: - type: null - url: https://dl.acm.org/doi/10.1145/3712255.3734303 - title: BEACON + - ref_beacon source: - artificial tags: null @@ -585,11 +533,7 @@ gen_ealain: - 9 - 10 references: - - authors: [] - link: - type: null - url: https://doi.org/10.1145/3638530.3654299 - title: Ealain + - ref_ealain source: - real-world-like tags: null @@ -602,11 +546,11 @@ gen_ealain: - dim: max: null min: 1 - type: binary + type: continuous - dim: max: null min: 1 - type: continuous + type: binary gen_gnbg: allows_partial_evaluation: null can_evaluate_objectives_independently: null @@ -625,11 +569,7 @@ gen_gnbg: objectives: - 1 references: - - authors: [] - link: - type: null - url: https://arxiv.org/abs/2312.07083 - title: GNBG + - ref_gnbg source: - artificial tags: null @@ -649,8 +589,8 @@ gen_gnbg_ii: evaluation_time: null fidelity_levels: null implementations: - - impl_gnbg_ii - impl_iohgnbg + - impl_gnbg_ii long_name: null modality: null name: GNBG-II @@ -658,11 +598,7 @@ gen_gnbg_ii: objectives: - 1 references: - - authors: [] - link: - type: null - url: https://dl.acm.org/doi/pdf/10.1145/3712255.3734271 - title: GNBG-II + - ref_gnbg_ii source: - artificial tags: null @@ -702,11 +638,7 @@ gen_gpd: - 9 - 10 references: - - authors: [] - link: - type: null - url: https://doi.org/10.1016/j.asoc.2020.106139 - title: GPD generator + - ref_gpd_generator source: null tags: null type: generator @@ -734,11 +666,7 @@ gen_iohclustering: objectives: - 1 references: - - authors: [] - link: - type: null - url: https://arxiv.org/pdf/2505.09233 - title: IOHClustering + - ref_iohclustering source: - artificial-from-real-data tags: null @@ -758,8 +686,8 @@ gen_ma_bbob: evaluation_time: null fidelity_levels: null implementations: - - impl_ma_bbob - impl_iohexperimenter + - impl_ma_bbob long_name: null modality: - multimodal @@ -768,11 +696,7 @@ gen_ma_bbob: objectives: - 1 references: - - authors: [] - link: - type: null - url: https://doi.org/10.1145/3673908 - title: MA-BBOB + - ref_ma_bbob source: - artificial tags: null @@ -802,11 +726,7 @@ gen_mpm2: objectives: - 1 references: - - authors: [] - link: - type: null - url: https://ls11-www.cs.tu-dortmund.de/_media/techreports/tr15-01.pdf - title: MPM2 technical report TR15-01 + - ref_mpm2_technical_report_tr15_01 source: null tags: null type: generator @@ -845,11 +765,7 @@ gen_mubqp: - 9 - 10 references: - - authors: [] - link: - type: null - url: https://doi.org/10.1016/j.asoc.2013.11.008 - title: mUBQP benchmark + - ref_mubqp_benchmark source: null tags: null type: generator @@ -878,11 +794,7 @@ gen_puboi: objectives: - 1 references: - - authors: [] - link: - type: null - url: https://link.springer.com/chapter/10.1007/978-3-031-04148-8_12 - title: PUBOi + - ref_puboi source: - artificial tags: null @@ -933,11 +845,11 @@ gen_randoptgen: - dim: max: null min: 1 - type: binary + type: continuous - dim: max: null min: 1 - type: continuous + type: binary gen_rho_mnk_landscapes: allows_partial_evaluation: null can_evaluate_objectives_independently: null @@ -967,12 +879,7 @@ gen_rho_mnk_landscapes: - 9 - 10 references: - - authors: [] - link: - type: null - url: https://doi.org/10.1016/j.ejor.2012.12.019 - title: On the design of multi-objective evolutionary algorithms based on - NK-landscapes + - ref_on_the_design_of source: null tags: null type: generator @@ -1011,11 +918,7 @@ gen_rho_mtsp: - 9 - 10 references: - - authors: [] - link: - type: null - url: https://doi.org/10.1007/978-3-319-45823-6_40 - title: On the impact of multi-objective scalability for the ρmTSP + - ref_on_the_impact_of source: null tags: null type: generator @@ -1043,11 +946,7 @@ gen_wmodel: objectives: - 1 references: - - authors: [] - link: - type: null - url: https://dl.acm.org/doi/abs/10.1145/3205651.3208240 - title: W-model + - ref_w_model source: - artificial tags: null @@ -1082,8 +981,8 @@ impl_bonobench: impl_bso_toolbox: description: Building Spatial Design toolbox (TU/e) evaluation_time: - - 1 second - 40 seconds + - 1 second language: C++ links: - type: repository @@ -1124,8 +1023,8 @@ impl_cec2022: impl_cfd: description: Expensive real-world CFD-based test problems evaluation_time: - - 15m - 30s + - 15m language: null links: - type: repository @@ -1221,8 +1120,8 @@ impl_gasoline: impl_gbea: description: Game-Benchmark for Evolutionary Algorithms (COCO fork) evaluation_time: - - 34 seconds - 5 seconds + - 34 seconds language: null links: - type: repository @@ -1306,8 +1205,8 @@ impl_ma_bbob: impl_mechbench: description: Structural mechanics design optimization benchmark evaluation_time: - - 1 minute - 7 minutes + - 1 minute language: Python links: - type: repository @@ -1456,8 +1355,8 @@ impl_tulipa: description: Large linear program for optimal investment and operation of energy systems evaluation_time: - - hours - minutes + - hours language: Julia / JuMP links: - type: website @@ -1487,6 +1386,475 @@ impl_wmodel: name: BBDOB W-Model requirements: null type: implementation +ref_a_multi_step_evaluation: + authors: + - Tea Tušar + - Peter Korošec + - Bogdan Filipič + link: + type: null + url: https://dis.ijs.si/tea/Publications/Tusar23Multistep.pdf + title: A Multi-Step Evaluation Process in Electric Motor Design + type: reference +ref_a_review_of_multiobjective: + authors: + - Simon Huband + - Philip Hingston + - Luigi Barone + - Lyndon While + link: + type: null + url: https://doi.org/10.1109/TEVC.2005.861417 + title: A review of multiobjective test problems and a scalable test problem + toolkit + type: reference +ref_amvop: + authors: null + link: + type: null + url: https://doi.org/10.1109/TEVC.2013.2281531 + title: RWMVOP + type: reference +ref_bbcomp_emo_2017: + authors: null + link: + type: null + url: https://www.ini.rub.de/PEOPLE/glasmtbl/projects/bbcomp/ + title: BBComp EMO 2017 + type: reference +ref_bbob_bi_objective_test_suite: + authors: null + link: + type: null + url: https://doi.org/10.48550/arXiv.1604.00359 + title: BBOB bi-objective test suite + type: reference +ref_bbob_constrained_documentation: + authors: null + link: + type: null + url: http://numbbo.github.io/coco-doc/bbob-constrained/ + title: bbob-constrained documentation + type: reference +ref_bbob_large_scale_test_suite: + authors: null + link: + type: null + url: https://doi.org/10.48550/arXiv.1903.06396 + title: BBOB large-scale test suite + type: reference +ref_bbob_mixed_integer_test_suite: + authors: null + link: + type: null + url: https://doi.org/10.1145/3321707.3321868 + title: BBOB bi-objective mixed-integer test suite + type: reference +ref_beacon: + authors: null + link: + type: null + url: https://dl.acm.org/doi/10.1145/3712255.3734303 + title: BEACON + type: reference +ref_benchmark_functions_for_cec: + authors: null + link: null + title: Benchmark Functions for CEC 2015 Special Session and Competition on + Dynamic Multi-objective Optimization + type: reference +ref_bp_benchmark: + authors: null + link: + type: null + url: https://doi.org/10.1109/CEC.2019.8790277 + title: BP benchmark + type: reference +ref_brachytherapy_treatment_planning: + authors: null + link: + type: null + url: https://www.sciencedirect.com/science/article/pii/S1538472123016781 + title: Brachytherapy treatment planning + type: reference +ref_building_spatial_design: + authors: null + link: + type: null + url: https://hdl.handle.net/1887/81789 + title: Building spatial design + type: reference +ref_car_structure_design_benchmark: + authors: null + link: + type: null + url: https://doi.org/10.1145/3205651.3205702 + title: Car structure design benchmark + type: reference +ref_cdmp_benchmark: + authors: null + link: + type: null + url: https://doi.org/10.1145/3321707.3321878 + title: CDMP benchmark + type: reference +ref_cec2013_definitions: + authors: null + link: + type: null + url: https://peerj.com/articles/cs-2671/CEC2013.pdf + title: CEC2013 definitions + type: reference +ref_cec2018_dmop_competition_tr: + authors: null + link: + type: null + url: + https://www.academia.edu/download/94499025/TR-CEC2018-DMOP-Competition.pdf + title: CEC2018 DMOP Competition TR + type: reference +ref_cec2022_tr: + authors: null + link: + type: null + url: https://github.com/P-N-Suganthan/2022-SO-BO/blob/main/CEC2022%20TR.pdf + title: CEC2022 TR + type: reference +ref_cfd_test_problem_suite: + authors: null + link: + type: null + url: https://doi.org/10.1007/978-3-319-99259-4_24 + title: CFD test problem suite + type: reference +ref_coco_a_platform_for: + authors: null + link: + type: null + url: https://doi.org/10.1080/10556788.2020.1808977 + title: 'COCO: a platform for comparing continuous optimizers in a black-box setting' + type: reference +ref_comparison_of_multiobjective_evolutionary: + authors: + - Eckart Zitzler + - Kalyanmoy Deb + - Lothar Thiele + link: + type: null + url: https://doi.org/10.1162/106365600568202 + title: 'Comparison of multiobjective evolutionary algorithms: empirical results' + type: reference +ref_convex_dtlz2: + authors: null + link: + type: null + url: https://doi.org/10.1109/TEVC.2013.2281535 + title: Convex DTLZ2 + type: reference +ref_cuter: + authors: null + link: + type: null + url: https://dl.acm.org/doi/10.1145/962437.962439 + title: CUTEr + type: reference +ref_cutest: + authors: null + link: + type: null + url: https://link.springer.com/article/10.1007/s10589-014-9687-3 + title: CUTEst + type: reference +ref_dynamicbinval: + authors: null + link: + type: null + url: https://arxiv.org/pdf/2404.15837 + title: DynamicBinVal + type: reference +ref_ealain: + authors: null + link: + type: null + url: https://doi.org/10.1145/3638530.3654299 + title: Ealain + type: reference +ref_easy_to_evaluate_real: + authors: + - Ryoji Tanabe + - Hisao Ishibuchi + link: + type: null + url: https://doi.org/10.1016/j.asoc.2020.106078 + title: Easy-to-evaluate real-world multi-objective optimization problems + type: reference +ref_evolutionary_many_task_optimization: + authors: null + link: + type: null + url: https://doi.org/10.48550/arXiv.2110.08033 + title: Evolutionary many-task optimization framework + type: reference +ref_expobench: + authors: null + link: + type: null + url: https://doi.org/10.1016/j.asoc.2023.110744 + title: EXPObench + type: reference +ref_fleetopt: + authors: null + link: + type: null + url: https://dl.acm.org/doi/abs/10.1145/3638530.3664137 + title: FleetOpt + type: reference +ref_game_benchmark_for_evolutionary: + authors: null + link: + type: null + url: https://doi.org/10.1145/3321707.3321805 + title: Game benchmark for evolutionary algorithms + type: reference +ref_gasoline_direct_injection_engine_design: + authors: null + link: + type: null + url: https://doi.org/10.1016/j.ejor.2022.08.032 + title: Gasoline direct injection engine design + type: reference +ref_gnbg: + authors: null + link: + type: null + url: https://arxiv.org/abs/2312.07083 + title: GNBG + type: reference +ref_gnbg_ii: + authors: null + link: + type: null + url: https://dl.acm.org/doi/pdf/10.1145/3712255.3734271 + title: GNBG-II + type: reference +ref_gpd_generator: + authors: null + link: + type: null + url: https://doi.org/10.1016/j.asoc.2020.106139 + title: GPD generator + type: reference +ref_inverted_dtlz1: + authors: null + link: + type: null + url: https://doi.org/10.1109/TEVC.2013.2281534 + title: Inverted DTLZ1 + type: reference +ref_iohclustering: + authors: null + link: + type: null + url: https://arxiv.org/pdf/2505.09233 + title: IOHClustering + type: reference +ref_jpnsec_ec_symposium_2019_competition: + authors: null + link: + type: null + url: + http://www.jpnsec.org/files/competition2019/EC-Symposium-2019-Competition-English.html + title: JPNSEC EC-Symposium 2019 competition + type: reference +ref_kinematics_of_a_robot_arm: + authors: null + link: + type: null + url: https://doi.org/10.1023/A:1013258808932 + title: Kinematics of a robot arm + type: reference +ref_linkage_zdt_dtlz_variants: + authors: null + link: + type: null + url: https://doi.org/10.1145/1143997.1144179 + title: Linkage ZDT/DTLZ variants + type: reference +ref_ma_bbob: + authors: null + link: + type: null + url: https://doi.org/10.1145/3673908 + title: MA-BBOB + type: reference +ref_maop_benchmark: + authors: null + link: + type: null + url: https://doi.org/10.1016/j.swevo.2019.02.003 + title: MaOP benchmark + type: reference +ref_mechbench: + authors: null + link: + type: null + url: https://arxiv.org/abs/2511.10821 + title: MECHBench + type: reference +ref_mf2_a_collection_of: + authors: null + link: + type: null + url: https://doi.org/10.21105/joss.02049 + title: 'mf2: a collection of multi-fidelity benchmark functions in Python' + type: reference +ref_minus_dtlz_minus_wfg: + authors: null + link: + type: null + url: https://doi.org/10.1109/TEVC.2016.2587749 + title: Minus DTLZ / Minus WFG + type: reference +ref_mmopp_technical_report: + authors: null + link: + type: null + url: + http://www5.zzu.edu.cn/system/_content/download.jsp?urltype=news.DownloadAttachUrl&owner=1327567121&wbfileid=4764412 + title: MMOPP technical report + type: reference +ref_modact: + authors: null + link: + type: null + url: https://doi.org/10.1109/TEVC.2020.3020046 + title: MODAct + type: reference +ref_mpm2_technical_report_tr15_01: + authors: null + link: + type: null + url: https://ls11-www.cs.tu-dortmund.de/_media/techreports/tr15-01.pdf + title: MPM2 technical report TR15-01 + type: reference +ref_mubqp_benchmark: + authors: null + link: + type: null + url: https://doi.org/10.1016/j.asoc.2013.11.008 + title: mUBQP benchmark + type: reference +ref_on_the_design_of: + authors: null + link: + type: null + url: https://doi.org/10.1016/j.ejor.2012.12.019 + title: On the design of multi-objective evolutionary algorithms based on + NK-landscapes + type: reference +ref_on_the_impact_of: + authors: null + link: + type: null + url: https://doi.org/10.1007/978-3-319-45823-6_40 + title: On the impact of multi-objective scalability for the ρmTSP + type: reference +ref_onemax_sphere_zeromax_sphere: + authors: null + link: + type: null + url: https://doi.org/10.1145/3449726.3459521 + title: Mixed-variable multi-objective test problems + type: reference +ref_pbo_benchmarks: + authors: null + link: + type: null + url: https://dl.acm.org/doi/pdf/10.1145/3319619.3326810 + title: PBO benchmarks + type: reference +ref_porkchop_plot_interplanetary_trajectory: + authors: null + link: + type: null + url: https://doi.org/10.1109/CEC65147.2025.11042973 + title: Porkchop plot interplanetary trajectory benchmark + type: reference +ref_puboi: + authors: null + link: + type: null + url: https://link.springer.com/chapter/10.1007/978-3-031-04148-8_12 + title: PUBOi + type: reference +ref_radar_waveform_design: + authors: null + link: + type: null + url: https://doi.org/10.1007/978-3-540-70928-2_53 + title: Radar waveform design + type: reference +ref_real_parameter_black_box: + authors: null + link: + type: null + url: https://hal.inria.fr/inria-00369466 + title: 'Real-parameter black-box optimization benchmarking: noisy functions definitions' + type: reference +ref_sbox_cost: + authors: null + link: + type: null + url: https://doi.org/10.48550/arXiv.2305.12221 + title: SBOX-COST + type: reference +ref_scalable_multi_objective_optimization: + authors: + - Kalyanmoy Deb + - Lothar Thiele + - Marco Laumanns + - Eckart Zitzler + link: + type: null + url: https://doi.org/10.1109/CEC.2002.1007032 + title: Scalable multi-objective optimization test problems + type: reference +ref_sdp_dynamic_multi_objective_benchmark: + authors: null + link: + type: null + url: https://doi.org/10.1109/TCYB.2019.2896021 + title: SDP dynamic multi-objective benchmark + type: reference +ref_submodular_optimization_benchmark: + authors: null + link: + type: null + url: https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=10254181 + title: Submodular optimization benchmark + type: reference +ref_tulipaenergymodel_jl_scientific_references: + authors: null + link: + type: null + url: + https://tulipaenergy.github.io/TulipaEnergyModel.jl/stable/40-scientific-foundation/45-scientific-references + title: TulipaEnergyModel.jl scientific references + type: reference +ref_vehicledynamics_benchmark: + authors: null + link: + type: null + url: https://www.scitepress.org/Papers/2023/121580/121580.pdf + title: VehicleDynamics benchmark + type: reference +ref_w_model: + authors: null + link: + type: null + url: https://dl.acm.org/doi/abs/10.1145/3205651.3208240 + title: W-model + type: reference suite_amvop: allows_partial_evaluation: null can_evaluate_objectives_independently: null @@ -1506,11 +1874,7 @@ suite_amvop: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1109/TEVC.2013.2281531 - title: AMVOP + - ref_amvop source: null tags: null type: suite @@ -1518,11 +1882,11 @@ suite_amvop: - dim: max: null min: 1 - type: categorical + type: integer - dim: max: null min: 1 - type: integer + type: categorical - dim: max: null min: 1 @@ -1547,11 +1911,7 @@ suite_bbob: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1080/10556788.2020.1808977 - title: 'COCO: a platform for comparing continuous optimizers in a black-box setting' + - ref_coco_a_platform_for source: null tags: null type: suite @@ -1580,11 +1940,7 @@ suite_bbob_biobj: - 2 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.48550/arXiv.1604.00359 - title: BBOB bi-objective test suite + - ref_bbob_bi_objective_test_suite source: null tags: null type: suite @@ -1613,11 +1969,7 @@ suite_bbob_biobj_mixint: - 2 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1145/3321707.3321868 - title: BBOB bi-objective mixed-integer test suite + - ref_bbob_mixed_integer_test_suite source: null tags: null type: suite @@ -1654,11 +2006,7 @@ suite_bbob_constrained: - 1 problems: null references: - - authors: [] - link: - type: null - url: http://numbbo.github.io/coco-doc/bbob-constrained/ - title: bbob-constrained documentation + - ref_bbob_constrained_documentation source: null tags: null type: suite @@ -1687,11 +2035,7 @@ suite_bbob_largescale: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.48550/arXiv.1903.06396 - title: BBOB large-scale test suite + - ref_bbob_large_scale_test_suite source: null tags: null type: suite @@ -1720,11 +2064,7 @@ suite_bbob_mixint: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1145/3321707.3321868 - title: BBOB mixed-integer test suite + - ref_bbob_mixed_integer_test_suite source: null tags: null type: suite @@ -1758,11 +2098,7 @@ suite_bbob_noisy: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://hal.inria.fr/inria-00369466 - title: 'Real-parameter black-box optimization benchmarking: noisy functions definitions' + - ref_real_parameter_black_box source: null tags: null type: suite @@ -1798,11 +2134,7 @@ suite_bp: - 10 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1109/CEC.2019.8790277 - title: BP benchmark + - ref_bp_benchmark source: null tags: null type: suite @@ -1840,11 +2172,7 @@ suite_brachytherapy: - 3 problems: null references: - - authors: [] - link: - type: null - url: https://www.sciencedirect.com/science/article/pii/S1538472123016781 - title: Brachytherapy treatment planning + - ref_brachytherapy_treatment_planning source: - real-world tags: null @@ -1877,11 +2205,7 @@ suite_car_structure: - 2 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1145/3205651.3205702 - title: Car structure design benchmark + - ref_car_structure_design_benchmark source: - real-world tags: null @@ -1923,11 +2247,7 @@ suite_cdmp: - 10 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1145/3321707.3321878 - title: CDMP benchmark + - ref_cdmp_benchmark source: null tags: null type: suite @@ -1946,8 +2266,8 @@ suite_cec2013: evaluation_time: null fidelity_levels: null implementations: - - impl_cec2013 - impl_iohexperimenter + - impl_cec2013 long_name: null modality: null name: CEC2013 @@ -1956,11 +2276,7 @@ suite_cec2013: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://peerj.com/articles/cs-2671/CEC2013.pdf - title: CEC2013 definitions + - ref_cec2013_definitions source: - artificial tags: null @@ -1994,10 +2310,7 @@ suite_cec2015_dmoo: - 3 problems: null references: - - authors: [] - link: null - title: Benchmark Functions for CEC 2015 Special Session and Competition on - Dynamic Multi-objective Optimization + - ref_benchmark_functions_for_cec source: null tags: null type: suite @@ -2027,12 +2340,7 @@ suite_cec2018_dt: - 3 problems: null references: - - authors: [] - link: - type: null - url: - https://www.academia.edu/download/94499025/TR-CEC2018-DMOP-Competition.pdf - title: CEC2018 DMOP Competition TR + - ref_cec2018_dmop_competition_tr source: - artificial tags: null @@ -2052,8 +2360,8 @@ suite_cec2022: evaluation_time: null fidelity_levels: null implementations: - - impl_cec2022 - impl_iohexperimenter + - impl_cec2022 long_name: null modality: null name: CEC2022 @@ -2062,12 +2370,7 @@ suite_cec2022: - 1 problems: null references: - - authors: [] - link: - type: null - url: - https://github.com/P-N-Suganthan/2022-SO-BO/blob/main/CEC2022%20TR.pdf - title: CEC2022 TR + - ref_cec2022_tr source: - artificial tags: null @@ -2101,11 +2404,7 @@ suite_cfd: - 2 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1007/978-3-319-99259-4_24 - title: CFD test problem suite + - ref_cfd_test_problem_suite source: - real-world tags: null @@ -2141,13 +2440,7 @@ suite_cre: - 5 problems: null references: - - authors: - - Ryoji Tanabe - - Hisao Ishibuchi - link: - type: null - url: https://doi.org/10.1016/j.asoc.2020.106078 - title: Easy-to-evaluate real-world multi-objective optimization problems + - ref_easy_to_evaluate_real source: - real-world-like tags: null @@ -2156,11 +2449,11 @@ suite_cre: - dim: max: 7 min: 3 - type: continuous + type: integer - dim: max: 7 min: 3 - type: integer + type: continuous suite_cuter: allows_partial_evaluation: no can_evaluate_objectives_independently: null @@ -2183,11 +2476,7 @@ suite_cuter: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://dl.acm.org/doi/10.1145/962437.962439 - title: CUTEr + - ref_cuter source: - artificial tags: null @@ -2200,11 +2489,11 @@ suite_cuter: - dim: max: null min: 1 - type: binary + type: continuous - dim: max: null min: 1 - type: continuous + type: binary suite_cutest: allows_partial_evaluation: no can_evaluate_objectives_independently: null @@ -2235,11 +2524,7 @@ suite_cutest: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://link.springer.com/article/10.1007/s10589-014-9687-3 - title: CUTEst + - ref_cutest source: - artificial tags: null @@ -2252,11 +2537,11 @@ suite_cutest: - dim: max: null min: 1 - type: binary + type: continuous - dim: max: null min: 1 - type: continuous + type: binary suite_dtlz: allows_partial_evaluation: null can_evaluate_objectives_independently: null @@ -2284,15 +2569,7 @@ suite_dtlz: - 10 problems: null references: - - authors: - - Kalyanmoy Deb - - Lothar Thiele - - Marco Laumanns - - Eckart Zitzler - link: - type: null - url: https://doi.org/10.1109/CEC.2002.1007032 - title: Scalable multi-objective optimization test problems + - ref_scalable_multi_objective_optimization source: null tags: null type: suite @@ -2321,11 +2598,7 @@ suite_dynamicbinval: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://arxiv.org/pdf/2404.15837 - title: DynamicBinVal + - ref_dynamicbinval source: - artificial tags: null @@ -2354,11 +2627,7 @@ suite_emo2017: - 2 problems: null references: - - authors: [] - link: - type: null - url: https://www.ini.rub.de/PEOPLE/glasmtbl/projects/bbcomp/ - title: BBComp EMO 2017 + - ref_bbcomp_emo_2017 source: - real-world tags: null @@ -2436,11 +2705,7 @@ suite_etmof: - 50 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.48550/arXiv.2110.08033 - title: Evolutionary many-task optimization framework + - ref_evolutionary_many_task_optimization source: null tags: null type: suite @@ -2473,17 +2738,13 @@ suite_expobench: modality: null name: EXPObench noise_type: - - real-life - observational + - real-life objectives: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1016/j.asoc.2023.110744 - title: EXPObench + - ref_expobench source: - real-world tags: null @@ -2492,15 +2753,15 @@ suite_expobench: - dim: max: 135 min: 10 - type: categorical + type: integer - dim: max: 135 min: 10 - type: integer + type: continuous - dim: max: 135 min: 10 - type: continuous + type: categorical suite_gbea: allows_partial_evaluation: null can_evaluate_objectives_independently: null @@ -2524,11 +2785,7 @@ suite_gbea: - 2 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1145/3321707.3321805 - title: Game benchmark for evolutionary algorithms + - ref_game_benchmark_for_evolutionary source: - real-world tags: null @@ -2557,11 +2814,7 @@ suite_gnbg: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://arxiv.org/abs/2312.07083 - title: GNBG + - ref_gnbg source: - artificial tags: null @@ -2582,8 +2835,8 @@ suite_gnbg_ii: evaluation_time: null fidelity_levels: null implementations: - - impl_gnbg_ii - impl_iohgnbg + - impl_gnbg_ii long_name: null modality: null name: GNBG-II @@ -2592,11 +2845,7 @@ suite_gnbg_ii: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://dl.acm.org/doi/pdf/10.1145/3712255.3734271 - title: GNBG-II + - ref_gnbg_ii source: - artificial tags: null @@ -2627,11 +2876,7 @@ suite_iohclustering: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://arxiv.org/pdf/2505.09233 - title: IOHClustering + - ref_iohclustering source: - artificial-from-real-data tags: null @@ -2661,11 +2906,7 @@ suite_kinematics_robotarm: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1023/A:1013258808932 - title: Kinematics of a robot arm + - ref_kinematics_of_a_robot_arm source: - real-world tags: null @@ -2691,11 +2932,7 @@ suite_l1_zdt: - 2 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1145/1143997.1144179 - title: Linkage ZDT/DTLZ variants + - ref_linkage_zdt_dtlz_variants source: null tags: null type: suite @@ -2703,11 +2940,11 @@ suite_l1_zdt: - dim: max: null min: 1 - type: binary + type: continuous - dim: max: null min: 1 - type: continuous + type: binary suite_l2_dtlz: allows_partial_evaluation: null can_evaluate_objectives_independently: null @@ -2734,11 +2971,7 @@ suite_l2_dtlz: - 10 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1145/1143997.1144179 - title: Linkage ZDT/DTLZ variants + - ref_linkage_zdt_dtlz_variants source: null tags: null type: suite @@ -2765,11 +2998,7 @@ suite_l2_zdt: - 2 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1145/1143997.1144179 - title: Linkage ZDT/DTLZ variants + - ref_linkage_zdt_dtlz_variants source: null tags: null type: suite @@ -2777,11 +3006,11 @@ suite_l2_zdt: - dim: max: null min: 1 - type: binary + type: continuous - dim: max: null min: 1 - type: continuous + type: binary suite_l3_dtlz: allows_partial_evaluation: null can_evaluate_objectives_independently: null @@ -2808,11 +3037,7 @@ suite_l3_dtlz: - 10 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1145/1143997.1144179 - title: Linkage ZDT/DTLZ variants + - ref_linkage_zdt_dtlz_variants source: null tags: null type: suite @@ -2839,11 +3064,7 @@ suite_l3_zdt: - 2 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1145/1143997.1144179 - title: Linkage ZDT/DTLZ variants + - ref_linkage_zdt_dtlz_variants source: null tags: null type: suite @@ -2851,11 +3072,11 @@ suite_l3_zdt: - dim: max: null min: 1 - type: binary + type: continuous - dim: max: null min: 1 - type: continuous + type: binary suite_maop: allows_partial_evaluation: null can_evaluate_objectives_independently: null @@ -2883,11 +3104,7 @@ suite_maop: - 10 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1016/j.swevo.2019.02.003 - title: MaOP benchmark + - ref_maop_benchmark source: null tags: null type: suite @@ -2924,11 +3141,7 @@ suite_mechbench: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://arxiv.org/abs/2511.10821 - title: MECHBench + - ref_mechbench source: - real-world tags: null @@ -2959,11 +3172,7 @@ suite_mf2: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.21105/joss.02049 - title: 'mf2: a collection of multi-fidelity benchmark functions in Python' + - ref_mf2_a_collection_of source: null tags: null type: suite @@ -2999,11 +3208,7 @@ suite_minus_dtlz: - 10 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1109/TEVC.2016.2587749 - title: Minus DTLZ / Minus WFG + - ref_minus_dtlz_minus_wfg source: null tags: null type: suite @@ -3039,11 +3244,7 @@ suite_minus_wfg: - 10 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1109/TEVC.2016.2587749 - title: Minus DTLZ / Minus WFG + - ref_minus_dtlz_minus_wfg source: null tags: null type: suite @@ -3081,12 +3282,7 @@ suite_mmopp: - 7 problems: null references: - - authors: [] - link: - type: null - url: - http://www5.zzu.edu.cn/system/_content/download.jsp?urltype=news.DownloadAttachUrl&owner=1327567121&wbfileid=4764412 - title: MMOPP technical report + - ref_mmopp_technical_report source: null tags: null type: suite @@ -3121,11 +3317,7 @@ suite_modact: - 5 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1109/TEVC.2020.3020046 - title: MODAct + - ref_modact source: - real-world tags: null @@ -3185,11 +3377,7 @@ suite_pbo: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://dl.acm.org/doi/pdf/10.1145/3319619.3326810 - title: PBO benchmarks + - ref_pbo_benchmarks source: - artificial tags: null @@ -3219,11 +3407,7 @@ suite_porkchop: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1109/CEC65147.2025.11042973 - title: Porkchop plot interplanetary trajectory benchmark + - ref_porkchop_plot_interplanetary_trajectory source: - real-world tags: null @@ -3257,13 +3441,7 @@ suite_re: - 9 problems: null references: - - authors: - - Ryoji Tanabe - - Hisao Ishibuchi - link: - type: null - url: https://doi.org/10.1016/j.asoc.2020.106078 - title: Easy-to-evaluate real-world multi-objective optimization problems + - ref_easy_to_evaluate_real source: - real-world-like tags: null @@ -3272,11 +3450,11 @@ suite_re: - dim: max: 7 min: 2 - type: continuous + type: integer - dim: max: 7 min: 2 - type: integer + type: continuous suite_rwmvop: allows_partial_evaluation: null can_evaluate_objectives_independently: null @@ -3299,11 +3477,7 @@ suite_rwmvop: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1109/TEVC.2013.2281531 - title: RWMVOP + - ref_amvop source: - real-world tags: null @@ -3312,11 +3486,11 @@ suite_rwmvop: - dim: max: null min: 1 - type: categorical + type: integer - dim: max: null min: 1 - type: integer + type: categorical - dim: max: null min: 1 @@ -3342,11 +3516,7 @@ suite_sbox_cost: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.48550/arXiv.2305.12221 - title: SBOX-COST + - ref_sbox_cost source: null tags: null type: suite @@ -3383,11 +3553,7 @@ suite_sdp: - 10 problems: null references: - - authors: [] - link: - type: null - url: https://doi.org/10.1109/TCYB.2019.2896021 - title: SDP dynamic multi-objective benchmark + - ref_sdp_dynamic_multi_objective_benchmark source: null tags: null type: suite @@ -3416,11 +3582,7 @@ suite_submodular: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=10254181 - title: Submodular optimization benchmark + - ref_submodular_optimization_benchmark source: - artificial tags: null @@ -3436,11 +3598,11 @@ suite_tulipa_energy: code_examples: null constraints: - equality: null - hard: yes + hard: some number: null type: unknown - equality: null - hard: some + hard: yes number: null type: unknown description: Determine the optimal investment and operation decisions for @@ -3464,12 +3626,7 @@ suite_tulipa_energy: - 1 problems: null references: - - authors: [] - link: - type: null - url: - https://tulipaenergy.github.io/TulipaEnergyModel.jl/stable/40-scientific-foundation/45-scientific-references - title: TulipaEnergyModel.jl scientific references + - ref_tulipaenergymodel_jl_scientific_references source: - real-world tags: null @@ -3499,11 +3656,7 @@ suite_vehicle_dynamics: - 1 problems: null references: - - authors: [] - link: - type: null - url: https://www.scitepress.org/Papers/2023/121580/121580.pdf - title: VehicleDynamics benchmark + - ref_vehicledynamics_benchmark source: - real-world tags: null @@ -3538,16 +3691,7 @@ suite_wfg: - 10 problems: null references: - - authors: - - Simon Huband - - Philip Hingston - - Luigi Barone - - Lyndon While - link: - type: null - url: https://doi.org/10.1109/TEVC.2005.861417 - title: A review of multiobjective test problems and a scalable test problem - toolkit + - ref_a_review_of_multiobjective source: null tags: null type: suite @@ -3575,14 +3719,7 @@ suite_zdt: - 2 problems: null references: - - authors: - - Eckart Zitzler - - Kalyanmoy Deb - - Lothar Thiele - link: - type: null - url: https://doi.org/10.1162/106365600568202 - title: 'Comparison of multiobjective evolutionary algorithms: empirical results' + - ref_comparison_of_multiobjective_evolutionary source: null tags: null type: suite @@ -3590,8 +3727,8 @@ suite_zdt: - dim: max: null min: 1 - type: binary + type: continuous - dim: max: null min: 1 - type: continuous + type: binary diff --git a/pyproject.toml b/pyproject.toml index 9be5ec9..229c1c8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,6 +8,7 @@ authors = [ ] requires-python = ">=3.10" dependencies = [ + "coco-experiment>=2.8.2", "pydantic>=2.13.3", "pydantic-yaml>=1.6.0", "pyyaml>=6.0.3", diff --git a/src/opltools/schema.py b/src/opltools/schema.py index a2c5b5b..f4adc54 100644 --- a/src/opltools/schema.py +++ b/src/opltools/schema.py @@ -12,6 +12,7 @@ class OPLType(Enum): suite = "suite" generator = "generator" implementation = "implementation" + reference = "reference" class Link(BaseModel): @@ -73,7 +74,8 @@ def __hash__(self): return hash((self.type, self.hard, self.equality, number)) -class Reference(BaseModel): +class Reference(Thing): + type: OPLType = OPLType.reference title: str | None = None authors: list[str] | None = None link: Link | None = None @@ -108,7 +110,7 @@ class ProblemLike(Thing): long_name: str | None = None description: str | None = None tags: set[str] | None = None - references: set[Reference] | None = None + references: set[str] | None = None implementations: set[str] | None = None objectives: set[int] | None = None variables: set[Variable] | None = None @@ -142,7 +144,7 @@ class Generator(ProblemLike): class Library(RootModel): - root: dict[str, Problem | Generator | Suite | Implementation] = {} + root: dict[str, Problem | Generator | Suite | Implementation | Reference] = {} def _check_id_references(self, ids, type: OPLType) -> None: for id in ids: @@ -174,6 +176,19 @@ def _percolate_set(self, thing: Any, children: set | None, property: str): @model_validator(mode="after") def _validate(self) -> Self: + # Check reference ids on all ProblemLike things + for id, thing in self.root.items(): + if isinstance(thing, ProblemLike) and thing.references: + for ref_id in thing.references: + if ref_id not in self.root: + raise ValueError( + f"{thing.type.name} {id} references reference with undefined id '{ref_id}'." + ) + if self.root[ref_id].type != OPLType.reference: + raise ValueError( + f"{thing.type.name} {id} references reference with id '{ref_id}' but id is a {self.root[ref_id].type.name}." + ) + # First check and fixup all problems for id, thing in self.root.items(): if isinstance(thing, Problem) and thing.implementations: diff --git a/tests/test_library.py b/tests/test_library.py index 542bc7b..c525eb3 100644 --- a/tests/test_library.py +++ b/tests/test_library.py @@ -6,6 +6,7 @@ Implementation, Library, Problem, + Reference, Suite, ) @@ -81,6 +82,35 @@ def test_fixup_fidelity_all_problems_without_levels(self): }) assert lib.root["s1"].fidelity_levels == set() + def test_reference_as_top_level_thing(self): + lib = Library(root={ + "ref1": Reference(title="A paper"), + "p1": Problem(name="P1", references={"ref1"}), + }) + assert isinstance(lib.root["ref1"], Reference) + assert lib.root["p1"].references == {"ref1"} + + def test_problem_references_missing_reference(self): + with pytest.raises(ValidationError, match="undefined id"): + Library(root={ + "p1": Problem(name="P1", references={"does-not-exist"}), + }) + + def test_problem_references_non_reference(self): + with pytest.raises(ValidationError, match="but id is a"): + Library(root={ + "p1": Problem(name="P1"), + "p2": Problem(name="P2", references={"p1"}), + }) + + def test_suite_references_a_reference(self): + lib = Library(root={ + "ref1": Reference(title="A paper"), + "p1": Problem(name="P1"), + "s1": Suite(name="S1", problems={"p1"}, references={"ref1"}), + }) + assert lib.root["s1"].references == {"ref1"} + def test_fixup_evaluation_time_percolates_from_implementation_to_suite(self): lib = Library(root={ "impl1": Implementation( diff --git a/tests/test_reference.py b/tests/test_reference.py index 0d388a6..f3af998 100644 --- a/tests/test_reference.py +++ b/tests/test_reference.py @@ -1,12 +1,13 @@ import pytest from pydantic import ValidationError -from opltools.schema import Link, Reference +from opltools.schema import Link, OPLType, Reference class TestReference: def test_only_author(self): ref = Reference(title="A paper") + assert ref.type is OPLType.reference assert ref.title == "A paper" assert ref.authors is None assert ref.link is None diff --git a/uv.lock b/uv.lock index 9850ab7..db3fdda 100644 --- a/uv.lock +++ b/uv.lock @@ -1,6 +1,10 @@ version = 1 revision = 3 requires-python = ">=3.10" +resolution-markers = [ + "python_full_version >= '3.11'", + "python_full_version < '3.11'", +] [[package]] name = "annotated-types" @@ -11,6 +15,30 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] +[[package]] +name = "coco-experiment" +version = "2.8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a4/67/53fe6d644b34f6b84d644132d2961106b2acd4c14aa41f847f608c82892c/coco_experiment-2.8.2.tar.gz", hash = "sha256:df044be950027d20e30e4d7edf187ed991f96eeb4242e8d5c89ea2719f0a50f2", size = 3919117, upload-time = "2025-11-27T15:05:28.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/ff/63e343f3ec4076c7e88d251bd2ff902d9d9ec33436c8bb3a8374911a5835/coco_experiment-2.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:46c38d11ec04bd156ca7cc8dce9ffa41941c073224c1c94edcc9eca678fe2914", size = 567395, upload-time = "2025-11-27T15:04:57.931Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a8/2c41db714e0d83f51e3cec654da6b7d53718de2180c8041aaa7eb82d2431/coco_experiment-2.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:39da2b14a7bd23890152fdc2a89253e89b0c832237ca0e4c1dba5293fdffa954", size = 763785, upload-time = "2025-11-27T15:04:59.564Z" }, + { url = "https://files.pythonhosted.org/packages/b5/5b/48c0aca97bba61997bc399176a734bea30d8703029ecf8d4f4e8d3f0680f/coco_experiment-2.8.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:085267b50a3d4d9751fdb784b7fcf8682ea5d22c29ca357aef313c5baf15fbc8", size = 772530, upload-time = "2025-11-27T15:05:01.351Z" }, + { url = "https://files.pythonhosted.org/packages/be/fc/6cfc44ebf00626e42f5fd1c8171bc5f0977960f5a20e743773a3b93ddf0e/coco_experiment-2.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:2e55a26c43cb577b8358ccde0a6131c87ed1f8f0cbff5b30135f231a0b7f0528", size = 426160, upload-time = "2025-11-27T15:05:03.088Z" }, + { url = "https://files.pythonhosted.org/packages/99/50/1a11c8e15244b03d19f685c0d7713778e0e1e02643f11f14bcec4d68d71e/coco_experiment-2.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c897170eb7a645c39a9b89a283b6b2cbbbb1bdbfe227c2d1b31f92a6e98873b8", size = 565882, upload-time = "2025-11-27T15:05:04.898Z" }, + { url = "https://files.pythonhosted.org/packages/5c/18/6c52a0de7d5c65f5bd50ab116babb04fc47e8d9acfe62043347b9ee58bfb/coco_experiment-2.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3c99d956df654fd8fee77391b196b9a35d34912131170dd31ab5d8c8479979f7", size = 762758, upload-time = "2025-11-27T15:05:06.653Z" }, + { url = "https://files.pythonhosted.org/packages/70/6d/9d6035675bf4e33d1f5bb458a349f933330821d0a4df87c33bcabb3a600d/coco_experiment-2.8.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a83a58aaaf664cfeb0a3d0c6f80f6667c0c80c12f3005537dd71d9686e88c87a", size = 770966, upload-time = "2025-11-27T15:05:08.046Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6f/2e5d52d5e57e175168a4cca037819d96e48d47dc71aef9e82752a4f9554c/coco_experiment-2.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:0b945a08271655f0121b5f4181d1eb8deced060d9dde551a0c97d58cf140758a", size = 425934, upload-time = "2025-11-27T15:05:09.602Z" }, + { url = "https://files.pythonhosted.org/packages/76/9f/319c71ca0e388a5ef472953bd79d80bfc7bf1f3a8b4f1cd3a298cdf8bd7c/coco_experiment-2.8.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7405d045e6f11b3eb5833148749e06ca270b6ad44c73829a2ba566ba0513d81b", size = 564803, upload-time = "2025-11-27T15:05:10.953Z" }, + { url = "https://files.pythonhosted.org/packages/c1/85/427899dc8c97e1ff89e760001d2782bbff1e1b5407daa2348210f7666a0d/coco_experiment-2.8.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ebd20860bddf0116c667bcd42b63685f899905f72cb90812830bc5512b4d0436", size = 751836, upload-time = "2025-11-27T15:05:12.325Z" }, + { url = "https://files.pythonhosted.org/packages/c5/ab/734600690c29927ce88ca6a55ac9c67eeb230d9e4673feb8062d24e963f2/coco_experiment-2.8.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5d595f40d697356fd38c8b40a8640ac6769158696832482756f2e1a26cf78bc6", size = 762826, upload-time = "2025-11-27T15:05:14.07Z" }, + { url = "https://files.pythonhosted.org/packages/d9/74/f01e7c88d44dc2d1d7f00424471e5da6c99b0603dfafb84aa9a7fb30678d/coco_experiment-2.8.2-cp312-cp312-win_amd64.whl", hash = "sha256:7d948c90796c3008babe3b131c694a7a0b62a6bc0a9a8ea9bdf1b1b8c597beb6", size = 421795, upload-time = "2025-11-27T15:05:15.435Z" }, +] + [[package]] name = "colorama" version = "0.4.6" @@ -143,7 +171,7 @@ name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } wheels = [ @@ -180,11 +208,159 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, ] +[[package]] +name = "numpy" +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, + { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, + { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828, upload-time = "2025-05-17T21:37:56.699Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006, upload-time = "2025-05-17T21:38:18.291Z" }, + { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765, upload-time = "2025-05-17T21:38:27.319Z" }, + { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736, upload-time = "2025-05-17T21:38:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719, upload-time = "2025-05-17T21:38:58.433Z" }, + { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072, upload-time = "2025-05-17T21:39:22.638Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213, upload-time = "2025-05-17T21:39:45.865Z" }, + { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632, upload-time = "2025-05-17T21:40:13.331Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532, upload-time = "2025-05-17T21:43:46.099Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885, upload-time = "2025-05-17T21:44:05.145Z" }, + { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467, upload-time = "2025-05-17T21:40:44Z" }, + { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144, upload-time = "2025-05-17T21:41:05.695Z" }, + { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217, upload-time = "2025-05-17T21:41:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014, upload-time = "2025-05-17T21:41:27.321Z" }, + { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935, upload-time = "2025-05-17T21:41:49.738Z" }, + { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122, upload-time = "2025-05-17T21:42:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143, upload-time = "2025-05-17T21:42:37.464Z" }, + { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260, upload-time = "2025-05-17T21:43:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225, upload-time = "2025-05-17T21:43:16.254Z" }, + { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374, upload-time = "2025-05-17T21:43:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, + { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, + { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, +] + +[[package]] +name = "numpy" +version = "2.4.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.11'", +] +sdist = { url = "https://files.pythonhosted.org/packages/d7/9f/b8cef5bffa569759033adda9481211426f12f53299629b410340795c2514/numpy-2.4.4.tar.gz", hash = "sha256:2d390634c5182175533585cc89f3608a4682ccb173cc9bb940b2881c8d6f8fa0", size = 20731587, upload-time = "2026-03-29T13:22:01.298Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/c6/4218570d8c8ecc9704b5157a3348e486e84ef4be0ed3e38218ab473c83d2/numpy-2.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f983334aea213c99992053ede6168500e5f086ce74fbc4acc3f2b00f5762e9db", size = 16976799, upload-time = "2026-03-29T13:18:15.438Z" }, + { url = "https://files.pythonhosted.org/packages/dd/92/b4d922c4a5f5dab9ed44e6153908a5c665b71acf183a83b93b690996e39b/numpy-2.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:72944b19f2324114e9dc86a159787333b77874143efcf89a5167ef83cfee8af0", size = 14971552, upload-time = "2026-03-29T13:18:18.606Z" }, + { url = "https://files.pythonhosted.org/packages/8a/dc/df98c095978fa6ee7b9a9387d1d58cbb3d232d0e69ad169a4ce784bde4fd/numpy-2.4.4-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:86b6f55f5a352b48d7fbfd2dbc3d5b780b2d79f4d3c121f33eb6efb22e9a2015", size = 5476566, upload-time = "2026-03-29T13:18:21.532Z" }, + { url = "https://files.pythonhosted.org/packages/28/34/b3fdcec6e725409223dd27356bdf5a3c2cc2282e428218ecc9cb7acc9763/numpy-2.4.4-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:ba1f4fc670ed79f876f70082eff4f9583c15fb9a4b89d6188412de4d18ae2f40", size = 6806482, upload-time = "2026-03-29T13:18:23.634Z" }, + { url = "https://files.pythonhosted.org/packages/68/62/63417c13aa35d57bee1337c67446761dc25ea6543130cf868eace6e8157b/numpy-2.4.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8a87ec22c87be071b6bdbd27920b129b94f2fc964358ce38f3822635a3e2e03d", size = 15973376, upload-time = "2026-03-29T13:18:26.677Z" }, + { url = "https://files.pythonhosted.org/packages/cf/c5/9fcb7e0e69cef59cf10c746b84f7d58b08bc66a6b7d459783c5a4f6101a6/numpy-2.4.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:df3775294accfdd75f32c74ae39fcba920c9a378a2fc18a12b6820aa8c1fb502", size = 16925137, upload-time = "2026-03-29T13:18:30.14Z" }, + { url = "https://files.pythonhosted.org/packages/7e/43/80020edacb3f84b9efdd1591120a4296462c23fd8db0dde1666f6ef66f13/numpy-2.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0d4e437e295f18ec29bc79daf55e8a47a9113df44d66f702f02a293d93a2d6dd", size = 17329414, upload-time = "2026-03-29T13:18:33.733Z" }, + { url = "https://files.pythonhosted.org/packages/fd/06/af0658593b18a5f73532d377188b964f239eb0894e664a6c12f484472f97/numpy-2.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6aa3236c78803afbcb255045fbef97a9e25a1f6c9888357d205ddc42f4d6eba5", size = 18658397, upload-time = "2026-03-29T13:18:37.511Z" }, + { url = "https://files.pythonhosted.org/packages/e6/ce/13a09ed65f5d0ce5c7dd0669250374c6e379910f97af2c08c57b0608eee4/numpy-2.4.4-cp311-cp311-win32.whl", hash = "sha256:30caa73029a225b2d40d9fae193e008e24b2026b7ee1a867b7ee8d96ca1a448e", size = 6239499, upload-time = "2026-03-29T13:18:40.372Z" }, + { url = "https://files.pythonhosted.org/packages/bd/63/05d193dbb4b5eec1eca73822d80da98b511f8328ad4ae3ca4caf0f4db91d/numpy-2.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:6bbe4eb67390b0a0265a2c25458f6b90a409d5d069f1041e6aff1e27e3d9a79e", size = 12614257, upload-time = "2026-03-29T13:18:42.95Z" }, + { url = "https://files.pythonhosted.org/packages/87/c5/8168052f080c26fa984c413305012be54741c9d0d74abd7fbeeccae3889f/numpy-2.4.4-cp311-cp311-win_arm64.whl", hash = "sha256:fcfe2045fd2e8f3cb0ce9d4ba6dba6333b8fa05bb8a4939c908cd43322d14c7e", size = 10486775, upload-time = "2026-03-29T13:18:45.835Z" }, + { url = "https://files.pythonhosted.org/packages/28/05/32396bec30fb2263770ee910142f49c1476d08e8ad41abf8403806b520ce/numpy-2.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:15716cfef24d3a9762e3acdf87e27f58dc823d1348f765bbea6bef8c639bfa1b", size = 16689272, upload-time = "2026-03-29T13:18:49.223Z" }, + { url = "https://files.pythonhosted.org/packages/c5/f3/a983d28637bfcd763a9c7aafdb6d5c0ebf3d487d1e1459ffdb57e2f01117/numpy-2.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23cbfd4c17357c81021f21540da84ee282b9c8fba38a03b7b9d09ba6b951421e", size = 14699573, upload-time = "2026-03-29T13:18:52.629Z" }, + { url = "https://files.pythonhosted.org/packages/9b/fd/e5ecca1e78c05106d98028114f5c00d3eddb41207686b2b7de3e477b0e22/numpy-2.4.4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8b3b60bb7cba2c8c81837661c488637eee696f59a877788a396d33150c35d842", size = 5204782, upload-time = "2026-03-29T13:18:55.579Z" }, + { url = "https://files.pythonhosted.org/packages/de/2f/702a4594413c1a8632092beae8aba00f1d67947389369b3777aed783fdca/numpy-2.4.4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e4a010c27ff6f210ff4c6ef34394cd61470d01014439b192ec22552ee867f2a8", size = 6552038, upload-time = "2026-03-29T13:18:57.769Z" }, + { url = "https://files.pythonhosted.org/packages/7f/37/eed308a8f56cba4d1fdf467a4fc67ef4ff4bf1c888f5fc980481890104b1/numpy-2.4.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f9e75681b59ddaa5e659898085ae0eaea229d054f2ac0c7e563a62205a700121", size = 15670666, upload-time = "2026-03-29T13:19:00.341Z" }, + { url = "https://files.pythonhosted.org/packages/0a/0d/0e3ecece05b7a7e87ab9fb587855548da437a061326fff64a223b6dcb78a/numpy-2.4.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:81f4a14bee47aec54f883e0cad2d73986640c1590eb9bfaaba7ad17394481e6e", size = 16645480, upload-time = "2026-03-29T13:19:03.63Z" }, + { url = "https://files.pythonhosted.org/packages/34/49/f2312c154b82a286758ee2f1743336d50651f8b5195db18cdb63675ff649/numpy-2.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:62d6b0f03b694173f9fcb1fb317f7222fd0b0b103e784c6549f5e53a27718c44", size = 17020036, upload-time = "2026-03-29T13:19:07.428Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e9/736d17bd77f1b0ec4f9901aaec129c00d59f5d84d5e79bba540ef12c2330/numpy-2.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fbc356aae7adf9e6336d336b9c8111d390a05df88f1805573ebb0807bd06fd1d", size = 18368643, upload-time = "2026-03-29T13:19:10.775Z" }, + { url = "https://files.pythonhosted.org/packages/63/f6/d417977c5f519b17c8a5c3bc9e8304b0908b0e21136fe43bf628a1343914/numpy-2.4.4-cp312-cp312-win32.whl", hash = "sha256:0d35aea54ad1d420c812bfa0385c71cd7cc5bcf7c65fed95fc2cd02fe8c79827", size = 5961117, upload-time = "2026-03-29T13:19:13.464Z" }, + { url = "https://files.pythonhosted.org/packages/2d/5b/e1deebf88ff431b01b7406ca3583ab2bbb90972bbe1c568732e49c844f7e/numpy-2.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:b5f0362dc928a6ecd9db58868fca5e48485205e3855957bdedea308f8672ea4a", size = 12320584, upload-time = "2026-03-29T13:19:16.155Z" }, + { url = "https://files.pythonhosted.org/packages/58/89/e4e856ac82a68c3ed64486a544977d0e7bdd18b8da75b78a577ca31c4395/numpy-2.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:846300f379b5b12cc769334464656bc882e0735d27d9726568bc932fdc49d5ec", size = 10221450, upload-time = "2026-03-29T13:19:18.994Z" }, + { url = "https://files.pythonhosted.org/packages/14/1d/d0a583ce4fefcc3308806a749a536c201ed6b5ad6e1322e227ee4848979d/numpy-2.4.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:08f2e31ed5e6f04b118e49821397f12767934cfdd12a1ce86a058f91e004ee50", size = 16684933, upload-time = "2026-03-29T13:19:22.47Z" }, + { url = "https://files.pythonhosted.org/packages/c1/62/2b7a48fbb745d344742c0277f01286dead15f3f68e4f359fbfcf7b48f70f/numpy-2.4.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e823b8b6edc81e747526f70f71a9c0a07ac4e7ad13020aa736bb7c9d67196115", size = 14694532, upload-time = "2026-03-29T13:19:25.581Z" }, + { url = "https://files.pythonhosted.org/packages/e5/87/499737bfba066b4a3bebff24a8f1c5b2dee410b209bc6668c9be692580f0/numpy-2.4.4-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4a19d9dba1a76618dd86b164d608566f393f8ec6ac7c44f0cc879011c45e65af", size = 5199661, upload-time = "2026-03-29T13:19:28.31Z" }, + { url = "https://files.pythonhosted.org/packages/cd/da/464d551604320d1491bc345efed99b4b7034143a85787aab78d5691d5a0e/numpy-2.4.4-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:d2a8490669bfe99a233298348acc2d824d496dee0e66e31b66a6022c2ad74a5c", size = 6547539, upload-time = "2026-03-29T13:19:30.97Z" }, + { url = "https://files.pythonhosted.org/packages/7d/90/8d23e3b0dafd024bf31bdec225b3bb5c2dbfa6912f8a53b8659f21216cbf/numpy-2.4.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:45dbed2ab436a9e826e302fcdcbe9133f9b0006e5af7168afb8963a6520da103", size = 15668806, upload-time = "2026-03-29T13:19:33.887Z" }, + { url = "https://files.pythonhosted.org/packages/d1/73/a9d864e42a01896bb5974475438f16086be9ba1f0d19d0bb7a07427c4a8b/numpy-2.4.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c901b15172510173f5cb310eae652908340f8dede90fff9e3bf6c0d8dfd92f83", size = 16632682, upload-time = "2026-03-29T13:19:37.336Z" }, + { url = "https://files.pythonhosted.org/packages/34/fb/14570d65c3bde4e202a031210475ae9cde9b7686a2e7dc97ee67d2833b35/numpy-2.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:99d838547ace2c4aace6c4f76e879ddfe02bb58a80c1549928477862b7a6d6ed", size = 17019810, upload-time = "2026-03-29T13:19:40.963Z" }, + { url = "https://files.pythonhosted.org/packages/8a/77/2ba9d87081fd41f6d640c83f26fb7351e536b7ce6dd9061b6af5904e8e46/numpy-2.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0aec54fd785890ecca25a6003fd9a5aed47ad607bbac5cd64f836ad8666f4959", size = 18357394, upload-time = "2026-03-29T13:19:44.859Z" }, + { url = "https://files.pythonhosted.org/packages/a2/23/52666c9a41708b0853fa3b1a12c90da38c507a3074883823126d4e9d5b30/numpy-2.4.4-cp313-cp313-win32.whl", hash = "sha256:07077278157d02f65c43b1b26a3886bce886f95d20aabd11f87932750dfb14ed", size = 5959556, upload-time = "2026-03-29T13:19:47.661Z" }, + { url = "https://files.pythonhosted.org/packages/57/fb/48649b4971cde70d817cf97a2a2fdc0b4d8308569f1dd2f2611959d2e0cf/numpy-2.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:5c70f1cc1c4efbe316a572e2d8b9b9cc44e89b95f79ca3331553fbb63716e2bf", size = 12317311, upload-time = "2026-03-29T13:19:50.67Z" }, + { url = "https://files.pythonhosted.org/packages/ba/d8/11490cddd564eb4de97b4579ef6bfe6a736cc07e94c1598590ae25415e01/numpy-2.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:ef4059d6e5152fa1a39f888e344c73fdc926e1b2dd58c771d67b0acfbf2aa67d", size = 10222060, upload-time = "2026-03-29T13:19:54.229Z" }, + { url = "https://files.pythonhosted.org/packages/99/5d/dab4339177a905aad3e2221c915b35202f1ec30d750dd2e5e9d9a72b804b/numpy-2.4.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4bbc7f303d125971f60ec0aaad5e12c62d0d2c925f0ab1273debd0e4ba37aba5", size = 14822302, upload-time = "2026-03-29T13:19:57.585Z" }, + { url = "https://files.pythonhosted.org/packages/eb/e4/0564a65e7d3d97562ed6f9b0fd0fb0a6f559ee444092f105938b50043876/numpy-2.4.4-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:4d6d57903571f86180eb98f8f0c839fa9ebbfb031356d87f1361be91e433f5b7", size = 5327407, upload-time = "2026-03-29T13:20:00.601Z" }, + { url = "https://files.pythonhosted.org/packages/29/8d/35a3a6ce5ad371afa58b4700f1c820f8f279948cca32524e0a695b0ded83/numpy-2.4.4-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:4636de7fd195197b7535f231b5de9e4b36d2c440b6e566d2e4e4746e6af0ca93", size = 6647631, upload-time = "2026-03-29T13:20:02.855Z" }, + { url = "https://files.pythonhosted.org/packages/f4/da/477731acbd5a58a946c736edfdabb2ac5b34c3d08d1ba1a7b437fa0884df/numpy-2.4.4-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ad2e2ef14e0b04e544ea2fa0a36463f847f113d314aa02e5b402fdf910ef309e", size = 15727691, upload-time = "2026-03-29T13:20:06.004Z" }, + { url = "https://files.pythonhosted.org/packages/e6/db/338535d9b152beabeb511579598418ba0212ce77cf9718edd70262cc4370/numpy-2.4.4-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a285b3b96f951841799528cd1f4f01cd70e7e0204b4abebac9463eecfcf2a40", size = 16681241, upload-time = "2026-03-29T13:20:09.417Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a9/ad248e8f58beb7a0219b413c9c7d8151c5d285f7f946c3e26695bdbbe2df/numpy-2.4.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f8474c4241bc18b750be2abea9d7a9ec84f46ef861dbacf86a4f6e043401f79e", size = 17085767, upload-time = "2026-03-29T13:20:13.126Z" }, + { url = "https://files.pythonhosted.org/packages/b5/1a/3b88ccd3694681356f70da841630e4725a7264d6a885c8d442a697e1146b/numpy-2.4.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4e874c976154687c1f71715b034739b45c7711bec81db01914770373d125e392", size = 18403169, upload-time = "2026-03-29T13:20:17.096Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c9/fcfd5d0639222c6eac7f304829b04892ef51c96a75d479214d77e3ce6e33/numpy-2.4.4-cp313-cp313t-win32.whl", hash = "sha256:9c585a1790d5436a5374bac930dad6ed244c046ed91b2b2a3634eb2971d21008", size = 6083477, upload-time = "2026-03-29T13:20:20.195Z" }, + { url = "https://files.pythonhosted.org/packages/d5/e3/3938a61d1c538aaec8ed6fd6323f57b0c2d2d2219512434c5c878db76553/numpy-2.4.4-cp313-cp313t-win_amd64.whl", hash = "sha256:93e15038125dc1e5345d9b5b68aa7f996ec33b98118d18c6ca0d0b7d6198b7e8", size = 12457487, upload-time = "2026-03-29T13:20:22.946Z" }, + { url = "https://files.pythonhosted.org/packages/97/6a/7e345032cc60501721ef94e0e30b60f6b0bd601f9174ebd36389a2b86d40/numpy-2.4.4-cp313-cp313t-win_arm64.whl", hash = "sha256:0dfd3f9d3adbe2920b68b5cd3d51444e13a10792ec7154cd0a2f6e74d4ab3233", size = 10292002, upload-time = "2026-03-29T13:20:25.909Z" }, + { url = "https://files.pythonhosted.org/packages/6e/06/c54062f85f673dd5c04cbe2f14c3acb8c8b95e3384869bb8cc9bff8cb9df/numpy-2.4.4-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:f169b9a863d34f5d11b8698ead99febeaa17a13ca044961aa8e2662a6c7766a0", size = 16684353, upload-time = "2026-03-29T13:20:29.504Z" }, + { url = "https://files.pythonhosted.org/packages/4c/39/8a320264a84404c74cc7e79715de85d6130fa07a0898f67fb5cd5bd79908/numpy-2.4.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:2483e4584a1cb3092da4470b38866634bafb223cbcd551ee047633fd2584599a", size = 14704914, upload-time = "2026-03-29T13:20:33.547Z" }, + { url = "https://files.pythonhosted.org/packages/91/fb/287076b2614e1d1044235f50f03748f31fa287e3dbe6abeb35cdfa351eca/numpy-2.4.4-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:2d19e6e2095506d1736b7d80595e0f252d76b89f5e715c35e06e937679ea7d7a", size = 5210005, upload-time = "2026-03-29T13:20:36.45Z" }, + { url = "https://files.pythonhosted.org/packages/63/eb/fcc338595309910de6ecabfcef2419a9ce24399680bfb149421fa2df1280/numpy-2.4.4-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:6a246d5914aa1c820c9443ddcee9c02bec3e203b0c080349533fae17727dfd1b", size = 6544974, upload-time = "2026-03-29T13:20:39.014Z" }, + { url = "https://files.pythonhosted.org/packages/44/5d/e7e9044032a716cdfaa3fba27a8e874bf1c5f1912a1ddd4ed071bf8a14a6/numpy-2.4.4-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:989824e9faf85f96ec9c7761cd8d29c531ad857bfa1daa930cba85baaecf1a9a", size = 15684591, upload-time = "2026-03-29T13:20:42.146Z" }, + { url = "https://files.pythonhosted.org/packages/98/7c/21252050676612625449b4807d6b695b9ce8a7c9e1c197ee6216c8a65c7c/numpy-2.4.4-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:27a8d92cd10f1382a67d7cf4db7ce18341b66438bdd9f691d7b0e48d104c2a9d", size = 16637700, upload-time = "2026-03-29T13:20:46.204Z" }, + { url = "https://files.pythonhosted.org/packages/b1/29/56d2bbef9465db24ef25393383d761a1af4f446a1df9b8cded4fe3a5a5d7/numpy-2.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e44319a2953c738205bf3354537979eaa3998ed673395b964c1176083dd46252", size = 17035781, upload-time = "2026-03-29T13:20:50.242Z" }, + { url = "https://files.pythonhosted.org/packages/e3/2b/a35a6d7589d21f44cea7d0a98de5ddcbb3d421b2622a5c96b1edf18707c3/numpy-2.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e892aff75639bbef0d2a2cfd55535510df26ff92f63c92cd84ef8d4ba5a5557f", size = 18362959, upload-time = "2026-03-29T13:20:54.019Z" }, + { url = "https://files.pythonhosted.org/packages/64/c9/d52ec581f2390e0f5f85cbfd80fb83d965fc15e9f0e1aec2195faa142cde/numpy-2.4.4-cp314-cp314-win32.whl", hash = "sha256:1378871da56ca8943c2ba674530924bb8ca40cd228358a3b5f302ad60cf875fc", size = 6008768, upload-time = "2026-03-29T13:20:56.912Z" }, + { url = "https://files.pythonhosted.org/packages/fa/22/4cc31a62a6c7b74a8730e31a4274c5dc80e005751e277a2ce38e675e4923/numpy-2.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:715d1c092715954784bc79e1174fc2a90093dc4dc84ea15eb14dad8abdcdeb74", size = 12449181, upload-time = "2026-03-29T13:20:59.548Z" }, + { url = "https://files.pythonhosted.org/packages/70/2e/14cda6f4d8e396c612d1bf97f22958e92148801d7e4f110cabebdc0eef4b/numpy-2.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:2c194dd721e54ecad9ad387c1d35e63dce5c4450c6dc7dd5611283dda239aabb", size = 10496035, upload-time = "2026-03-29T13:21:02.524Z" }, + { url = "https://files.pythonhosted.org/packages/b1/e8/8fed8c8d848d7ecea092dc3469643f9d10bc3a134a815a3b033da1d2039b/numpy-2.4.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2aa0613a5177c264ff5921051a5719d20095ea586ca88cc802c5c218d1c67d3e", size = 14824958, upload-time = "2026-03-29T13:21:05.671Z" }, + { url = "https://files.pythonhosted.org/packages/05/1a/d8007a5138c179c2bf33ef44503e83d70434d2642877ee8fbb230e7c0548/numpy-2.4.4-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:42c16925aa5a02362f986765f9ebabf20de75cdefdca827d14315c568dcab113", size = 5330020, upload-time = "2026-03-29T13:21:08.635Z" }, + { url = "https://files.pythonhosted.org/packages/99/64/ffb99ac6ae93faf117bcbd5c7ba48a7f45364a33e8e458545d3633615dda/numpy-2.4.4-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:874f200b2a981c647340f841730fc3a2b54c9d940566a3c4149099591e2c4c3d", size = 6650758, upload-time = "2026-03-29T13:21:10.949Z" }, + { url = "https://files.pythonhosted.org/packages/6e/6e/795cc078b78a384052e73b2f6281ff7a700e9bf53bcce2ee579d4f6dd879/numpy-2.4.4-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c9b39d38a9bd2ae1becd7eac1303d031c5c110ad31f2b319c6e7d98b135c934d", size = 15729948, upload-time = "2026-03-29T13:21:14.047Z" }, + { url = "https://files.pythonhosted.org/packages/5f/86/2acbda8cc2af5f3d7bfc791192863b9e3e19674da7b5e533fded124d1299/numpy-2.4.4-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b268594bccac7d7cf5844c7732e3f20c50921d94e36d7ec9b79e9857694b1b2f", size = 16679325, upload-time = "2026-03-29T13:21:17.561Z" }, + { url = "https://files.pythonhosted.org/packages/bc/59/cafd83018f4aa55e0ac6fa92aa066c0a1877b77a615ceff1711c260ffae8/numpy-2.4.4-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:ac6b31e35612a26483e20750126d30d0941f949426974cace8e6b5c58a3657b0", size = 17084883, upload-time = "2026-03-29T13:21:21.106Z" }, + { url = "https://files.pythonhosted.org/packages/f0/85/a42548db84e65ece46ab2caea3d3f78b416a47af387fcbb47ec28e660dc2/numpy-2.4.4-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:8e3ed142f2728df44263aaf5fb1f5b0b99f4070c553a0d7f033be65338329150", size = 18403474, upload-time = "2026-03-29T13:21:24.828Z" }, + { url = "https://files.pythonhosted.org/packages/ed/ad/483d9e262f4b831000062e5d8a45e342166ec8aaa1195264982bca267e62/numpy-2.4.4-cp314-cp314t-win32.whl", hash = "sha256:dddbbd259598d7240b18c9d87c56a9d2fb3b02fe266f49a7c101532e78c1d871", size = 6155500, upload-time = "2026-03-29T13:21:28.205Z" }, + { url = "https://files.pythonhosted.org/packages/c7/03/2fc4e14c7bd4ff2964b74ba90ecb8552540b6315f201df70f137faa5c589/numpy-2.4.4-cp314-cp314t-win_amd64.whl", hash = "sha256:a7164afb23be6e37ad90b2f10426149fd75aee07ca55653d2aa41e66c4ef697e", size = 12637755, upload-time = "2026-03-29T13:21:31.107Z" }, + { url = "https://files.pythonhosted.org/packages/58/78/548fb8e07b1a341746bfbecb32f2c268470f45fa028aacdbd10d9bc73aab/numpy-2.4.4-cp314-cp314t-win_arm64.whl", hash = "sha256:ba203255017337d39f89bdd58417f03c4426f12beed0440cfd933cb15f8669c7", size = 10566643, upload-time = "2026-03-29T13:21:34.339Z" }, + { url = "https://files.pythonhosted.org/packages/6b/33/8fae8f964a4f63ed528264ddf25d2b683d0b663e3cba26961eb838a7c1bd/numpy-2.4.4-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:58c8b5929fcb8287cbd6f0a3fae19c6e03a5c48402ae792962ac465224a629a4", size = 16854491, upload-time = "2026-03-29T13:21:38.03Z" }, + { url = "https://files.pythonhosted.org/packages/bc/d0/1aabee441380b981cf8cdda3ae7a46aa827d1b5a8cce84d14598bc94d6d9/numpy-2.4.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:eea7ac5d2dce4189771cedb559c738a71512768210dc4e4753b107a2048b3d0e", size = 14895830, upload-time = "2026-03-29T13:21:41.509Z" }, + { url = "https://files.pythonhosted.org/packages/a5/b8/aafb0d1065416894fccf4df6b49ef22b8db045187949545bced89c034b8e/numpy-2.4.4-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:51fc224f7ca4d92656d5a5eb315f12eb5fe2c97a66249aa7b5f562528a3be38c", size = 5400927, upload-time = "2026-03-29T13:21:44.747Z" }, + { url = "https://files.pythonhosted.org/packages/d6/77/063baa20b08b431038c7f9ff5435540c7b7265c78cf56012a483019ca72d/numpy-2.4.4-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:28a650663f7314afc3e6ec620f44f333c386aad9f6fc472030865dc0ebb26ee3", size = 6715557, upload-time = "2026-03-29T13:21:47.406Z" }, + { url = "https://files.pythonhosted.org/packages/c7/a8/379542d45a14f149444c5c4c4e7714707239ce9cc1de8c2803958889da14/numpy-2.4.4-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:19710a9ca9992d7174e9c52f643d4272dcd1558c5f7af7f6f8190f633bd651a7", size = 15804253, upload-time = "2026-03-29T13:21:50.753Z" }, + { url = "https://files.pythonhosted.org/packages/a2/c8/f0a45426d6d21e7ea3310a15cf90c43a14d9232c31a837702dba437f3373/numpy-2.4.4-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9b2aec6af35c113b05695ebb5749a787acd63cafc83086a05771d1e1cd1e555f", size = 16753552, upload-time = "2026-03-29T13:21:54.344Z" }, + { url = "https://files.pythonhosted.org/packages/04/74/f4c001f4714c3ad9ce037e18cf2b9c64871a84951eaa0baf683a9ca9301c/numpy-2.4.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f2cf083b324a467e1ab358c105f6cad5ea950f50524668a80c486ff1db24e119", size = 12509075, upload-time = "2026-03-29T13:21:57.644Z" }, +] + [[package]] name = "opltools" version = "0.1.0" source = { editable = "." } dependencies = [ + { name = "coco-experiment" }, { name = "pydantic" }, { name = "pydantic-yaml" }, { name = "pyyaml" }, @@ -204,6 +380,7 @@ dev = [ [package.metadata] requires-dist = [ + { name = "coco-experiment", specifier = ">=2.8.2" }, { name = "pydantic", specifier = ">=2.13.3" }, { name = "pydantic-yaml", specifier = ">=1.6.0" }, { name = "pyyaml", specifier = ">=6.0.3" },