@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
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
/// <reference lib="webworker" />
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Browser-worker entrypoint for the Flappy Bird example.
|
|
5
|
+
*
|
|
6
|
+
* This file is intentionally tiny. Its job is only to establish the Web Worker
|
|
7
|
+
* bundle boundary and delegate all real protocol, evolution, and playback logic
|
|
8
|
+
* to the dedicated `flappy-evolution-worker/` folder.
|
|
9
|
+
*/
|
|
3
10
|
import './flappy-evolution-worker/flappy-evolution-worker';
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Flappy Bird example exports.
|
|
3
3
|
*
|
|
4
|
-
* This folder contains a
|
|
5
|
-
*
|
|
4
|
+
* This folder contains a Flappy Bird control environment, a deterministic
|
|
5
|
+
* evaluation pipeline, and a browser/worker playback stack built on top of this
|
|
6
|
+
* repository's NeatapticTS implementation.
|
|
7
|
+
*
|
|
8
|
+
* Educational note:
|
|
9
|
+
* Treat this file as the example's "public shelf." It re-exports the pieces a
|
|
10
|
+
* learner is most likely to reach for first: constants, random utilities,
|
|
11
|
+
* environment stepping, and evaluation helpers.
|
|
6
12
|
*/
|
|
7
13
|
|
|
8
14
|
export * from './constants/constants';
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Using a local RNG keeps evaluations reproducible regardless of global
|
|
5
5
|
* `Math.random()` state and makes comparisons between genomes more stable.
|
|
6
|
+
*
|
|
7
|
+
* If you want background reading, the Wikipedia article on "Xorshift" explains
|
|
8
|
+
* the family of lightweight PRNGs this file uses.
|
|
6
9
|
*/
|
|
7
10
|
|
|
8
11
|
/** Minimal interface needed by the simulation to sample randomness. */
|
|
@@ -21,12 +24,19 @@ export interface FlappyRng {
|
|
|
21
24
|
/**
|
|
22
25
|
* Create a deterministic xorshift32 RNG.
|
|
23
26
|
*
|
|
27
|
+
* Educational note:
|
|
28
|
+
* A tiny local PRNG is enough for this example because the main requirement is
|
|
29
|
+
* repeatability, not cryptographic security. The same seed produces the same
|
|
30
|
+
* pipe sequence, which makes training runs and regression debugging comparable.
|
|
31
|
+
*
|
|
24
32
|
* @param seed - Unsigned 32-bit seed.
|
|
25
33
|
* @returns RNG instance.
|
|
26
34
|
*
|
|
27
35
|
* @example
|
|
36
|
+
* ```ts
|
|
28
37
|
* const rng = createXorshift32(123);
|
|
29
38
|
* rng.nextFloat01();
|
|
39
|
+
* ```
|
|
30
40
|
*/
|
|
31
41
|
export function createXorshift32(seed: number): FlappyRng {
|
|
32
42
|
let state = toUint32(seed) || 0x6d2b79f5;
|
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
# simulation-shared
|
|
2
|
+
|
|
3
|
+
## simulation-shared/simulation-shared.types.ts
|
|
4
|
+
|
|
5
|
+
### simulation-shared.types
|
|
6
|
+
|
|
7
|
+
Minimal deterministic random contract used by shared spawn helpers.
|
|
8
|
+
|
|
9
|
+
The shared layer keeps its RNG contract intentionally small so the same spawn
|
|
10
|
+
helpers can work with both Node-side and browser-side deterministic sources.
|
|
11
|
+
|
|
12
|
+
### SharedDifficultyProfile
|
|
13
|
+
|
|
14
|
+
Shared runtime difficulty profile used by browser and environment simulators.
|
|
15
|
+
|
|
16
|
+
By projecting difficulty into one plain object, the example can keep
|
|
17
|
+
curriculum logic independent from rendering, evaluation, and worker runtime
|
|
18
|
+
concerns.
|
|
19
|
+
|
|
20
|
+
### SharedObservationFeatures
|
|
21
|
+
|
|
22
|
+
Structured observation features for network input.
|
|
23
|
+
|
|
24
|
+
Educational note:
|
|
25
|
+
These features make the policy input interpretable. The example does not feed
|
|
26
|
+
raw pixels into NEAT; it feeds geometric signals such as distance to the next
|
|
27
|
+
pipe, corridor clearance, and urgency of recovering to the gap center.
|
|
28
|
+
|
|
29
|
+
### SharedObservationInput
|
|
30
|
+
|
|
31
|
+
Input shape for observation-feature synthesis.
|
|
32
|
+
|
|
33
|
+
This object is the raw world snapshot from which normalized features are
|
|
34
|
+
derived. It intentionally separates world geometry from the later feature
|
|
35
|
+
projection step.
|
|
36
|
+
|
|
37
|
+
### SharedObservationMemoryState
|
|
38
|
+
|
|
39
|
+
Mutable temporal memory attached to one policy-controlled bird.
|
|
40
|
+
|
|
41
|
+
The memory stores recent core observation frames and recent action history,
|
|
42
|
+
allowing feedforward policies to consume short-term context without adding
|
|
43
|
+
recurrent connections.
|
|
44
|
+
|
|
45
|
+
If you want background reading, the Wikipedia article on "frame stacking"
|
|
46
|
+
captures the basic idea of giving a feed-forward policy a short motion trail
|
|
47
|
+
instead of full recurrent state.
|
|
48
|
+
|
|
49
|
+
### SharedPipeLike
|
|
50
|
+
|
|
51
|
+
Common pipe shape consumed by observation helpers.
|
|
52
|
+
|
|
53
|
+
This is the narrowest useful pipe contract for feature synthesis: horizontal
|
|
54
|
+
position plus the vertical gap geometry seen by the bird.
|
|
55
|
+
|
|
56
|
+
### SharedRngLike
|
|
57
|
+
|
|
58
|
+
Minimal deterministic random contract used by shared spawn helpers.
|
|
59
|
+
|
|
60
|
+
The shared layer keeps its RNG contract intentionally small so the same spawn
|
|
61
|
+
helpers can work with both Node-side and browser-side deterministic sources.
|
|
62
|
+
|
|
63
|
+
## simulation-shared/simulation-shared.errors.ts
|
|
64
|
+
|
|
65
|
+
### simulation-shared.errors
|
|
66
|
+
|
|
67
|
+
Prefix used when formatting unexpected shared-simulation errors.
|
|
68
|
+
|
|
69
|
+
A stable prefix makes logs easier to scan when multiple Flappy subsystems are
|
|
70
|
+
emitting diagnostics.
|
|
71
|
+
|
|
72
|
+
### FLAPPY_SHARED_SIMULATION_ERROR_PREFIX
|
|
73
|
+
|
|
74
|
+
### formatSharedSimulationErrorMessage
|
|
75
|
+
|
|
76
|
+
`(error: unknown) => string`
|
|
77
|
+
|
|
78
|
+
Formats unknown shared-simulation errors for stable logs.
|
|
79
|
+
|
|
80
|
+
Shared utilities are used from several runtime contexts, so this helper keeps
|
|
81
|
+
the error surface human-readable even when the thrown value is not an
|
|
82
|
+
`Error` instance.
|
|
83
|
+
|
|
84
|
+
Parameters:
|
|
85
|
+
- `error` - - Unknown error value.
|
|
86
|
+
|
|
87
|
+
Returns: Readable error message.
|
|
88
|
+
|
|
89
|
+
## simulation-shared/simulation-shared.constants.ts
|
|
90
|
+
|
|
91
|
+
### simulation-shared.constants
|
|
92
|
+
|
|
93
|
+
Default curriculum scale used when callers do not provide one.
|
|
94
|
+
|
|
95
|
+
A value of `1` means full adaptive difficulty behavior is enabled.
|
|
96
|
+
|
|
97
|
+
### FLAPPY_SHARED_DEFAULT_DIFFICULTY_SCALE
|
|
98
|
+
|
|
99
|
+
### FLAPPY_SHARED_DEFAULT_NORMALIZATION_EPSILON
|
|
100
|
+
|
|
101
|
+
## simulation-shared/simulation-shared.math.utils.ts
|
|
102
|
+
|
|
103
|
+
### simulation-shared.math.utils
|
|
104
|
+
|
|
105
|
+
Clamps a numeric value to the inclusive `[min, max]` interval.
|
|
106
|
+
|
|
107
|
+
@param value - Candidate value.
|
|
108
|
+
@param min - Inclusive lower bound.
|
|
109
|
+
@param max - Inclusive upper bound.
|
|
110
|
+
@returns Clamped value.
|
|
111
|
+
|
|
112
|
+
### clamp
|
|
113
|
+
|
|
114
|
+
`(value: number, min: number, max: number) => number`
|
|
115
|
+
|
|
116
|
+
Internal clamp primitive.
|
|
117
|
+
|
|
118
|
+
Parameters:
|
|
119
|
+
- `value` - - Candidate value.
|
|
120
|
+
- `min` - - Inclusive lower bound.
|
|
121
|
+
- `max` - - Inclusive upper bound.
|
|
122
|
+
|
|
123
|
+
Returns: Clamped value.
|
|
124
|
+
|
|
125
|
+
### clamp01
|
|
126
|
+
|
|
127
|
+
`(value: number) => number`
|
|
128
|
+
|
|
129
|
+
Clamps a numeric value to the inclusive `[0, 1]` interval.
|
|
130
|
+
|
|
131
|
+
Parameters:
|
|
132
|
+
- `value` - - Candidate value.
|
|
133
|
+
|
|
134
|
+
Returns: Value clamped between 0 and 1.
|
|
135
|
+
|
|
136
|
+
### clampValue
|
|
137
|
+
|
|
138
|
+
`(value: number, min: number, max: number) => number`
|
|
139
|
+
|
|
140
|
+
Clamps a numeric value to the inclusive `[min, max]` interval.
|
|
141
|
+
|
|
142
|
+
Parameters:
|
|
143
|
+
- `value` - - Candidate value.
|
|
144
|
+
- `min` - - Inclusive lower bound.
|
|
145
|
+
- `max` - - Inclusive upper bound.
|
|
146
|
+
|
|
147
|
+
Returns: Clamped value.
|
|
148
|
+
|
|
149
|
+
### interpolateValue
|
|
150
|
+
|
|
151
|
+
`(startValue: number, endValue: number, progress: number) => number`
|
|
152
|
+
|
|
153
|
+
Linear interpolation helper.
|
|
154
|
+
|
|
155
|
+
Parameters:
|
|
156
|
+
- `startValue` - - Start value at progress `0`.
|
|
157
|
+
- `endValue` - - End value at progress `1`.
|
|
158
|
+
- `progress` - - Normalized interpolation progress.
|
|
159
|
+
|
|
160
|
+
Returns: Interpolated value.
|
|
161
|
+
|
|
162
|
+
## simulation-shared/simulation-shared.spawn.utils.ts
|
|
163
|
+
|
|
164
|
+
### resolveNextSpawnGapCenterY
|
|
165
|
+
|
|
166
|
+
`(previousGapCenterYPx: number, rng: import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedRngLike, maximumGapCenterYPx: number) => number`
|
|
167
|
+
|
|
168
|
+
Resolves next gap center with bounded per-pipe delta.
|
|
169
|
+
|
|
170
|
+
Educational note:
|
|
171
|
+
Consecutive gaps are deliberately constrained to avoid unfair zig-zag jumps.
|
|
172
|
+
The environment should still be challenging, but it should not demand an
|
|
173
|
+
impossible vertical correction from one pipe to the next.
|
|
174
|
+
|
|
175
|
+
Parameters:
|
|
176
|
+
- `previousGapCenterYPx` - - Previous spawn gap center.
|
|
177
|
+
- `rng` - - Deterministic RNG.
|
|
178
|
+
- `maximumGapCenterYPx` - - Optional inclusive upper bound for smaller viewports.
|
|
179
|
+
|
|
180
|
+
Returns: Next gap center y-position.
|
|
181
|
+
|
|
182
|
+
### resolveNextSpawnGapSize
|
|
183
|
+
|
|
184
|
+
`(previousSpawnGapPx: number | undefined, difficultyProfile: import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedDifficultyProfile, rng: import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedRngLike) => number`
|
|
185
|
+
|
|
186
|
+
Resolves next spawn gap size using progressive shrink and jitter.
|
|
187
|
+
|
|
188
|
+
The gap starts wider than the current hardest target, then shrinks toward the
|
|
189
|
+
active difficulty profile with a small amount of deterministic jitter so runs
|
|
190
|
+
do not feel mechanically repetitive.
|
|
191
|
+
|
|
192
|
+
Parameters:
|
|
193
|
+
- `previousSpawnGapPx` - - Previous spawn gap size.
|
|
194
|
+
- `difficultyProfile` - - Active difficulty profile.
|
|
195
|
+
- `rng` - - Deterministic RNG.
|
|
196
|
+
|
|
197
|
+
Returns: Next spawn gap size.
|
|
198
|
+
|
|
199
|
+
### resolveNextSpawnIntervalFrames
|
|
200
|
+
|
|
201
|
+
`(previousSpawnIntervalFrames: number | undefined, difficultyProfile: import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedDifficultyProfile) => number`
|
|
202
|
+
|
|
203
|
+
Resolves next spawn interval using progressive shrink.
|
|
204
|
+
|
|
205
|
+
This mirrors the gap-size logic: early pipes are spaced more generously, then
|
|
206
|
+
spacing contracts toward the current difficulty target as the episode settles
|
|
207
|
+
into its harder rhythm.
|
|
208
|
+
|
|
209
|
+
Parameters:
|
|
210
|
+
- `previousSpawnIntervalFrames` - - Previous spawn interval.
|
|
211
|
+
- `difficultyProfile` - - Active difficulty profile.
|
|
212
|
+
|
|
213
|
+
Returns: Next spawn interval in frames.
|
|
214
|
+
|
|
215
|
+
### sampleGapCenterY
|
|
216
|
+
|
|
217
|
+
`(rng: import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedRngLike, maximumGapCenterYPx: number) => number`
|
|
218
|
+
|
|
219
|
+
Samples a random gap center y-position.
|
|
220
|
+
|
|
221
|
+
The sampled center is bounded so the resulting pipe gap always remains inside
|
|
222
|
+
the visible play area.
|
|
223
|
+
|
|
224
|
+
Parameters:
|
|
225
|
+
- `rng` - - Deterministic RNG.
|
|
226
|
+
- `maximumGapCenterYPx` - - Optional inclusive upper bound for smaller viewports.
|
|
227
|
+
|
|
228
|
+
Returns: Sampled y-position.
|
|
229
|
+
|
|
230
|
+
## simulation-shared/simulation-shared.memory.utils.ts
|
|
231
|
+
|
|
232
|
+
### commitSharedObservationMemoryStep
|
|
233
|
+
|
|
234
|
+
`(observationMemoryState: import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedObservationMemoryState, features: import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedObservationFeatures, didFlap: boolean) => void`
|
|
235
|
+
|
|
236
|
+
Commits one observation-action step into temporal memory.
|
|
237
|
+
|
|
238
|
+
The memory update happens after the decision is made so the next step can see
|
|
239
|
+
both the recent observation context and the action history that produced the
|
|
240
|
+
current trajectory.
|
|
241
|
+
|
|
242
|
+
Parameters:
|
|
243
|
+
- `observationMemoryState` - - Mutable temporal memory for the active bird.
|
|
244
|
+
- `features` - - Structured observation features used for the decision.
|
|
245
|
+
- `didFlap` - - Decision taken at this step.
|
|
246
|
+
|
|
247
|
+
Returns: Nothing.
|
|
248
|
+
|
|
249
|
+
### createSharedObservationMemoryState
|
|
250
|
+
|
|
251
|
+
`() => import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedObservationMemoryState`
|
|
252
|
+
|
|
253
|
+
Creates an empty temporal observation memory state.
|
|
254
|
+
|
|
255
|
+
Returns: Fresh mutable memory buffers for one bird/controller.
|
|
256
|
+
|
|
257
|
+
### resolvePreviousCoreFramesWithPadding
|
|
258
|
+
|
|
259
|
+
`(observationMemoryState: import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedObservationMemoryState) => number[][]`
|
|
260
|
+
|
|
261
|
+
Resolves previous core frames (newest-first) with deterministic zero padding.
|
|
262
|
+
|
|
263
|
+
Zero padding keeps the policy input width stable during the first few frames
|
|
264
|
+
of an episode before enough history has accumulated.
|
|
265
|
+
|
|
266
|
+
Parameters:
|
|
267
|
+
- `observationMemoryState` - - Mutable temporal memory for the active bird.
|
|
268
|
+
|
|
269
|
+
Returns: Previous core frame list with fixed target length.
|
|
270
|
+
|
|
271
|
+
### resolveTemporalObservationVector
|
|
272
|
+
|
|
273
|
+
`(features: import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedObservationFeatures, observationMemoryState: import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedObservationMemoryState) => number[]`
|
|
274
|
+
|
|
275
|
+
Builds the temporal policy input vector (stacked observation + action memory).
|
|
276
|
+
|
|
277
|
+
Educational note:
|
|
278
|
+
This helper turns an interpretable feature object into the exact flat vector a
|
|
279
|
+
feed-forward network consumes. That is why the output layout is documented so
|
|
280
|
+
explicitly: changing the order would change the meaning of every trained
|
|
281
|
+
weight in the policy.
|
|
282
|
+
|
|
283
|
+
Output layout:
|
|
284
|
+
1) current core observation frame
|
|
285
|
+
2) previous core frames (newest to oldest) with zero padding
|
|
286
|
+
3) last-action channel
|
|
287
|
+
4) recent flap-rate channel over a fixed window
|
|
288
|
+
|
|
289
|
+
Parameters:
|
|
290
|
+
- `features` - - Structured observation features for the current decision step.
|
|
291
|
+
- `observationMemoryState` - - Mutable temporal memory for the active bird.
|
|
292
|
+
|
|
293
|
+
Returns: Ordered temporal input vector for policy activation.
|
|
294
|
+
|
|
295
|
+
### resolveZeroCoreObservationFrame
|
|
296
|
+
|
|
297
|
+
`() => number[]`
|
|
298
|
+
|
|
299
|
+
Builds a zero-valued core frame with canonical length.
|
|
300
|
+
|
|
301
|
+
Returns: Zero core frame.
|
|
302
|
+
|
|
303
|
+
## simulation-shared/simulation-shared.control.utils.ts
|
|
304
|
+
|
|
305
|
+
### simulation-shared.control.utils
|
|
306
|
+
|
|
307
|
+
Resolves flap/no-flap decision from network outputs.
|
|
308
|
+
|
|
309
|
+
Educational note:
|
|
310
|
+
The shared control layer accepts both two-output competitive policies
|
|
311
|
+
(`no flap` vs `flap`) and simpler single-output thresholded policies. That
|
|
312
|
+
flexibility makes the helper reusable across experiments without forcing every
|
|
313
|
+
caller to reshape its outputs first.
|
|
314
|
+
|
|
315
|
+
@param rawOutputs - Activation output payload.
|
|
316
|
+
@param flapThreshold - Scalar threshold for single-output policies.
|
|
317
|
+
@returns True when flap should trigger.
|
|
318
|
+
|
|
319
|
+
### resolveFlapDecision
|
|
320
|
+
|
|
321
|
+
`(rawOutputs: unknown, flapThreshold: number) => boolean`
|
|
322
|
+
|
|
323
|
+
Resolves flap/no-flap decision from network outputs.
|
|
324
|
+
|
|
325
|
+
Educational note:
|
|
326
|
+
The shared control layer accepts both two-output competitive policies
|
|
327
|
+
(`no flap` vs `flap`) and simpler single-output thresholded policies. That
|
|
328
|
+
flexibility makes the helper reusable across experiments without forcing every
|
|
329
|
+
caller to reshape its outputs first.
|
|
330
|
+
|
|
331
|
+
Parameters:
|
|
332
|
+
- `rawOutputs` - - Activation output payload.
|
|
333
|
+
- `flapThreshold` - - Scalar threshold for single-output policies.
|
|
334
|
+
|
|
335
|
+
Returns: True when flap should trigger.
|
|
336
|
+
|
|
337
|
+
## simulation-shared/simulation-shared.difficulty.utils.ts
|
|
338
|
+
|
|
339
|
+
### resolveAdaptiveDifficultyProfile
|
|
340
|
+
|
|
341
|
+
`(pipesPassed: number, difficultyScale: number) => import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedDifficultyProfile`
|
|
342
|
+
|
|
343
|
+
Resolves adaptive difficulty profile from passed-pipe progress.
|
|
344
|
+
|
|
345
|
+
Educational note:
|
|
346
|
+
Difficulty is ramped as a smooth profile rather than as a sequence of hard
|
|
347
|
+
level jumps. That keeps the task readable for humans and less noisy for
|
|
348
|
+
evolution.
|
|
349
|
+
|
|
350
|
+
The idea is closely related to curriculum learning: easier versions of the
|
|
351
|
+
task dominate early, then the example interpolates toward the harder target
|
|
352
|
+
settings as progress increases.
|
|
353
|
+
|
|
354
|
+
Parameters:
|
|
355
|
+
- `pipesPassed` - - Number of passed pipes.
|
|
356
|
+
- `difficultyScale` - - Curriculum scale in `[0, 1]`.
|
|
357
|
+
|
|
358
|
+
Returns: Active difficulty profile.
|
|
359
|
+
|
|
360
|
+
## simulation-shared/simulation-shared.statistics.utils.ts
|
|
361
|
+
|
|
362
|
+
### compareNumbersAscending
|
|
363
|
+
|
|
364
|
+
`(leftValue: number, rightValue: number) => number`
|
|
365
|
+
|
|
366
|
+
Compares two numeric values in ascending order.
|
|
367
|
+
|
|
368
|
+
Parameters:
|
|
369
|
+
- `leftValue` - - Left numeric value.
|
|
370
|
+
- `rightValue` - - Right numeric value.
|
|
371
|
+
|
|
372
|
+
Returns: Comparator delta for `Array.prototype.toSorted`.
|
|
373
|
+
|
|
374
|
+
### computeMean
|
|
375
|
+
|
|
376
|
+
`(values: readonly number[]) => number`
|
|
377
|
+
|
|
378
|
+
Computes arithmetic mean for numeric samples.
|
|
379
|
+
|
|
380
|
+
Parameters:
|
|
381
|
+
- `values` - - Numeric samples.
|
|
382
|
+
|
|
383
|
+
Returns: Arithmetic mean.
|
|
384
|
+
|
|
385
|
+
### computePercentile
|
|
386
|
+
|
|
387
|
+
`(values: readonly number[], percentile: number) => number`
|
|
388
|
+
|
|
389
|
+
Computes percentile value via linear interpolation between nearest ranks.
|
|
390
|
+
|
|
391
|
+
Percentiles are useful in the trainer because they reveal whether strong
|
|
392
|
+
performance is broad across the population or concentrated in a single outlier.
|
|
393
|
+
|
|
394
|
+
Parameters:
|
|
395
|
+
- `values` - - Numeric samples.
|
|
396
|
+
- `percentile` - - Percentile in [0, 1].
|
|
397
|
+
|
|
398
|
+
Returns: Percentile value, or `Number.NaN` when `values` is empty.
|
|
399
|
+
|
|
400
|
+
### computePopulationStandardDeviation
|
|
401
|
+
|
|
402
|
+
`(values: readonly number[], meanValue: number) => number`
|
|
403
|
+
|
|
404
|
+
Computes population standard deviation.
|
|
405
|
+
|
|
406
|
+
This uses population variance rather than sample variance because the trainer
|
|
407
|
+
is summarizing the whole evolved population for that generation, not estimating
|
|
408
|
+
a larger hidden distribution from a subsample.
|
|
409
|
+
|
|
410
|
+
Parameters:
|
|
411
|
+
- `values` - - Numeric samples.
|
|
412
|
+
- `meanValue` - - Precomputed mean.
|
|
413
|
+
|
|
414
|
+
Returns: Population standard deviation.
|
|
415
|
+
|
|
416
|
+
## simulation-shared/simulation-shared.observation.utils.ts
|
|
417
|
+
|
|
418
|
+
### simulation-shared.observation.utils
|
|
419
|
+
|
|
420
|
+
Shared observation compatibility façade.
|
|
421
|
+
|
|
422
|
+
The observation implementation now lives under `simulation-shared/observation/`
|
|
423
|
+
so feature synthesis and vector projection can evolve behind a focused module
|
|
424
|
+
boundary. This file stays as the stable import path for existing callers.
|
|
425
|
+
|
|
426
|
+
That split keeps the high-level import path simple while allowing the
|
|
427
|
+
observation subsystem to grow into its own documented folder.
|
|
428
|
+
|
|
429
|
+
### resolveCoreObservationVectorFromFeatures
|
|
430
|
+
|
|
431
|
+
`(features: import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedObservationFeatures) => number[]`
|
|
432
|
+
|
|
433
|
+
Resolves the compact core vector used for temporal stacking.
|
|
434
|
+
|
|
435
|
+
The core intentionally keeps directly observed kinematic and geometric
|
|
436
|
+
channels while dropping derived one-step predictors that become redundant
|
|
437
|
+
once short-term temporal memory is available.
|
|
438
|
+
|
|
439
|
+
This is the representation used when the example wants a short history of raw
|
|
440
|
+
observation slices. The idea is similar to frame stacking in reinforcement
|
|
441
|
+
learning: a feed-forward policy can recover some sense of motion by looking
|
|
442
|
+
at several recent compact frames at once.
|
|
443
|
+
|
|
444
|
+
The Wikipedia article on "frame stacking" is a useful conceptual reference.
|
|
445
|
+
|
|
446
|
+
Parameters:
|
|
447
|
+
- `features` - - Structured observation features.
|
|
448
|
+
|
|
449
|
+
Returns: Core per-frame vector.
|
|
450
|
+
|
|
451
|
+
### resolveObservationFeatures
|
|
452
|
+
|
|
453
|
+
`(input: import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedObservationInput) => import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedObservationFeatures`
|
|
454
|
+
|
|
455
|
+
Builds the shared normalized observation feature set consumed by policies.
|
|
456
|
+
|
|
457
|
+
Educational note:
|
|
458
|
+
This helper stays focused on semantic feature assembly only. Projection into
|
|
459
|
+
the canonical network vectors now lives in the neighboring vector module so
|
|
460
|
+
observation policy and network-shape concerns can evolve independently.
|
|
461
|
+
|
|
462
|
+
The features deliberately mix three kinds of signal:
|
|
463
|
+
1. Current state, such as bird height and vertical velocity.
|
|
464
|
+
2. Near-term geometry, such as gap bounds and upcoming-pipe distances.
|
|
465
|
+
3. Simple forward-looking control hints, such as urgency and one-flap
|
|
466
|
+
reachability.
|
|
467
|
+
|
|
468
|
+
This is a compact example of feature engineering for control. Instead of
|
|
469
|
+
asking NEAT to rediscover basic geometry from raw sensory input, the example
|
|
470
|
+
hands the network semantically meaningful signals and lets evolution focus on
|
|
471
|
+
policy search.
|
|
472
|
+
|
|
473
|
+
For broader context, the Wikipedia article on "feature engineering" is a
|
|
474
|
+
good companion reference.
|
|
475
|
+
|
|
476
|
+
Parameters:
|
|
477
|
+
- `input` - - Observation input bundle.
|
|
478
|
+
|
|
479
|
+
Returns: Structured observation features.
|
|
480
|
+
|
|
481
|
+
### resolveObservationVectorFromFeatures
|
|
482
|
+
|
|
483
|
+
`(features: import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedObservationFeatures) => number[]`
|
|
484
|
+
|
|
485
|
+
Converts observation features to the canonical 12-value network input vector.
|
|
486
|
+
|
|
487
|
+
Educational note:
|
|
488
|
+
This module owns the network-shape projection so feature semantics can change
|
|
489
|
+
independently from how the policy input is ordered.
|
|
490
|
+
|
|
491
|
+
The 12-value vector is the compact feed-forward policy input used by the main
|
|
492
|
+
evaluation and training flow. Its ordering is stable on purpose: once a
|
|
493
|
+
network topology has evolved against one input layout, silent channel
|
|
494
|
+
reshuffles would invalidate learned behavior.
|
|
495
|
+
|
|
496
|
+
Parameters:
|
|
497
|
+
- `features` - - Structured feature object.
|
|
498
|
+
|
|
499
|
+
Returns: Ordered feature vector.
|
|
500
|
+
|
|
501
|
+
### resolveUpcomingPipes
|
|
502
|
+
|
|
503
|
+
`(pipes: import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedPipeLike[], birdCenterXPx: number, birdRadiusPx: number, pipeWidthPx: number) => [import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedPipeLike | undefined, import("test/examples/flappy_bird/simulation-shared/simulation-shared.types").SharedPipeLike | undefined]`
|
|
504
|
+
|
|
505
|
+
Resolves the next two upcoming pipes in front of the bird.
|
|
506
|
+
|
|
507
|
+
The observation pipeline only cares about the immediate near future, because
|
|
508
|
+
Flappy Bird decisions are dominated by the next gap and the transition after
|
|
509
|
+
it. Looking further ahead adds noise faster than it adds useful control
|
|
510
|
+
signal.
|
|
511
|
+
|
|
512
|
+
Parameters:
|
|
513
|
+
- `pipes` - - Current pipe list.
|
|
514
|
+
- `birdCenterXPx` - - Bird center x-position.
|
|
515
|
+
- `birdRadiusPx` - - Bird radius.
|
|
516
|
+
- `pipeWidthPx` - - Pipe width.
|
|
517
|
+
|
|
518
|
+
Returns: Tuple of first and second upcoming pipes.
|