Current section

Files

Jump to
faber_neuroevolution guides assets meta-controller-architecture.svg
Raw

guides/assets/meta-controller-architecture.svg

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 320" width="700" height="320">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#4a5568"/>
</marker>
<linearGradient id="metaGrad" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#9f7aea;stop-opacity:1" />
<stop offset="100%" style="stop-color:#805ad5;stop-opacity:1" />
</linearGradient>
<linearGradient id="neuroGrad" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#48bb78;stop-opacity:1" />
<stop offset="100%" style="stop-color:#38a169;stop-opacity:1" />
</linearGradient>
<linearGradient id="statsGrad" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#4299e1;stop-opacity:1" />
<stop offset="100%" style="stop-color:#3182ce;stop-opacity:1" />
</linearGradient>
</defs>
<!-- Background -->
<rect width="700" height="320" fill="#f7fafc" rx="8"/>
<!-- META-CONTROLLER box -->
<rect x="30" y="20" width="640" height="100" rx="8" fill="url(#metaGrad)" stroke="#6b46c1" stroke-width="2"/>
<text x="350" y="45" text-anchor="middle" fill="white" font-family="monospace" font-size="14" font-weight="bold">META-CONTROLLER (LTC Network)</text>
<!-- Divider line -->
<line x1="350" y1="55" x2="350" y2="115" stroke="#e9d8fd" stroke-width="1"/>
<!-- Inputs column -->
<text x="60" y="70" fill="#e9d8fd" font-family="monospace" font-size="10" font-weight="bold">Inputs:</text>
<text x="60" y="85" fill="white" font-family="monospace" font-size="10">- best_fitness</text>
<text x="60" y="97" fill="white" font-family="monospace" font-size="10">- avg_fitness</text>
<text x="175" y="85" fill="white" font-family="monospace" font-size="10">- fitness_variance</text>
<text x="175" y="97" fill="white" font-family="monospace" font-size="10">- fitness_delta</text>
<text x="60" y="109" fill="white" font-family="monospace" font-size="10">- stagnation_count</text>
<text x="175" y="109" fill="white" font-family="monospace" font-size="10">- generation</text>
<!-- Outputs column -->
<text x="380" y="70" fill="#e9d8fd" font-family="monospace" font-size="10" font-weight="bold">Outputs:</text>
<text x="380" y="85" fill="white" font-family="monospace" font-size="10">- mutation_rate</text>
<text x="380" y="97" fill="white" font-family="monospace" font-size="10">- mutation_strength</text>
<text x="520" y="85" fill="white" font-family="monospace" font-size="10">- selection_ratio</text>
<text x="520" y="97" fill="white" font-family="monospace" font-size="10">- (extensible)</text>
<!-- "controls" arrow -->
<line x1="350" y1="120" x2="350" y2="150" stroke="#4a5568" stroke-width="2" marker-end="url(#arrowhead)"/>
<text x="375" y="140" fill="#4a5568" font-family="monospace" font-size="10" font-style="italic">controls</text>
<!-- NEUROEVOLUTION SERVER box -->
<rect x="30" y="160" width="640" height="60" rx="8" fill="url(#neuroGrad)" stroke="#276749" stroke-width="2"/>
<text x="350" y="185" text-anchor="middle" fill="white" font-family="monospace" font-size="14" font-weight="bold">NEUROEVOLUTION SERVER (Population)</text>
<text x="350" y="205" text-anchor="middle" fill="#c6f6d5" font-family="monospace" font-size="11">Evolving population of task-specific networks (e.g., snake-playing brains)</text>
<!-- "produces" arrow -->
<line x1="350" y1="220" x2="350" y2="250" stroke="#4a5568" stroke-width="2" marker-end="url(#arrowhead)"/>
<text x="375" y="240" fill="#4a5568" font-family="monospace" font-size="10" font-style="italic">produces</text>
<!-- Generation Statistics box -->
<rect x="200" y="260" width="300" height="40" rx="6" fill="url(#statsGrad)" stroke="#2b6cb0" stroke-width="2"/>
<text x="350" y="285" text-anchor="middle" fill="white" font-family="monospace" font-size="12" font-weight="bold">Generation Statistics</text>
<!-- Feedback loop arrow -->
<path d="M 500 280 L 670 280 L 670 70 L 670 70" stroke="#4a5568" stroke-width="2" fill="none" stroke-dasharray="5,3"/>
<line x1="670" y1="70" x2="672" y2="70" stroke="#4a5568" stroke-width="2" marker-end="url(#arrowhead)"/>
<text x="620" y="180" fill="#718096" font-family="monospace" font-size="9" transform="rotate(-90 620,180)">fed back</text>
</svg>