Current section

Files

Jump to
faber_neuroevolution guides assets distributed-training.svg
Raw

guides/assets/distributed-training.svg

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 400" width="700" height="400">
<defs>
<linearGradient id="trainBg" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#9f7aea;stop-opacity:0.1" />
<stop offset="100%" style="stop-color:#805ad5;stop-opacity:0.15" />
</linearGradient>
<marker id="arrow" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#718096"/>
</marker>
</defs>
<!-- Background -->
<rect width="700" height="400" fill="#f7fafc" rx="8"/>
<!-- Container -->
<rect x="20" y="20" width="660" height="360" rx="8" fill="url(#trainBg)" stroke="#805ad5" stroke-width="2"/>
<text x="350" y="45" text-anchor="middle" fill="#553c9a" font-family="sans-serif" font-size="14" font-weight="bold">DISTRIBUTED TRAINING</text>
<!-- Evolution Coordinator -->
<rect x="250" y="60" width="200" height="50" rx="6" fill="#9f7aea" stroke="#6b46c1" stroke-width="2"/>
<text x="350" y="85" text-anchor="middle" fill="white" font-family="sans-serif" font-size="11" font-weight="bold">Evolution Coordinator</text>
<text x="350" y="100" text-anchor="middle" fill="#e9d8fd" font-family="sans-serif" font-size="8">Collects fitness, manages population</text>
<!-- Arrow down with label -->
<line x1="350" y1="110" x2="350" y2="150" stroke="#718096" stroke-width="2" marker-end="url(#arrow)"/>
<text x="480" y="135" fill="#718096" font-family="sans-serif" font-size="9" font-style="italic">broadcast: {new_generation, Networks}</text>
<!-- PubSub bar -->
<rect x="100" y="155" width="500" height="35" rx="6" fill="#4299e1" stroke="#2b6cb0" stroke-width="2"/>
<text x="350" y="178" text-anchor="middle" fill="white" font-family="sans-serif" font-size="12" font-weight="bold">MACULA PUBSUB</text>
<!-- Connection lines down -->
<line x1="130" y1="190" x2="130" y2="220" stroke="#718096" stroke-width="1.5"/>
<line x1="230" y1="190" x2="230" y2="220" stroke="#718096" stroke-width="1.5"/>
<line x1="330" y1="190" x2="330" y2="220" stroke="#718096" stroke-width="1.5"/>
<line x1="430" y1="190" x2="430" y2="220" stroke="#718096" stroke-width="1.5"/>
<line x1="550" y1="190" x2="550" y2="220" stroke="#718096" stroke-width="1.5"/>
<!-- Robot nodes -->
<rect x="90" y="220" width="80" height="60" rx="6" fill="#48bb78" stroke="#276749" stroke-width="2"/>
<text x="130" y="245" text-anchor="middle" fill="white" font-family="sans-serif" font-size="10" font-weight="bold">Robot1</text>
<text x="130" y="270" text-anchor="middle" fill="#c6f6d5" font-family="sans-serif" font-size="8">evaluate</text>
<rect x="190" y="220" width="80" height="60" rx="6" fill="#48bb78" stroke="#276749" stroke-width="2"/>
<text x="230" y="245" text-anchor="middle" fill="white" font-family="sans-serif" font-size="10" font-weight="bold">Robot2</text>
<text x="230" y="270" text-anchor="middle" fill="#c6f6d5" font-family="sans-serif" font-size="8">evaluate</text>
<rect x="290" y="220" width="80" height="60" rx="6" fill="#48bb78" stroke="#276749" stroke-width="2"/>
<text x="330" y="245" text-anchor="middle" fill="white" font-family="sans-serif" font-size="10" font-weight="bold">Robot3</text>
<text x="330" y="270" text-anchor="middle" fill="#c6f6d5" font-family="sans-serif" font-size="8">evaluate</text>
<rect x="390" y="220" width="80" height="60" rx="6" fill="#48bb78" stroke="#276749" stroke-width="2"/>
<text x="430" y="245" text-anchor="middle" fill="white" font-family="sans-serif" font-size="10" font-weight="bold">RobotN</text>
<text x="430" y="270" text-anchor="middle" fill="#c6f6d5" font-family="sans-serif" font-size="8">evaluate</text>
<rect x="510" y="220" width="80" height="60" rx="6" fill="#f6ad55" stroke="#c05621" stroke-width="2"/>
<text x="550" y="245" text-anchor="middle" fill="white" font-family="sans-serif" font-size="10" font-weight="bold">SimNode</text>
<text x="550" y="270" text-anchor="middle" fill="#fffaf0" font-family="sans-serif" font-size="8">simulate</text>
<!-- Labels for evaluate -->
<text x="280" y="300" fill="#718096" font-family="sans-serif" font-size="9">evaluate in environment</text>
<text x="510" y="300" fill="#718096" font-family="sans-serif" font-size="9">evaluate in sim</text>
<!-- Connection lines back up -->
<line x1="130" y1="280" x2="130" y2="320" stroke="#718096" stroke-width="1.5"/>
<line x1="230" y1="280" x2="230" y2="320" stroke="#718096" stroke-width="1.5"/>
<line x1="330" y1="280" x2="330" y2="320" stroke="#718096" stroke-width="1.5"/>
<line x1="430" y1="280" x2="430" y2="320" stroke="#718096" stroke-width="1.5"/>
<line x1="550" y1="280" x2="550" y2="320" stroke="#718096" stroke-width="1.5"/>
<!-- Horizontal connector -->
<line x1="130" y1="320" x2="550" y2="320" stroke="#718096" stroke-width="1.5"/>
<line x1="340" y1="320" x2="340" y2="345" stroke="#718096" stroke-width="2" marker-end="url(#arrow)"/>
<!-- Return message -->
<text x="350" y="370" text-anchor="middle" fill="#718096" font-family="sans-serif" font-size="10" font-style="italic">publish: {fitness_report, Robot, Metrics}</text>
</svg>