agentevolve-optimizer 0.5.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.
- agent_evolve/__init__.py +722 -0
- agent_evolve/agentic.py +2800 -0
- agent_evolve/api.py +767 -0
- agent_evolve/application/__init__.py +1580 -0
- agent_evolve/application/action_allocation.py +744 -0
- agent_evolve/application/action_allocation_frame.py +347 -0
- agent_evolve/application/action_allocation_frame_commit.py +185 -0
- agent_evolve/application/action_allocation_frame_commit_v3.py +184 -0
- agent_evolve/application/action_allocation_frame_v3.py +338 -0
- agent_evolve/application/action_archive_value.py +497 -0
- agent_evolve/application/action_evidence_consistency.py +455 -0
- agent_evolve/application/action_forecast_partitioning.py +1471 -0
- agent_evolve/application/action_metric_projection.py +211 -0
- agent_evolve/application/action_role_value.py +680 -0
- agent_evolve/application/action_score_authorities.py +363 -0
- agent_evolve/application/action_structural_signature.py +116 -0
- agent_evolve/application/action_target_realization.py +402 -0
- agent_evolve/application/agentic_evolution.py +7734 -0
- agent_evolve/application/agentic_portfolio_residual_expert.py +835 -0
- agent_evolve/application/anchor_residual_identification.py +463 -0
- agent_evolve/application/archive_conditioned_action_target.py +208 -0
- agent_evolve/application/artifact_journal.py +246 -0
- agent_evolve/application/artifact_replay.py +347 -0
- agent_evolve/application/budgeted_optimizer.py +1828 -0
- agent_evolve/application/calibrated_campaign.py +485 -0
- agent_evolve/application/calibrated_current_prefix_forecast_opportunity.py +322 -0
- agent_evolve/application/calibrated_positive_gain_opportunity.py +1581 -0
- agent_evolve/application/campaign_capacity_recourse.py +254 -0
- agent_evolve/application/campaign_contextual_outcomes.py +119 -0
- agent_evolve/application/campaign_diagnostic_blocks.py +930 -0
- agent_evolve/application/campaign_evidence_registry.py +262 -0
- agent_evolve/application/campaign_execution.py +2537 -0
- agent_evolve/application/campaign_generation_audit.py +942 -0
- agent_evolve/application/campaign_learning.py +1812 -0
- agent_evolve/application/campaign_learning_runtime.py +1977 -0
- agent_evolve/application/campaign_search_phase.py +227 -0
- agent_evolve/application/campaign_selector_context_extension.py +220 -0
- agent_evolve/application/campaign_variation_envelope.py +649 -0
- agent_evolve/application/campaign_variation_trace.py +451 -0
- agent_evolve/application/candidate_archive_consequence.py +128 -0
- agent_evolve/application/causal_opportunity_portfolio_gate.py +385 -0
- agent_evolve/application/composite_outcome_updater.py +145 -0
- agent_evolve/application/composition_portfolio_selection.py +363 -0
- agent_evolve/application/concurrent_stage.py +144 -0
- agent_evolve/application/contextual_action_allocation.py +181 -0
- agent_evolve/application/contextual_campaign_outcomes.py +267 -0
- agent_evolve/application/contextual_campaign_planning.py +1366 -0
- agent_evolve/application/contextual_delayed_credit.py +651 -0
- agent_evolve/application/contextual_search_controller.py +2374 -0
- agent_evolve/application/current_prefix_forecast_opportunity.py +714 -0
- agent_evolve/application/decision_metric_projection.py +112 -0
- agent_evolve/application/derived_action_semantics.py +129 -0
- agent_evolve/application/detailed_evaluation.py +449 -0
- agent_evolve/application/earned_lineage.py +1011 -0
- agent_evolve/application/effective_choice_audit.py +484 -0
- agent_evolve/application/empirical_consequence_calibration.py +908 -0
- agent_evolve/application/evaluation_accounting.py +325 -0
- agent_evolve/application/evaluation_cache.py +199 -0
- agent_evolve/application/evaluation_escrow.py +547 -0
- agent_evolve/application/evaluation_recourse.py +253 -0
- agent_evolve/application/event_recorder.py +151 -0
- agent_evolve/application/evolution_campaign.py +1840 -0
- agent_evolve/application/executable_hypothesis.py +323 -0
- agent_evolve/application/factorial_branch_pilot.py +772 -0
- agent_evolve/application/finite_acquisition_capacity_recourse.py +672 -0
- agent_evolve/application/finite_acquisition_residual_expert.py +373 -0
- agent_evolve/application/finite_acquisition_variation_envelope.py +802 -0
- agent_evolve/application/finite_action_hypothesis_semantics.py +446 -0
- agent_evolve/application/finite_action_selection.py +188 -0
- agent_evolve/application/finite_action_set.py +306 -0
- agent_evolve/application/finite_action_transition.py +537 -0
- agent_evolve/application/finite_variation_eligibility.py +296 -0
- agent_evolve/application/forecast_geometry_portfolio.py +799 -0
- agent_evolve/application/forecast_opportunity_shadow_calibration.py +316 -0
- agent_evolve/application/front_proximity_admission.py +311 -0
- agent_evolve/application/front_proximity_parent_basis.py +458 -0
- agent_evolve/application/frozen_hurdle_score.py +659 -0
- agent_evolve/application/g3_causal_screen.py +2257 -0
- agent_evolve/application/g3_causal_validation.py +1046 -0
- agent_evolve/application/g3_postseal_curation.py +818 -0
- agent_evolve/application/gated_agentic_generator.py +205 -0
- agent_evolve/application/generation_feedback.py +293 -0
- agent_evolve/application/generative_proposal_journal.py +185 -0
- agent_evolve/application/geometry_conditional_elasticity.py +453 -0
- agent_evolve/application/global_wave_action_allocation.py +1151 -0
- agent_evolve/application/head_mass_conditional_seat.py +268 -0
- agent_evolve/application/identifiable_reflection_evidence.py +1147 -0
- agent_evolve/application/identifiable_reflection_learning.py +395 -0
- agent_evolve/application/identifiable_reflection_request.py +364 -0
- agent_evolve/application/in_memory_residual_archive.py +341 -0
- agent_evolve/application/insight_memory.py +1804 -0
- agent_evolve/application/live_runtime_manifest.py +758 -0
- agent_evolve/application/llm_task_queue.py +769 -0
- agent_evolve/application/matched_finite_action_block.py +409 -0
- agent_evolve/application/materialized_action_broker.py +2328 -0
- agent_evolve/application/materialized_action_constraints.py +83 -0
- agent_evolve/application/materialized_variation.py +211 -0
- agent_evolve/application/multi_option_evolution.py +1536 -0
- agent_evolve/application/outcome_adaptive_action_racing.py +2827 -0
- agent_evolve/application/outcome_adaptive_residual_campaign_runtime.py +580 -0
- agent_evolve/application/outcome_adaptive_residual_portfolio_evolution.py +3671 -0
- agent_evolve/application/outcome_conditioned_portfolio_selection.py +1374 -0
- agent_evolve/application/outcome_relation.py +193 -0
- agent_evolve/application/paired_allocation_comparison.py +241 -0
- agent_evolve/application/paired_block_schedule.py +127 -0
- agent_evolve/application/parent_measurement.py +226 -0
- agent_evolve/application/pareto_archive.py +811 -0
- agent_evolve/application/portfolio_campaign_runtime.py +4739 -0
- agent_evolve/application/portfolio_evolution.py +2950 -0
- agent_evolve/application/portfolio_hypothesis_observations.py +814 -0
- agent_evolve/application/portfolio_memory_attribution.py +581 -0
- agent_evolve/application/portfolio_memory_dose.py +788 -0
- agent_evolve/application/portfolio_memory_matched_control.py +938 -0
- agent_evolve/application/portfolio_memory_transfer.py +297 -0
- agent_evolve/application/portfolio_optimization_memory.py +363 -0
- agent_evolve/application/portfolio_outcome_feedback.py +1613 -0
- agent_evolve/application/portfolio_projection.py +335 -0
- agent_evolve/application/portfolio_recombination.py +2032 -0
- agent_evolve/application/post_evolution_reflection.py +834 -0
- agent_evolve/application/postcommit_rank_authority.py +245 -0
- agent_evolve/application/precommitted_portfolio_racing.py +2762 -0
- agent_evolve/application/prequential_archive_opportunity_calibration.py +1154 -0
- agent_evolve/application/prequential_residual_exploration.py +343 -0
- agent_evolve/application/prequential_score_portfolio.py +954 -0
- agent_evolve/application/projections.py +292 -0
- agent_evolve/application/protected_action_committee.py +1027 -0
- agent_evolve/application/protected_branch_pilot.py +376 -0
- agent_evolve/application/protected_current_prefix_forecast_opportunity.py +552 -0
- agent_evolve/application/provider_replay.py +910 -0
- agent_evolve/application/rank_balanced_causal_pilot.py +1372 -0
- agent_evolve/application/recombination_residual_expert.py +403 -0
- agent_evolve/application/reflection_workflow.py +571 -0
- agent_evolve/application/region_conditional_credit.py +911 -0
- agent_evolve/application/residual_campaign_runtime.py +531 -0
- agent_evolve/application/residual_headroom_campaign_runtime.py +459 -0
- agent_evolve/application/residual_headroom_ledger.py +1544 -0
- agent_evolve/application/residual_learning_transaction.py +396 -0
- agent_evolve/application/residual_portfolio_evolution.py +1228 -0
- agent_evolve/application/residual_reachability.py +749 -0
- agent_evolve/application/residual_stage_credit.py +499 -0
- agent_evolve/application/same_prefix_paired_audit.py +1580 -0
- agent_evolve/application/semantic_coverage_score_portfolio.py +838 -0
- agent_evolve/application/sequential_lineage_allocation.py +1017 -0
- agent_evolve/application/sequential_market_replay.py +1395 -0
- agent_evolve/application/sequential_residual_campaign_runtime.py +305 -0
- agent_evolve/application/sequential_residual_portfolio_evolution.py +940 -0
- agent_evolve/application/single_score_action_allocation.py +299 -0
- agent_evolve/application/source_exposure_allocation.py +906 -0
- agent_evolve/application/staged_memory.py +210 -0
- agent_evolve/application/stratified_cold_start_allocation.py +732 -0
- agent_evolve/application/support_guarded_hurdle_score.py +549 -0
- agent_evolve/application/target_conditioned_action_forecast.py +595 -0
- agent_evolve/application/target_conditioned_campaign.py +566 -0
- agent_evolve/application/treatment_assignment.py +201 -0
- agent_evolve/application/trusted_objective_evidence.py +217 -0
- agent_evolve/application/two_stage_action_evolution.py +1131 -0
- agent_evolve/application/v8lite_allocation_policy.py +1083 -0
- agent_evolve/application/v9_candidate_policy.py +1303 -0
- agent_evolve/bootstrap.py +108 -0
- agent_evolve/campaign_presets.py +517 -0
- agent_evolve/campaign_profiles.py +452 -0
- agent_evolve/campaign_variation_topology.py +288 -0
- agent_evolve/campaign_workload.py +950 -0
- agent_evolve/cli.py +797 -0
- agent_evolve/contract.py +241 -0
- agent_evolve/core/__init__.py +91 -0
- agent_evolve/core/action_semantics.py +411 -0
- agent_evolve/core/authored.py +105 -0
- agent_evolve/core/formatting.py +286 -0
- agent_evolve/core/optimization_semantics.py +324 -0
- agent_evolve/core/problem.py +167 -0
- agent_evolve/core/results.py +323 -0
- agent_evolve/core/stats.py +70 -0
- agent_evolve/core/telemetry.py +100 -0
- agent_evolve/domain/__init__.py +89 -0
- agent_evolve/domain/artifact.py +162 -0
- agent_evolve/domain/durable_text.py +68 -0
- agent_evolve/domain/event.py +1454 -0
- agent_evolve/domain/finite_action_set.py +426 -0
- agent_evolve/domain/finite_variation.py +526 -0
- agent_evolve/domain/generative_emission.py +559 -0
- agent_evolve/domain/ids.py +163 -0
- agent_evolve/domain/inline_text.py +106 -0
- agent_evolve/domain/insight.py +27 -0
- agent_evolve/domain/lineage.py +737 -0
- agent_evolve/domain/llm_task_queue.py +960 -0
- agent_evolve/domain/outcome.py +96 -0
- agent_evolve/domain/patch.py +854 -0
- agent_evolve/domain/typed_json.py +542 -0
- agent_evolve/domain/variation_space.py +158 -0
- agent_evolve/driver.py +1014 -0
- agent_evolve/harness/__init__.py +29 -0
- agent_evolve/harness/base.py +242 -0
- agent_evolve/harness/directives.py +163 -0
- agent_evolve/harness/generative_seal.py +479 -0
- agent_evolve/harness/registry.py +41 -0
- agent_evolve/infrastructure/__init__.py +39 -0
- agent_evolve/infrastructure/artifacts/__init__.py +6 -0
- agent_evolve/infrastructure/artifacts/_verification.py +67 -0
- agent_evolve/infrastructure/artifacts/filesystem.py +343 -0
- agent_evolve/infrastructure/artifacts/in_memory.py +73 -0
- agent_evolve/infrastructure/asyncio_runtime.py +109 -0
- agent_evolve/infrastructure/authored_runtime.py +188 -0
- agent_evolve/infrastructure/authored_worker.py +171 -0
- agent_evolve/infrastructure/clock.py +53 -0
- agent_evolve/infrastructure/events/__init__.py +6 -0
- agent_evolve/infrastructure/events/_validation.py +89 -0
- agent_evolve/infrastructure/events/in_memory.py +56 -0
- agent_evolve/infrastructure/events/jsonl.py +193 -0
- agent_evolve/infrastructure/exception_provenance.py +215 -0
- agent_evolve/infrastructure/ids.py +118 -0
- agent_evolve/infrastructure/lineage_codec.py +1836 -0
- agent_evolve/infrastructure/outcome_adaptive_phase_journal.py +170 -0
- agent_evolve/infrastructure/residual_headroom_journal.py +221 -0
- agent_evolve/infrastructure/resource_lease.py +370 -0
- agent_evolve/infrastructure/sanitization/__init__.py +8 -0
- agent_evolve/infrastructure/sanitization/strict_json.py +484 -0
- agent_evolve/infrastructure/sequential_phase_journal.py +170 -0
- agent_evolve/infrastructure/stream_liveness.py +383 -0
- agent_evolve/infrastructure/subprocess_boundary.py +136 -0
- agent_evolve/integrations/__init__.py +1 -0
- agent_evolve/integrations/botorch/__init__.py +28 -0
- agent_evolve/integrations/botorch/finite_qlognehvi.py +190 -0
- agent_evolve/integrations/botorch/finite_qlognehvi_batch.py +155 -0
- agent_evolve/integrations/botorch/finite_qlognehvi_batch_identity.py +20 -0
- agent_evolve/integrations/botorch/finite_qlognehvi_batch_worker.py +55 -0
- agent_evolve/integrations/botorch/finite_qlognehvi_identity.py +22 -0
- agent_evolve/integrations/botorch/finite_qlognehvi_worker.py +55 -0
- agent_evolve/integrations/botorch/subprocess_qlognehvi.py +261 -0
- agent_evolve/integrations/botorch/subprocess_qlognehvi_batch.py +273 -0
- agent_evolve/integrations/completion.py +242 -0
- agent_evolve/integrations/pydantic_ai/__init__.py +441 -0
- agent_evolve/integrations/pydantic_ai/action_forecast.py +1068 -0
- agent_evolve/integrations/pydantic_ai/agentic_generator.py +2308 -0
- agent_evolve/integrations/pydantic_ai/async_generator.py +1604 -0
- agent_evolve/integrations/pydantic_ai/boundary_codec.py +1526 -0
- agent_evolve/integrations/pydantic_ai/calibrated_portfolio_campaign.py +756 -0
- agent_evolve/integrations/pydantic_ai/calibrated_portfolio_selection.py +7537 -0
- agent_evolve/integrations/pydantic_ai/campaign_acquisition.py +609 -0
- agent_evolve/integrations/pydantic_ai/execution_binding.py +138 -0
- agent_evolve/integrations/pydantic_ai/forecast_geometry_action_committee.py +217 -0
- agent_evolve/integrations/pydantic_ai/harness.py +159 -0
- agent_evolve/integrations/pydantic_ai/heterogeneous_model_execution.py +306 -0
- agent_evolve/integrations/pydantic_ai/hierarchical_residual_adaptive_semantic_view.py +179 -0
- agent_evolve/integrations/pydantic_ai/json_schema_dialect.py +108 -0
- agent_evolve/integrations/pydantic_ai/materialized_hierarchical_residual_expert.py +952 -0
- agent_evolve/integrations/pydantic_ai/materialized_portfolio_judge.py +520 -0
- agent_evolve/integrations/pydantic_ai/model_execution_profile.py +659 -0
- agent_evolve/integrations/pydantic_ai/outbound_request_manifest.py +1170 -0
- agent_evolve/integrations/pydantic_ai/portable_residual_consequence_features.py +575 -0
- agent_evolve/integrations/pydantic_ai/portfolio_selection.py +422 -0
- agent_evolve/integrations/pydantic_ai/progress_aware_openrouter.py +416 -0
- agent_evolve/integrations/pydantic_ai/provider_attempt_join.py +1523 -0
- agent_evolve/integrations/pydantic_ai/provider_free_calibrated_runner.py +607 -0
- agent_evolve/integrations/pydantic_ai/queued_runner.py +2634 -0
- agent_evolve/integrations/pydantic_ai/reconciled_residual_reachability.py +1417 -0
- agent_evolve/integrations/pydantic_ai/residual_forecast_geometry.py +445 -0
- agent_evolve/integrations/pydantic_ai/residual_reachability.py +674 -0
- agent_evolve/integrations/pydantic_ai/residual_semantic_cells.py +239 -0
- agent_evolve/integrations/pydantic_ai/sealed_output_replay.py +1068 -0
- agent_evolve/integrations/pydantic_ai/semantic_coverage_residual_portfolio.py +770 -0
- agent_evolve/integrations/pydantic_ai/semantic_decision_replay.py +383 -0
- agent_evolve/integrations/pydantic_ai/support_adaptive_residual_portfolio.py +135 -0
- agent_evolve/integrations/pydantic_ai/trusted_residual_prompt_context.py +143 -0
- agent_evolve/integrations/pydantic_ai/validated_openrouter_model.py +107 -0
- agent_evolve/integrations/pymoo_adapter.py +242 -0
- agent_evolve/policies/__init__.py +17 -0
- agent_evolve/policies/check.py +469 -0
- agent_evolve/policies/emit_scaffold.py +451 -0
- agent_evolve/policies/feedback/__init__.py +37 -0
- agent_evolve/policies/feedback/held_out_asn.py +1325 -0
- agent_evolve/policies/genetic.py +607 -0
- agent_evolve/policies/llm_backoff.py +183 -0
- agent_evolve/policies/llm_chooser.py +226 -0
- agent_evolve/policies/llm_generator.py +1760 -0
- agent_evolve/policies/llm_init.py +267 -0
- agent_evolve/policies/llm_operator.py +109 -0
- agent_evolve/policies/llm_prior.py +194 -0
- agent_evolve/policies/llm_surrogate.py +334 -0
- agent_evolve/policies/measurement_evidence.py +704 -0
- agent_evolve/policies/memory/__init__.py +223 -0
- agent_evolve/policies/memory/balanced_subset_blocks.py +707 -0
- agent_evolve/policies/memory/compatibility_matching.py +593 -0
- agent_evolve/policies/memory/global_falsification.py +1841 -0
- agent_evolve/policies/memory/prompt_shape.py +503 -0
- agent_evolve/policies/memory/randomized_subset.py +714 -0
- agent_evolve/policies/memory/staged_causal.py +1270 -0
- agent_evolve/policies/memory/treatment_compliance.py +759 -0
- agent_evolve/policies/objective_resolution/__init__.py +17 -0
- agent_evolve/policies/objective_resolution/fixed_grid.py +364 -0
- agent_evolve/policies/operator_portfolio.py +407 -0
- agent_evolve/policies/reguidance.py +1133 -0
- agent_evolve/policies/reward/__init__.py +83 -0
- agent_evolve/policies/reward/affine_candidate_consequence.py +156 -0
- agent_evolve/policies/reward/affine_candidate_consequence_3d.py +159 -0
- agent_evolve/policies/reward/affine_hypervolume.py +490 -0
- agent_evolve/policies/reward/affine_hypervolume_3d.py +567 -0
- agent_evolve/policies/reward/contextual_marginal_utility.py +318 -0
- agent_evolve/policies/reward/frozen_archive.py +360 -0
- agent_evolve/policies/reward/frozen_wave_archive.py +368 -0
- agent_evolve/policies/search_state.py +208 -0
- agent_evolve/policies/selection/__init__.py +345 -0
- agent_evolve/policies/selection/acquisition_certified_slate.py +684 -0
- agent_evolve/policies/selection/affine_frontier_context.py +330 -0
- agent_evolve/policies/selection/affine_frontier_target.py +473 -0
- agent_evolve/policies/selection/archive_elite.py +1346 -0
- agent_evolve/policies/selection/calibrated_portfolio_binding.py +640 -0
- agent_evolve/policies/selection/calibrated_slate.py +1394 -0
- agent_evolve/policies/selection/calibrated_slate_codec.py +579 -0
- agent_evolve/policies/selection/common_candidate_pool.py +685 -0
- agent_evolve/policies/selection/diagnostic_sampling.py +319 -0
- agent_evolve/policies/selection/disjoint_pairs.py +479 -0
- agent_evolve/policies/selection/elite_explorer.py +719 -0
- agent_evolve/policies/selection/finite_action.py +187 -0
- agent_evolve/policies/selection/finite_option_prompt_projection.py +377 -0
- agent_evolve/policies/selection/finite_palette_evidence.py +247 -0
- agent_evolve/policies/selection/forecast_calibration.py +922 -0
- agent_evolve/policies/selection/frontier_probe_slate.py +814 -0
- agent_evolve/policies/selection/frozen_archive_pairs.py +762 -0
- agent_evolve/policies/selection/full_support_slate.py +91 -0
- agent_evolve/policies/selection/meaningful_direction.py +240 -0
- agent_evolve/policies/selection/memory_dose_feasibility.py +259 -0
- agent_evolve/policies/selection/model_anchored_slate.py +826 -0
- agent_evolve/policies/selection/phenotype_recourse.py +979 -0
- agent_evolve/policies/selection/proposal_support.py +368 -0
- agent_evolve/policies/selection/random_portfolio.py +254 -0
- agent_evolve/policies/selection/regret_bounded_slate.py +1084 -0
- agent_evolve/policies/selection/residual_frontier.py +463 -0
- agent_evolve/policies/selection/residual_frontier_target.py +605 -0
- agent_evolve/policies/selection/structural_posterior_slate.py +1571 -0
- agent_evolve/policies/selection/target_conditioned_allocator.py +648 -0
- agent_evolve/policies/selection/target_conditioned_features.py +812 -0
- agent_evolve/policies/selection/target_conditioned_prequential.py +1527 -0
- agent_evolve/policies/selection/task_keyed_palette.py +906 -0
- agent_evolve/policies/semantics.py +147 -0
- agent_evolve/policies/structure.py +362 -0
- agent_evolve/policies/structured_output_budget.py +62 -0
- agent_evolve/policies/surrogate.py +696 -0
- agent_evolve/policies/variation/__init__.py +1 -0
- agent_evolve/policies/variation/compositional_finite_catalog.py +426 -0
- agent_evolve/policies/variation/crossover_inheritance.py +575 -0
- agent_evolve/policies/variation/disjoint_recombination.py +611 -0
- agent_evolve/policies/variation/exact_composition_capacity.py +214 -0
- agent_evolve/policies/variation/exact_parent_crossover.py +950 -0
- agent_evolve/policies/variation/multiscale_restart_catalog.py +372 -0
- agent_evolve/policies/variation/source_union_finite_catalog.py +403 -0
- agent_evolve/policies/variation/typed_patch.py +1981 -0
- agent_evolve/policies/weighted_prior.py +394 -0
- agent_evolve/ports/__init__.py +383 -0
- agent_evolve/ports/action_allocation.py +733 -0
- agent_evolve/ports/action_allocation_frame.py +1153 -0
- agent_evolve/ports/action_allocation_frame_commit.py +294 -0
- agent_evolve/ports/action_allocation_frame_commit_v3.py +432 -0
- agent_evolve/ports/action_allocation_frame_v3.py +995 -0
- agent_evolve/ports/action_forecast.py +1568 -0
- agent_evolve/ports/action_metric_projection.py +165 -0
- agent_evolve/ports/agentic_generator.py +1561 -0
- agent_evolve/ports/archive_context.py +136 -0
- agent_evolve/ports/artifact_sanitizer.py +44 -0
- agent_evolve/ports/artifact_store.py +225 -0
- agent_evolve/ports/clock.py +13 -0
- agent_evolve/ports/contextual_search_allocation.py +827 -0
- agent_evolve/ports/decision_metric_projection.py +258 -0
- agent_evolve/ports/event_store.py +55 -0
- agent_evolve/ports/executable_hypothesis.py +557 -0
- agent_evolve/ports/finite_acquisition.py +377 -0
- agent_evolve/ports/finite_acquisition_batch.py +296 -0
- agent_evolve/ports/finite_acquisition_batch_json.py +164 -0
- agent_evolve/ports/finite_acquisition_json.py +247 -0
- agent_evolve/ports/finite_acquisition_space.py +168 -0
- agent_evolve/ports/finite_action_selection.py +348 -0
- agent_evolve/ports/finite_action_set.py +256 -0
- agent_evolve/ports/frontier_target.py +396 -0
- agent_evolve/ports/generation_failure.py +43 -0
- agent_evolve/ports/hard_feasibility.py +233 -0
- agent_evolve/ports/id_factory.py +34 -0
- agent_evolve/ports/llm_task_queue.py +93 -0
- agent_evolve/ports/objective_resolution.py +419 -0
- agent_evolve/ports/paired_allocation_comparison.py +401 -0
- agent_evolve/ports/paired_block_schedule.py +475 -0
- agent_evolve/ports/parent_measurement.py +336 -0
- agent_evolve/ports/portfolio_memory_dose.py +643 -0
- agent_evolve/ports/portfolio_selection.py +3169 -0
- agent_evolve/ports/postcommit_rank_authority.py +467 -0
- agent_evolve/ports/presented_action_evidence.py +794 -0
- agent_evolve/ports/resource_lease.py +162 -0
- agent_evolve/ports/structured_generator.py +734 -0
- agent_evolve/ports/structured_output_budget.py +120 -0
- agent_evolve/ports/subprocess_boundary.py +138 -0
- agent_evolve/ports/treatment_assignment.py +466 -0
- agent_evolve/ports/variation_catalog.py +76 -0
- agent_evolve/ports/variation_source.py +226 -0
- agent_evolve/proposal_mode.py +157 -0
- agent_evolve/proposers/__init__.py +10 -0
- agent_evolve/proposers/random_proposer.py +188 -0
- agent_evolve/provider_accounting.py +163 -0
- agent_evolve/py.typed +0 -0
- agent_evolve/reference_method.py +1570 -0
- agent_evolve/session/__init__.py +11 -0
- agent_evolve/session/authorship.py +864 -0
- agent_evolve/session/evaluate.py +236 -0
- agent_evolve/session/fidelity.py +237 -0
- agent_evolve/session/genetic_loop.py +742 -0
- agent_evolve/session/loop.py +803 -0
- agent_evolve/session/screening.py +671 -0
- agent_evolve/settings.py +376 -0
- agent_evolve/workload_kit.py +368 -0
- agent_evolve/workload_prompt.py +398 -0
- agentevolve_optimizer-0.5.0.dist-info/METADATA +599 -0
- agentevolve_optimizer-0.5.0.dist-info/RECORD +414 -0
- agentevolve_optimizer-0.5.0.dist-info/WHEEL +5 -0
- agentevolve_optimizer-0.5.0.dist-info/entry_points.txt +2 -0
- agentevolve_optimizer-0.5.0.dist-info/licenses/LICENSE +21 -0
- agentevolve_optimizer-0.5.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"""Pinned OpenRouter stream-item compatibility boundary.
|
|
2
|
+
|
|
3
|
+
The OpenAI SDK's streamed decoder can yield an arbitrary JSON primitive when
|
|
4
|
+
an OpenAI-compatible endpoint sends a syntactically valid SSE ``data`` field
|
|
5
|
+
whose JSON value is not a chat-completion object. Pydantic-AI 1.107.1 assumes
|
|
6
|
+
that every decoded value is a ``ChatCompletionChunk`` before validating its
|
|
7
|
+
runtime type. This adapter rejects that narrow malformed wire topology
|
|
8
|
+
without broadening retry semantics to unrelated ``AttributeError`` or
|
|
9
|
+
validation failures.
|
|
10
|
+
|
|
11
|
+
The underlying SDK stream remains owned and closed by Pydantic-AI's
|
|
12
|
+
``request_stream`` context manager. The wrapper is single-pass and validates
|
|
13
|
+
each decoded SDK item immediately before exposing it to Pydantic-AI.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
from __future__ import annotations
|
|
17
|
+
|
|
18
|
+
from collections.abc import AsyncIterable, AsyncIterator
|
|
19
|
+
from typing import cast
|
|
20
|
+
|
|
21
|
+
from openai import AsyncStream
|
|
22
|
+
from openai.types.chat import ChatCompletionChunk
|
|
23
|
+
from pydantic_ai.models import ModelRequestParameters
|
|
24
|
+
from pydantic_ai.models.openai import (
|
|
25
|
+
OpenAIChatModelSettings,
|
|
26
|
+
OpenAIStreamedResponse,
|
|
27
|
+
)
|
|
28
|
+
from pydantic_ai.models.openrouter import OpenRouterModel
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class InvalidOpenRouterStreamItemError(RuntimeError):
|
|
32
|
+
"""A payload-free signal for a non-chat-completion decoded SSE item."""
|
|
33
|
+
|
|
34
|
+
__slots__ = ()
|
|
35
|
+
|
|
36
|
+
def __init__(self) -> None:
|
|
37
|
+
# The decoded item, its rendering, and its provider payload must never
|
|
38
|
+
# become exception state or scientific telemetry.
|
|
39
|
+
super().__init__("OpenRouter stream yielded an invalid item")
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class _ValidatedChatCompletionChunkStream(AsyncIterator[ChatCompletionChunk]):
|
|
43
|
+
"""Single-pass view that validates every decoded SDK stream item."""
|
|
44
|
+
|
|
45
|
+
__slots__ = (
|
|
46
|
+
"_closed",
|
|
47
|
+
"_source",
|
|
48
|
+
"_source_iterator",
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
def __init__(self, source: AsyncStream[ChatCompletionChunk]) -> None:
|
|
52
|
+
# Keep the original AsyncStream: Pydantic-AI's streamed response closes
|
|
53
|
+
# ``PeekableAsyncStream.source`` through its async ``close`` method.
|
|
54
|
+
self._source = source
|
|
55
|
+
self._source_iterator = aiter(cast(AsyncIterable[object], source))
|
|
56
|
+
self._closed = False
|
|
57
|
+
|
|
58
|
+
def __aiter__(self) -> AsyncIterator[ChatCompletionChunk]:
|
|
59
|
+
return self
|
|
60
|
+
|
|
61
|
+
async def __anext__(self) -> ChatCompletionChunk:
|
|
62
|
+
item = await anext(self._source_iterator)
|
|
63
|
+
if type(item) is not ChatCompletionChunk:
|
|
64
|
+
raise InvalidOpenRouterStreamItemError()
|
|
65
|
+
return cast(ChatCompletionChunk, item)
|
|
66
|
+
|
|
67
|
+
async def close(self) -> None:
|
|
68
|
+
"""Delegate Pydantic-AI's close contract to the owned SDK stream."""
|
|
69
|
+
|
|
70
|
+
if self._closed:
|
|
71
|
+
return
|
|
72
|
+
self._closed = True
|
|
73
|
+
await self._source.close()
|
|
74
|
+
|
|
75
|
+
async def aclose(self) -> None:
|
|
76
|
+
"""Support generic async-iterator cleanup without changing ownership."""
|
|
77
|
+
|
|
78
|
+
await self.close()
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class ValidatedOpenRouterModel(OpenRouterModel):
|
|
82
|
+
"""OpenRouterModel with a narrow decoded stream-item boundary.
|
|
83
|
+
|
|
84
|
+
The override is intentionally isolated because ``_process_streamed_response``
|
|
85
|
+
is a private Pydantic-AI compatibility seam. ``pydantic-ai==1.107.1`` is
|
|
86
|
+
pinned by this project; conformance tests must fail loudly if that seam
|
|
87
|
+
changes on a future dependency upgrade.
|
|
88
|
+
"""
|
|
89
|
+
|
|
90
|
+
async def _process_streamed_response(
|
|
91
|
+
self,
|
|
92
|
+
response: AsyncStream[ChatCompletionChunk],
|
|
93
|
+
model_request_parameters: ModelRequestParameters,
|
|
94
|
+
model_settings: OpenAIChatModelSettings | None = None,
|
|
95
|
+
) -> OpenAIStreamedResponse:
|
|
96
|
+
validated = _ValidatedChatCompletionChunkStream(response)
|
|
97
|
+
return await super()._process_streamed_response(
|
|
98
|
+
cast(AsyncStream[ChatCompletionChunk], validated),
|
|
99
|
+
model_request_parameters,
|
|
100
|
+
model_settings,
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
__all__ = [
|
|
105
|
+
"InvalidOpenRouterStreamItemError",
|
|
106
|
+
"ValidatedOpenRouterModel",
|
|
107
|
+
]
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"""Use a pymoo problem as an ``agent_evolve`` problem: ``from_pymoo(p)``.
|
|
2
|
+
|
|
3
|
+
pymoo and this package disagree about what a candidate is. pymoo evaluates
|
|
4
|
+
real-valued vectors inside box bounds; this package searches typed
|
|
5
|
+
configurations whose every axis declares a *finite* domain, because the genetic
|
|
6
|
+
operators (:mod:`agent_evolve.policies.genetic`) read their allowed values from
|
|
7
|
+
the candidate schema and refuse to invent any. The adapter reconciles the two
|
|
8
|
+
by quantizing each continuous axis onto a declared grid.
|
|
9
|
+
|
|
10
|
+
The quantization rule
|
|
11
|
+
---------------------
|
|
12
|
+
Decision variable ``i`` with box bounds ``[xl_i, xu_i]`` becomes a required
|
|
13
|
+
field ``x{i}`` on a generated pydantic model, typed::
|
|
14
|
+
|
|
15
|
+
Literal[g_0, ..., g_{k-1}] k = grid_points (default 16)
|
|
16
|
+
g_j = xl_i + j * (xu_i - xl_i) / (k - 1)
|
|
17
|
+
|
|
18
|
+
that is, ``k`` evenly spaced values *including both endpoints*, deduplicated
|
|
19
|
+
(a variable with ``xl_i == xu_i`` collapses to its single legal value, which
|
|
20
|
+
``locus_domain`` reads as a one-value domain since ``const`` became readable on
|
|
21
|
+
2026-08-19). The
|
|
22
|
+
``Literal`` grid serializes to a JSON-schema ``enum``, which is exactly what
|
|
23
|
+
``locus_domain`` reads -- so every variable is a mutable locus with a visible
|
|
24
|
+
domain, and the uninformed random proposer draws only legal vectors. Grid
|
|
25
|
+
values are exact ``linspace`` floats; Python's ``repr`` round-trips them
|
|
26
|
+
through JSON without drift, so schema, validation and evaluation all see the
|
|
27
|
+
same numbers. The resolution cost is honest and stated: the adapter searches
|
|
28
|
+
the ``k**n_var`` lattice, not the continuum -- raise ``grid_points`` to refine.
|
|
29
|
+
|
|
30
|
+
``genetic._number_domain`` now projects a doubly bounded ``number`` field onto
|
|
31
|
+
the same 16-point rule, and this adapter deliberately does *not* delegate to it:
|
|
32
|
+
that projection rounds each point through ``%.10g`` so a value renders
|
|
33
|
+
identically in a prompt, a card and a comparison, while ``linspace`` keeps the
|
|
34
|
+
full binary float. The two grids therefore differ in their last digits, and
|
|
35
|
+
these values are the adapter's declared enum -- the schema a swapped run
|
|
36
|
+
validates against and the acceptance test measures. One shared rule is not worth
|
|
37
|
+
silently moving every pymoo grid point.
|
|
38
|
+
|
|
39
|
+
The rest of the mapping
|
|
40
|
+
-----------------------
|
|
41
|
+
* ``objectives`` -- pymoo always minimizes, so the ``n_obj`` outputs of
|
|
42
|
+
``_evaluate`` become ``ObjectiveSpec("f0", "min") .. ObjectiveSpec(f"f{n-1}",
|
|
43
|
+
"min")``.
|
|
44
|
+
* ``seeds()`` -- the single midpoint configuration: for each variable, the
|
|
45
|
+
grid value nearest ``(xl_i + xu_i) / 2`` (exact ties resolve to the lower
|
|
46
|
+
grid value, deterministically).
|
|
47
|
+
* ``materialize`` -- config -> the ordered tuple ``(x0, ..., x{n-1})``, which
|
|
48
|
+
is the vector pymoo measures and a stable cache key.
|
|
49
|
+
* ``evaluate`` -- one call to the pymoo problem's own ``evaluate`` (which
|
|
50
|
+
dispatches to its ``_evaluate``). Constrained problems are honored: a
|
|
51
|
+
candidate violating the pymoo convention (``G <= 0``, ``H == 0``) raises
|
|
52
|
+
``ValueError`` naming the total violation, which is the contract's word for
|
|
53
|
+
"infeasible in a way only measurement could reveal".
|
|
54
|
+
|
|
55
|
+
The adapter never imports pymoo. It reads the four attributes every pymoo
|
|
56
|
+
``Problem`` carries (``n_var``, ``n_obj``, ``xl``, ``xu``) and calls
|
|
57
|
+
``evaluate``, so any object with that surface works and the module imports
|
|
58
|
+
cleanly where pymoo is absent.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
from __future__ import annotations
|
|
62
|
+
|
|
63
|
+
from typing import Any, Literal, Mapping, Sequence
|
|
64
|
+
|
|
65
|
+
import numpy as np
|
|
66
|
+
from pydantic import Field, create_model
|
|
67
|
+
|
|
68
|
+
from agent_evolve.contract import Config, ObjectiveSpec, ValidationOutcome
|
|
69
|
+
|
|
70
|
+
__all__ = ["from_pymoo", "PymooProblemAdapter"]
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _box_bounds(pymoo_problem: Any) -> tuple[np.ndarray, np.ndarray, int]:
|
|
74
|
+
"""Read and normalize ``(xl, xu, n_var)``, explaining every refusal."""
|
|
75
|
+
missing = [name for name in ("n_var", "n_obj", "xl", "xu")
|
|
76
|
+
if getattr(pymoo_problem, name, None) is None]
|
|
77
|
+
if missing:
|
|
78
|
+
raise TypeError(
|
|
79
|
+
f"{type(pymoo_problem).__name__} lacks {', '.join(missing)}. "
|
|
80
|
+
"from_pymoo needs a box-bounded pymoo Problem: n_var, n_obj and "
|
|
81
|
+
"finite xl/xu bounds (pass xl=/xu= to the pymoo Problem constructor)."
|
|
82
|
+
)
|
|
83
|
+
if getattr(pymoo_problem, "vars", None) is not None:
|
|
84
|
+
raise TypeError(
|
|
85
|
+
"this pymoo problem declares mixed/typed variables via 'vars'; "
|
|
86
|
+
"from_pymoo supports only box-bounded real vectors (xl/xu). "
|
|
87
|
+
"Wrap it as a plain Problem, or express it directly as an "
|
|
88
|
+
"agent_evolve Problem, whose candidates are typed already."
|
|
89
|
+
)
|
|
90
|
+
n_var = int(pymoo_problem.n_var)
|
|
91
|
+
xl = np.broadcast_to(np.asarray(pymoo_problem.xl, dtype=float), (n_var,))
|
|
92
|
+
xu = np.broadcast_to(np.asarray(pymoo_problem.xu, dtype=float), (n_var,))
|
|
93
|
+
bad = [i for i in range(n_var)
|
|
94
|
+
if not (np.isfinite(xl[i]) and np.isfinite(xu[i]) and xl[i] <= xu[i])]
|
|
95
|
+
if bad:
|
|
96
|
+
raise ValueError(
|
|
97
|
+
f"variables {bad} have no finite ordered bounds; a Literal grid "
|
|
98
|
+
"needs finite xl <= xu for every variable."
|
|
99
|
+
)
|
|
100
|
+
return xl, xu, n_var
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
class PymooProblemAdapter:
|
|
104
|
+
"""A pymoo problem presented through the five-obligation contract.
|
|
105
|
+
|
|
106
|
+
Built by :func:`from_pymoo`; see the module docstring for the mapping and
|
|
107
|
+
the quantization rule.
|
|
108
|
+
"""
|
|
109
|
+
|
|
110
|
+
def __init__(self, pymoo_problem: Any, *, grid_points: int = 16) -> None:
|
|
111
|
+
if not isinstance(grid_points, int) or isinstance(grid_points, bool) \
|
|
112
|
+
or grid_points < 2:
|
|
113
|
+
raise ValueError(
|
|
114
|
+
f"grid_points must be an integer >= 2, got {grid_points!r}: "
|
|
115
|
+
"one point per axis is not a search space, it is a constant."
|
|
116
|
+
)
|
|
117
|
+
self._pymoo = pymoo_problem
|
|
118
|
+
self.grid_points = grid_points
|
|
119
|
+
xl, xu, n_var = _box_bounds(pymoo_problem)
|
|
120
|
+
self._n_var = n_var
|
|
121
|
+
self._n_obj = int(pymoo_problem.n_obj)
|
|
122
|
+
|
|
123
|
+
# The documented rule: k evenly spaced values, endpoints included,
|
|
124
|
+
# exact linspace floats, deduplicated in order.
|
|
125
|
+
self._grids: tuple[tuple[float, ...], ...] = tuple(
|
|
126
|
+
tuple(dict.fromkeys(float(v)
|
|
127
|
+
for v in np.linspace(xl[i], xu[i], grid_points)))
|
|
128
|
+
for i in range(n_var)
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
self.candidate_model = create_model(
|
|
132
|
+
f"Pymoo{type(pymoo_problem).__name__}Candidate",
|
|
133
|
+
**{
|
|
134
|
+
self._field(i): (
|
|
135
|
+
Literal[grid], # tuple subscript == one Literal per value
|
|
136
|
+
Field(...,
|
|
137
|
+
description=f"decision variable {i}, quantized to "
|
|
138
|
+
f"{len(grid)} grid values in "
|
|
139
|
+
f"[{xl[i]:g}, {xu[i]:g}]"),
|
|
140
|
+
)
|
|
141
|
+
for i, grid in enumerate(self._grids)
|
|
142
|
+
},
|
|
143
|
+
)
|
|
144
|
+
self.objectives: Sequence[ObjectiveSpec] = tuple(
|
|
145
|
+
ObjectiveSpec(f"f{j}", "min") for j in range(self._n_obj)
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
@staticmethod
|
|
149
|
+
def _field(i: int) -> str:
|
|
150
|
+
return f"x{i}"
|
|
151
|
+
|
|
152
|
+
# -- where to start ----------------------------------------------------
|
|
153
|
+
def seeds(self) -> Sequence[Config]:
|
|
154
|
+
"""The midpoint configuration, snapped to the grid.
|
|
155
|
+
|
|
156
|
+
For each variable the grid value nearest ``(xl + xu) / 2`` under
|
|
157
|
+
float arithmetic; an exact float tie resolves to the lower value via
|
|
158
|
+
``argmin``'s first-hit rule. Either way the seed is deterministic.
|
|
159
|
+
"""
|
|
160
|
+
seed: dict[str, float] = {}
|
|
161
|
+
for i, grid in enumerate(self._grids):
|
|
162
|
+
arr = np.asarray(grid)
|
|
163
|
+
midpoint = (arr[0] + arr[-1]) / 2.0
|
|
164
|
+
seed[self._field(i)] = float(arr[int(np.argmin(np.abs(arr - midpoint)))])
|
|
165
|
+
return (seed,)
|
|
166
|
+
|
|
167
|
+
# -- cheap rejection that explains itself ------------------------------
|
|
168
|
+
def validate(self, config: Config) -> ValidationOutcome:
|
|
169
|
+
for i, grid in enumerate(self._grids):
|
|
170
|
+
name = self._field(i)
|
|
171
|
+
if name not in config:
|
|
172
|
+
return ValidationOutcome(
|
|
173
|
+
False, "structural",
|
|
174
|
+
f"missing field '{name}'; supply all of "
|
|
175
|
+
f"x0..x{self._n_var - 1}.")
|
|
176
|
+
value = config[name]
|
|
177
|
+
if isinstance(value, bool) or not isinstance(value, (int, float)):
|
|
178
|
+
return ValidationOutcome(
|
|
179
|
+
False, "structural",
|
|
180
|
+
f"'{name}' must be a number from its declared grid, got "
|
|
181
|
+
f"{value!r}.")
|
|
182
|
+
if float(value) not in grid:
|
|
183
|
+
nearest = min(grid, key=lambda g: abs(g - float(value)))
|
|
184
|
+
return ValidationOutcome(
|
|
185
|
+
False, "structural",
|
|
186
|
+
f"'{name}'={value!r} is not on the declared grid; the "
|
|
187
|
+
f"nearest allowed value is {nearest!r} (grid spans "
|
|
188
|
+
f"[{grid[0]!r}, {grid[-1]!r}] in {len(grid)} steps).")
|
|
189
|
+
return ValidationOutcome(True)
|
|
190
|
+
|
|
191
|
+
# -- candidate -> the artifact that gets measured ----------------------
|
|
192
|
+
def materialize(self, config: Config) -> tuple[float, ...]:
|
|
193
|
+
return tuple(float(config[self._field(i)]) for i in range(self._n_var))
|
|
194
|
+
|
|
195
|
+
# -- measure it --------------------------------------------------------
|
|
196
|
+
def evaluate(self, artifact: Any) -> Mapping[str, float]:
|
|
197
|
+
x = np.asarray(artifact, dtype=float)
|
|
198
|
+
wants = ["F"]
|
|
199
|
+
has_constraints = getattr(self._pymoo, "has_constraints", None)
|
|
200
|
+
constrained = bool(has_constraints()) if callable(has_constraints) else False
|
|
201
|
+
if constrained:
|
|
202
|
+
wants += ["G", "H"]
|
|
203
|
+
out = self._pymoo.evaluate(x, return_values_of=wants)
|
|
204
|
+
values = dict(zip(wants, out if isinstance(out, (list, tuple)) else [out]))
|
|
205
|
+
if constrained:
|
|
206
|
+
g = np.atleast_1d(np.asarray(values.get("G"), dtype=float)).ravel() \
|
|
207
|
+
if values.get("G") is not None else np.zeros(0)
|
|
208
|
+
h = np.atleast_1d(np.asarray(values.get("H"), dtype=float)).ravel() \
|
|
209
|
+
if values.get("H") is not None else np.zeros(0)
|
|
210
|
+
violation = float(np.clip(g, 0.0, None).sum() + np.abs(h).sum())
|
|
211
|
+
if violation > 0.0:
|
|
212
|
+
raise ValueError(
|
|
213
|
+
f"infeasible under the pymoo constraints: total violation "
|
|
214
|
+
f"{violation:.6g} (G must be <= 0, H must be == 0). Move "
|
|
215
|
+
"toward the feasible region.")
|
|
216
|
+
f = np.asarray(values["F"], dtype=float).ravel()
|
|
217
|
+
if f.size != self._n_obj:
|
|
218
|
+
raise ValueError(
|
|
219
|
+
f"pymoo evaluate returned {f.size} objective values, but the "
|
|
220
|
+
f"problem declares n_obj={self._n_obj}.")
|
|
221
|
+
return {f"f{j}": float(f[j]) for j in range(self._n_obj)}
|
|
222
|
+
|
|
223
|
+
# -- optional: one honest sentence for a model-driven proposer ---------
|
|
224
|
+
def search_space_description(self) -> str:
|
|
225
|
+
return (
|
|
226
|
+
f"{type(self._pymoo).__name__} (pymoo): minimize "
|
|
227
|
+
f"{self._n_obj} objectives f0..f{self._n_obj - 1} over "
|
|
228
|
+
f"{self._n_var} decision variables x0..x{self._n_var - 1}, each "
|
|
229
|
+
f"restricted to its declared grid of at most {self.grid_points} "
|
|
230
|
+
"evenly spaced values between its bounds."
|
|
231
|
+
)
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
def from_pymoo(pymoo_problem: Any, *, grid_points: int = 16) -> PymooProblemAdapter:
|
|
235
|
+
"""Present *pymoo_problem* as a five-obligation ``agent_evolve`` problem.
|
|
236
|
+
|
|
237
|
+
``optimize(from_pymoo(p), budget=..., proposer="random")`` is the whole
|
|
238
|
+
swap; see the module docstring for the quantization rule and the mapping.
|
|
239
|
+
*grid_points* sets the per-variable resolution (evenly spaced, endpoints
|
|
240
|
+
included, default 16).
|
|
241
|
+
"""
|
|
242
|
+
return PymooProblemAdapter(pymoo_problem, grid_points=grid_points)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""Replaceable scientific policies for the explicit AgentEvolve workflow."""
|
|
2
|
+
|
|
3
|
+
from agent_evolve.policies.objective_resolution import (
|
|
4
|
+
FIXED_GRID_OBJECTIVE_RESOLUTION_POLICY_ID,
|
|
5
|
+
FIXED_GRID_OBJECTIVE_RESOLUTION_POLICY_VERSION,
|
|
6
|
+
FixedGridMetricSpec,
|
|
7
|
+
FixedGridObjectiveResolution,
|
|
8
|
+
FixedGridRoundingLaw,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
__all__ = [
|
|
12
|
+
"FIXED_GRID_OBJECTIVE_RESOLUTION_POLICY_ID",
|
|
13
|
+
"FIXED_GRID_OBJECTIVE_RESOLUTION_POLICY_VERSION",
|
|
14
|
+
"FixedGridMetricSpec",
|
|
15
|
+
"FixedGridObjectiveResolution",
|
|
16
|
+
"FixedGridRoundingLaw",
|
|
17
|
+
]
|