Skip to main content

Legacy & Experimental Scheduler Variants

The repository contains several additional scheduler implementations alongside the production smart-scheduler.js. They document the evolution of the engine and are available for experimentation and comparison.

FilePurpose / stage
smart-scheduler-HOLISTC.jsHolistic variant — treats the whole rotation as one optimization problem (global balance of categories, energy, artists) instead of greedy per-track selection
smart-scheduler-MLRL.jsML + Reinforcement Learning variant — heavier MLRL weighting on top of the bandit arms
smart-scheduler-NN1.jsNeural-network variant — first synaptic-based experiment (LSTM-style sequencing)
smart-scheduler-old.jsOriginal scheduler — the simple randomized generator before Dirichlet sampling and RL arms

Experimental notes

  • HOLISTC targets smoothness across an entire block (e.g. a full hour) and is more expensive to run; it produces the most "produced" logs but is harder to adapt live.
  • MLRL keeps the same category deck as production but boosts the exploration rate, useful for A/B tests of new genres.
  • NN1 learns transition patterns from as-run CSVs; its sequencing quality is only as good as the training history available.
  • old is kept purely as a fallback if the newer engines misbehave on a different machine; it does not perform loudness or fingerprint checks.

Running an experiment

Run a variant with the same content pipeline inputs and compare its generated M3U against production. Because all variants write to the same PLAYLIST_ROOT layout, only one scheduler should run at a time against a given live worker.

The production default remains smart-scheduler.js; the variants are not deployed to the broadcast chain unless explicitly selected.