vamos-optimization 1.0.0__py3-none-any.whl

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 (724) hide show
  1. vamos/__init__.py +99 -0
  2. vamos/algorithms.py +145 -0
  3. vamos/api.py +106 -0
  4. vamos/assist/__init__.py +27 -0
  5. vamos/assist/apply.py +92 -0
  6. vamos/assist/catalog.py +19 -0
  7. vamos/assist/cli.py +423 -0
  8. vamos/assist/doctor.py +122 -0
  9. vamos/assist/explain.py +127 -0
  10. vamos/assist/go.py +94 -0
  11. vamos/assist/plan.py +330 -0
  12. vamos/assist/providers/__init__.py +15 -0
  13. vamos/assist/providers/mock_provider.py +102 -0
  14. vamos/assist/providers/openai_provider.py +299 -0
  15. vamos/assist/providers/protocol.py +37 -0
  16. vamos/assist/run.py +216 -0
  17. vamos/engine/__init__.py +3 -0
  18. vamos/engine/adaptation/__init__.py +5 -0
  19. vamos/engine/algorithm/__init__.py +100 -0
  20. vamos/engine/algorithm/_builder_adaptive.py +112 -0
  21. vamos/engine/algorithm/_builder_archive_population.py +215 -0
  22. vamos/engine/algorithm/_builder_common.py +91 -0
  23. vamos/engine/algorithm/_builder_decomposition.py +138 -0
  24. vamos/engine/algorithm/agemoea/__init__.py +5 -0
  25. vamos/engine/algorithm/agemoea/agemoea.py +358 -0
  26. vamos/engine/algorithm/agemoea/geometry.py +202 -0
  27. vamos/engine/algorithm/agemoea/state.py +68 -0
  28. vamos/engine/algorithm/builders.py +31 -0
  29. vamos/engine/algorithm/catalog.py +23 -0
  30. vamos/engine/algorithm/components/__init__.py +115 -0
  31. vamos/engine/algorithm/components/archive.py +271 -0
  32. vamos/engine/algorithm/components/archive_core.py +387 -0
  33. vamos/engine/algorithm/components/base.py +57 -0
  34. vamos/engine/algorithm/components/hooks.py +263 -0
  35. vamos/engine/algorithm/components/lifecycle.py +110 -0
  36. vamos/engine/algorithm/components/matching.py +76 -0
  37. vamos/engine/algorithm/components/metrics.py +37 -0
  38. vamos/engine/algorithm/components/population.py +117 -0
  39. vamos/engine/algorithm/components/protocol.py +170 -0
  40. vamos/engine/algorithm/components/results.py +90 -0
  41. vamos/engine/algorithm/components/selection.py +194 -0
  42. vamos/engine/algorithm/components/state.py +82 -0
  43. vamos/engine/algorithm/components/subset_selection.py +536 -0
  44. vamos/engine/algorithm/components/termination.py +105 -0
  45. vamos/engine/algorithm/components/utils.py +262 -0
  46. vamos/engine/algorithm/components/weight_vectors.py +205 -0
  47. vamos/engine/algorithm/config/__init__.py +59 -0
  48. vamos/engine/algorithm/config/agemoea.py +92 -0
  49. vamos/engine/algorithm/config/base.py +450 -0
  50. vamos/engine/algorithm/config/defaults.py +166 -0
  51. vamos/engine/algorithm/config/generic.py +25 -0
  52. vamos/engine/algorithm/config/ibea.py +122 -0
  53. vamos/engine/algorithm/config/moead.py +174 -0
  54. vamos/engine/algorithm/config/nsgaii.py +187 -0
  55. vamos/engine/algorithm/config/nsgaiii.py +150 -0
  56. vamos/engine/algorithm/config/rvea.py +128 -0
  57. vamos/engine/algorithm/config/smpso.py +131 -0
  58. vamos/engine/algorithm/config/smsemoa.py +131 -0
  59. vamos/engine/algorithm/config/spea2.py +138 -0
  60. vamos/engine/algorithm/config/types.py +168 -0
  61. vamos/engine/algorithm/factory.py +139 -0
  62. vamos/engine/algorithm/ibea/__init__.py +49 -0
  63. vamos/engine/algorithm/ibea/helpers.py +225 -0
  64. vamos/engine/algorithm/ibea/ibea.py +355 -0
  65. vamos/engine/algorithm/ibea/initialization.py +169 -0
  66. vamos/engine/algorithm/ibea/state.py +114 -0
  67. vamos/engine/algorithm/moead/__init__.py +60 -0
  68. vamos/engine/algorithm/moead/aggregation.py +116 -0
  69. vamos/engine/algorithm/moead/helpers.py +27 -0
  70. vamos/engine/algorithm/moead/initialization.py +350 -0
  71. vamos/engine/algorithm/moead/moead.py +347 -0
  72. vamos/engine/algorithm/moead/neighborhood.py +139 -0
  73. vamos/engine/algorithm/moead/neighborhood_kernels.py +357 -0
  74. vamos/engine/algorithm/moead/state.py +153 -0
  75. vamos/engine/algorithm/nsgaii/__init__.py +42 -0
  76. vamos/engine/algorithm/nsgaii/ask_tell.py +319 -0
  77. vamos/engine/algorithm/nsgaii/helpers.py +381 -0
  78. vamos/engine/algorithm/nsgaii/initialization.py +445 -0
  79. vamos/engine/algorithm/nsgaii/injection.py +457 -0
  80. vamos/engine/algorithm/nsgaii/nsgaii.py +91 -0
  81. vamos/engine/algorithm/nsgaii/run.py +303 -0
  82. vamos/engine/algorithm/nsgaii/setup.py +272 -0
  83. vamos/engine/algorithm/nsgaii/state.py +356 -0
  84. vamos/engine/algorithm/nsgaiii/__init__.py +39 -0
  85. vamos/engine/algorithm/nsgaiii/helpers.py +391 -0
  86. vamos/engine/algorithm/nsgaiii/initialization.py +267 -0
  87. vamos/engine/algorithm/nsgaiii/nsgaiii.py +340 -0
  88. vamos/engine/algorithm/nsgaiii/state.py +115 -0
  89. vamos/engine/algorithm/registry.py +213 -0
  90. vamos/engine/algorithm/rvea/__init__.py +5 -0
  91. vamos/engine/algorithm/rvea/rvea.py +476 -0
  92. vamos/engine/algorithm/rvea/state.py +78 -0
  93. vamos/engine/algorithm/smpso/__init__.py +37 -0
  94. vamos/engine/algorithm/smpso/helpers.py +199 -0
  95. vamos/engine/algorithm/smpso/initialization.py +214 -0
  96. vamos/engine/algorithm/smpso/smpso.py +467 -0
  97. vamos/engine/algorithm/smpso/state.py +81 -0
  98. vamos/engine/algorithm/smsemoa/__init__.py +55 -0
  99. vamos/engine/algorithm/smsemoa/helpers.py +427 -0
  100. vamos/engine/algorithm/smsemoa/initialization.py +241 -0
  101. vamos/engine/algorithm/smsemoa/smsemoa.py +422 -0
  102. vamos/engine/algorithm/smsemoa/state.py +120 -0
  103. vamos/engine/algorithm/spea2/__init__.py +45 -0
  104. vamos/engine/algorithm/spea2/helpers.py +375 -0
  105. vamos/engine/algorithm/spea2/initialization.py +182 -0
  106. vamos/engine/algorithm/spea2/spea2.py +427 -0
  107. vamos/engine/algorithm/spea2/state.py +111 -0
  108. vamos/engine/algorithm/variants.py +83 -0
  109. vamos/engine/archive/__init__.py +15 -0
  110. vamos/engine/archive/config.py +56 -0
  111. vamos/engine/archive/factory.py +259 -0
  112. vamos/engine/archive/pruning_selectors.py +248 -0
  113. vamos/engine/config/__init__.py +17 -0
  114. vamos/engine/config/loader.py +28 -0
  115. vamos/engine/config/spec.py +253 -0
  116. vamos/engine/config/variation.py +268 -0
  117. vamos/engine/hooks/__init__.py +26 -0
  118. vamos/engine/hooks/config_parse.py +151 -0
  119. vamos/engine/hooks/genealogy.py +181 -0
  120. vamos/engine/hooks/hv_archive_hooks.py +284 -0
  121. vamos/engine/hooks/hv_convergence.py +206 -0
  122. vamos/engine/hooks/live_viz.py +53 -0
  123. vamos/engine/hyperheuristics/__init__.py +22 -0
  124. vamos/engine/hyperheuristics/indicator.py +61 -0
  125. vamos/engine/hyperheuristics/operator_selector.py +98 -0
  126. vamos/engine/hyperheuristics/portfolio.py +73 -0
  127. vamos/engine/operators/__init__.py +115 -0
  128. vamos/engine/operators/impl/__init__.py +5 -0
  129. vamos/engine/operators/impl/_mixed_crossover.py +170 -0
  130. vamos/engine/operators/impl/_mixed_init.py +38 -0
  131. vamos/engine/operators/impl/_mixed_mutation.py +188 -0
  132. vamos/engine/operators/impl/_mixed_spec.py +163 -0
  133. vamos/engine/operators/impl/_permutation_common.py +137 -0
  134. vamos/engine/operators/impl/_permutation_crossovers.py +300 -0
  135. vamos/engine/operators/impl/_permutation_mutations.py +128 -0
  136. vamos/engine/operators/impl/binary.py +299 -0
  137. vamos/engine/operators/impl/flags.py +24 -0
  138. vamos/engine/operators/impl/integer.py +479 -0
  139. vamos/engine/operators/impl/mixed.py +40 -0
  140. vamos/engine/operators/impl/permutation.py +64 -0
  141. vamos/engine/operators/impl/permutation_adapters.py +143 -0
  142. vamos/engine/operators/impl/real/__init__.py +99 -0
  143. vamos/engine/operators/impl/real/_crossover_base.py +20 -0
  144. vamos/engine/operators/impl/real/crossover.py +31 -0
  145. vamos/engine/operators/impl/real/crossover_blend.py +200 -0
  146. vamos/engine/operators/impl/real/crossover_differential.py +69 -0
  147. vamos/engine/operators/impl/real/crossover_multi_parent.py +133 -0
  148. vamos/engine/operators/impl/real/crossover_sbx.py +225 -0
  149. vamos/engine/operators/impl/real/crossover_stochastic.py +111 -0
  150. vamos/engine/operators/impl/real/initialize.py +219 -0
  151. vamos/engine/operators/impl/real/mutation.py +484 -0
  152. vamos/engine/operators/impl/real/repair.py +174 -0
  153. vamos/engine/operators/impl/real/utils.py +95 -0
  154. vamos/engine/operators/impl/registry.py +182 -0
  155. vamos/engine/operators/impl/repair.py +47 -0
  156. vamos/engine/operators/policies/__init__.py +5 -0
  157. vamos/engine/operators/policies/_discrete_variation_builder.py +306 -0
  158. vamos/engine/operators/policies/_real_operator_builder.py +93 -0
  159. vamos/engine/operators/policies/discrete_operator_maps.py +120 -0
  160. vamos/engine/operators/policies/ibea.py +86 -0
  161. vamos/engine/operators/policies/moead.py +151 -0
  162. vamos/engine/operators/policies/nsgaii.py +205 -0
  163. vamos/engine/operators/policies/nsgaiii.py +105 -0
  164. vamos/engine/operators/policies/real_repair.py +61 -0
  165. vamos/engine/operators/policies/smpso.py +136 -0
  166. vamos/engine/operators/policies/smsemoa.py +105 -0
  167. vamos/engine/operators/policies/spea2.py +104 -0
  168. vamos/engine/tuning/__init__.py +201 -0
  169. vamos/engine/tuning/_model_backend_availability.py +37 -0
  170. vamos/engine/tuning/_model_backend_fidelity.py +212 -0
  171. vamos/engine/tuning/_model_backend_runners.py +328 -0
  172. vamos/engine/tuning/_model_backend_utils.py +90 -0
  173. vamos/engine/tuning/ablation/__init__.py +11 -0
  174. vamos/engine/tuning/ablation/plan.py +68 -0
  175. vamos/engine/tuning/ablation/types.py +100 -0
  176. vamos/engine/tuning/api.py +161 -0
  177. vamos/engine/tuning/backends.py +123 -0
  178. vamos/engine/tuning/convergence.py +310 -0
  179. vamos/engine/tuning/racing/__init__.py +167 -0
  180. vamos/engine/tuning/racing/_bridge_assignment_builders.py +330 -0
  181. vamos/engine/tuning/racing/_bridge_assignment_shared.py +208 -0
  182. vamos/engine/tuning/racing/bridge.py +116 -0
  183. vamos/engine/tuning/racing/bridge_assignments.py +30 -0
  184. vamos/engine/tuning/racing/bridge_space_parts_discrete.py +195 -0
  185. vamos/engine/tuning/racing/bridge_spaces.py +120 -0
  186. vamos/engine/tuning/racing/bridge_spaces_agemoea.py +87 -0
  187. vamos/engine/tuning/racing/bridge_spaces_ibea.py +90 -0
  188. vamos/engine/tuning/racing/bridge_spaces_moead.py +127 -0
  189. vamos/engine/tuning/racing/bridge_spaces_nsgaii.py +191 -0
  190. vamos/engine/tuning/racing/bridge_spaces_nsgaiii.py +88 -0
  191. vamos/engine/tuning/racing/bridge_spaces_rvea.py +89 -0
  192. vamos/engine/tuning/racing/bridge_spaces_smpso.py +79 -0
  193. vamos/engine/tuning/racing/bridge_spaces_smsemoa.py +88 -0
  194. vamos/engine/tuning/racing/bridge_spaces_spea2.py +90 -0
  195. vamos/engine/tuning/racing/config_space.py +169 -0
  196. vamos/engine/tuning/racing/core.py +424 -0
  197. vamos/engine/tuning/racing/elimination.py +241 -0
  198. vamos/engine/tuning/racing/eval_types.py +11 -0
  199. vamos/engine/tuning/racing/io.py +169 -0
  200. vamos/engine/tuning/racing/multi_fidelity.py +232 -0
  201. vamos/engine/tuning/racing/param_space.py +336 -0
  202. vamos/engine/tuning/racing/parameters.py +59 -0
  203. vamos/engine/tuning/racing/random_search_tuner.py +92 -0
  204. vamos/engine/tuning/racing/refill.py +150 -0
  205. vamos/engine/tuning/racing/sampler.py +330 -0
  206. vamos/engine/tuning/racing/scenario.py +264 -0
  207. vamos/engine/tuning/racing/schedule.py +58 -0
  208. vamos/engine/tuning/racing/state.py +39 -0
  209. vamos/engine/tuning/racing/stats.py +241 -0
  210. vamos/engine/tuning/racing/tuning_task.py +85 -0
  211. vamos/engine/tuning/racing/two_phase.py +502 -0
  212. vamos/engine/tuning/racing/warm_start.py +181 -0
  213. vamos/engine/variation/__init__.py +35 -0
  214. vamos/engine/variation/core.py +38 -0
  215. vamos/engine/variation/helpers.py +257 -0
  216. vamos/engine/variation/pipeline.py +117 -0
  217. vamos/engine/variation/protocol.py +147 -0
  218. vamos/engine/variation/strategies.py +300 -0
  219. vamos/exceptions.py +59 -0
  220. vamos/experiment/__init__.py +7 -0
  221. vamos/experiment/_execution_support.py +155 -0
  222. vamos/experiment/ablation.py +188 -0
  223. vamos/experiment/artifacts/__init__.py +74 -0
  224. vamos/experiment/artifacts/bundle.py +314 -0
  225. vamos/experiment/artifacts/bundle_safety.py +287 -0
  226. vamos/experiment/artifacts/comparison.py +109 -0
  227. vamos/experiment/artifacts/compatibility.py +209 -0
  228. vamos/experiment/artifacts/component_support.py +163 -0
  229. vamos/experiment/artifacts/errors.py +289 -0
  230. vamos/experiment/artifacts/identity.py +24 -0
  231. vamos/experiment/artifacts/inspection.py +103 -0
  232. vamos/experiment/artifacts/jsonio.py +272 -0
  233. vamos/experiment/artifacts/lineage.py +91 -0
  234. vamos/experiment/artifacts/manifest.py +396 -0
  235. vamos/experiment/artifacts/models.py +213 -0
  236. vamos/experiment/artifacts/paths.py +142 -0
  237. vamos/experiment/artifacts/persistence.py +425 -0
  238. vamos/experiment/artifacts/provenance.py +423 -0
  239. vamos/experiment/artifacts/reader.py +394 -0
  240. vamos/experiment/artifacts/reconstruction.py +181 -0
  241. vamos/experiment/artifacts/replay.py +237 -0
  242. vamos/experiment/artifacts/reports.py +184 -0
  243. vamos/experiment/artifacts/resolved_reconstruction.py +359 -0
  244. vamos/experiment/artifacts/specs.py +332 -0
  245. vamos/experiment/artifacts/storage.py +263 -0
  246. vamos/experiment/artifacts/verification.py +147 -0
  247. vamos/experiment/auto.py +100 -0
  248. vamos/experiment/benchmark/__init__.py +16 -0
  249. vamos/experiment/benchmark/cli.py +158 -0
  250. vamos/experiment/benchmark/lab_plots.py +59 -0
  251. vamos/experiment/benchmark/lab_stats.py +110 -0
  252. vamos/experiment/benchmark/lab_summary.py +106 -0
  253. vamos/experiment/benchmark/report.py +231 -0
  254. vamos/experiment/benchmark/report_plots.py +89 -0
  255. vamos/experiment/benchmark/report_utils.py +66 -0
  256. vamos/experiment/benchmark/runner.py +197 -0
  257. vamos/experiment/benchmark/suites.py +256 -0
  258. vamos/experiment/cli/__init__.py +5 -0
  259. vamos/experiment/cli/_tune_args.py +212 -0
  260. vamos/experiment/cli/_tune_flow.py +256 -0
  261. vamos/experiment/cli/_tune_post.py +284 -0
  262. vamos/experiment/cli/_tune_runtime.py +285 -0
  263. vamos/experiment/cli/_tune_utils.py +232 -0
  264. vamos/experiment/cli/ablation.py +185 -0
  265. vamos/experiment/cli/ablation_parse.py +111 -0
  266. vamos/experiment/cli/ablation_schema.py +248 -0
  267. vamos/experiment/cli/args.py +62 -0
  268. vamos/experiment/cli/args_algorithms.py +125 -0
  269. vamos/experiment/cli/args_benchmarks.py +36 -0
  270. vamos/experiment/cli/args_core.py +181 -0
  271. vamos/experiment/cli/args_outputs.py +81 -0
  272. vamos/experiment/cli/args_tuning.py +15 -0
  273. vamos/experiment/cli/common.py +167 -0
  274. vamos/experiment/cli/create_problem.py +396 -0
  275. vamos/experiment/cli/defaults.py +12 -0
  276. vamos/experiment/cli/loaders.py +110 -0
  277. vamos/experiment/cli/main.py +254 -0
  278. vamos/experiment/cli/orchestration.py +179 -0
  279. vamos/experiment/cli/parser.py +55 -0
  280. vamos/experiment/cli/preflight.py +107 -0
  281. vamos/experiment/cli/quickstart.py +406 -0
  282. vamos/experiment/cli/quickstart_templates.py +187 -0
  283. vamos/experiment/cli/results_cli.py +186 -0
  284. vamos/experiment/cli/run_artifact_cli.py +179 -0
  285. vamos/experiment/cli/spec_args.py +27 -0
  286. vamos/experiment/cli/study.py +157 -0
  287. vamos/experiment/cli/study_command.py +273 -0
  288. vamos/experiment/cli/study_command_result.py +123 -0
  289. vamos/experiment/cli/study_spec_io.py +99 -0
  290. vamos/experiment/cli/study_summary_output.py +115 -0
  291. vamos/experiment/cli/tune.py +410 -0
  292. vamos/experiment/cli/types.py +21 -0
  293. vamos/experiment/cli/validation.py +117 -0
  294. vamos/experiment/diagnostics/__init__.py +5 -0
  295. vamos/experiment/diagnostics/self_check.py +139 -0
  296. vamos/experiment/execution.py +388 -0
  297. vamos/experiment/external/__init__.py +32 -0
  298. vamos/experiment/external/jmetalpy.py +302 -0
  299. vamos/experiment/external/pygmo.py +84 -0
  300. vamos/experiment/external/pymoo.py +185 -0
  301. vamos/experiment/external/registry.py +113 -0
  302. vamos/experiment/external/reporting.py +89 -0
  303. vamos/experiment/observers/__init__.py +3 -0
  304. vamos/experiment/observers/console.py +100 -0
  305. vamos/experiment/observers/storage.py +175 -0
  306. vamos/experiment/optimization_result/__init__.py +7 -0
  307. vamos/experiment/optimization_result/model.py +178 -0
  308. vamos/experiment/optimization_result/ranking.py +288 -0
  309. vamos/experiment/optimization_result/study.py +110 -0
  310. vamos/experiment/optimize.py +242 -0
  311. vamos/experiment/presentation.py +54 -0
  312. vamos/experiment/profiler/__init__.py +3 -0
  313. vamos/experiment/profiler/cli.py +45 -0
  314. vamos/experiment/profiler/runner.py +154 -0
  315. vamos/experiment/runner.py +54 -0
  316. vamos/experiment/runner_abstractions.py +105 -0
  317. vamos/experiment/runner_utils.py +73 -0
  318. vamos/experiment/runtime/__init__.py +21 -0
  319. vamos/experiment/runtime/catalog.py +61 -0
  320. vamos/experiment/services/__init__.py +0 -0
  321. vamos/experiment/services/orchestrator.py +77 -0
  322. vamos/experiment/studio/__init__.py +7 -0
  323. vamos/experiment/study/__init__.py +16 -0
  324. vamos/experiment/study/cancellation.py +176 -0
  325. vamos/experiment/study/checkpoint_projection.py +238 -0
  326. vamos/experiment/study/commits.py +221 -0
  327. vamos/experiment/study/creation.py +218 -0
  328. vamos/experiment/study/decoding.py +336 -0
  329. vamos/experiment/study/documents.py +310 -0
  330. vamos/experiment/study/errors.py +210 -0
  331. vamos/experiment/study/execution.py +449 -0
  332. vamos/experiment/study/execution_errors.py +94 -0
  333. vamos/experiment/study/failure_policy.py +245 -0
  334. vamos/experiment/study/identity.py +42 -0
  335. vamos/experiment/study/journal.py +467 -0
  336. vamos/experiment/study/journal_loading.py +109 -0
  337. vamos/experiment/study/limits.py +29 -0
  338. vamos/experiment/study/loading.py +358 -0
  339. vamos/experiment/study/models.py +369 -0
  340. vamos/experiment/study/nsga2_diagnostics.py +287 -0
  341. vamos/experiment/study/paths.py +47 -0
  342. vamos/experiment/study/planning.py +375 -0
  343. vamos/experiment/study/preflight.py +335 -0
  344. vamos/experiment/study/projection.py +293 -0
  345. vamos/experiment/study/reconciliation.py +432 -0
  346. vamos/experiment/study/record_decoding.py +251 -0
  347. vamos/experiment/study/record_loading.py +454 -0
  348. vamos/experiment/study/recovery.py +274 -0
  349. vamos/experiment/study/report_models.py +233 -0
  350. vamos/experiment/study/run_publication.py +258 -0
  351. vamos/experiment/study/serialization.py +231 -0
  352. vamos/experiment/study/writing.py +51 -0
  353. vamos/experiment/study_analysis.py +132 -0
  354. vamos/experiment/types.py +14 -0
  355. vamos/experiment/unified.py +453 -0
  356. vamos/experiment/zoo/__init__.py +3 -0
  357. vamos/experiment/zoo/cli.py +110 -0
  358. vamos/foundation/__init__.py +3 -0
  359. vamos/foundation/checkpoint.py +127 -0
  360. vamos/foundation/constraints/__init__.py +151 -0
  361. vamos/foundation/constraints/dsl.py +175 -0
  362. vamos/foundation/constraints/utils.py +40 -0
  363. vamos/foundation/core/__init__.py +5 -0
  364. vamos/foundation/core/api.py +46 -0
  365. vamos/foundation/core/execution.py +44 -0
  366. vamos/foundation/core/experiment_config.py +28 -0
  367. vamos/foundation/core/hv_stop.py +81 -0
  368. vamos/foundation/core/io_utils.py +14 -0
  369. vamos/foundation/encoding.py +47 -0
  370. vamos/foundation/eval/__init__.py +28 -0
  371. vamos/foundation/eval/backends.py +283 -0
  372. vamos/foundation/eval/population.py +49 -0
  373. vamos/foundation/exceptions.py +336 -0
  374. vamos/foundation/kernel/__init__.py +25 -0
  375. vamos/foundation/kernel/_numba_ranking.py +303 -0
  376. vamos/foundation/kernel/_numba_selection.py +52 -0
  377. vamos/foundation/kernel/backend.py +164 -0
  378. vamos/foundation/kernel/moocore_backend.py +425 -0
  379. vamos/foundation/kernel/numba_backend.py +223 -0
  380. vamos/foundation/kernel/numba_ops.py +224 -0
  381. vamos/foundation/kernel/numpy_backend.py +449 -0
  382. vamos/foundation/kernel/operator_primitives.py +285 -0
  383. vamos/foundation/kernel/registry.py +75 -0
  384. vamos/foundation/logging.py +28 -0
  385. vamos/foundation/observer.py +51 -0
  386. vamos/foundation/problem/__init__.py +7 -0
  387. vamos/foundation/problem/base.py +182 -0
  388. vamos/foundation/problem/binary.py +132 -0
  389. vamos/foundation/problem/builder.py +337 -0
  390. vamos/foundation/problem/cec.py +216 -0
  391. vamos/foundation/problem/cec2009.py +363 -0
  392. vamos/foundation/problem/constrained_many.py +488 -0
  393. vamos/foundation/problem/dtlz.py +298 -0
  394. vamos/foundation/problem/integer.py +104 -0
  395. vamos/foundation/problem/lsmop.py +262 -0
  396. vamos/foundation/problem/lz.py +327 -0
  397. vamos/foundation/problem/mixed.py +163 -0
  398. vamos/foundation/problem/real_world/__init__.py +3 -0
  399. vamos/foundation/problem/real_world/engineering.py +79 -0
  400. vamos/foundation/problem/real_world/feature_selection.py +81 -0
  401. vamos/foundation/problem/real_world/hyperparam.py +127 -0
  402. vamos/foundation/problem/real_world/tanabe_ishibuchi.py +26 -0
  403. vamos/foundation/problem/real_world/tanabe_ishibuchi_re2.py +376 -0
  404. vamos/foundation/problem/real_world/tanabe_ishibuchi_re3_a.py +178 -0
  405. vamos/foundation/problem/real_world/tanabe_ishibuchi_re3_b.py +182 -0
  406. vamos/foundation/problem/real_world/tanabe_ishibuchi_re4.py +148 -0
  407. vamos/foundation/problem/real_world/tanabe_ishibuchi_re6_re9.py +160 -0
  408. vamos/foundation/problem/real_world/tanabe_ishibuchi_utils.py +18 -0
  409. vamos/foundation/problem/real_world/zapotecas_rwa.py +20 -0
  410. vamos/foundation/problem/real_world/zapotecas_rwa_1_4.py +253 -0
  411. vamos/foundation/problem/real_world/zapotecas_rwa_5.py +207 -0
  412. vamos/foundation/problem/real_world/zapotecas_rwa_6.py +80 -0
  413. vamos/foundation/problem/real_world/zapotecas_rwa_7_8.py +148 -0
  414. vamos/foundation/problem/real_world/zapotecas_rwa_9_10.py +117 -0
  415. vamos/foundation/problem/registry/__init__.py +26 -0
  416. vamos/foundation/problem/registry/common.py +49 -0
  417. vamos/foundation/problem/registry/families/__init__.py +18 -0
  418. vamos/foundation/problem/registry/families/cec.py +130 -0
  419. vamos/foundation/problem/registry/families/constrained_many.py +241 -0
  420. vamos/foundation/problem/registry/families/dtlz.py +116 -0
  421. vamos/foundation/problem/registry/families/lsmop.py +108 -0
  422. vamos/foundation/problem/registry/families/lz09.py +110 -0
  423. vamos/foundation/problem/registry/families/misc.py +154 -0
  424. vamos/foundation/problem/registry/families/real_world.py +51 -0
  425. vamos/foundation/problem/registry/families/tanabe_ishibuchi_re.py +197 -0
  426. vamos/foundation/problem/registry/families/wfg.py +117 -0
  427. vamos/foundation/problem/registry/families/zapotecas_rwa.py +131 -0
  428. vamos/foundation/problem/registry/families/zcat.py +93 -0
  429. vamos/foundation/problem/registry/families/zdt.py +84 -0
  430. vamos/foundation/problem/registry/selection.py +79 -0
  431. vamos/foundation/problem/registry/specs.py +76 -0
  432. vamos/foundation/problem/registry_info.py +46 -0
  433. vamos/foundation/problem/resolver.py +204 -0
  434. vamos/foundation/problem/tsp.py +111 -0
  435. vamos/foundation/problem/tsplib.py +67 -0
  436. vamos/foundation/problem/types.py +25 -0
  437. vamos/foundation/problem/wfg.py +463 -0
  438. vamos/foundation/problem/zcat/__init__.py +49 -0
  439. vamos/foundation/problem/zcat/core.py +168 -0
  440. vamos/foundation/problem/zcat/fshape.py +422 -0
  441. vamos/foundation/problem/zcat/gz.py +300 -0
  442. vamos/foundation/problem/zcat/instances.py +347 -0
  443. vamos/foundation/problem/zdt1.py +28 -0
  444. vamos/foundation/problem/zdt2.py +29 -0
  445. vamos/foundation/problem/zdt3.py +30 -0
  446. vamos/foundation/problem/zdt4.py +35 -0
  447. vamos/foundation/problem/zdt5.py +67 -0
  448. vamos/foundation/problem/zdt6.py +32 -0
  449. vamos/foundation/quality_indicators/__init__.py +41 -0
  450. vamos/foundation/quality_indicators/hv_zdt.py +70 -0
  451. vamos/foundation/quality_indicators/hypervolume.py +304 -0
  452. vamos/foundation/quality_indicators/moocore_indicators.py +334 -0
  453. vamos/foundation/quality_indicators/pareto.py +53 -0
  454. vamos/foundation/registry.py +109 -0
  455. vamos/foundation/version.py +15 -0
  456. vamos/problems.py +89 -0
  457. vamos/py.typed +0 -0
  458. vamos/resources/__init__.py +79 -0
  459. vamos/resources/reference_fronts/ZDT1.csv +7460 -0
  460. vamos/resources/reference_fronts/ZDT5.csv +31 -0
  461. vamos/resources/reference_fronts/__init__.py +1 -0
  462. vamos/resources/reference_fronts/c1dtlz1.csv +2882 -0
  463. vamos/resources/reference_fronts/c1dtlz3.csv +101 -0
  464. vamos/resources/reference_fronts/c2dtlz2.csv +3274 -0
  465. vamos/resources/reference_fronts/cec2009_uf1.csv +1000 -0
  466. vamos/resources/reference_fronts/cec2009_uf10.csv +5151 -0
  467. vamos/resources/reference_fronts/cec2009_uf2.csv +1000 -0
  468. vamos/resources/reference_fronts/cec2009_uf3.csv +1000 -0
  469. vamos/resources/reference_fronts/cec2009_uf4.csv +1000 -0
  470. vamos/resources/reference_fronts/cec2009_uf5.csv +21 -0
  471. vamos/resources/reference_fronts/cec2009_uf6.csv +1000 -0
  472. vamos/resources/reference_fronts/cec2009_uf7.csv +1000 -0
  473. vamos/resources/reference_fronts/cec2009_uf8.csv +5151 -0
  474. vamos/resources/reference_fronts/cec2009_uf9.csv +5151 -0
  475. vamos/resources/reference_fronts/dc1dtlz1.csv +1492 -0
  476. vamos/resources/reference_fronts/dc1dtlz3.csv +757 -0
  477. vamos/resources/reference_fronts/dc2dtlz1.csv +1650 -0
  478. vamos/resources/reference_fronts/dc2dtlz3.csv +1647 -0
  479. vamos/resources/reference_fronts/dtlz1.csv +4691 -0
  480. vamos/resources/reference_fronts/dtlz2.csv +3334 -0
  481. vamos/resources/reference_fronts/dtlz3.csv +4644 -0
  482. vamos/resources/reference_fronts/dtlz4.csv +3309 -0
  483. vamos/resources/reference_fronts/dtlz5.csv +2799 -0
  484. vamos/resources/reference_fronts/dtlz6.csv +103 -0
  485. vamos/resources/reference_fronts/dtlz7.csv +2531 -0
  486. vamos/resources/reference_fronts/lsmop1.csv +1000 -0
  487. vamos/resources/reference_fronts/lsmop2.csv +1000 -0
  488. vamos/resources/reference_fronts/lsmop3.csv +1000 -0
  489. vamos/resources/reference_fronts/lsmop4.csv +1000 -0
  490. vamos/resources/reference_fronts/lsmop5.csv +1000 -0
  491. vamos/resources/reference_fronts/lsmop6.csv +1000 -0
  492. vamos/resources/reference_fronts/lsmop7.csv +1000 -0
  493. vamos/resources/reference_fronts/lsmop8.csv +1000 -0
  494. vamos/resources/reference_fronts/lsmop9.csv +1000 -0
  495. vamos/resources/reference_fronts/mw1.csv +4446 -0
  496. vamos/resources/reference_fronts/mw2.csv +336 -0
  497. vamos/resources/reference_fronts/mw3.csv +1544 -0
  498. vamos/resources/reference_fronts/mw5.csv +1651 -0
  499. vamos/resources/reference_fronts/mw6.csv +283 -0
  500. vamos/resources/reference_fronts/mw7.csv +1765 -0
  501. vamos/resources/reference_fronts/re21.csv +839 -0
  502. vamos/resources/reference_fronts/re24.csv +1943 -0
  503. vamos/resources/reference_fronts/re31.csv +1309 -0
  504. vamos/resources/reference_fronts/re32.csv +1393 -0
  505. vamos/resources/reference_fronts/re33.csv +1488 -0
  506. vamos/resources/reference_fronts/re34.csv +1127 -0
  507. vamos/resources/reference_fronts/re37.csv +1078 -0
  508. vamos/resources/reference_fronts/re41.csv +1154 -0
  509. vamos/resources/reference_fronts/re42.csv +1036 -0
  510. vamos/resources/reference_fronts/re61.csv +1311 -0
  511. vamos/resources/reference_fronts/re91.csv +1806 -0
  512. vamos/resources/reference_fronts/rwa1.csv +1008 -0
  513. vamos/resources/reference_fronts/rwa10.csv +1493 -0
  514. vamos/resources/reference_fronts/rwa2.csv +1127 -0
  515. vamos/resources/reference_fronts/rwa3.csv +1484 -0
  516. vamos/resources/reference_fronts/rwa4.csv +1196 -0
  517. vamos/resources/reference_fronts/rwa5.csv +998 -0
  518. vamos/resources/reference_fronts/rwa6.csv +1290 -0
  519. vamos/resources/reference_fronts/rwa7.csv +1292 -0
  520. vamos/resources/reference_fronts/rwa8.csv +1350 -0
  521. vamos/resources/reference_fronts/rwa9.csv +1343 -0
  522. vamos/resources/reference_fronts/wfg1.csv +100 -0
  523. vamos/resources/reference_fronts/wfg2.csv +42 -0
  524. vamos/resources/reference_fronts/wfg3.csv +10000 -0
  525. vamos/resources/reference_fronts/wfg4.csv +10000 -0
  526. vamos/resources/reference_fronts/wfg5.csv +10000 -0
  527. vamos/resources/reference_fronts/wfg6.csv +10000 -0
  528. vamos/resources/reference_fronts/wfg7.csv +10000 -0
  529. vamos/resources/reference_fronts/wfg8.csv +10000 -0
  530. vamos/resources/reference_fronts/wfg9.csv +10000 -0
  531. vamos/resources/reference_fronts/zcat1.2d.csv +1000 -0
  532. vamos/resources/reference_fronts/zcat1.3d.csv +1000 -0
  533. vamos/resources/reference_fronts/zcat1.4d.csv +1000 -0
  534. vamos/resources/reference_fronts/zcat1.6d.csv +1000 -0
  535. vamos/resources/reference_fronts/zcat1.csv +1000 -0
  536. vamos/resources/reference_fronts/zcat10.2d.csv +1000 -0
  537. vamos/resources/reference_fronts/zcat10.3d.csv +1000 -0
  538. vamos/resources/reference_fronts/zcat10.4d.csv +1000 -0
  539. vamos/resources/reference_fronts/zcat10.6d.csv +1000 -0
  540. vamos/resources/reference_fronts/zcat10.csv +1000 -0
  541. vamos/resources/reference_fronts/zcat11.2d.csv +1000 -0
  542. vamos/resources/reference_fronts/zcat11.3d.csv +1000 -0
  543. vamos/resources/reference_fronts/zcat11.4d.csv +1000 -0
  544. vamos/resources/reference_fronts/zcat11.6d.csv +1000 -0
  545. vamos/resources/reference_fronts/zcat11.csv +1000 -0
  546. vamos/resources/reference_fronts/zcat12.2d.csv +1000 -0
  547. vamos/resources/reference_fronts/zcat12.3d.csv +1000 -0
  548. vamos/resources/reference_fronts/zcat12.4d.csv +1000 -0
  549. vamos/resources/reference_fronts/zcat12.6d.csv +1000 -0
  550. vamos/resources/reference_fronts/zcat12.csv +1000 -0
  551. vamos/resources/reference_fronts/zcat13.2d.csv +1000 -0
  552. vamos/resources/reference_fronts/zcat13.3d.csv +1000 -0
  553. vamos/resources/reference_fronts/zcat13.4d.csv +1000 -0
  554. vamos/resources/reference_fronts/zcat13.6d.csv +1000 -0
  555. vamos/resources/reference_fronts/zcat13.csv +1000 -0
  556. vamos/resources/reference_fronts/zcat14.2d.csv +1000 -0
  557. vamos/resources/reference_fronts/zcat14.3d.csv +1000 -0
  558. vamos/resources/reference_fronts/zcat14.4d.csv +1000 -0
  559. vamos/resources/reference_fronts/zcat14.6d.csv +1000 -0
  560. vamos/resources/reference_fronts/zcat14.csv +1000 -0
  561. vamos/resources/reference_fronts/zcat15.2d.csv +1000 -0
  562. vamos/resources/reference_fronts/zcat15.3d.csv +1000 -0
  563. vamos/resources/reference_fronts/zcat15.4d.csv +1000 -0
  564. vamos/resources/reference_fronts/zcat15.6d.csv +1000 -0
  565. vamos/resources/reference_fronts/zcat15.csv +1000 -0
  566. vamos/resources/reference_fronts/zcat16.2d.csv +1000 -0
  567. vamos/resources/reference_fronts/zcat16.3d.csv +1000 -0
  568. vamos/resources/reference_fronts/zcat16.4d.csv +1000 -0
  569. vamos/resources/reference_fronts/zcat16.6d.csv +1000 -0
  570. vamos/resources/reference_fronts/zcat16.csv +1000 -0
  571. vamos/resources/reference_fronts/zcat17.2d.csv +1000 -0
  572. vamos/resources/reference_fronts/zcat17.3d.csv +1000 -0
  573. vamos/resources/reference_fronts/zcat17.4d.csv +1000 -0
  574. vamos/resources/reference_fronts/zcat17.6d.csv +1000 -0
  575. vamos/resources/reference_fronts/zcat17.csv +1000 -0
  576. vamos/resources/reference_fronts/zcat18.2d.csv +1000 -0
  577. vamos/resources/reference_fronts/zcat18.3d.csv +1000 -0
  578. vamos/resources/reference_fronts/zcat18.4d.csv +1000 -0
  579. vamos/resources/reference_fronts/zcat18.6d.csv +1000 -0
  580. vamos/resources/reference_fronts/zcat18.csv +1000 -0
  581. vamos/resources/reference_fronts/zcat19.2d.csv +1000 -0
  582. vamos/resources/reference_fronts/zcat19.3d.csv +1000 -0
  583. vamos/resources/reference_fronts/zcat19.4d.csv +1000 -0
  584. vamos/resources/reference_fronts/zcat19.6d.csv +1000 -0
  585. vamos/resources/reference_fronts/zcat19.csv +1000 -0
  586. vamos/resources/reference_fronts/zcat2.2d.csv +1000 -0
  587. vamos/resources/reference_fronts/zcat2.3d.csv +1000 -0
  588. vamos/resources/reference_fronts/zcat2.4d.csv +1000 -0
  589. vamos/resources/reference_fronts/zcat2.6d.csv +1000 -0
  590. vamos/resources/reference_fronts/zcat2.csv +1000 -0
  591. vamos/resources/reference_fronts/zcat20.2d.csv +1000 -0
  592. vamos/resources/reference_fronts/zcat20.3d.csv +1000 -0
  593. vamos/resources/reference_fronts/zcat20.4d.csv +1000 -0
  594. vamos/resources/reference_fronts/zcat20.6d.csv +1000 -0
  595. vamos/resources/reference_fronts/zcat20.csv +1000 -0
  596. vamos/resources/reference_fronts/zcat3.2d.csv +1000 -0
  597. vamos/resources/reference_fronts/zcat3.3d.csv +1000 -0
  598. vamos/resources/reference_fronts/zcat3.4d.csv +1000 -0
  599. vamos/resources/reference_fronts/zcat3.6d.csv +1000 -0
  600. vamos/resources/reference_fronts/zcat3.csv +1000 -0
  601. vamos/resources/reference_fronts/zcat4.2d.csv +1000 -0
  602. vamos/resources/reference_fronts/zcat4.3d.csv +1000 -0
  603. vamos/resources/reference_fronts/zcat4.4d.csv +1000 -0
  604. vamos/resources/reference_fronts/zcat4.6d.csv +1000 -0
  605. vamos/resources/reference_fronts/zcat4.csv +1000 -0
  606. vamos/resources/reference_fronts/zcat5.2d.csv +1000 -0
  607. vamos/resources/reference_fronts/zcat5.3d.csv +1000 -0
  608. vamos/resources/reference_fronts/zcat5.4d.csv +1000 -0
  609. vamos/resources/reference_fronts/zcat5.6d.csv +1000 -0
  610. vamos/resources/reference_fronts/zcat5.csv +1000 -0
  611. vamos/resources/reference_fronts/zcat6.2d.csv +1000 -0
  612. vamos/resources/reference_fronts/zcat6.3d.csv +1000 -0
  613. vamos/resources/reference_fronts/zcat6.4d.csv +1000 -0
  614. vamos/resources/reference_fronts/zcat6.6d.csv +1000 -0
  615. vamos/resources/reference_fronts/zcat6.csv +1000 -0
  616. vamos/resources/reference_fronts/zcat7.2d.csv +1000 -0
  617. vamos/resources/reference_fronts/zcat7.3d.csv +1000 -0
  618. vamos/resources/reference_fronts/zcat7.4d.csv +1000 -0
  619. vamos/resources/reference_fronts/zcat7.6d.csv +1000 -0
  620. vamos/resources/reference_fronts/zcat7.csv +1000 -0
  621. vamos/resources/reference_fronts/zcat8.2d.csv +1000 -0
  622. vamos/resources/reference_fronts/zcat8.3d.csv +1000 -0
  623. vamos/resources/reference_fronts/zcat8.4d.csv +1000 -0
  624. vamos/resources/reference_fronts/zcat8.6d.csv +1000 -0
  625. vamos/resources/reference_fronts/zcat8.csv +1000 -0
  626. vamos/resources/reference_fronts/zcat9.2d.csv +1000 -0
  627. vamos/resources/reference_fronts/zcat9.3d.csv +1000 -0
  628. vamos/resources/reference_fronts/zcat9.4d.csv +1000 -0
  629. vamos/resources/reference_fronts/zcat9.6d.csv +1000 -0
  630. vamos/resources/reference_fronts/zcat9.csv +1000 -0
  631. vamos/resources/reference_fronts/zdt2.csv +7929 -0
  632. vamos/resources/reference_fronts/zdt3.csv +7245 -0
  633. vamos/resources/reference_fronts/zdt4.csv +632 -0
  634. vamos/resources/reference_fronts/zdt6.csv +2990 -0
  635. vamos/resources/tsplib/__init__.py +1 -0
  636. vamos/resources/tsplib/kroA100.tsp +107 -0
  637. vamos/resources/tsplib/kroB100.tsp +107 -0
  638. vamos/resources/tsplib/kroC100.tsp +107 -0
  639. vamos/resources/tsplib/kroD100.tsp +107 -0
  640. vamos/resources/tsplib/kroE100.tsp +107 -0
  641. vamos/resources/weights/W10D_220.dat +220 -0
  642. vamos/resources/weights/W10D_275.dat +275 -0
  643. vamos/resources/weights/W10D_715.dat +715 -0
  644. vamos/resources/weights/W15D_120.dat +120 -0
  645. vamos/resources/weights/W15D_680.dat +680 -0
  646. vamos/resources/weights/W2D_1000.dat +1000 -0
  647. vamos/resources/weights/W2D_300.dat +300 -0
  648. vamos/resources/weights/W2D_400.dat +400 -0
  649. vamos/resources/weights/W2D_500.dat +500 -0
  650. vamos/resources/weights/W2D_600.dat +600 -0
  651. vamos/resources/weights/W2D_800.dat +800 -0
  652. vamos/resources/weights/W3D_100.dat +100 -0
  653. vamos/resources/weights/W3D_1000.dat +1000 -0
  654. vamos/resources/weights/W3D_120.dat +120 -0
  655. vamos/resources/weights/W3D_1200.dat +1200 -0
  656. vamos/resources/weights/W3D_136.dat +136 -0
  657. vamos/resources/weights/W3D_300.dat +300 -0
  658. vamos/resources/weights/W3D_500.dat +500 -0
  659. vamos/resources/weights/W3D_600.dat +600 -0
  660. vamos/resources/weights/W3D_800.dat +800 -0
  661. vamos/resources/weights/W3D_91.dat +91 -0
  662. vamos/resources/weights/W4D_100.dat +201 -0
  663. vamos/resources/weights/W4D_165.dat +165 -0
  664. vamos/resources/weights/W5D_1000.dat +1000 -0
  665. vamos/resources/weights/W5D_1200.dat +1200 -0
  666. vamos/resources/weights/W5D_1500.dat +1500 -0
  667. vamos/resources/weights/W5D_1800.dat +1800 -0
  668. vamos/resources/weights/W5D_2000.dat +2000 -0
  669. vamos/resources/weights/W5D_2500.dat +2500 -0
  670. vamos/resources/weights/W5D_495.dat +495 -0
  671. vamos/resources/weights/W8D_156.dat +156 -0
  672. vamos/resources/weights/zdt1problem_2obj_pop100.csv +100 -0
  673. vamos/run_artifacts.py +31 -0
  674. vamos/selection.py +124 -0
  675. vamos/study_artifacts.py +20 -0
  676. vamos/ux/__init__.py +3 -0
  677. vamos/ux/analysis/__init__.py +5 -0
  678. vamos/ux/analysis/core_objective_reduction.py +244 -0
  679. vamos/ux/analysis/mcdm.py +143 -0
  680. vamos/ux/analysis/results.py +141 -0
  681. vamos/ux/analysis/stats.py +146 -0
  682. vamos/ux/analysis/tuning_viz.py +145 -0
  683. vamos/ux/analytics/__init__.py +3 -0
  684. vamos/ux/analytics/genealogy.py +40 -0
  685. vamos/ux/api.py +72 -0
  686. vamos/ux/mcdm.py +21 -0
  687. vamos/ux/panel/__init__.py +1 -0
  688. vamos/ux/panel/app.py +107 -0
  689. vamos/ux/panel/components/__init__.py +1 -0
  690. vamos/ux/panel/launcher.py +98 -0
  691. vamos/ux/panel/pages/__init__.py +1 -0
  692. vamos/ux/panel/pages/batch.py +150 -0
  693. vamos/ux/panel/pages/experiment.py +216 -0
  694. vamos/ux/panel/pages/problem_builder.py +479 -0
  695. vamos/ux/panel/pages/problem_builder_ai.py +59 -0
  696. vamos/ux/panel/pages/results.py +149 -0
  697. vamos/ux/panel/pages/welcome.py +42 -0
  698. vamos/ux/panel/shell.py +142 -0
  699. vamos/ux/results.py +282 -0
  700. vamos/ux/stats.py +25 -0
  701. vamos/ux/studio/__init__.py +17 -0
  702. vamos/ux/studio/_problem_builder_codegen.py +112 -0
  703. vamos/ux/studio/_problem_builder_preview.py +190 -0
  704. vamos/ux/studio/_problem_builder_security.py +226 -0
  705. vamos/ux/studio/_studio_llm.py +141 -0
  706. vamos/ux/studio/app.py +15 -0
  707. vamos/ux/studio/data.py +143 -0
  708. vamos/ux/studio/dm.py +112 -0
  709. vamos/ux/studio/export.py +51 -0
  710. vamos/ux/studio/problem_builder_backend.py +22 -0
  711. vamos/ux/studio/problem_builder_templates.py +143 -0
  712. vamos/ux/studio/services.py +320 -0
  713. vamos/ux/visualization/__init__.py +135 -0
  714. vamos/ux/visualization/live_viz.py +266 -0
  715. vamos/ux/visualization/plotting.py +134 -0
  716. vamos_contrib/__init__.py +6 -0
  717. vamos_contrib/interop/__init__.py +3 -0
  718. vamos_contrib/interop/pymoo.py +55 -0
  719. vamos_optimization-1.0.0.dist-info/METADATA +528 -0
  720. vamos_optimization-1.0.0.dist-info/RECORD +724 -0
  721. vamos_optimization-1.0.0.dist-info/WHEEL +5 -0
  722. vamos_optimization-1.0.0.dist-info/entry_points.txt +2 -0
  723. vamos_optimization-1.0.0.dist-info/licenses/LICENSE +21 -0
  724. vamos_optimization-1.0.0.dist-info/top_level.txt +2 -0
