Skip to content

Adapt Pygad

adapt_pygad — mvp.adapt_pygad

Cluster: ML & Optimisation | Type: component | MCP Tools: 29

Overview

adapt_pygad provides genetic algorithm optimisation via PyGAD, evolving candidate solutions using configurable fitness functions, population sizes, and mutation strategies. The 29-operation MCP sub-package adds session tracking, presets, population snapshots, convergence diagnostics, replay, sklearn hyperparameter search, and a bounded backend-native PyGAD facade with capability discovery, validation, execution, and artifact lookup.

When to use:

  • Hyperparameter search via genetic algorithms
  • Evolutionary optimisation over built-in or custom fitness functions
  • Population-based training with convergence monitoring

Example:

from mvp.adapt_pygad import AdaptPyGADBlock, GeneticInput

block = AdaptPyGADBlock(name="ga")
result = block.infer(GeneticInput(fn_name="sphere", num_genes=4, num_generations=50))
# result.ok → True; result.value → GeneticOutput with best_solution and best_fitness

Works well with: adapt_sklearn, adapt_optimisation, align_evals

Launch Readiness Caveat

adapt_pygad is functional as an optimisation engine, but its value to first-time non-technical users depends on recipes and examples that translate a real task into the terms a genetic algorithm needs: objective, bounds, fitness metric, stopping rule, and expected output. For launch, present it through concrete workflows such as "tune a churn model", "search parameter settings", or "compare candidate configurations" rather than asking users to design a GA setup from scratch.

For vibe-coder onboarding, pair the component with:

  • A copy-paste run_ga_ml example using a small CSV and a familiar metric such as accuracy or F1
  • A plain-English explanation of what best_fitness, best_solution, and generations mean
  • A saved preset example so users can rerun a known-good configuration
  • A short note that PyGAD maximises fitness, while many optimisation problems are framed as minimisation and may need negated objective values
  • The native_capability_info and native_describe tools before advanced use, so agents can see installed dependencies, supported native actions, resource limits, callback policy, and unsupported PyGAD features without guessing

Public API

AdaptPyGADBlock(AIBlock[GeneticInput, GeneticOutput, None])

Genetic algorithm optimisation via PyGAD.

Field Type Default
name str 'adapt_pygad'
resource_bounds ResourceBounds \| None None
usage ResourceUsage field(default_factory=ResourceUsage)
agentic_planner object \| None None

Methods:

infer(data: GeneticInput) -> Result[GeneticOutput]

GeneticInput(BaseModel)

Input to AdaptPyGADBlock.

Field Type Default
op Literal['evolve', 'solve', 'run', 'info', 'recommend_config', 'list_patterns'] 'evolve'
fn_name str 'sphere'
num_genes int 4
num_generations int 50
sol_per_pop int 10
gene_min float -5.0
gene_max float 5.0
objective_type str 'builtin'

GeneticOutput(BaseModel)

Output from AdaptPyGADBlock.

Field Type Default
op str 'evolve'
best_solution list[float] Field(default_factory=list)
best_fitness float 0.0
generations_completed int 0
fn_name str ''
metadata dict[str, Any] Field(default_factory=dict)
degraded bool False
degradation_reason str ''
iter_limit_hit bool False
restart_disagreement bool False
constraint_violation_count int 0

AdaptPyGADMCPBlock(AIBlock[MCPPyGADInput, MCPPyGADOutput, dict])

Field Type Default
name str 'adapt_pygad_mcp'
db_path Optional[str] None

Methods:

infer(inp: MCPPyGADInput) -> Result[MCPPyGADOutput]

MCPPyGADInput(BaseModel)

