dfbench 0.2.1__tar.gz → 0.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. {dfbench-0.2.1 → dfbench-0.2.2}/.gitignore +5 -1
  2. {dfbench-0.2.1 → dfbench-0.2.2}/PKG-INFO +23 -15
  3. {dfbench-0.2.1 → dfbench-0.2.2}/README.md +20 -14
  4. {dfbench-0.2.1 → dfbench-0.2.2}/docs/Algorithm-Status.md +7 -7
  5. {dfbench-0.2.1 → dfbench-0.2.2}/docs/Algorithms.md +120 -119
  6. {dfbench-0.2.1 → dfbench-0.2.2}/docs/Architecture-Overview.md +16 -16
  7. {dfbench-0.2.1 → dfbench-0.2.2}/docs/Benchmarking.md +13 -13
  8. {dfbench-0.2.1 → dfbench-0.2.2}/docs/FAQ.md +6 -6
  9. {dfbench-0.2.1 → dfbench-0.2.2}/docs/Home.md +4 -4
  10. {dfbench-0.2.1 → dfbench-0.2.2}/docs/Implementing-a-New-Algorithm.md +24 -24
  11. {dfbench-0.2.1 → dfbench-0.2.2}/docs/Installation.md +2 -2
  12. {dfbench-0.2.1 → dfbench-0.2.2}/docs/Metrics-Reference.md +26 -26
  13. {dfbench-0.2.1 → dfbench-0.2.2}/docs/Objective-API-Reference.md +47 -45
  14. {dfbench-0.2.1 → dfbench-0.2.2}/docs/Problems.md +33 -33
  15. {dfbench-0.2.1 → dfbench-0.2.2}/docs/Storage-and-Checkpointing.md +19 -4
  16. {dfbench-0.2.1 → dfbench-0.2.2}/docs/Testing.md +14 -13
  17. {dfbench-0.2.1 → dfbench-0.2.2}/docs/Utilities-and-Helpers.md +6 -6
  18. {dfbench-0.2.1 → dfbench-0.2.2}/docs/algorithm-status/main.typ +8 -8
  19. {dfbench-0.2.1 → dfbench-0.2.2}/docs/algorithm-status/template.typ +12 -12
  20. {dfbench-0.2.1 → dfbench-0.2.2}/pyproject.toml +3 -1
  21. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/__init__.py +2 -2
  22. dfbench-0.2.2/src/dfbench/algorithms/__init__.py +262 -0
  23. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/derivative_free/_dfo_common.py +2 -2
  24. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/derivative_free/_scipy_common.py +10 -4
  25. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/derivative_free/nelder_mead.py +7 -1
  26. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/derivative_free/omads_mads.py +4 -4
  27. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/derivative_free/pdfo/lincoa.py +4 -4
  28. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/derivative_free/pdfo/newuoa.py +3 -3
  29. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/derivative_free/pdfo/uobyqa.py +4 -4
  30. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/derivative_free/powell.py +7 -1
  31. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/derivative_free/pybobyqa.py +5 -5
  32. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/evolutionary/__init__.py +0 -2
  33. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/evolutionary/cmaes_sep_cma.py +2 -2
  34. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/evolutionary/evosax_es.py +2 -2
  35. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/evolutionary/evox_es.py +23 -17
  36. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/evolutionary/evox_pso.py +10 -4
  37. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/evolutionary/jax_es.py +12 -12
  38. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/evolutionary/nevergrad/_common.py +2 -2
  39. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/evolutionary/nevergrad/ngopt.py +3 -3
  40. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/evolutionary/nevergrad/oneplusone.py +2 -2
  41. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/evolutionary/nevergrad/tbpsa.py +3 -3
  42. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/evolutionary/pycma_cmaes.py +5 -5
  43. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/generative/vae_sampling.py +7 -1
  44. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/global_search/__init__.py +2 -0
  45. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/global_search/basin_hopping.py +8 -2
  46. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/global_search/dual_annealing.py +7 -1
  47. {dfbench-0.2.1/src/dfbench/algorithms/evolutionary → dfbench-0.2.2/src/dfbench/algorithms/global_search}/random_search.py +2 -2
  48. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/__init__.py +1 -1
  49. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/adam_gd.py +6 -1
  50. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/custom_jax.py +7 -1
  51. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/lbfgs_gd.py +7 -1
  52. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/na_adam_gd.py +7 -1
  53. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/_common.py +8 -2
  54. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/adabelief.py +1 -2
  55. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/adadelta.py +1 -2
  56. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/adafactor.py +1 -2
  57. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/adagrad.py +1 -2
  58. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/adam.py +1 -2
  59. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/adamax.py +1 -2
  60. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/adamaxw.py +1 -2
  61. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/adamw.py +1 -2
  62. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/adan.py +1 -2
  63. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/amsgrad.py +1 -2
  64. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/lamb.py +1 -2
  65. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/lion.py +1 -2
  66. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/lookahead.py +3 -3
  67. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/nadam.py +1 -2
  68. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/nadamw.py +1 -2
  69. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/noisy_sgd.py +1 -2
  70. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/novograd.py +1 -2
  71. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/oadam.py +1 -2
  72. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/ogd.py +1 -2
  73. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/polyak_sgd.py +2 -2
  74. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/radam.py +1 -2
  75. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/rmsprop.py +1 -2
  76. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/rprop.py +1 -2
  77. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/sam.py +2 -3
  78. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/schedule_free_adam.py +1 -3
  79. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/sgd.py +1 -2
  80. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/sign.py +1 -2
  81. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/sm3.py +1 -2
  82. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/sophia.py +3 -3
  83. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/yogi.py +1 -2
  84. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax_lbfgs.py +9 -3
  85. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/sa_gd.py +7 -1
  86. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/scipy/_common.py +12 -6
  87. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/scipy/sr1.py +6 -1
  88. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/__init__.py +2 -2
  89. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/ax_baxus.py +9 -3
  90. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/ax_saasbo.py +9 -4
  91. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/botorch/__init__.py +2 -2
  92. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/botorch/_botorch_common.py +7 -1
  93. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/botorch/botorch_bo.py +7 -1
  94. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/botorch/botorch_gebo.py +10 -4
  95. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/botorch/botorch_linebo.py +10 -4
  96. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/botorch/botorch_qkg.py +9 -4
  97. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/botorch/botorch_qnei.py +10 -5
  98. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/botorch/botorch_rembo.py +11 -5
  99. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/botorch/botorch_turbo.py +7 -1
  100. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/hebo_bo.py +3 -3
  101. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/restir.py +10 -4
  102. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/smac_bo.py +4 -4
  103. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/surrogate_based/turbo_lbfgs.py +19 -8
  104. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/utils/gp.py +6 -1
  105. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/utils/initial_design.py +6 -1
  106. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/utils/misc.py +7 -1
  107. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/core/algorithm.py +3 -3
  108. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/core/display.py +5 -5
  109. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/core/objective.py +52 -33
  110. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/core/problem.py +5 -5
  111. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/core/storage/exporter.py +58 -16
  112. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/core/storage/manager.py +1 -1
  113. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/core/storage/saveconfig.py +1 -1
  114. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/core/storage/serializers.py +2 -2
  115. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/core/storage/state.py +18 -18
  116. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/problems/base_problem.py +2 -2
  117. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/problems/uifo/uifo_problem.py +9 -9
  118. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/problems/voyager/constrained_voyager_problem.py +1 -1
  119. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/problems/voyager/voyager_problem.py +2 -2
  120. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/problems/voyager/voyager_tuning_problem.py +2 -2
  121. {dfbench-0.2.1 → dfbench-0.2.2}/tests/slow/test_algorithms_integration.py +1 -1
  122. {dfbench-0.2.1 → dfbench-0.2.2}/tests/slow/test_benchmark_full.py +2 -2
  123. {dfbench-0.2.1 → dfbench-0.2.2}/tests/slow/test_problems_full.py +6 -6
  124. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_algorithm_protocol.py +2 -2
  125. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_algorithms_uniform.py +7 -7
  126. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_algorithms_unit.py +11 -9
  127. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_api_imports.py +3 -3
  128. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_benchmark_smoke.py +4 -4
  129. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_cma_family.py +5 -5
  130. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_config.py +10 -10
  131. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_dfo_algorithms.py +1 -1
  132. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_display.py +12 -12
  133. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_init_env.py +2 -2
  134. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_metrics.py +16 -16
  135. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_objective_invariants.py +22 -22
  136. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_objective_penalty_fn.py +3 -3
  137. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_objective_randomness.py +9 -9
  138. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_problem_bounds_overrides.py +4 -4
  139. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_problem_protocol.py +4 -4
  140. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_problem_spec.py +2 -2
  141. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_storage.py +33 -9
  142. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_utils.py +5 -5
  143. dfbench-0.2.1/src/dfbench/algorithms/__init__.py +0 -221
  144. {dfbench-0.2.1 → dfbench-0.2.2}/LICENSE +0 -0
  145. {dfbench-0.2.1 → dfbench-0.2.2}/docs/_Sidebar.md +0 -0
  146. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/derivative_free/__init__.py +0 -0
  147. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/derivative_free/pdfo/__init__.py +0 -0
  148. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/evolutionary/nevergrad/__init__.py +0 -0
  149. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/optax/__init__.py +0 -0
  150. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/scipy/__init__.py +0 -0
  151. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/scipy/bfgs.py +0 -0
  152. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/scipy/cobyla.py +0 -0
  153. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/scipy/cobyqa.py +0 -0
  154. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/scipy/dogleg.py +0 -0
  155. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/scipy/lbfgsb.py +0 -0
  156. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/scipy/newton_cg.py +0 -0
  157. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/scipy/nonlinear_cg.py +0 -0
  158. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/scipy/slsqp.py +0 -0
  159. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/scipy/tnc.py +0 -0
  160. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/scipy/trust_constr.py +0 -0
  161. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/scipy/trust_krylov.py +0 -0
  162. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/gradient_based/scipy/trust_ncg.py +0 -0
  163. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/utils/__init__.py +0 -0
  164. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/algorithms/utils/weighted_acq.py +0 -0
  165. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/benchmark/__init__.py +0 -0
  166. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/benchmark/benchmark.py +0 -0
  167. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/benchmark/metrics.py +0 -0
  168. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/core/_init_env.py +0 -0
  169. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/core/config.py +0 -0
  170. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/core/storage/__init__.py +0 -0
  171. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/core/storage/backends.py +0 -0
  172. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/core/storage/resolver.py +0 -0
  173. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/core/utils.py +0 -0
  174. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/problems/__init__.py +0 -0
  175. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/problems/uifo/__init__.py +0 -0
  176. {dfbench-0.2.1 → dfbench-0.2.2}/src/dfbench/problems/voyager/__init__.py +0 -0
  177. {dfbench-0.2.1 → dfbench-0.2.2}/tests/__init__.py +0 -0
  178. {dfbench-0.2.1 → dfbench-0.2.2}/tests/conftest.py +0 -0
  179. {dfbench-0.2.1 → dfbench-0.2.2}/tests/slow/__init__.py +0 -0
  180. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_bo_batch.py +0 -0
  181. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_custom_jax_batch.py +0 -0
  182. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_objective_space_mode.py +0 -0
  183. {dfbench-0.2.1 → dfbench-0.2.2}/tests/test_scipy_wrapper.py +0 -0
