File size: 1,635 Bytes
b0e88cf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Real-Time Adaptive Signal Processing

Evolve a real-time adaptive filtering algorithm for non-stationary time series data. The algorithm must filter noise while preserving signal dynamics and minimizing computational latency.

## Problem

**Input**: Univariate time series with non-linear dynamics, non-stationary statistics, and rapidly changing spectral characteristics.

**Constraints**: Causal processing (finite sliding window), fixed latency, real-time capability.

**Multi-objective function**:
```
J(theta) = 0.3*S + 0.2*L_recent + 0.2*L_avg + 0.3*R
```
- **S**: Slope change penalty (directional reversals in filtered signal)
- **L_recent**: Instantaneous lag error
- **L_avg**: Average tracking error
- **R**: False reversal penalty (noise-induced trend changes)

The evaluator tests on 5 synthetic signals: sinusoidal, multi-frequency, non-stationary, step changes, and random walk.

## Run

```bash
# From repo root
uv run skydiscover-run \
  benchmarks/math/signal_processing/initial_program.py \
  benchmarks/math/signal_processing/evaluator.py \
  -c benchmarks/math/signal_processing/config.yaml \
  -s [your_algorithm] \
  -i 100
```

## Scoring

- **combined_score**: Composite J(theta) metric (higher is better)
- Also reports: slope changes, correlation, lag error, noise reduction, processing time

## Files

| File | Description |
|------|-------------|
| `initial_program.py` | Seed: basic moving average / weighted exponential filters |
| `evaluator.py` | Multi-objective evaluation across 5 synthetic test signals |
| `config.yaml` | LLM and evaluator settings |
| `requirements.txt` | Python dependencies |