Field Type Default
op Literal['run_ga', 'run_ga_custom', 'list_functions', 'explain_result', 'ga_status', 'session_record', 'session_query', 'session_summarize', 'session_replay', 'preset_store', 'preset_retrieve', 'preset_evaluate', 'preset_run', 'population_snapshot', 'population_query', 'convergence_diagnose', 'pareto_store', 'heuristic_store', 'heuristic_retrieve', 'ga_search', 'ga_info', 'run_ga_ml', 'recommend_config', 'list_patterns', 'native_capability_info', 'native_describe', 'native_validate_ga_spec', 'native_run_ga', 'native_artifacts'] required
fn_name Optional[str] None
num_genes int Field(default=5, ge=1)
num_generations int Field(default=50, ge=1, le=10000)
sol_per_pop int Field(default=10, ge=4)
gene_min float -10.0
gene_max float 10.0
crossover_type str 'single_point'
mutation_type str 'random'
mutation_percent_genes float Field(default=10.0, gt=0, le=100)
parent_selection_type str 'sss'
keep_elitism int Field(default=1, ge=0)
stop_criteria Optional[str] None
objective_type str 'builtin'
objective_params_json str '{}'
fn_expression Optional[str] None
seed Optional[int] Field(default=None, ge=0)
timeout_seconds Optional[int] Field(default=None, gt=0)
session_id Optional[int] None
best_fitness Optional[float] None
objective_value Optional[float] None
generations_completed Optional[int] None
success Optional[bool] None
notes Optional[str] None
tags Optional[str] None
preset_name Optional[str] None
preset_description Optional[str] None
preset_domain Optional[str] None
generation Optional[int] None
pop_size Optional[int] None
diversity_json Optional[str] None
num_objectives Optional[int] None
pareto_size Optional[int] None
objectives_json Optional[str] None
heuristic_name Optional[str] None
heuristic_description Optional[str] None
heuristic_domain Optional[str] None
heuristic_condition Optional[str] None
heuristic_action Optional[str] None
query Optional[str] None
limit int 10
worth Optional[float] None
fn_type str 'builtin'
model_family Optional[str] None
param_space_json Optional[str] None
dataset_path Optional[str] None
target_col str 'target'
scoring_metric str 'accuracy'
cv_folds int Field(default=5, ge=2)
request_id Optional[str] None
task_id Optional[str] None
run_id Optional[str] None
native_action Optional[str] None
native_backend str 'pygad'
native_payload Optional[dict[str, Any]] None
callback_mode str 'none'
max_generations int Field(default=1000, ge=1, le=1000)
max_population int Field(default=100, ge=4, le=200)

MCPPyGADOutput(BaseModel)

Field Type Default
op str required
success bool required
data Any None
error Optional[str] None
record_id Optional[int] None
degraded bool False
degradation_reason str ''
degradation_code Optional[str] None
recoverability Optional[str] None
missing_dependencies list[str] Field(default_factory=list)
unsupported_features list[str] Field(default_factory=list)
warnings list[str] Field(default_factory=list)
completion_state Literal['verified', 'qualified-draft', 'blocked-escalated'] 'qualified-draft'
warning_card dict[str, Any] Field(default_factory=dict)
evidence list[dict[str, Any]] Field(default_factory=list)
request_id Optional[str] None
task_id Optional[str] None
run_id Optional[str] None
error_code Optional[str] None

MCP Tools

Operation Source
run_ga pygad_mcp
run_ga_custom pygad_mcp
list_functions pygad_mcp
explain_result pygad_mcp
ga_status pygad_mcp
session_record pygad_mcp
session_query pygad_mcp
session_summarize pygad_mcp
session_replay pygad_mcp
preset_store pygad_mcp
preset_retrieve pygad_mcp
preset_evaluate pygad_mcp
preset_run pygad_mcp
population_snapshot pygad_mcp
population_query pygad_mcp
convergence_diagnose pygad_mcp
pareto_store pygad_mcp
heuristic_store pygad_mcp
heuristic_retrieve pygad_mcp
ga_search pygad_mcp
ga_info pygad_mcp
run_ga_ml pygad_mcp
recommend_config pygad_mcp
list_patterns pygad_mcp
native_capability_info pygad_mcp
native_describe pygad_mcp
native_validate_ga_spec pygad_mcp
native_run_ga pygad_mcp
native_artifacts pygad_mcp