@reicek/neataptic-ts 0.1.21 → 0.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/agents/boundary-mapper.agent.md +31 -0
- package/.github/agents/docs-scout.agent.md +29 -0
- package/.github/agents/plan-scout.agent.md +31 -0
- package/.github/agents/solid-split.agent.md +143 -0
- package/.github/copilot-instructions.md +119 -0
- package/.github/skills/solid-split-playbook/SKILL.md +220 -0
- package/.github/skills/solid-split-playbook/assets/docs-checklist.md +34 -0
- package/.github/skills/solid-split-playbook/assets/split-plan-template.md +48 -0
- package/.github/skills/solid-split-playbook/assets/split-workflow-checklist.md +51 -0
- package/.github/skills/trace-analyzer-extension/SKILL.md +63 -0
- package/.github/skills/trace-analyzer-extension/assets/extension-checklist.md +24 -0
- package/.github/skills/trace-analyzer-extension/references/analyzer-extension-workflow.md +101 -0
- package/.github/skills/trace-audit-reporting/SKILL.md +96 -0
- package/.github/skills/trace-audit-reporting/assets/performance-report-template.md +123 -0
- package/.github/skills/trace-audit-reporting/references/trace-analysis-workflow.md +132 -0
- package/package.json +7 -3
- package/plans/ES2023 migration +13 -8
- package/plans/Evolution_Training_Interoperability_Contracts.md +1 -1
- package/plans/Flappy_Bird_Folder_Documentation_Pass.md +53 -0
- package/plans/Flappy_Evolution_Worker_Documentation_Pass.md +58 -0
- package/plans/Interactive_Examples_and_Learning_Path.md +10 -2
- package/plans/Memory_Optimization.md +3 -3
- package/plans/README.md +63 -0
- package/plans/Roadmap.md +15 -3
- package/plans/asciiMaze_SOLID_split.done.md +130 -0
- package/plans/flappy_bird_SOLID_split.done.md +67 -0
- package/scripts/analyze-trace.ts +590 -0
- package/scripts/assets/theme.css +221 -34
- package/scripts/copy-examples.mjs +9 -5
- package/scripts/export-onnx.mjs +3 -3
- package/scripts/generate-bench-tables.mjs +10 -10
- package/scripts/generate-bench-tables.ts +10 -10
- package/scripts/generate-docs.ts +1415 -449
- package/scripts/render-docs-html.ts +15 -8
- package/src/README.md +127 -222
- package/src/architecture/README.md +117 -184
- package/src/architecture/architect.ts +6 -0
- package/src/architecture/layer/README.md +38 -38
- package/src/architecture/network/README.md +49 -31
- package/src/architecture/network/activate/README.md +77 -77
- package/src/architecture/network/connect/README.md +15 -13
- package/src/architecture/network/deterministic/README.md +7 -7
- package/src/architecture/network/evolve/README.md +44 -44
- package/src/architecture/network/gating/README.md +20 -20
- package/src/architecture/network/genetic/README.md +51 -51
- package/src/architecture/network/mutate/README.md +97 -97
- package/src/architecture/network/network.types.ts +39 -0
- package/src/architecture/network/onnx/README.md +264 -264
- package/src/architecture/network/prune/README.md +39 -39
- package/src/architecture/network/remove/README.md +26 -26
- package/src/architecture/network/serialize/README.md +56 -56
- package/src/architecture/network/serialize/network.serialize.json.utils.ts +1 -0
- package/src/architecture/network/serialize/network.serialize.utils.ts +6 -1
- package/src/architecture/network/serialize/network.serialize.utils.types.ts +1 -1
- package/src/architecture/network/slab/README.md +61 -61
- package/src/architecture/network/standalone/README.md +24 -24
- package/src/architecture/network/stats/README.md +9 -9
- package/src/architecture/network/topology/README.md +46 -46
- package/src/architecture/network/training/README.md +21 -21
- package/src/architecture/network.ts +114 -10
- package/src/methods/README.md +9 -87
- package/src/multithreading/README.md +8 -77
- package/src/multithreading/workers/README.md +2 -2
- package/src/multithreading/workers/browser/README.md +0 -6
- package/src/multithreading/workers/node/README.md +0 -3
- package/src/neat/README.md +623 -568
- package/src/neat/neat.evolve.population.utils.ts +29 -5
- package/src/neat/neat.helpers.ts +16 -0
- package/src/neat/neat.topology-intent.utils.ts +160 -0
- package/src/utils/README.md +18 -18
- package/test/examples/asciiMaze/README.md +59 -59
- package/test/examples/asciiMaze/asciiMaze.e2e.test.ts +14 -9
- package/test/examples/asciiMaze/browser-entry/README.md +196 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.abort.services.ts +95 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.constants.ts +23 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.curriculum.services.ts +115 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.globals.services.ts +106 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.host.services.ts +157 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.services.ts +14 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.ts +129 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.types.ts +120 -0
- package/test/examples/asciiMaze/browser-entry/browser-entry.utils.ts +98 -0
- package/test/examples/asciiMaze/browser-entry.ts +10 -576
- package/test/examples/asciiMaze/dashboardManager/README.md +276 -0
- package/test/examples/asciiMaze/dashboardManager/archive/README.md +16 -0
- package/test/examples/asciiMaze/dashboardManager/archive/dashboardManager.archive.services.ts +267 -0
- package/test/examples/asciiMaze/dashboardManager/dashboardManager.constants.ts +35 -0
- package/test/examples/asciiMaze/dashboardManager/dashboardManager.services.ts +103 -0
- package/test/examples/asciiMaze/dashboardManager/dashboardManager.ts +181 -0
- package/test/examples/asciiMaze/dashboardManager/dashboardManager.types.ts +267 -0
- package/test/examples/asciiMaze/dashboardManager/dashboardManager.utils.ts +254 -0
- package/test/examples/asciiMaze/dashboardManager/live/README.md +14 -0
- package/test/examples/asciiMaze/dashboardManager/live/dashboardManager.live.services.ts +264 -0
- package/test/examples/asciiMaze/dashboardManager/telemetry/README.md +47 -0
- package/test/examples/asciiMaze/dashboardManager/telemetry/dashboardManager.telemetry.services.ts +513 -0
- package/test/examples/asciiMaze/dashboardManager.ts +13 -2335
- package/test/examples/asciiMaze/evolutionEngine/README.md +1058 -0
- package/test/examples/asciiMaze/evolutionEngine/curriculumPhase.ts +90 -0
- package/test/examples/asciiMaze/evolutionEngine/engineState.constants.ts +36 -0
- package/test/examples/asciiMaze/evolutionEngine/engineState.ts +58 -513
- package/test/examples/asciiMaze/evolutionEngine/engineState.types.ts +212 -0
- package/test/examples/asciiMaze/evolutionEngine/engineState.utils.ts +301 -0
- package/test/examples/asciiMaze/evolutionEngine/evolutionEngine.types.ts +445 -0
- package/test/examples/asciiMaze/evolutionEngine/evolutionLoop.ts +81 -50
- package/test/examples/asciiMaze/evolutionEngine/optionsAndSetup.ts +2 -4
- package/test/examples/asciiMaze/evolutionEngine/populationDynamics.ts +17 -33
- package/test/examples/asciiMaze/evolutionEngine/populationPruning.ts +1 -1
- package/test/examples/asciiMaze/evolutionEngine/rngAndTiming.ts +1 -2
- package/test/examples/asciiMaze/evolutionEngine/sampling.ts +1 -1
- package/test/examples/asciiMaze/evolutionEngine/scratchPools.ts +2 -5
- package/test/examples/asciiMaze/evolutionEngine/setupHelpers.ts +30 -37
- package/test/examples/asciiMaze/evolutionEngine/telemetryMetrics.ts +16 -58
- package/test/examples/asciiMaze/evolutionEngine/trainingWarmStart.ts +2 -2
- package/test/examples/asciiMaze/evolutionEngine.ts +55 -55
- package/test/examples/asciiMaze/fitness.ts +2 -2
- package/test/examples/asciiMaze/fitness.types.ts +65 -0
- package/test/examples/asciiMaze/interfaces.ts +64 -1352
- package/test/examples/asciiMaze/mazeMovement/README.md +356 -0
- package/test/examples/asciiMaze/mazeMovement/finalization/README.md +49 -0
- package/test/examples/asciiMaze/mazeMovement/finalization/mazeMovement.finalization.ts +138 -0
- package/test/examples/asciiMaze/mazeMovement/mazeMovement.constants.ts +101 -0
- package/test/examples/asciiMaze/mazeMovement/mazeMovement.services.ts +230 -0
- package/test/examples/asciiMaze/mazeMovement/mazeMovement.ts +299 -0
- package/test/examples/asciiMaze/mazeMovement/mazeMovement.types.ts +185 -0
- package/test/examples/asciiMaze/mazeMovement/mazeMovement.utils.ts +153 -0
- package/test/examples/asciiMaze/mazeMovement/policy/README.md +91 -0
- package/test/examples/asciiMaze/mazeMovement/policy/mazeMovement.policy.ts +467 -0
- package/test/examples/asciiMaze/mazeMovement/runtime/README.md +95 -0
- package/test/examples/asciiMaze/mazeMovement/runtime/mazeMovement.runtime.ts +354 -0
- package/test/examples/asciiMaze/mazeMovement/shaping/README.md +124 -0
- package/test/examples/asciiMaze/mazeMovement/shaping/mazeMovement.shaping.ts +459 -0
- package/test/examples/asciiMaze/mazeMovement.ts +12 -2978
- package/test/examples/flappy_bird/README.md +193 -88
- package/test/examples/flappy_bird/browser-entry/README.md +1441 -0
- package/test/examples/flappy_bird/browser-entry/browser-entry.host.utils.ts +4 -324
- package/test/examples/flappy_bird/browser-entry/browser-entry.network-view.utils.ts +9 -396
- package/test/examples/flappy_bird/browser-entry/browser-entry.playback.utils.ts +6 -714
- package/test/examples/flappy_bird/browser-entry/browser-entry.render.types.ts +26 -3
- package/test/examples/flappy_bird/browser-entry/browser-entry.runtime.types.ts +16 -1
- package/test/examples/flappy_bird/browser-entry/browser-entry.simulation.types.ts +39 -5
- package/test/examples/flappy_bird/browser-entry/browser-entry.spawn.utils.ts +11 -31
- package/test/examples/flappy_bird/browser-entry/browser-entry.stats.types.ts +32 -4
- package/test/examples/flappy_bird/browser-entry/browser-entry.ts +11 -0
- package/test/examples/flappy_bird/browser-entry/browser-entry.types.ts +8 -0
- package/test/examples/flappy_bird/browser-entry/browser-entry.visualization.types.ts +50 -7
- package/test/examples/flappy_bird/browser-entry/browser-entry.visualization.utils.ts +21 -893
- package/test/examples/flappy_bird/browser-entry/browser-entry.worker.types.ts +91 -10
- package/test/examples/flappy_bird/browser-entry/host/README.md +318 -0
- package/test/examples/flappy_bird/browser-entry/host/host.canvas.service.ts +16 -0
- package/test/examples/flappy_bird/browser-entry/host/host.constants.ts +20 -0
- package/test/examples/flappy_bird/browser-entry/host/host.dom.service.ts +10 -0
- package/test/examples/flappy_bird/browser-entry/host/host.resize.service.ts +1 -295
- package/test/examples/flappy_bird/browser-entry/host/host.stats.service.ts +14 -0
- package/test/examples/flappy_bird/browser-entry/host/host.ts +592 -6
- package/test/examples/flappy_bird/browser-entry/host/host.types.ts +13 -0
- package/test/examples/flappy_bird/browser-entry/host/resize/README.md +309 -0
- package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.constants.ts +47 -0
- package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.services.ts +392 -0
- package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.ts +132 -0
- package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.types.ts +92 -0
- package/test/examples/flappy_bird/browser-entry/host/resize/host.resize.service.utils.ts +272 -0
- package/test/examples/flappy_bird/browser-entry/network-view/README.md +389 -0
- package/test/examples/flappy_bird/browser-entry/network-view/network-view.draw.service.ts +13 -0
- package/test/examples/flappy_bird/browser-entry/network-view/network-view.labels.utils.ts +12 -0
- package/test/examples/flappy_bird/browser-entry/network-view/network-view.layout.utils.ts +14 -0
- package/test/examples/flappy_bird/browser-entry/network-view/network-view.topology.utils.ts +267 -0
- package/test/examples/flappy_bird/browser-entry/network-view/network-view.ts +823 -7
- package/test/examples/flappy_bird/browser-entry/network-view/network-view.types.ts +11 -0
- package/test/examples/flappy_bird/browser-entry/playback/README.md +845 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/README.md +355 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/README.md +1068 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.batch.services.ts +64 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.cache.services.ts +207 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.constants.ts +197 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.batch.utils.ts +114 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.layout.utils.test.ts +96 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.layout.utils.ts +204 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.services.ts +49 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.geometry.utils.ts +313 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.layer.services.ts +81 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.math.utils.test.ts +33 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.math.utils.ts +201 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.selection.utils.ts +171 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.timing.utils.ts +124 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.utils.test.ts +279 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.pulse.utils.ts +132 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.scene.services.ts +26 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.services.ts +65 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.ts +48 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.types.ts +342 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/ground-grid/playback.background.ground-grid.utils.ts +10 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.cache.services.ts +96 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.constants.ts +127 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.draw.services.ts +184 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.scene.services.ts +64 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.services.ts +6 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.ts +53 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.types.ts +105 -0
- package/test/examples/flappy_bird/browser-entry/playback/background/playback.background.utils.ts +100 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/README.md +541 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.bird.utils.ts +180 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.canvas.services.ts +77 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.entity.services.ts +167 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.scene.services.ts +57 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.service.test.ts +176 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.service.ts +113 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.services.ts +35 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.trail.utils.ts +248 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.types.ts +103 -0
- package/test/examples/flappy_bird/browser-entry/playback/frame-render/playback.frame-render.utils.ts +11 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.constants.ts +1 -1
- package/test/examples/flappy_bird/browser-entry/playback/playback.frame-render.service.ts +10 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.iteration.services.ts +192 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.loop.service.ts +12 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.orchestration.types.ts +78 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.render.pipe-outline.service.ts +128 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.render.service.ts +1 -116
- package/test/examples/flappy_bird/browser-entry/playback/playback.session.services.ts +184 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.snapshot.utils.test.ts +121 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.snapshot.utils.ts +8 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.layer.services.ts +36 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.service.ts +11 -128
- package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.services.ts +268 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.types.ts +91 -0
- package/test/examples/flappy_bird/browser-entry/playback/playback.starfield.utils.ts +11 -4
- package/test/examples/flappy_bird/browser-entry/playback/playback.trail.utils.ts +9 -86
- package/test/examples/flappy_bird/browser-entry/playback/playback.ts +75 -7
- package/test/examples/flappy_bird/browser-entry/playback/playback.types.ts +12 -9
- package/test/examples/flappy_bird/browser-entry/playback/playback.worker-channel.utils.ts +11 -123
- package/test/examples/flappy_bird/browser-entry/playback/snapshot/README.md +55 -0
- package/test/examples/flappy_bird/browser-entry/playback/snapshot/playback.snapshot.services.ts +103 -0
- package/test/examples/flappy_bird/browser-entry/playback/snapshot/playback.snapshot.summary.utils.test.ts +45 -0
- package/test/examples/flappy_bird/browser-entry/playback/snapshot/playback.snapshot.summary.utils.ts +28 -0
- package/test/examples/flappy_bird/browser-entry/playback/trail/README.md +95 -0
- package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.history.services.test.ts +35 -0
- package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.history.services.ts +64 -0
- package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.opacity.utils.test.ts +37 -0
- package/test/examples/flappy_bird/browser-entry/playback/trail/playback.trail.opacity.utils.ts +74 -0
- package/test/examples/flappy_bird/browser-entry/playback/worker-channel/README.md +71 -0
- package/test/examples/flappy_bird/browser-entry/playback/worker-channel/playback.worker-channel.request.services.ts +45 -0
- package/test/examples/flappy_bird/browser-entry/playback/worker-channel/playback.worker-channel.summary.services.ts +74 -0
- package/test/examples/flappy_bird/browser-entry/playback/worker-channel/playback.worker-channel.types.ts +53 -0
- package/test/examples/flappy_bird/browser-entry/runtime/README.md +304 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.browser-globals.service.ts +15 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.errors.ts +17 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.evolution-launch.service.ts +56 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.evolution-loop.service.ts +19 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.lifecycle.service.ts +96 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.startup.service.ts +92 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.telemetry.service.ts +24 -0
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.ts +31 -121
- package/test/examples/flappy_bird/browser-entry/runtime/runtime.types.ts +65 -0
- package/test/examples/flappy_bird/browser-entry/visualization/README.md +568 -0
- package/test/examples/flappy_bird/browser-entry/visualization/visualization.colors.utils.ts +26 -0
- package/test/examples/flappy_bird/browser-entry/visualization/visualization.constants.ts +110 -0
- package/test/examples/flappy_bird/browser-entry/visualization/visualization.draw.service.ts +979 -19
- package/test/examples/flappy_bird/browser-entry/visualization/visualization.legend.utils.ts +157 -3
- package/test/examples/flappy_bird/browser-entry/visualization/visualization.topology.utils.ts +13 -27
- package/test/examples/flappy_bird/browser-entry/visualization/visualization.ts +7 -20
- package/test/examples/flappy_bird/browser-entry/visualization/visualization.types.ts +14 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/README.md +238 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.errors.ts +11 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.generation.service.ts +12 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.playback.service.test.ts +143 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.playback.service.ts +140 -14
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.request.service.ts +27 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.ts +8 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.types.ts +23 -0
- package/test/examples/flappy_bird/browser-entry/worker-channel/worker-channel.url.service.ts +5 -0
- package/test/examples/flappy_bird/constants/README.md +1163 -0
- package/test/examples/flappy_bird/constants/constants.birds.ts +16 -38
- package/test/examples/flappy_bird/constants/constants.difficulty.ts +21 -0
- package/test/examples/flappy_bird/constants/constants.network-view.ts +24 -0
- package/test/examples/flappy_bird/constants/constants.network.ts +1 -1
- package/test/examples/flappy_bird/constants/constants.observation.ts +7 -0
- package/test/examples/flappy_bird/constants/constants.palette.ts +9 -2
- package/test/examples/flappy_bird/constants/constants.physics.ts +9 -0
- package/test/examples/flappy_bird/constants/constants.pipe-render.ts +3 -0
- package/test/examples/flappy_bird/constants/constants.pipes.ts +22 -3
- package/test/examples/flappy_bird/constants/constants.runtime.ts +28 -4
- package/test/examples/flappy_bird/constants/constants.starfield.ts +78 -3
- package/test/examples/flappy_bird/constants/constants.ts +6 -0
- package/test/examples/flappy_bird/environment/README.md +182 -0
- package/test/examples/flappy_bird/environment/environment.collision.utils.ts +7 -0
- package/test/examples/flappy_bird/environment/environment.constants.ts +16 -3
- package/test/examples/flappy_bird/environment/environment.observation.utils.ts +12 -19
- package/test/examples/flappy_bird/environment/environment.state.service.ts +10 -0
- package/test/examples/flappy_bird/environment/environment.step.service.ts +15 -66
- package/test/examples/flappy_bird/environment/environment.types.ts +14 -0
- package/test/examples/flappy_bird/evaluation/README.md +155 -0
- package/test/examples/flappy_bird/evaluation/evaluation.constants.ts +23 -4
- package/test/examples/flappy_bird/evaluation/evaluation.fitness.utils.ts +16 -1
- package/test/examples/flappy_bird/evaluation/evaluation.rollout.service.ts +7 -374
- package/test/examples/flappy_bird/evaluation/evaluation.seed.utils.ts +4 -0
- package/test/examples/flappy_bird/evaluation/evaluation.types.ts +18 -2
- package/test/examples/flappy_bird/evaluation/rollout/README.md +355 -0
- package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.constants.ts +38 -0
- package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.service.ts +71 -0
- package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.services.ts +338 -0
- package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.types.ts +69 -0
- package/test/examples/flappy_bird/evaluation/rollout/evaluation.rollout.utils.ts +399 -0
- package/test/examples/flappy_bird/flappy-evolution-worker/README.md +845 -0
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.constants.ts +49 -7
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.errors.ts +34 -3
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.evolution.service.ts +22 -0
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.playback.service.ts +62 -26
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.protocol.service.ts +27 -1
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.runtime.service.ts +23 -0
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.simulation.frame.service.ts +378 -0
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.simulation.types.ts +22 -0
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.simulation.utils.ts +20 -203
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.snapshot.utils.test.ts +94 -0
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.snapshot.utils.ts +78 -13
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.ts +235 -344
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.types.ts +170 -22
- package/test/examples/flappy_bird/flappy-evolution-worker/flappy-evolution-worker.warm-start.service.ts +314 -0
- package/test/examples/flappy_bird/flappy.simulation.shared.utils.ts +17 -0
- package/test/examples/flappy_bird/flappyEnvironment.ts +21 -0
- package/test/examples/flappy_bird/flappyEvaluation.ts +12 -0
- package/test/examples/flappy_bird/flappyEvolution.worker.ts +7 -0
- package/test/examples/flappy_bird/index.ts +8 -2
- package/test/examples/flappy_bird/rng.ts +10 -0
- package/test/examples/flappy_bird/simulation-shared/README.md +518 -0
- package/test/examples/flappy_bird/simulation-shared/observation/README.md +255 -0
- package/test/examples/flappy_bird/simulation-shared/observation/observation.features.utils.ts +339 -0
- package/test/examples/flappy_bird/simulation-shared/observation/observation.ts +19 -0
- package/test/examples/flappy_bird/simulation-shared/observation/observation.vector.utils.ts +81 -0
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.constants.ts +3 -0
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.control.utils.ts +6 -0
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.difficulty.utils.ts +9 -0
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.errors.ts +10 -1
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.memory.utils.ts +18 -0
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.observation.utils.ts +7 -402
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.spawn.utils.ts +36 -6
- package/test/examples/flappy_bird/{evaluation/evaluation.statistics.utils.ts → simulation-shared/simulation-shared.statistics.utils.ts} +30 -9
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.types.ts +38 -5
- package/test/examples/flappy_bird/trainFlappyBird.ts +13 -0
- package/test/examples/flappy_bird/trainer/README.md +676 -0
- package/test/examples/flappy_bird/trainer/evaluation/README.md +253 -0
- package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.constants.ts +15 -0
- package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.services.ts +86 -0
- package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.ts +187 -0
- package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.types.ts +32 -0
- package/test/examples/flappy_bird/trainer/evaluation/trainer.evaluation.service.utils.ts +182 -0
- package/test/examples/flappy_bird/trainer/trainer.evaluation.service.ts +13 -0
- package/test/examples/flappy_bird/trainer/trainer.fitness.service.ts +23 -1
- package/test/examples/flappy_bird/trainer/trainer.loop.service.ts +17 -1
- package/test/examples/flappy_bird/trainer/trainer.report.service.services.ts +181 -0
- package/test/examples/flappy_bird/trainer/trainer.report.service.ts +136 -0
- package/test/examples/flappy_bird/trainer/trainer.selection.utils.ts +89 -0
- package/test/examples/flappy_bird/trainer/trainer.setup.service.ts +22 -0
- package/test/examples/flappy_bird/trainer/trainer.signals.service.ts +8 -0
- package/test/examples/flappy_bird/trainer/trainer.ts +38 -553
- package/test/examples/flappy_bird/trainer/trainer.types.ts +44 -7
- package/test/neat/neat.topology-intent.test.ts +129 -0
- package/test/network/network.topology-intent.test.ts +44 -0
- package/test/examples/flappy_bird/browser-entry/browser-entry.utils.ts +0 -12
- package/test/examples/flappy_bird/environment/environment.ts +0 -7
- package/test/examples/flappy_bird/evaluation/evaluation.ts +0 -7
- package/test/examples/flappy_bird/simulation-shared/simulation-shared.ts +0 -15
- package/test/examples/flappy_bird/trainer/trainer.statistics.utils.ts +0 -78
|
@@ -3,13 +3,26 @@ import {
|
|
|
3
3
|
FLAPPY_MAX_FRAMES_PER_EPISODE,
|
|
4
4
|
} from '../constants/constants';
|
|
5
5
|
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Default curriculum difficulty scale used by environment stepping.
|
|
8
|
+
*
|
|
9
|
+
* A value of `1` means the environment uses the full adaptive difficulty ramp.
|
|
10
|
+
*/
|
|
7
11
|
export const FLAPPY_ENVIRONMENT_DEFAULT_DIFFICULTY_SCALE = 1;
|
|
8
12
|
|
|
9
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Default number of control/physics substeps executed per simulation frame.
|
|
15
|
+
*
|
|
16
|
+
* Reusing the shared control-substep count keeps the environment and browser
|
|
17
|
+
* playback aligned on the same stepping granularity.
|
|
18
|
+
*/
|
|
10
19
|
export const FLAPPY_ENVIRONMENT_DEFAULT_CONTROL_SUBSTEPS_PER_FRAME =
|
|
11
20
|
FLAPPY_CONTROL_SUBSTEPS_PER_FRAME;
|
|
12
21
|
|
|
13
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Maximum frame budget before the environment forces timeout termination.
|
|
24
|
+
*
|
|
25
|
+
* Timeouts stop extremely long survival loops from dominating evaluation cost.
|
|
26
|
+
*/
|
|
14
27
|
export const FLAPPY_ENVIRONMENT_MAX_FRAMES_PER_EPISODE =
|
|
15
28
|
FLAPPY_MAX_FRAMES_PER_EPISODE;
|
|
@@ -23,6 +23,12 @@ import type {
|
|
|
23
23
|
/**
|
|
24
24
|
* Generate the network observation vector for the current state.
|
|
25
25
|
*
|
|
26
|
+
* Educational note:
|
|
27
|
+
* This helper is the environment-facing bridge into the shared observation
|
|
28
|
+
* system. It keeps the environment API simple while ensuring evaluation,
|
|
29
|
+
* training, and browser playback all derive their policy inputs from the same
|
|
30
|
+
* feature definitions.
|
|
31
|
+
*
|
|
26
32
|
* Observation (12 numbers):
|
|
27
33
|
* 1) bird y position normalized to [0, 1]
|
|
28
34
|
* 2) bird vertical velocity normalized to [-1, 1]
|
|
@@ -53,6 +59,11 @@ export function getFlappyObservation(
|
|
|
53
59
|
/**
|
|
54
60
|
* Resolve structured observation features for policy input and reward shaping.
|
|
55
61
|
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* const features = getFlappyObservationFeatures(state, 1);
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
56
67
|
* @param state - Current state.
|
|
57
68
|
* @param difficultyScale - Curriculum difficulty scale in [0, 1].
|
|
58
69
|
* @returns Named feature object.
|
|
@@ -61,7 +72,7 @@ export function getFlappyObservationFeatures(
|
|
|
61
72
|
state: FlappyGameState,
|
|
62
73
|
difficultyScale: FlappyDifficultyScale = FLAPPY_ENVIRONMENT_DEFAULT_DIFFICULTY_SCALE,
|
|
63
74
|
): FlappyObservationFeatures {
|
|
64
|
-
const difficultyProfile =
|
|
75
|
+
const difficultyProfile = resolveAdaptiveDifficultyProfile(
|
|
65
76
|
state.pipesPassed,
|
|
66
77
|
difficultyScale,
|
|
67
78
|
);
|
|
@@ -84,21 +95,3 @@ export function getFlappyObservationFeatures(
|
|
|
84
95
|
normalizationEpsilon: FLAPPY_NORMALIZATION_EPSILON,
|
|
85
96
|
});
|
|
86
97
|
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Resolves adaptive difficulty parameters from current progress.
|
|
90
|
-
*
|
|
91
|
-
* @param pipesPassed - Number of pipes passed by the active bird.
|
|
92
|
-
* @param difficultyScale - Curriculum difficulty scale in [0, 1].
|
|
93
|
-
* @returns Runtime difficulty profile.
|
|
94
|
-
*/
|
|
95
|
-
function resolveDifficultyProfile(
|
|
96
|
-
pipesPassed: number,
|
|
97
|
-
difficultyScale: FlappyDifficultyScale = FLAPPY_ENVIRONMENT_DEFAULT_DIFFICULTY_SCALE,
|
|
98
|
-
): {
|
|
99
|
-
pipeGapPx: number;
|
|
100
|
-
pipeSpeedPxPerFrame: number;
|
|
101
|
-
pipeSpawnIntervalFrames: number;
|
|
102
|
-
} {
|
|
103
|
-
return resolveAdaptiveDifficultyProfile(pipesPassed, difficultyScale);
|
|
104
|
-
}
|
|
@@ -16,6 +16,16 @@ import type { FlappyGameState } from './environment.types';
|
|
|
16
16
|
/**
|
|
17
17
|
* Create a fresh Flappy Bird episode state.
|
|
18
18
|
*
|
|
19
|
+
* Educational note:
|
|
20
|
+
* A new episode starts with one initial pipe already materialized so the first
|
|
21
|
+
* observation is meaningful immediately. That avoids a cold-start phase where a
|
|
22
|
+
* policy would receive mostly empty-space inputs.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* const state = createInitialFlappyState(rng);
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
19
29
|
* @param rng - Random source used to generate initial pipe configuration.
|
|
20
30
|
* @returns Initial state for one deterministic rollout.
|
|
21
31
|
*/
|
|
@@ -28,10 +28,14 @@ import type {
|
|
|
28
28
|
/**
|
|
29
29
|
* Advance the simulation by one frame.
|
|
30
30
|
*
|
|
31
|
+
* This is the simplest stepping surface: one logical frame and one flap choice.
|
|
32
|
+
* More advanced callers can use the control-substep variant below.
|
|
33
|
+
*
|
|
31
34
|
* @param state - Mutable state object to update in-place.
|
|
32
35
|
* @param rng - Random source used to spawn pipes.
|
|
33
36
|
* @param flap - If true, applies an upward velocity impulse.
|
|
34
37
|
* @param difficultyScale - Curriculum difficulty scale in [0, 1].
|
|
38
|
+
* @returns Nothing.
|
|
35
39
|
*/
|
|
36
40
|
export function stepFlappyState(
|
|
37
41
|
state: FlappyGameState,
|
|
@@ -54,6 +58,14 @@ export function stepFlappyState(
|
|
|
54
58
|
* This allows policies to react multiple times before `frameIndex` advances,
|
|
55
59
|
* improving responsiveness in high-difficulty scenarios.
|
|
56
60
|
*
|
|
61
|
+
* Educational note:
|
|
62
|
+
* Splitting a logical frame into smaller control steps is a simple numerical
|
|
63
|
+
* stability trick. It reduces the chance that fast pipes or large velocity
|
|
64
|
+
* updates make the environment feel artificially coarse.
|
|
65
|
+
*
|
|
66
|
+
* For background reading, the Wikipedia article on "numerical integration"
|
|
67
|
+
* provides the general idea behind updating continuous motion in small steps.
|
|
68
|
+
*
|
|
57
69
|
* @param state - Mutable state object to update in-place.
|
|
58
70
|
* @param rng - Random source used to spawn pipes.
|
|
59
71
|
* @param shouldFlapForSubstep - Callback deciding flap action per substep.
|
|
@@ -70,7 +82,7 @@ export function stepFlappyStateWithControlSubsteps(
|
|
|
70
82
|
): void {
|
|
71
83
|
if (state.done) return;
|
|
72
84
|
|
|
73
|
-
const difficultyProfile =
|
|
85
|
+
const difficultyProfile = resolveAdaptiveDifficultyProfile(
|
|
74
86
|
state.pipesPassed,
|
|
75
87
|
difficultyScale,
|
|
76
88
|
);
|
|
@@ -105,12 +117,12 @@ export function stepFlappyStateWithControlSubsteps(
|
|
|
105
117
|
|
|
106
118
|
state.framesUntilNextPipeSpawn -= substepDelta;
|
|
107
119
|
if (state.framesUntilNextPipeSpawn <= 0) {
|
|
108
|
-
const nextGapSizePx =
|
|
120
|
+
const nextGapSizePx = resolveNextSpawnGapSize(
|
|
109
121
|
state.lastSpawnedPipeGapPx,
|
|
110
122
|
difficultyProfile,
|
|
111
123
|
rng,
|
|
112
124
|
);
|
|
113
|
-
const nextSpawnIntervalFrames =
|
|
125
|
+
const nextSpawnIntervalFrames = resolveNextSpawnIntervalFrames(
|
|
114
126
|
state.lastSpawnedPipeSpawnIntervalFrames,
|
|
115
127
|
difficultyProfile,
|
|
116
128
|
);
|
|
@@ -145,66 +157,3 @@ export function stepFlappyStateWithControlSubsteps(
|
|
|
145
157
|
state.doneReason = 'timeout';
|
|
146
158
|
}
|
|
147
159
|
}
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Resolves adaptive difficulty parameters from current progress.
|
|
151
|
-
*
|
|
152
|
-
* @param pipesPassed - Number of pipes passed by the active bird.
|
|
153
|
-
* @param difficultyScale - Curriculum difficulty scale in [0, 1].
|
|
154
|
-
* @returns Runtime difficulty profile.
|
|
155
|
-
*/
|
|
156
|
-
function resolveDifficultyProfile(
|
|
157
|
-
pipesPassed: number,
|
|
158
|
-
difficultyScale: FlappyDifficultyScale = FLAPPY_ENVIRONMENT_DEFAULT_DIFFICULTY_SCALE,
|
|
159
|
-
): {
|
|
160
|
-
pipeGapPx: number;
|
|
161
|
-
pipeSpeedPxPerFrame: number;
|
|
162
|
-
pipeSpawnIntervalFrames: number;
|
|
163
|
-
} {
|
|
164
|
-
return resolveAdaptiveDifficultyProfile(pipesPassed, difficultyScale);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Resolve the next spawned pipe gap with progressive wide-to-hard shrink and jitter.
|
|
169
|
-
*
|
|
170
|
-
* @param previousSpawnGapPx - Most recently spawned gap size.
|
|
171
|
-
* @param difficultyProfile - Current adaptive profile.
|
|
172
|
-
* @param rng - Random source.
|
|
173
|
-
* @returns Gap size for the next pipe.
|
|
174
|
-
*/
|
|
175
|
-
function resolveLocalNextSpawnGapSize(
|
|
176
|
-
previousSpawnGapPx: number | undefined,
|
|
177
|
-
difficultyProfile: {
|
|
178
|
-
pipeGapPx: number;
|
|
179
|
-
pipeSpeedPxPerFrame: number;
|
|
180
|
-
pipeSpawnIntervalFrames: number;
|
|
181
|
-
},
|
|
182
|
-
rng: FlappyRng,
|
|
183
|
-
): number {
|
|
184
|
-
return resolveNextSpawnGapSize(
|
|
185
|
-
previousSpawnGapPx,
|
|
186
|
-
difficultyProfile as SharedDifficultyProfile,
|
|
187
|
-
rng,
|
|
188
|
-
);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Resolve the next spawned pipe interval with progressive wide-to-hard shrink.
|
|
193
|
-
*
|
|
194
|
-
* @param previousSpawnIntervalFrames - Most recently spawned interval.
|
|
195
|
-
* @param difficultyProfile - Current adaptive profile.
|
|
196
|
-
* @returns Spawn interval for the next pipe.
|
|
197
|
-
*/
|
|
198
|
-
function resolveLocalNextSpawnIntervalFrames(
|
|
199
|
-
previousSpawnIntervalFrames: number | undefined,
|
|
200
|
-
difficultyProfile: {
|
|
201
|
-
pipeGapPx: number;
|
|
202
|
-
pipeSpeedPxPerFrame: number;
|
|
203
|
-
pipeSpawnIntervalFrames: number;
|
|
204
|
-
},
|
|
205
|
-
): number {
|
|
206
|
-
return resolveNextSpawnIntervalFrames(
|
|
207
|
-
previousSpawnIntervalFrames,
|
|
208
|
-
difficultyProfile as SharedDifficultyProfile,
|
|
209
|
-
);
|
|
210
|
-
}
|
|
@@ -5,6 +5,9 @@ import type { SharedObservationFeatures } from '../flappy.simulation.shared.util
|
|
|
5
5
|
*
|
|
6
6
|
* Pipes move from right to left. The bird scores once per pipe when the pipe
|
|
7
7
|
* completely crosses the bird x-position.
|
|
8
|
+
*
|
|
9
|
+
* This is the environment-owned pipe state, distinct from the packed snapshot
|
|
10
|
+
* transport shapes used by the browser worker.
|
|
8
11
|
*/
|
|
9
12
|
export interface FlappyPipe {
|
|
10
13
|
/** Horizontal position of the left edge (pixels). */
|
|
@@ -22,6 +25,9 @@ export interface FlappyPipe {
|
|
|
22
25
|
|
|
23
26
|
/**
|
|
24
27
|
* Bird kinematic state for one simulation frame.
|
|
28
|
+
*
|
|
29
|
+
* The environment keeps only the minimum physics state needed to advance the
|
|
30
|
+
* episode: vertical position and vertical velocity.
|
|
25
31
|
*/
|
|
26
32
|
export interface FlappyBird {
|
|
27
33
|
/** Vertical position (pixels). */
|
|
@@ -33,6 +39,11 @@ export interface FlappyBird {
|
|
|
33
39
|
|
|
34
40
|
/**
|
|
35
41
|
* Full simulation state for one Flappy episode.
|
|
42
|
+
*
|
|
43
|
+
* Educational note:
|
|
44
|
+
* This is the canonical single-episode world state used by evaluation and some
|
|
45
|
+
* trainer-facing helpers. It is intentionally compact so stepping the world is
|
|
46
|
+
* deterministic and easy to inspect.
|
|
36
47
|
*/
|
|
37
48
|
export interface FlappyGameState {
|
|
38
49
|
/** Current frame counter (0-based). */
|
|
@@ -84,5 +95,8 @@ export type FlappyObservationFeatures = SharedObservationFeatures;
|
|
|
84
95
|
*
|
|
85
96
|
* - `0` means easiest profile (wide gaps, slower pipes).
|
|
86
97
|
* - `1` means fully adaptive profile based on passed pipes.
|
|
98
|
+
*
|
|
99
|
+
* Values between `0` and `1` interpolate between those extremes, which lets the
|
|
100
|
+
* trainer or environment caller dial curriculum strength continuously.
|
|
87
101
|
*/
|
|
88
102
|
export type FlappyDifficultyScale = number;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# evaluation
|
|
2
|
+
|
|
3
|
+
## evaluation/evaluation.types.ts
|
|
4
|
+
|
|
5
|
+
### FlappyEpisodeResult
|
|
6
|
+
|
|
7
|
+
Summary metrics for a single Flappy episode rollout.
|
|
8
|
+
|
|
9
|
+
The result intentionally keeps both a single scalar `fitness` and the channel
|
|
10
|
+
breakdown that produced it, which makes reward debugging much easier.
|
|
11
|
+
|
|
12
|
+
### FlappyNetworkLike
|
|
13
|
+
|
|
14
|
+
Minimal network contract required by Flappy evaluation.
|
|
15
|
+
|
|
16
|
+
The evaluation layer depends only on activation plus an optional stable id
|
|
17
|
+
used for deterministic seed mixing.
|
|
18
|
+
|
|
19
|
+
### FlappyRolloutOptions
|
|
20
|
+
|
|
21
|
+
Runtime controls for one rollout evaluation.
|
|
22
|
+
|
|
23
|
+
This is the public control surface for evaluation callers. The rollout layer
|
|
24
|
+
later normalizes these options into execution-safe context values.
|
|
25
|
+
|
|
26
|
+
### FlappySeedBatchEvaluation
|
|
27
|
+
|
|
28
|
+
Aggregate statistics from evaluating one network across shared seeds.
|
|
29
|
+
|
|
30
|
+
These statistics are the trainer-facing view of evaluation quality: mean,
|
|
31
|
+
median, $p90$, stability, and average gameplay progress.
|
|
32
|
+
|
|
33
|
+
## evaluation/evaluation.constants.ts
|
|
34
|
+
|
|
35
|
+
### evaluation.constants
|
|
36
|
+
|
|
37
|
+
Default difficulty scale for rollouts when caller does not provide one.
|
|
38
|
+
|
|
39
|
+
A value of `1` means full adaptive difficulty is enabled during evaluation.
|
|
40
|
+
|
|
41
|
+
### FLAPPY_EVALUATION_DEFAULT_DIFFICULTY_SCALE
|
|
42
|
+
|
|
43
|
+
### FLAPPY_EVALUATION_DEFAULT_EARLY_TERMINATION_CONSECUTIVE_FRAMES
|
|
44
|
+
|
|
45
|
+
### FLAPPY_EVALUATION_DEFAULT_EARLY_TERMINATION_GRACE_FRAMES
|
|
46
|
+
|
|
47
|
+
### FLAPPY_EVALUATION_DEFAULT_PIPE_PROGRESS_TARGET
|
|
48
|
+
|
|
49
|
+
### FLAPPY_EVALUATION_DENSE_SHAPING_FRAMES_NORMALIZER
|
|
50
|
+
|
|
51
|
+
### FLAPPY_EVALUATION_NORMALIZED_DENSE_WEIGHT
|
|
52
|
+
|
|
53
|
+
### FLAPPY_EVALUATION_NORMALIZED_PROGRESS_WEIGHT
|
|
54
|
+
|
|
55
|
+
### FLAPPY_EVALUATION_NORMALIZED_SURVIVAL_WEIGHT
|
|
56
|
+
|
|
57
|
+
### FLAPPY_EVALUATION_NORMALIZED_TERMINAL_WEIGHT
|
|
58
|
+
|
|
59
|
+
### FLAPPY_EVALUATION_ROBUST_STDDEV_PENALTY
|
|
60
|
+
|
|
61
|
+
### FLAPPY_EVALUATION_SEED_MIX_MULTIPLIER_A
|
|
62
|
+
|
|
63
|
+
### FLAPPY_EVALUATION_SEED_MIX_MULTIPLIER_B
|
|
64
|
+
|
|
65
|
+
### FLAPPY_EVALUATION_SEED_MIX_XOR_SALT
|
|
66
|
+
|
|
67
|
+
### FLAPPY_EVALUATION_UNRECOVERABLE_ABOVE_GAP_DELTA
|
|
68
|
+
|
|
69
|
+
### FLAPPY_EVALUATION_UNRECOVERABLE_BELOW_GAP_DELTA
|
|
70
|
+
|
|
71
|
+
### FLAPPY_EVALUATION_UNRECOVERABLE_CLEARANCE_THRESHOLD
|
|
72
|
+
|
|
73
|
+
### FLAPPY_EVALUATION_UNRECOVERABLE_FALLING_VELOCITY
|
|
74
|
+
|
|
75
|
+
### FLAPPY_EVALUATION_UNRECOVERABLE_RISING_VELOCITY
|
|
76
|
+
|
|
77
|
+
## evaluation/evaluation.rollout.service.ts
|
|
78
|
+
|
|
79
|
+
### evaluation.rollout.service
|
|
80
|
+
|
|
81
|
+
Public rollout compatibility facade.
|
|
82
|
+
|
|
83
|
+
Keeping this file at the evaluation layer preserves the established import
|
|
84
|
+
path while the actual rollout orchestration lives behind the dedicated
|
|
85
|
+
rollout-owned module boundary.
|
|
86
|
+
|
|
87
|
+
This is the public evaluation-layer shelf for callers that should not need to
|
|
88
|
+
know about the rollout subfolder layout.
|
|
89
|
+
|
|
90
|
+
### rolloutEpisode
|
|
91
|
+
|
|
92
|
+
`(network: import("test/examples/flappy_bird/evaluation/evaluation.types").FlappyNetworkLike, rolloutOptions: import("test/examples/flappy_bird/evaluation/evaluation.types").FlappyRolloutOptions) => import("test/examples/flappy_bird/evaluation/evaluation.types").FlappyEpisodeResult`
|
|
93
|
+
|
|
94
|
+
Roll out an episode and return details.
|
|
95
|
+
|
|
96
|
+
Parameters:
|
|
97
|
+
- `network` - - Genome/network to evaluate.
|
|
98
|
+
- `rolloutOptions` - - Optional rollout controls.
|
|
99
|
+
|
|
100
|
+
Returns: Episode result details.
|
|
101
|
+
|
|
102
|
+
## evaluation/evaluation.seed.utils.ts
|
|
103
|
+
|
|
104
|
+
### mixGenomeEvaluationSeed
|
|
105
|
+
|
|
106
|
+
`(genomeId: number) => number`
|
|
107
|
+
|
|
108
|
+
Mixes a genome identifier into a stable uint32 rollout seed.
|
|
109
|
+
|
|
110
|
+
This keeps evaluation deterministic per genome while still spreading nearby
|
|
111
|
+
genome ids across the RNG state space to reduce correlated rollouts.
|
|
112
|
+
|
|
113
|
+
If you want background reading, the Wikipedia article on "hash function"
|
|
114
|
+
gives a reasonable intuition for why a few avalanche-style mixing steps help
|
|
115
|
+
nearby ids map to less-correlated seed values.
|
|
116
|
+
|
|
117
|
+
Parameters:
|
|
118
|
+
- `genomeId` - - Genome id from NEAT bookkeeping.
|
|
119
|
+
|
|
120
|
+
Returns: Mixed uint32 seed.
|
|
121
|
+
|
|
122
|
+
## evaluation/evaluation.fitness.utils.ts
|
|
123
|
+
|
|
124
|
+
### evaluateFlappyFitness
|
|
125
|
+
|
|
126
|
+
`(network: import("test/examples/flappy_bird/evaluation/evaluation.types").FlappyNetworkLike, rolloutOptions: import("test/examples/flappy_bird/evaluation/evaluation.types").FlappyRolloutOptions) => number`
|
|
127
|
+
|
|
128
|
+
Evaluate a network on a single deterministic Flappy Bird episode.
|
|
129
|
+
|
|
130
|
+
This is the simplest evaluation entrypoint: one policy, one rollout, one
|
|
131
|
+
scalar fitness.
|
|
132
|
+
|
|
133
|
+
Parameters:
|
|
134
|
+
- `network` - - Genome/network to evaluate.
|
|
135
|
+
- `rolloutOptions` - - Optional rollout controls.
|
|
136
|
+
|
|
137
|
+
Returns: Fitness score (higher is better).
|
|
138
|
+
|
|
139
|
+
### evaluateFlappyFitnessAcrossSeeds
|
|
140
|
+
|
|
141
|
+
`(network: import("test/examples/flappy_bird/evaluation/evaluation.types").FlappyNetworkLike, sharedSeeds: readonly number[], rolloutOptions: import("test/examples/flappy_bird/evaluation/evaluation.types").FlappyRolloutOptions) => import("test/examples/flappy_bird/evaluation/evaluation.types").FlappySeedBatchEvaluation`
|
|
142
|
+
|
|
143
|
+
Evaluate a network on a shared batch of deterministic seeds.
|
|
144
|
+
|
|
145
|
+
Educational note:
|
|
146
|
+
Shared-seed evaluation reduces luck. Every genome in the same comparison set
|
|
147
|
+
sees the same rollout seeds, which makes the aggregate statistics much more
|
|
148
|
+
useful for selection than a single lucky episode.
|
|
149
|
+
|
|
150
|
+
Parameters:
|
|
151
|
+
- `network` - - Genome/network to evaluate.
|
|
152
|
+
- `sharedSeeds` - - Shared deterministic seeds used for all genomes.
|
|
153
|
+
- `rolloutOptions` - - Optional rollout controls.
|
|
154
|
+
|
|
155
|
+
Returns: Robust aggregate metrics for selection/ranking.
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Default difficulty scale for rollouts when caller does not provide one.
|
|
3
|
+
*
|
|
4
|
+
* A value of `1` means full adaptive difficulty is enabled during evaluation.
|
|
5
|
+
*/
|
|
2
6
|
export const FLAPPY_EVALUATION_DEFAULT_DIFFICULTY_SCALE = 1;
|
|
3
7
|
|
|
4
8
|
/** Default grace period (frames) before early termination checks begin. */
|
|
@@ -7,7 +11,12 @@ export const FLAPPY_EVALUATION_DEFAULT_EARLY_TERMINATION_GRACE_FRAMES = 160;
|
|
|
7
11
|
/** Default consecutive unrecoverable frames required for early termination. */
|
|
8
12
|
export const FLAPPY_EVALUATION_DEFAULT_EARLY_TERMINATION_CONSECUTIVE_FRAMES = 24;
|
|
9
13
|
|
|
10
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Default pipe-progress target used when normalizing rollout fitness.
|
|
16
|
+
*
|
|
17
|
+
* This target anchors the progress channel so normalization remains meaningful
|
|
18
|
+
* even when individual episodes vary widely in difficulty and duration.
|
|
19
|
+
*/
|
|
11
20
|
export const FLAPPY_EVALUATION_DEFAULT_PIPE_PROGRESS_TARGET = 20;
|
|
12
21
|
|
|
13
22
|
/** Dense shaping normalization factor per survived frame. */
|
|
@@ -25,7 +34,12 @@ export const FLAPPY_EVALUATION_NORMALIZED_DENSE_WEIGHT = 1_200;
|
|
|
25
34
|
/** Terminal-shaping channel weight in normalized fitness composition. */
|
|
26
35
|
export const FLAPPY_EVALUATION_NORMALIZED_TERMINAL_WEIGHT = 600;
|
|
27
36
|
|
|
28
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* Robust fitness penalty multiplier applied to standard deviation.
|
|
39
|
+
*
|
|
40
|
+
* A higher value penalizes instability more strongly when computing robust
|
|
41
|
+
* fitness from a shared-seed batch.
|
|
42
|
+
*/
|
|
29
43
|
export const FLAPPY_EVALUATION_ROBUST_STDDEV_PENALTY = 0.35;
|
|
30
44
|
|
|
31
45
|
/** Unrecoverable clearance threshold used by early termination heuristic. */
|
|
@@ -43,7 +57,12 @@ export const FLAPPY_EVALUATION_UNRECOVERABLE_ABOVE_GAP_DELTA = -0.45;
|
|
|
43
57
|
/** Rising-speed threshold used by early termination heuristic. */
|
|
44
58
|
export const FLAPPY_EVALUATION_UNRECOVERABLE_RISING_VELOCITY = -0.5;
|
|
45
59
|
|
|
46
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* Seed-mix additive constant used to decorrelate nearby genome ids.
|
|
62
|
+
*
|
|
63
|
+
* Together with the multiplicative constants below, this creates a small
|
|
64
|
+
* avalanche-style mixing pipeline for deterministic seed derivation.
|
|
65
|
+
*/
|
|
47
66
|
export const FLAPPY_EVALUATION_SEED_MIX_XOR_SALT = 0x9e3779b9;
|
|
48
67
|
|
|
49
68
|
/** Seed-mix first multiplicative avalanche constant. */
|
|
@@ -9,11 +9,14 @@ import {
|
|
|
9
9
|
computeMean,
|
|
10
10
|
computePercentile,
|
|
11
11
|
computePopulationStandardDeviation,
|
|
12
|
-
} from '
|
|
12
|
+
} from '../flappy.simulation.shared.utils';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Evaluate a network on a single deterministic Flappy Bird episode.
|
|
16
16
|
*
|
|
17
|
+
* This is the simplest evaluation entrypoint: one policy, one rollout, one
|
|
18
|
+
* scalar fitness.
|
|
19
|
+
*
|
|
17
20
|
* @param network - Genome/network to evaluate.
|
|
18
21
|
* @param rolloutOptions - Optional rollout controls.
|
|
19
22
|
* @returns Fitness score (higher is better).
|
|
@@ -28,6 +31,18 @@ export function evaluateFlappyFitness(
|
|
|
28
31
|
/**
|
|
29
32
|
* Evaluate a network on a shared batch of deterministic seeds.
|
|
30
33
|
*
|
|
34
|
+
* Educational note:
|
|
35
|
+
* Shared-seed evaluation reduces luck. Every genome in the same comparison set
|
|
36
|
+
* sees the same rollout seeds, which makes the aggregate statistics much more
|
|
37
|
+
* useful for selection than a single lucky episode.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* const aggregate = evaluateFlappyFitnessAcrossSeeds(network, [11, 22, 33], {
|
|
42
|
+
* normalizeFitness: true,
|
|
43
|
+
* });
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
31
46
|
* @param network - Genome/network to evaluate.
|
|
32
47
|
* @param sharedSeeds - Shared deterministic seeds used for all genomes.
|
|
33
48
|
* @param rolloutOptions - Optional rollout controls.
|