@@ -23,7 +23,11 @@ temp/
23
23
  results/
24
24
  notebooks/
25
25
  .DS_Store
26
- .github/
26
+
27
+ runs/
28
+ competition/
29
+ thesis.typ
30
+ training/
27
31
 
28
32
  # IDE related
29
33
  .vscode/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dfbench
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: Differometor Benchmark - Optimization algorithms and problem definitions
5
5
  Project-URL: Homepage, https://github.com/artificial-scientist-lab/Differometor-Benchmark
6
6
  Project-URL: Repository, https://github.com/artificial-scientist-lab/Differometor-Benchmark
@@ -34,6 +34,7 @@ Requires-Dist: cmaes>=0.10.0; extra == 'all'
34
34
  Requires-Dist: evosax>=0.1.6; extra == 'all'
35
35
  Requires-Dist: evox>=1.3.0; extra == 'all'
36
36
  Requires-Dist: gpytorch>=1.14; extra == 'all'
37
+ Requires-Dist: hebo>=0.3.2; extra == 'all'
37
38
  Requires-Dist: nevergrad>=1.0.12; extra == 'all'
38
39
  Requires-Dist: omads>=2408.0; extra == 'all'
39
40
  Requires-Dist: optax>=0.2.6; extra == 'all'
@@ -54,6 +55,7 @@ Provides-Extra: bo
54
55
  Requires-Dist: ax-platform>=1.2.4; extra == 'bo'
