import numpy as np META = { "name": "multihorizon_sequence", "domain": "sequence", "description": "Window-to-multiple-future-values prediction for weak-memory sinusoidal dynamics." } def get_dataset(seed, n_train=400, n_test=400): rng = np.random.default_rng(int(seed)) total = int(n_train) + int(n_test) win, horizon = 32, 16 t = np.arange(win + horizon, dtype=np.float32)[None, :] phase = rng.uniform(-np.pi, np.pi, (total, 3)).astype(np.float32) freq = np.array([0.08, 0.17, 0.31], dtype=np.float32)[None, :] amp = np.array([0.9, 0.45, 0.25], dtype=np.float32)[None, :] signal = np.zeros((total, win + horizon), dtype=np.float32) for i in range(3): signal += amp[:, i:i+1] * np.sin(freq[:, i:i+1] * t + phase[:, i:i+1]) signal += 0.025 * rng.normal(size=signal.shape).astype(np.float32) return {"xtr": signal[:n_train, :win], "ytr": signal[:n_train, win:], "xte": signal[n_train:, :win], "yte": signal[n_train:, win:], "task": "regression", "metric": "mse", "out_dim": horizon}