vamos/__init__.py ADDED
@@ -0,0 +1,99 @@
1
+ """
2
+ VAMOS package facade.
3
+
4
+ Import most features from the dedicated facades:
5
+ - `vamos.api` for core optimization entrypoints.
6
+ - `vamos.algorithms` for algorithm configs and registry helpers.
7
+ - `vamos.problems` for curated benchmark/real-world problem classes.
8
+ - `vamos.ux.api` for analysis/visualization helpers.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ import importlib
14
+
15
+ from vamos.api import (
16
+ CompatibilityReport,
17
+ EnvironmentalSelectionResult,
18
+ IncompleteRunMetadataError,
19
+ LoadLimits,
20
+ OptimizationResult,
21
+ Problem,
22
+ ReplayReport,
23
+ RunManifest,
24
+ StoredRun,
25
+ Study,
26
+ StudyLoadLimits,
27
+ StudyPlanReport,
28
+ StudyReport,
29
+ StudyResult,
30
+ StudySpec,
31
+ StudySummary,
32
+ VerificationReport,
33
+ available_problem_names,
34
+ configure_logging,
35
+ create_study,
36
+ load_result,
37
+ load_run,
38
+ load_study,
39
+ make_problem,
40
+ make_problem_selection,
41
+ optimize,
42
+ plan_study,
43
+ reproduce,
44
+ run_self_check,
45
+ save_result,
46
+ select_survivors,
47
+ verify_run,
48
+ )
49
+ from vamos.foundation.version import get_version as _get_version
50
+
51
+ __all__ = [
52
+ "__version__",
53
+ # Optimization
54
+ "optimize",
55
+ "select_survivors",
56
+ "EnvironmentalSelectionResult",
57
+ "Problem",
58
+ "make_problem",
59
+ "OptimizationResult",
60
+ "StudyResult",
61
+ "configure_logging",
62
+ "available_problem_names",
63
+ "make_problem_selection",
64
+ "run_self_check",
65
+ "save_result",
66
+ "load_run",
67
+ "load_result",
68
+ "StoredRun",
69
+ "RunManifest",
70
+ "LoadLimits",
71
+ "IncompleteRunMetadataError",
72
+ "CompatibilityReport",
73
+ "ReplayReport",
74
+ "VerificationReport",
75
+ "verify_run",
76
+ "reproduce",
77
+ "StudySpec",
78
+ "Study",
79
+ "StudyLoadLimits",
80
+ "StudyPlanReport",
81
+ "StudyReport",
82
+ "StudySummary",
83
+ "create_study",
84
+ "load_study",
85
+ "plan_study",
86
+ "problems",
87
+ ]
88
+
89
+
90
+ def __getattr__(name: str) -> object:
91
+ if name == "__version__":
92
+ return _get_version()
93
+ if name == "problems":
94
+ return importlib.import_module(".problems", __name__)
95
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
96
+
97
+
98
+ def __dir__() -> list[str]:
99
+ return sorted(set(__all__) | set(globals()))
vamos/algorithms.py ADDED
@@ -0,0 +1,145 @@
1
+ """
2
+ Algorithm facade: configuration builders and registry helpers.
3
+
4
+ Use this module for algorithm config objects and discovery helpers.
5
+ For running optimizations, use `vamos.api` or `vamos.optimize`.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from typing import TYPE_CHECKING
11
+
12
+ from vamos.engine.algorithm.config import (
13
+ AGEMOEAConfig,
14
+ GenericAlgorithmConfig,
15
+ IBEAConfig,
16
+ MOEADConfig,
17
+ NSGAIIConfig,
18
+ NSGAIIIConfig,
19
+ ProbabilityExpression,
20
+ ProbabilityValue,
21
+ RVEAConfig,
22
+ SMPSOConfig,
23
+ SMSEMOAConfig,
24
+ SPEA2Config,
25
+ )
26
+ from vamos.engine.variation.helpers import (
27
+ BINARY_CROSSOVER,
28
+ BINARY_MUTATION,
29
+ INT_CROSSOVER,
30
+ INT_MUTATION,
31
+ MIXED_CROSSOVER,
32
+ MIXED_MUTATION,
33
+ PERM_CROSSOVER,
34
+ PERM_MUTATION,
35
+ REAL_CROSSOVER,
36
+ REAL_MUTATION,
37
+ )
38
+ from vamos.foundation.encoding import normalize_encoding
39
+
40
+ if TYPE_CHECKING:
41
+ from vamos.engine.algorithm.registry import AlgorithmBuilder
42
+
43
+
44
+ def available_algorithms() -> tuple[str, ...]:
45
+ """Return the canonical algorithm identifiers supported by the engine."""
46
+ from vamos.engine.algorithm.registry import get_algorithms_registry
47
+
48
+ return tuple(sorted(get_algorithms_registry().keys()))
49
+
50
+
51
+ def discover_algorithm_plugins(*, force: bool = False) -> tuple[str, ...]:
52
+ """Load algorithm builders exposed via the ``vamos.algorithms`` entry point group."""
53
+ from vamos.engine.algorithm.registry import discover_algorithm_plugins as _discover_algorithm_plugins
54
+
55
+ return _discover_algorithm_plugins(force=force)
56
+
57
+
58
+ def available_crossover_methods(encoding: str = "real") -> tuple[str, ...]:
59
+ """
60
+ Return the available crossover method identifiers for a given encoding.
61
+
62
+ Parameters
63
+ ----------
64
+ encoding : str, default ``"real"``
65
+ Variable encoding type.
66
+
67
+ Returns
68
+ -------
69
+ tuple[str, ...]
70
+ Supported crossover method identifiers for the encoding.
71
+ """
72
+ try:
73
+ normalized = normalize_encoding(encoding)
74
+ except ValueError:
75
+ return ()
76
+ if normalized == "real":
77
+ return tuple(sorted(REAL_CROSSOVER.keys()))
78
+ if normalized == "binary":
79
+ return tuple(sorted(BINARY_CROSSOVER.keys()))
80
+ if normalized == "permutation":
81
+ return tuple(sorted(PERM_CROSSOVER.keys()))
82
+ if normalized == "integer":
83
+ return tuple(sorted(INT_CROSSOVER.keys()))
84
+ if normalized == "mixed":
85
+ return tuple(sorted(MIXED_CROSSOVER.keys()))
86
+ return ()
87
+
88
+
89
+ def available_mutation_methods(encoding: str = "real") -> tuple[str, ...]:
90
+ """
91
+ Return the available mutation method identifiers for a given encoding.
92
+
93
+ Parameters
94
+ ----------
95
+ encoding : str, default ``"real"``
96
+ Variable encoding type.
97
+
98
+ Returns
99
+ -------
100
+ tuple[str, ...]
101
+ Supported mutation method identifiers for the encoding.
102
+ """
103
+ try:
104
+ normalized = normalize_encoding(encoding)
105
+ except ValueError:
106
+ return ()
107
+ if normalized == "real":
108
+ return tuple(sorted(REAL_MUTATION.keys()))
109
+ if normalized == "binary":
110
+ return tuple(sorted(BINARY_MUTATION.keys()))
111
+ if normalized == "permutation":
112
+ return tuple(sorted(PERM_MUTATION.keys()))
113
+ if normalized == "integer":
114
+ return tuple(sorted(INT_MUTATION.keys()))
115
+ if normalized == "mixed":
116
+ return tuple(sorted(MIXED_MUTATION.keys()))
117
+ return ()
118
+
119
+
120
+ def resolve_algorithm(name: str) -> AlgorithmBuilder:
121
+ """Return the registered builder for a named algorithm."""
122
+ from vamos.engine.algorithm.registry import resolve_algorithm as _resolve_algorithm
123
+
124
+ return _resolve_algorithm(name)
125
+
126
+
127
+ __all__ = [
128
+ "NSGAIIConfig",
129
+ "NSGAIIIConfig",
130
+ "MOEADConfig",
131
+ "SMSEMOAConfig",
132
+ "SMPSOConfig",
133
+ "SPEA2Config",
134
+ "IBEAConfig",
135
+ "AGEMOEAConfig",
136
+ "RVEAConfig",
137
+ "GenericAlgorithmConfig",
138
+ "ProbabilityExpression",
139
+ "ProbabilityValue",
140
+ "available_algorithms",
141
+ "discover_algorithm_plugins",
142
+ "available_crossover_methods",
143
+ "available_mutation_methods",
144
+ "resolve_algorithm",
145
+ ]
vamos/api.py ADDED
@@ -0,0 +1,106 @@
1
+ """
2
+ User-facing API surface for VAMOS.
3
+
4
+ This module exposes the small set of stable entrypoints most users need:
5
+ - Programmatic optimization via `optimize`.
6
+ - Problem selection helpers.
7
+ - Basic diagnostics helpers.
8
+
9
+ For lower-level control, import from the layered packages:
10
+ `vamos.foundation.*`, `vamos.engine.*`, `vamos.experiment.*`, `vamos.ux.*`.
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ import logging
16
+
17
+ from vamos.experiment.diagnostics.self_check import run_self_check
18
+ from vamos.experiment.optimization_result import OptimizationResult, StudyResult
19
+
20
+ # Unified API - the primary entry point
21
+ from vamos.experiment.unified import optimize
22
+ from vamos.foundation.logging import configure_vamos_logging
23
+ from vamos.foundation.problem.base import Problem
24
+ from vamos.foundation.problem.builder import make_problem
25
+ from vamos.foundation.problem.registry import (
26
+ available_problem_names,
27
+ make_problem_selection,
28
+ )
29
+ from vamos.run_artifacts import (
30
+ CompatibilityReport,
31
+ IncompleteRunMetadataError,
32
+ LoadLimits,
33
+ ReplayReport,
34
+ RunManifest,
35
+ StoredRun,
36
+ VerificationReport,
37
+ load_result,
38
+ load_run,
39
+ reproduce,
40
+ save_result,
41
+ verify_run,
42
+ )
43
+ from vamos.selection import EnvironmentalSelectionResult, select_survivors
44
+ from vamos.study_artifacts import (
45
+ Study,
46
+ StudyLoadLimits,
47
+ StudyPlanReport,
48
+ StudyReport,
49
+ StudySpec,
50
+ StudySummary,
51
+ create_study,
52
+ load_study,
53
+ plan_study,
54
+ )
55
+
56
+
57
+ def configure_logging(*, level: int = logging.INFO) -> None:
58
+ """Configure a minimal console logger for VAMOS.
59
+
60
+ Attaches a ``StreamHandler`` to the ``"vamos"`` logger if no handlers
61
+ are already present. This is intentionally opt-in: library code
62
+ must never call ``logging.basicConfig()``.
63
+
64
+ Parameters
65
+ ----------
66
+ level : int, default ``logging.INFO``
67
+ Logging level for the ``"vamos"`` logger.
68
+ """
69
+ configure_vamos_logging(level=level)
70
+
71
+
72
+ __all__ = [
73
+ # Primary API
74
+ "optimize",
75
+ "select_survivors",
76
+ "EnvironmentalSelectionResult",
77
+ "Problem",
78
+ "make_problem",
79
+ "OptimizationResult",
80
+ "StudyResult",
81
+ "available_problem_names",
82
+ "make_problem_selection",
83
+ "run_self_check",
84
+ "configure_logging",
85
+ "save_result",
86
+ "load_run",
87
+ "load_result",
88
+ "StoredRun",
89
+ "RunManifest",
90
+ "LoadLimits",
91
+ "IncompleteRunMetadataError",
92
+ "CompatibilityReport",
93
+ "ReplayReport",
94
+ "VerificationReport",
95
+ "verify_run",
96
+ "reproduce",
97
+ "StudySpec",
98
+ "Study",
99
+ "StudyLoadLimits",
100
+ "StudyPlanReport",
101
+ "StudyReport",
102
+ "StudySummary",
103
+ "create_study",
104
+ "load_study",
105
+ "plan_study",
106
+ ]
@@ -0,0 +1,27 @@
1
+ from __future__ import annotations
2
+
3
+ from .apply import apply_plan
4
+ from .catalog import build_catalog
5
+ from .cli import run_assist
6
+ from .doctor import collect_doctor_report
7
+ from .explain import summarize_plan
8
+ from .go import go
9
+ from .plan import create_plan
10
+ from .providers import MockPlanProvider, OpenAIPlanProvider, PlanProvider, QuestionsMockProvider
11
+ from .run import run_plan, select_config_path
12
+
13
+ __all__ = [
14
+ "apply_plan",
15
+ "build_catalog",
16
+ "collect_doctor_report",
17
+ "create_plan",
18
+ "go",
19
+ "MockPlanProvider",
20
+ "OpenAIPlanProvider",
21
+ "PlanProvider",
22
+ "QuestionsMockProvider",
23
+ "run_assist",
24
+ "run_plan",
25
+ "select_config_path",
26
+ "summarize_plan",
27
+ ]
vamos/assist/apply.py ADDED
@@ -0,0 +1,92 @@
1
+ from __future__ import annotations
2
+
3
+ import json
4
+ import shutil
5
+ from functools import lru_cache
6
+ from pathlib import Path
7
+
8
+ from vamos.engine.config.spec import validate_experiment_spec
9
+ from vamos.experiment.cli.args import build_parser, build_pre_parser
10
+ from vamos.experiment.cli.loaders import load_spec_defaults
11
+ from vamos.experiment.cli.spec_args import parser_spec_keys
12
+ from vamos.foundation.core.experiment_config import ExperimentConfig
13
+
14
+ _REQUIRED_PLAN_FILES: tuple[str, ...] = ("config.json", "plan.json")
15
+ _OPTIONAL_PLAN_FILES: tuple[str, ...] = ("prompt.txt", "catalog.json")
16
+
17
+ _README_CONTENT = """# Run VAMOS
18
+
19
+ This directory was generated by `vamos assist apply`.
20
+
21
+ ## How To Run
22
+
23
+ ```bash
24
+ vamos --config config.json
25
+ python -m vamos.experiment.cli.main --config config.json
26
+ ```
27
+
28
+ Results/output location is controlled by fields in `config.json` (for example `defaults.output_root`).
29
+ """
30
+
31
+
32
+ @lru_cache(maxsize=1)
33
+ def _spec_allowed_overrides() -> tuple[str, ...]:
34
+ default_config = ExperimentConfig()
35
+ pre_parser = build_pre_parser()
36
+ spec_defaults = load_spec_defaults(None)
37
+ parser = build_parser(default_config=default_config, pre_parser=pre_parser, spec_defaults=spec_defaults)
38
+ return tuple(sorted(parser_spec_keys(parser)))
39
+
40
+
41
+ def _read_json(path: Path) -> object:
42
+ try:
43
+ return json.loads(path.read_text(encoding="utf-8"))
44
+ except Exception as exc:
45
+ raise ValueError(f"Invalid JSON file: {path.name}") from exc
46
+
47
+
48
+ def _validate_plan_dir(plan_dir: Path) -> None:
49
+ if not plan_dir.exists() or not plan_dir.is_dir():
50
+ raise ValueError(f"Plan directory not found: {plan_dir}")
51
+ for name in _REQUIRED_PLAN_FILES:
52
+ if not (plan_dir / name).is_file():
53
+ raise ValueError(f"Missing required plan file: {name}")
54
+
55
+
56
+ def _validate_config(config_data: object) -> None:
57
+ try:
58
+ validate_experiment_spec(config_data, allowed_overrides=_spec_allowed_overrides())
59
+ except Exception as exc:
60
+ raise ValueError(f"Invalid plan config: {exc}") from exc
61
+
62
+
63
+ def _prepare_project_dir(project_dir: Path, *, overwrite: bool) -> None:
64
+ if project_dir.exists():
65
+ if not overwrite:
66
+ raise ValueError(f"Project directory already exists: {project_dir}")
67
+ shutil.rmtree(project_dir)
68
+ project_dir.mkdir(parents=True, exist_ok=False)
69
+
70
+
71
+ def _copy_plan_files(plan_dir: Path, project_dir: Path) -> None:
72
+ for name in (*_REQUIRED_PLAN_FILES, *_OPTIONAL_PLAN_FILES):
73
+ src = plan_dir / name
74
+ if src.is_file():
75
+ shutil.copy2(src, project_dir / name)
76
+
77
+
78
+ def apply_plan(plan_dir: Path, out_dir: Path | None = None, overwrite: bool = False) -> Path:
79
+ resolved_plan_dir = Path(plan_dir)
80
+ _validate_plan_dir(resolved_plan_dir)
81
+
82
+ config_data = _read_json(resolved_plan_dir / "config.json")
83
+ _validate_config(config_data)
84
+
85
+ project_dir = Path(out_dir) if out_dir is not None else resolved_plan_dir / "project"
86
+ _prepare_project_dir(project_dir, overwrite=overwrite)
87
+ _copy_plan_files(resolved_plan_dir, project_dir)
88
+ (project_dir / "README_run.md").write_text(_README_CONTENT, encoding="utf-8")
89
+ return project_dir
90
+
91
+
92
+ __all__ = ["apply_plan"]
@@ -0,0 +1,19 @@
1
+ from __future__ import annotations
2
+
3
+ from vamos.algorithms import available_algorithms, available_crossover_methods, available_mutation_methods
4
+ from vamos.experiment.cli.quickstart import available_templates
5
+ from vamos.foundation.kernel.registry import KERNELS
6
+
7
+
8
+ def build_catalog(problem_type: str = "real") -> dict[str, list[str]]:
9
+ """Build a deterministic catalog of available optimization building blocks."""
10
+ return {
11
+ "algorithms": sorted(available_algorithms()),
12
+ "kernels": sorted(KERNELS.keys()),
13
+ "crossover_methods": sorted(available_crossover_methods(problem_type)),
14
+ "mutation_methods": sorted(available_mutation_methods(problem_type)),
15
+ "templates": sorted(available_templates()),
16
+ }
17
+
18
+
19
+ __all__ = ["build_catalog"]