❓ Q&A 22.1 — DivergentGenerator: divergent thinking strategies, novelty scoring & genetic algorithm #523
Unanswered
web3guru888
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
❓ Q&A 22.1 — DivergentGenerator
Answers to common questions about the DivergentGenerator (Phase 22.1, spec: #514).
Q1: Why five divergent strategies instead of just one?
A: Different strategies explore different regions of the creative search space:
Using all five maximises ideational flexibility (Guilford's divergent thinking dimension). A single strategy would produce many ideas, but they'd cluster in one region. The strategy rotation in
generate()ensures the population spans multiple creative dimensions from the start.Q2: How does the novelty scoring formula work?
A: Novelty is a weighted combination of two distance metrics:
The two terms complement each other: centroid distance rewards global divergence, while NN distance rewards local uniqueness. An idea can be far from the centroid but close to one neighbor (a cluster outlier) — the NN term penalises this.
Edge case: Empty population returns 1.0 (maximum novelty), because the first idea has no population to be similar to.
Q3: What are the genetic algorithm parameter trade-offs?
A: The
DivergentConfigdefaults represent a balanced configuration:population_sizemax_generationscrossover_ratemutation_ratetournament_sizenovelty_thresholdKey insight: In creative search, we want more exploration than exploitation compared to traditional GA. That's why
crossover_rate(0.7) is high buttournament_size(3) is moderate — we recombine freely but don't aggressively select, preserving population diversity.The
mutation_rateof 0.15 is deliberately low because each mutation is a semantic perturbation (synonym substitution, concept injection), which can radically change meaning even at low rates.Q4: How does the DivergentGenerator integrate with the CognitiveCycle?
A: The DivergentGenerator plugs into the CognitiveCycle as a creativity sub-step:
The creative step runs after the reasoning step (Phase 20) and before the planning step (Phase 10), allowing creative solutions to feed into the planning pipeline.
Q5: What is bisociation and how does it differ from simple analogy?
A: Bisociation (Arthur Koestler, The Act of Creation, 1964) is fundamentally different from analogy:
In the DivergentGenerator:
AnalogicalReasoner(20.2) discovers analogies — systematic mappings between domains_bisociate()uses these as raw material but goes further — it randomly pairs concepts from unrelated matrices, looking for surprising bridges that weren't part of any systematic mappingThe key metric difference: analogical ideas tend to have moderate novelty (they're structured), while bisociative ideas have high novelty variance (many are nonsensical, but the rare hits are breakthrough-level).
Q6: How does the seed pool work with CuriosityModule?
A: The
_seed_poolis a bounded deque (maxlen=100) of concept strings that serve as raw material for all generation strategies:The deque's FIFO eviction ensures the seed pool stays fresh — as the system's curiosity shifts, old seeds are naturally replaced by new ones. This creates a temporal bias toward recent curiosity, which is desirable: the system generates creative ideas about what it's currently curious about, not what interested it 1000 cycles ago.
Q7: How do we prevent the genetic algorithm from converging to a single idea cluster?
A: Several mechanisms maintain population diversity:
Multi-strategy seeding: The initial population comes from 5 different strategies, ensuring structural diversity from generation 0.
Novelty-based fitness: Unlike traditional GAs that optimise a fixed objective, we select for novelty — being different from the population. This creates a natural diversity pressure: as one cluster grows, its members' novelty drops, and outliers become fitter.
Nearest-neighbor penalty: The β·min_NN term in the novelty formula specifically penalises ideas that are close to any existing idea, even if they're far from the centroid.
Moderate tournament size (k=3): With only 3 candidates per tournament, weaker (but unique) ideas still have a ~1/3 chance of winning. Larger k would be more elitist.
Mutation as exploration: The 15% mutation rate introduces random perturbations that can jump to unexplored regions. Even after crossover converges two subtrees, mutation can break out.
Threshold-based filtering, not ranking: We discard ideas below novelty 0.3, but we don't rank-select within the surviving population. This preserves moderate-novelty ideas that might be stepping stones.
If the population still converges (all ideas above threshold but very similar), the
CreativityOrchestrator(22.5) can detect this via theasi_divergent_population_sizegauge and trigger a diversity injection — generating a fresh batch withCONSTRAINT_RELAXATIONto break the local optimum.Spec: #514 · Show & Tell: #519
Beta Was this translation helpful? Give feedback.
All reactions