Geno-Synthetic Algorithm: type-factored coevolutionary optimization for heterogeneous genotypes and assembled phenotypes. Use when: coevolutionary algorithms, heterogeneous genotype optimization, assembled phenotype synthesis, evolutionary computation, neural architecture search, modular evolutionary design. Activation: geno-synthetic, coevolutionary optimization, heterogeneous genotype, assembled phenotype, type-factored evolution, modular evolutionary algorithm.
Scanned 9/11/2026
Install to Claude Code
npx -y skills add hiyenwong/ai_collection --skill geno-synthetic-coevolution-optimization --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Geno Synthetic Coevolution Optimization?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hiyenwong-geno-synthetic-coevolution-optimization-02cfba0b)More formats (shields.io, HTML) on the badges page.
---
name: geno-synthetic-coevolution-optimization
description: "Geno-Synthetic Algorithm: type-factored coevolutionary optimization for heterogeneous genotypes and assembled phenotypes. Use when: coevolutionary algorithms, heterogeneous genotype optimization, assembled phenotype synthesis, evolutionary computation, neural architecture search, modular evolutionary design. Activation: geno-synthetic, coevolutionary optimization, heterogeneous genotype, assembled phenotype, type-factored evolution, modular evolutionary algorithm."
---
# Geno-Synthetic Coevolutionary Optimization
> Type-factored coevolutionary optimization framework for heterogeneous genotypes that assemble into composite phenotypes, enabling modular evolutionary search across distinct genetic spaces.
## Metadata
- **Source**: arXiv:2605.13365
- **Authors**: Alex Bogdan
- **Published**: 2026-05-14
- **Categories**: cs.NE (Neural and Evolutionary Computing)
## Core Methodology
### Key Innovation
The Geno-Synthetic Algorithm introduces a novel decomposition of evolutionary search:
1. **Type-factored genotypes** — genetic representation split into heterogeneous sub-genomes, each governing a different aspect of the phenotype
2. **Coevolutionary optimization** — each sub-genome evolves semi-independently while cooperating to produce a unified phenotype
3. **Assembled phenotypes** — composite organisms/structures built from the contributions of multiple genotype types
This approach addresses the combinatorial explosion in evolutionary search by:
- Decomposing the search space into coordinated sub-problems
- Allowing specialized evolution within each genetic subspace
- Maintaining inter-type cooperation through shared fitness evaluation
### Technical Framework
**Genotype Decomposition**:
```
Genotype = {Type₁: genome₁, Type₂: genome₂, ..., Typeₙ: genomeₙ}
```
Each type represents a distinct "layer" or "module" of genetic information:
- Structural genes (morphology, topology)
- Behavioral genes (control policies, activation functions)
- Meta-genes (hyperparameters, learning rules)
**Coevolutionary Dynamics**:
- Each genotype type maintains its own population
- Individuals are sampled from each population to assemble candidate phenotypes
- Fitness is evaluated on the assembled phenotype
- Fitness is propagated back to contributing genotypes (credit assignment)
- Sub-populations evolve cooperatively
**Assembly Function**:
```
Phenotype = Assemble(genome₁, genome₂, ..., genomeₙ)
```
The assembly function maps heterogeneous genetic contributions into a unified functional organism/structure.
### Search Advantages
1. **Reduced search space** — Each sub-population searches a lower-dimensional space
2. **Specialized operators** — Each genotype type can use tailored mutation/crossover
3. **Parallel exploration** — Sub-populations explore independently
4. **Compositional creativity** — Novel combinations from mixing evolved components
5. **Scalability** — Adding new genotype types doesn't multiply the full search space
## Implementation Guide
### Prerequisites
- Evolutionary computation framework (DEAP, PyGAD, or custom)
- Well-defined phenotype assembly function
- Fitness evaluation environment
### Step-by-Step
1. **Identify genotype types** — Decompose the problem into heterogeneous genetic subspaces
2. **Define genotype representations** — Each type gets its own encoding (binary, real-valued, tree-based, etc.)
3. **Design assembly function** — Map genetic contributions to unified phenotype
4. **Initialize sub-populations** — Each genotype type gets its own population
5. **Define fitness function** — Evaluate on assembled phenotype, not individual genotypes
6. **Implement credit assignment** — Propagate fitness from phenotype to contributing genotypes
7. **Apply genetic operators** — Type-specific mutation and crossover within each sub-population
8. **Sample and assemble** — Each generation: sample from each sub-population, assemble, evaluate
9. **Iterate** — Repeat until convergence or budget exhaustion
### Code Example (Conceptual)
```python
class GenoSyntheticAlgorithm:
def __init__(self, genotype_types, pop_size, assembly_fn, fitness_fn):
self.types = genotype_types # e.g., ["structure", "behavior", "meta"]
self.populations = {t: initialize_population(t, pop_size) for t in genotype_types}
self.assemble = assembly_fn
self.fitness = fitness_fn
def evolve(self, generations):
for gen in range(generations):
# Sample from each sub-population
candidates = []
for _ in range(pop_size):
genomes = {t: random.choice(self.populations[t]) for t in self.types}
phenotype = self.assemble(genomes)
fit = self.fitness(phenotype)
candidates.append({"genomes": genomes, "fitness": fit})
# Credit assignment: accumulate fitness per genotype
fitness_per_genome = defaultdict(list)
for c in candidates:
for t, g in c["genomes"].items():
fitness_per_genome[(t, id(g))].append(c["fitness"])
# Selection and variation per sub-population
for t in self.types:
pop = self.populations[t]
avg_fitness = {id(g): np.mean(fitness_per_genome.get((t, id(g)), [0])) for g in pop}
selected = tournament_selection(pop, avg_fitness, pop_size // 2)
offspring = crossover_and_mutate(selected, type=t)
self.populations[t] = offspring
# Track best
best = max(candidates, key=lambda c: c["fitness"])
return best
```
## Applications
- **Neural architecture search** — Separate genotypes for topology, weights, activation functions
- **Robot design** — Morphology genes + controller genes coevolving
- **SNN evolution** — Neuron parameters, connectivity, learning rules as separate types
- **Modular software synthesis** — Components evolving independently, assembled into system
- **Multi-task learning** — Different genotypes for different task specializations
## Pitfalls
- **Credit assignment difficulty** — Hard to attribute phenotype fitness to specific genotypes
- **Genotype-phenotype mapping** — Assembly function must be meaningful, not arbitrary
- **Population coordination** — Sub-populations may diverge, losing cooperative potential
- **Evaluation cost** — Each candidate requires assembling and evaluating a full phenotype
- **Hyperparameter tuning** — Population sizes, selection pressure per type need careful calibration
## Related Skills
- evolutionary-snn-classifier
- neuroplastic-plasticity-optimizer
- multi-objective-quantum-workflow
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!