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_mlexample using a small CSV and a familiar metric such as accuracy or F1 - A plain-English explanation of what
best_fitness,best_solution, andgenerationsmean - 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_infoandnative_describetools 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 |