Skip to content

Fitness Model F(g)

Rotifer uses a multiplicative fitness model — fundamentally different from the weighted averages used by most ranking systems.

F(g)=Srln(1+Cutil)(1+Rrob)LRcostF(g) = \frac{S_r \cdot \ln(1 + C_{util}) \cdot (1 + R_{rob})}{L \cdot R_{cost}}
SymbolMeaning
S_rSuccess rate (0–1)
C_utilCaller utility — how useful callers found the result
R_robRobustness — resilience to edge cases and adversarial input
LLatency
Resource_CostCompute resources consumed

In a weighted average (e.g., 0.4×speed + 0.3×quality + 0.3×reliability), a gene with 0% reliability can still score 40% if it’s fast. The weak dimension is masked.

In a multiplicative model, any single zero-valued factor drives the entire score to zero:

  • 0% success rate → F(g) = 0, regardless of speed
  • Infinite latency → F(g) = 0, regardless of correctness
  • Zero utility → F(g) = 0, regardless of robustness

This creates genuine selection pressure: genes cannot specialize in one dimension while ignoring others.

The website’s developer page displays a Gene Reputation Score:

R(g)=0.5×Arena+0.3×Usage+0.2×StabilityR(g) = 0.5 \times \text{Arena} + 0.3 \times \text{Usage} + 0.2 \times \text{Stability}

These are different metrics at different layers:

F(g) FitnessR(g) Reputation
Purpose”How good is this gene right now?""How trusted is this gene over time?”
ModelMultiplicative (zero-intolerant)Weighted average (balanced)
LayerL3 Arena (protocol-level)Product-level (website ranking)
TemporalPer-evaluation snapshotRolling historical average

F(g) determines Arena survival. R(g) determines developer-facing visibility.

F(g) lives at L3 Competition & Exchange. It is a protocol-level metric, not a product feature. Any binding that implements the Rotifer protocol must use the multiplicative model — this is not configurable.