55
56
  Requires-Dist: botorch>=0.16.1; extra == 'bo'
56
57
  Requires-Dist: gpytorch>=1.14; extra == 'bo'
58
+ Requires-Dist: hebo>=0.3.2; extra == 'bo'
57
59
  Requires-Dist: torch>=2.9.1; extra == 'bo'
58
60
  Provides-Extra: cuda12
59
61
  Requires-Dist: jax[cuda12]==0.9.0.1; extra == 'cuda12'
@@ -93,6 +95,12 @@ Description-Content-Type: text/markdown
93
95
 
94
96
  # Differometor Benchmark
95
97
 
98
+ [![image](https://img.shields.io/pypi/v/dfbench.svg)](https://pypi.python.org/pypi/dfbench)
99
+ [![image](https://img.shields.io/pypi/l/dfbench)](https://pypi.python.org/pypi/dfbench)
100
+ [![image](https://img.shields.io/pypi/pyversions/dfbench.svg)](https://pypi.python.org/pypi/dfbench)
101
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
102
+ [![Tests](https://img.shields.io/github/actions/workflow/status/artificial-scientist-lab/Differometor-Benchmark/tests.yaml?branch=main&label=tests&logo=github)](https://github.com/artificial-scientist-lab/Differometor-Benchmark/actions/workflows/tests.yaml)
103
+
96
104
  A benchmarking framework for optimization algorithms on gravitational-wave detector design problems, built on top of the [Differometor](https://github.com/artificial-scientist-lab/Differometor) simulator.
97
105
 
98
106
  > **For detailed documentation, see the [Wiki](https://github.com/artificial-scientist-lab/Differometor-Benchmark/wiki).**
@@ -135,7 +143,7 @@ obj.plot_loss()
135
143
  obj.save_run_to_file("my_run.npz")
136
144
  ```
137
145
 
138
- **A loss below 0 means your solution beats the real Voyager detector's sensitivity.** (On `VoyagerProblem` without physical constraints you might be burning mirrors.)
146
+ **A loss below 0 means your solution beats the real Voyager detector's sensitivity.** (On `VoyagerProblem` without physical constraints, you might be burning mirrors.)
139
147
 
140
148
  ### Evaluation Methods
141
149
 
@@ -157,8 +165,8 @@ The problems are JAX-based and differentiable up to second order. Use whichever
157
165
  ```python
158
166
  from dfbench import t2j, j2t
159
167
 
160
- params_jax = t2j(params_torch) # Torch JAX
161
- losses_torch = j2t(obj.vmap_value(params_jax)) # JAX Torch
168
+ params_jax = t2j(params_torch) # Torch -> JAX
169
+ losses_torch = j2t(obj.vmap_value(params_jax)) # JAX -> Torch
162
170
  ```
163
171
 
164
172
  This adds negligible overhead compared to the objective function itself.
@@ -226,8 +234,8 @@ OptimizationAlgorithm.optimize()
226
234
 
227
235
 
228
236
  ┌───────────┐ records losses, params, grads, timestamps
229
- │ Objective │ ──► enforces time / eval budgets
230
- └─────┬─────┘ bounded unbounded sigmoid transform
237
+ │ Objective │ ──> enforces time / eval budgets
238
+ └─────┬─────┘ bounded <-> unbounded sigmoid transform
231
239
 
232
240
 
233
241
  ContinuousProblem (VoyagerProblem, VoyagerTuningProblem, ConstrainedVoyagerProblem, UIFOProblem)
@@ -250,15 +258,15 @@ src/dfbench/
250
258
  │ ├── problem.py # ContinuousProblem ABC + ProblemSpec
251
259
  │ ├── algorithm.py # OptimizationAlgorithm ABC + AlgorithmType enum
252
260
  │ ├── objective.py # Objective wrapper (central piece)
253
- │ └── utils.py # torchjax conversion, inverse sigmoid
261
+ │ └── utils.py # torch<->jax conversion, inverse sigmoid
254
262
  ├── algorithms/
255
263
  │ ├── derivative_free/ # OMADS, PDFO/Py-BOBYQA, NelderMead, Powell
256
- │ ├── global_search/ # SciPy BasinHopping, DualAnnealing
257
- │ ├── evolutionary/ # RandomSearch, EvoxPSO, EvoxES, Nevergrad, CMA family
264
+ │ ├── global_search/ # RandomSearch, SciPy BasinHopping, DualAnnealing
265
+ │ ├── evolutionary/ # EvoxPSO, EvoxES, Nevergrad, CMA family
258
266
  │ ├── gradient_based/
259
267
  │ │ ├── optax/ # 34 Optax-based optimizers (OptaxAdam, OptaxLAMB, ...)
260
- │ │ ├── scipy/ # 13 SciPy-based optimizers (BFGS, TNC, SLSQP, )
261
- │ │ ├── custom_jax.py # Native-JAX custom/hybrid batch (SGLD, ASAM, GDL-BFGS, )
268
+ │ │ ├── scipy/ # 13 SciPy-based optimizers (BFGS, TNC, SLSQP, ...)
269
+ │ │ ├── custom_jax.py # Native-JAX custom/hybrid batch (SGLD, ASAM, GD->L-BFGS, ...)
262
270
  │ │ └── *.py # Custom-loop algorithms (AdamGD, LBFGSGD, SAGD, NAAdamGD, OptaxLBFGS)
263
271
  │ ├── surrogate_based/
264
272
  │ │ ├── botorch/ # BotorchBO, BotorchTuRBO, BotorchqNEI, BotorchqKG,
@@ -369,7 +377,7 @@ The interface is designed to make this as simple as possible. You write the opti
369
377
 
370
378
  1. Subclass `OptimizationAlgorithm`
371
379
  2. Declare `algorithm_str` and `algorithm_type`
372
- 3. Implement `optimize(objective, ...) None`
380
+ 3. Implement `optimize(objective, ...) -> None`
373
381
  4. Use `Objective` for all function evaluations
374
382
  5. The `Objective` is mutated in place, thereby no return is needed
375
383
 
@@ -392,7 +400,7 @@ class MyAlgorithm(OptimizationAlgorithm):
392
400
  """My optimization algorithm."""
393
401
 
394
402
  algorithm_str = "my_algorithm"
395
- algorithm_type = AlgorithmType.EVOLUTIONARY # match one of the algorithms/ subfolders
403
+ algorithm_type = AlgorithmType.GLOBAL_SEARCH # match one of the algorithms/ subfolders
396
404
 
397
405
  def __init__(self, batch_size: int = 50) -> None:
398
406
  """Algorithm-level meta-parameters that don't change between runs."""
@@ -513,7 +521,6 @@ See [Objective API Reference](https://github.com/artificial-scientist-lab/Differ
513
521
  | `BFGS`, `LBFGSB`, `NonlinearCG`, `NewtonCG` | Gradient | Classical SciPy gradient and quasi-Newton methods |
514
522
  | `TrustNCG`, `TrustKrylov`, `TrustConstr`, `Dogleg`, `SR1` | Gradient | Trust-region and constrained SciPy methods |
515
523
  | `TNC`, `SLSQP`, `COBYQA`, `COBYLA` | Gradient | Bounded physical-space SciPy solvers |
516
- | `RandomSearch` | Evolutionary | Unbiased baseline, no hyperparameters |
517
524
  | `EvoxPSO` | Evolutionary | Swarm intelligence, many variants (CLPSO, CSO, ...) |
518
525
  | `EvoxES` | Evolutionary | CMA-ES, OpenES, XNES, and more (EvoX backend) |
519
526
  | `PyCMACMAES` | Evolutionary | Vanilla CMA-ES (pycma backend) |
@@ -529,6 +536,7 @@ See [Objective API Reference](https://github.com/artificial-scientist-lab/Differ
529
536
  | `OmadsMADS`, `OmadsOrthoMADS` | Derivative-Free | MADS / OrthoMADS direct search (OMADS) |
530
537
  | `PDFOUOBYQA`, `PDFONEWUOA`, `PDFOLINCOA`, `PyBOBYQA` | Derivative-Free | Powell-style trust-region DFO (PDFO + Py-BOBYQA) |
531
538
  | `NelderMead`, `Powell` | Derivative-Free | SciPy classical simplex / direction-set search |
539
+ | `RandomSearch` | Global Search | Unbiased, derivative-free global search baseline, no hyperparameters |
532
540
  | `BasinHopping`, `DualAnnealing` | Global Search | SciPy stochastic global optimization |
533
541
  | `NevergradOnePlusOne`, `NevergradTBPSA`, `NevergradNGOpt` | Evolutionary | Nevergrad rugged-landscape baselines |
534
542
  | `BotorchBO` | Surrogate | Sample-efficient Bayesian Optimization |
@@ -557,7 +565,7 @@ Reference implementations worth reading:
557
565
  - `gradient_based/adam_gd.py`: gradient-based pattern (custom loop)
558
566
  - `gradient_based/optax/adam.py`: Optax wrapper pattern (minimal subclass)
559
567
  - `gradient_based/scipy/_common.py`: shared SciPy wrapper, caching, and budget handling
560
- - `evolutionary/random_search.py`: simplest batched example
568
+ - `global_search/random_search.py`: simplest batched example
561
569
  - `evolutionary/evox_es.py`: wrapping an external library (EvoX/PyTorch)
562
570
  - `evolutionary/pycma_cmaes.py`: wrapping pycma (ask/tell, restart strategies)
563
571
  - `evolutionary/jax_es.py`: native JAX ES without external library
@@ -3,6 +3,12 @@
3
3
 
4
4
  # Differometor Benchmark
5
5
 
6
+ [![image](https://img.shields.io/pypi/v/dfbench.svg)](https://pypi.python.org/pypi/dfbench)
7
+ [![image](https://img.shields.io/pypi/l/dfbench)](https://pypi.python.org/pypi/dfbench)
8
+ [![image](https://img.shields.io/pypi/pyversions/dfbench.svg)](https://pypi.python.org/pypi/dfbench)
9
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
10
+ [![Tests](https://img.shields.io/github/actions/workflow/status/artificial-scientist-lab/Differometor-Benchmark/tests.yaml?branch=main&label=tests&logo=github)](https://github.com/artificial-scientist-lab/Differometor-Benchmark/actions/workflows/tests.yaml)
11
+
6
12
  A benchmarking framework for optimization algorithms on gravitational-wave detector design problems, built on top of the [Differometor](https://github.com/artificial-scientist-lab/Differometor) simulator.
7
13
 
8
14
  > **For detailed documentation, see the [Wiki](https://github.com/artificial-scientist-lab/Differometor-Benchmark/wiki).**
@@ -45,7 +51,7 @@ obj.plot_loss()
45
51
  obj.save_run_to_file("my_run.npz")
46
52
  ```
47
53
 
48
- **A loss below 0 means your solution beats the real Voyager detector's sensitivity.** (On `VoyagerProblem` without physical constraints you might be burning mirrors.)
54
+ **A loss below 0 means your solution beats the real Voyager detector's sensitivity.** (On `VoyagerProblem` without physical constraints, you might be burning mirrors.)
49
55
 
50
56
  ### Evaluation Methods
51
57
 
@@ -67,8 +73,8 @@ The problems are JAX-based and differentiable up to second order. Use whichever
67
73
  ```python
68
74
  from dfbench import t2j, j2t
69
75
 
70
- params_jax = t2j(params_torch) # Torch JAX
71
- losses_torch = j2t(obj.vmap_value(params_jax)) # JAX Torch
76
+ params_jax = t2j(params_torch) # Torch -> JAX
77
+ losses_torch = j2t(obj.vmap_value(params_jax)) # JAX -> Torch
72
78
  ```
73
79
 
74
80
  This adds negligible overhead compared to the objective function itself.
@@ -136,8 +142,8 @@ OptimizationAlgorithm.optimize()
136
142
 
137
143
 
138
144
  ┌───────────┐ records losses, params, grads, timestamps
139
- │ Objective │ ──► enforces time / eval budgets
140
- └─────┬─────┘ bounded unbounded sigmoid transform
145
+ │ Objective │ ──> enforces time / eval budgets
146
+ └─────┬─────┘ bounded <-> unbounded sigmoid transform
141
147
 
142
148
 
143
149
  ContinuousProblem (VoyagerProblem, VoyagerTuningProblem, ConstrainedVoyagerProblem, UIFOProblem)
@@ -160,15 +166,15 @@ src/dfbench/
160
166
  │ ├── problem.py # ContinuousProblem ABC + ProblemSpec
161
167
  │ ├── algorithm.py # OptimizationAlgorithm ABC + AlgorithmType enum
162
168
  │ ├── objective.py # Objective wrapper (central piece)
163
- │ └── utils.py # torchjax conversion, inverse sigmoid
169
+ │ └── utils.py # torch<->jax conversion, inverse sigmoid
164
170
  ├── algorithms/
165
171
  │ ├── derivative_free/ # OMADS, PDFO/Py-BOBYQA, NelderMead, Powell
166
- │ ├── global_search/ # SciPy BasinHopping, DualAnnealing
167
- │ ├── evolutionary/ # RandomSearch, EvoxPSO, EvoxES, Nevergrad, CMA family
172
+ │ ├── global_search/ # RandomSearch, SciPy BasinHopping, DualAnnealing
173
+ │ ├── evolutionary/ # EvoxPSO, EvoxES, Nevergrad, CMA family
168
174
  │ ├── gradient_based/
169
175
  │ │ ├── optax/ # 34 Optax-based optimizers (OptaxAdam, OptaxLAMB, ...)
170
- │ │ ├── scipy/ # 13 SciPy-based optimizers (BFGS, TNC, SLSQP, )
171
- │ │ ├── custom_jax.py # Native-JAX custom/hybrid batch (SGLD, ASAM, GDL-BFGS, )
176
+ │ │ ├── scipy/ # 13 SciPy-based optimizers (BFGS, TNC, SLSQP, ...)
177
+ │ │ ├── custom_jax.py # Native-JAX custom/hybrid batch (SGLD, ASAM, GD->L-BFGS, ...)
172
178
  │ │ └── *.py # Custom-loop algorithms (AdamGD, LBFGSGD, SAGD, NAAdamGD, OptaxLBFGS)
173
179
  │ ├── surrogate_based/
174
180
  │ │ ├── botorch/ # BotorchBO, BotorchTuRBO, BotorchqNEI, BotorchqKG,
@@ -279,7 +285,7 @@ The interface is designed to make this as simple as possible. You write the opti
279
285
 
280
286
  1. Subclass `OptimizationAlgorithm`
281
287
  2. Declare `algorithm_str` and `algorithm_type`
282
- 3. Implement `optimize(objective, ...) None`
288
+ 3. Implement `optimize(objective, ...) -> None`
283
289
  4. Use `Objective` for all function evaluations
284
290
  5. The `Objective` is mutated in place, thereby no return is needed
285
291
 
@@ -302,7 +308,7 @@ class MyAlgorithm(OptimizationAlgorithm):
302
308
  """My optimization algorithm."""
303
309
 
304
310
  algorithm_str = "my_algorithm"
305
- algorithm_type = AlgorithmType.EVOLUTIONARY # match one of the algorithms/ subfolders
311
+ algorithm_type = AlgorithmType.GLOBAL_SEARCH # match one of the algorithms/ subfolders
306
312
 
307
313
  def __init__(self, batch_size: int = 50) -> None:
308
314
  """Algorithm-level meta-parameters that don't change between runs."""
@@ -423,7 +429,6 @@ See [Objective API Reference](https://github.com/artificial-scientist-lab/Differ
423
429
  | `BFGS`, `LBFGSB`, `NonlinearCG`, `NewtonCG` | Gradient | Classical SciPy gradient and quasi-Newton methods |
424
430
  | `TrustNCG`, `TrustKrylov`, `TrustConstr`, `Dogleg`, `SR1` | Gradient | Trust-region and constrained SciPy methods |
425
431
  | `TNC`, `SLSQP`, `COBYQA`, `COBYLA` | Gradient | Bounded physical-space SciPy solvers |
426
- | `RandomSearch` | Evolutionary | Unbiased baseline, no hyperparameters |
427
432
  | `EvoxPSO` | Evolutionary | Swarm intelligence, many variants (CLPSO, CSO, ...) |
428
433
  | `EvoxES` | Evolutionary | CMA-ES, OpenES, XNES, and more (EvoX backend) |
429
434
  | `PyCMACMAES` | Evolutionary | Vanilla CMA-ES (pycma backend) |
@@ -439,6 +444,7 @@ See [Objective API Reference](https://github.com/artificial-scientist-lab/Differ
439
444
  | `OmadsMADS`, `OmadsOrthoMADS` | Derivative-Free | MADS / OrthoMADS direct search (OMADS) |
440
445
  | `PDFOUOBYQA`, `PDFONEWUOA`, `PDFOLINCOA`, `PyBOBYQA` | Derivative-Free | Powell-style trust-region DFO (PDFO + Py-BOBYQA) |
441
446
  | `NelderMead`, `Powell` | Derivative-Free | SciPy classical simplex / direction-set search |
447
+ | `RandomSearch` | Global Search | Unbiased, derivative-free global search baseline, no hyperparameters |
442
448
  | `BasinHopping`, `DualAnnealing` | Global Search | SciPy stochastic global optimization |
443
449
  | `NevergradOnePlusOne`, `NevergradTBPSA`, `NevergradNGOpt` | Evolutionary | Nevergrad rugged-landscape baselines |
444
450
  | `BotorchBO` | Surrogate | Sample-efficient Bayesian Optimization |
@@ -467,7 +473,7 @@ Reference implementations worth reading:
467
473
  - `gradient_based/adam_gd.py`: gradient-based pattern (custom loop)
468
474
  - `gradient_based/optax/adam.py`: Optax wrapper pattern (minimal subclass)
469
475
  - `gradient_based/scipy/_common.py`: shared SciPy wrapper, caching, and budget handling
470
- - `evolutionary/random_search.py`: simplest batched example
476
+ - `global_search/random_search.py`: simplest batched example
471
477
  - `evolutionary/evox_es.py`: wrapping an external library (EvoX/PyTorch)
472
478
  - `evolutionary/pycma_cmaes.py`: wrapping pycma (ask/tell, restart strategies)
473
479
  - `evolutionary/jax_es.py`: native JAX ES without external library
@@ -18,7 +18,7 @@
18
18
 
19
19
  ---
20
20
 
21
- ## `EvoxES` Multi-Algorithm Wrapper (on `main`)
21
+ ## `EvoxES`: Multi-Algorithm Wrapper (on `main`)
22
22
 
23
23
  `EvoxES` is a single class that wraps **12 distinct EvoX evolution strategies** selectable via its `variant` parameter.
24
24
  Each variant is a separate algorithm from the EvoX library.
@@ -38,7 +38,7 @@ Each variant is a separate algorithm from the EvoX library.
38
38
  | `GuidedES` | Guided Evolution Strategy | ES |
39
39
  | `ESMC` | Evolution Strategy with Monte Carlo | ES |
40
40
 
41
- ## `EvoxPSO` Multi-Algorithm Wrapper (on `main`)
41
+ ## `EvoxPSO`: Multi-Algorithm Wrapper (on `main`)
42
42
 
43
43
  `EvoxPSO` is a single class that wraps **7 distinct EvoX PSO variants** selectable via its `variant` parameter.
44
44
 
@@ -52,10 +52,10 @@ Each variant is a separate algorithm from the EvoX library.
52
52
  | `SLPSOGS` | Social Learning PSO with Gaussian Sampling |
53
53
  | `SLPSOUS` | Social Learning PSO with Uniform Sampling |
54
54
 
55
- ## `EvosaxES` Multi-Algorithm Wrapper (on `algorithm/evo-algorithms`)
55
+ ## `EvosaxES`: Multi-Algorithm Wrapper (on `algorithm/evo-algorithms`)
56
56
 
57
57
  `EvosaxES` is a separate evosax-backed wrapper (pure JAX, JIT-friendly) that wraps **14 variants**.
58
- Coexists with `EvoxES` different backend, class names use `evosax_` prefix.
58
+ Coexists with `EvoxES` but uses a different backend; class names use `evosax_` prefix.
59
59
 
60
60
  | Variant | Full Name | Type |
61
61
  |---------|-----------|------|
@@ -129,7 +129,7 @@ Coexists with `EvoxES` — different backend, class names use `evosax_` prefix.
129
129
  |-----------|-----------|--------|--------|-------|
130
130
  | SGLD | `SGLDJAX` | Branch | `algorithm/jax-algorithms` | Stochastic Gradient Langevin Dynamics |
131
131
  | ASAM | `ASAMJAX` | Branch | `algorithm/jax-algorithms` | Adaptive Sharpness-Aware Minimization |
132
- | AdamL-BFGS Switch | `AdamToLBFGSJAX` | Branch | `algorithm/jax-algorithms` | Hybrid warm-start strategy |
132
+ | Adam->L-BFGS Switch | `AdamToLBFGSJAX` | Branch | `algorithm/jax-algorithms` | Hybrid warm-start strategy |
133
133
  | Entropy-SGD | `EntropySGDJAX` | Branch | `algorithm/jax-algorithms` | |
134
134
  | SGHMC | `SGHMCJAX` | Branch | `algorithm/jax-algorithms` | Stochastic Gradient Hamiltonian MC |
135
135
  | ARC | `ARCJAX` | Branch | `algorithm/jax-algorithms` | Adaptive Regularization with Cubics |
@@ -146,7 +146,6 @@ Coexists with `EvoxES` — different backend, class names use `evosax_` prefix.
146
146
  |-----------|-----------|--------|--------|-------|
147
147
  | EvoX ES (12 variants) | `EvoxES` | **Finished** | `main` | See variant table above |
148
148
  | EvoX PSO (7 variants) | `EvoxPSO` | **Finished** | `main` | See variant table above |
149
- | Random Search | `RandomSearch` | **Finished** | `main` | Baseline |
150
149
  | Evosax ES (14 variants) | `EvosaxES` | Branch | `algorithm/evo-algorithms` | See variant table above |
151
150
  | DE | `DE` | Branch | `algorithm/evo-algorithms` | Differential Evolution (custom impl) |
152
151
  | JADE | `JADE` | Branch | `algorithm/evo-algorithms` | Adaptive DE |
@@ -201,6 +200,7 @@ Coexists with `EvoxES` — different backend, class names use `evosax_` prefix.
201
200
  |-----------|-----------|--------|--------|-------|
202
201
  | Basin Hopping | `BasinHopping` | Branch | `algorithm/scipy-nongrad-algorithms` | SciPy stochastic global optimizer |
203
202
  | Dual Annealing | `DualAnnealing` | Branch | `algorithm/scipy-nongrad-algorithms` | SciPy stochastic global optimizer |
203
+ | Random Search | `RandomSearch` | **Finished** | `main` | Baseline |
204
204
 
205
205
  ### Surrogate-Based / Bayesian Optimization
206
206
 
@@ -214,7 +214,7 @@ Coexists with `EvoxES` — different backend, class names use `evosax_` prefix.
214
214
  | GEBO | `GEBO` | Branch | `algorithm/bo-algorithms` | Gradient-Enhanced BO |
215
215
  | LineBO | `LineBO` | Branch | `algorithm/bo-algorithms` | Line-search BO |
216
216
  | qKG | `BotorchqKG` | Branch | `algorithm/bo-algorithms` | Knowledge Gradient |
217
- | qNEI | `BotorchqNEI` | Branch | `algorithm/bo-algorithms` | Noisy Expected Improvement |
217
+ | qNEI | `BotorchQNEI` | Branch | `algorithm/bo-algorithms` | Noisy Expected Improvement |
218
218
  | REMBO | `REMBO` | Branch | `algorithm/bo-algorithms` | Random Embedding BO |
219
219
  | HEBO | `HEBO` | Branch | `algorithm/bo-algorithms` | Heteroscedastic BO |
220
220
  | SMAC | `SMAC` | Branch | `algorithm/bo-algorithms` | Sequential Model-based Config |