Может ли модель повторить цикл «рысь–заяц»
Самый известный экологический цикл в мире — заяц и рысь в Канаде: примерно каждые 10 лет их становится то в десятки раз больше, то меньше. Я проверил, может ли моя игрушечная экосистема его повторить. Период — да, легко. Всё остальное — нет.
Пилот калибровки модели по реальным данным. Вопрос не «правда ли это про зайцев», а «умеем ли мы честно сравнивать модель с реальным рядом и видеть, где она ломается». Октябрь 2026.
Модель — экосистема первой итерации, только без эволюции: травоядные и хищники ходят случайно и едят, когда могут.
Коротко
- Цикл с периодом ~10 лет получается легко. Но это слабый тест: период почти целиком задаётся свободной ручкой «сколько шагов модели в одном году».
- Запаздывание рыси не повторяется. В данных пик рыси отстаёт от пика зайца на ~1,5 года. В модели — на 2,5–3 года, и подбор параметров почти не сдвигает эту цифру.
- Размах колебаний в 2–3 раза меньше реального. Реальный заяц меняется примерно в 40 раз от минимума до максимума, модель — в 3–5 раз.
- Форма цикла совпала, но такую почти синусоидальную форму даёт почти любая циклящая модель. Подтверждение слабое.
- Итог: цикл с нужным периодом есть, а настоящего цикла рыси и зайца нет. Две содержательные метрики — запаздывание и размах — не сошлись.
Данные
Число шкурок зайца-беляка и канадской рыси, которые охотники продали Компании Гудзонова залива в 1845–1935 годах. Числа не правились. Для независимой проверки периода взят ещё ряд по рыси с реки Маккензи (1821–1934).
| Что видно в данных | Значение |
|---|---|
| Период цикла | ~10 лет (Маккензи: 9,7) |
| Насколько рысь отстаёт от зайца | 1,5 года = 0,15 цикла |
| Размах, заяц / рысь | ≈ в 40 / 14 раз от минимума до максимума |
| Доля цикла на рост | около половины у обоих |
Ряд зайца заметно менее регулярный, чем ряд рыси. Это известная особенность именно ряда шкурок.

Как сравнивал
- Сравнивается форма, а не абсолютные числа. Шкурки — не численность, поэтому смотрим период, отставание рыси, размах и форму цикла.
- Допуски взяты из самих данных: насколько каждая метрика гуляет по 45-летним окнам реального ряда. «Совпало» значит, что отличие укладывается в два таких разброса.
- Подгонял только период и отставание. Девять параметров модели (рост растений, обмен и смертность зайца, охота и смертность рыси, шагов в году) подбирал алгоритмом CMA-ES.
- Размах и форму в подбор не включал — это отложенная проверка. Если модель верна, они должны совпасть сами.
- Против подгонки под шум: 20 лучших вариантов перепроверены на 8 новых случайных запусках. Все цифры ниже — по ним.
До калибровки: с параметрами первой итерации рысь вымирает во всех запусках. Из 96 случайных наборов параметров обе популяции выживают в 31, отчётливый цикл есть в 5. И у всех пяти рысь отстаёт на 0,28–0,32 цикла.
Лучшее, что получилось
Показан запуск со средним, а не лучшим качеством. Ряды нормированы, начало симуляции сдвинуто так, чтобы совпасть по фазе с зайцем. Других подгонок на картинке нет.

Осторожно: нормировка прячет главный провал. Без неё видно, насколько реальный цикл глубже:

Попытка исправить: корм хуже, когда зайцев много
Классическое объяснение короткого запаздывания: зайцы начинают падать ещё до пика рыси, потому что съедают свой корм и растения защищаются. Добавил в модель простую обратную связь: когда зайцев много, качество корма с задержкой падает, и заяц получает от еды меньше энергии. Это калибровка B.
- Подбор выбрал слабый эффект: качество корма колеблется всего между 0,88 и 0,92.
- Сильнее нельзя: зайцы недоедают и вымирают, а за ними и рысь.
- Запаздывание улучшилось чуть-чуть (0,27 → 0,25 цикла), размах не вырос, цикл стал менее регулярным.
- Отдельные варианты давали запаздывание ~0,20, но цикл в них почти пропадал. Короткое запаздывание в этой модели покупается ценой разрушения цикла.

Сводка метрик
| Метрика | Данные | A | B |
|---|---|---|---|
| период, лет (подгонялся) | 9,96 | 10,11 ✔ | 9,41 ✔ |
| отставание рыси, доля цикла (подгонялось) | 0,15 | 0,27 ✘ | 0,25 ✘ |
| размах зайца (не подгонялся) | 1,62 | 0,71 ✘ | 0,56 ✘ |
| размах рыси (не подгонялся) | 1,13 | 0,47 ✘ | 0,36 ✘ |
| доля цикла на рост, заяц (не подгонялась) | 0,53 | 0,51 ✔ | 0,51 ✔ |
| форма цикла рыси (не подгонялась) | — | ✘ | ✘ |
Размах — log10 отношения высокого и низкого уровня; 1,62 значит примерно в 40 раз. ✔ — отличие в пределах двух разбросов данных. Улучшение B над A маленькое и статистически шаткое, хотя у B на два параметра больше.

Почему, скорее всего, не сходится
Хищник в модели размножается «из запаса энергии» и откликается на добычу с инерцией, как в классической модели Лотки–Вольтерры. Такая система упирается в запаздывание около четверти цикла. В реальности зайцы, по-видимому, начинают падать раньше пика рыси: из-за корма, стресса, других хищников. Похоже, ограничение структурное, а не в параметрах.
Маленький размах, вероятно, связан с тем, что мир маленький и пространственный: сотни особей на сетке 56 × 56, случайность и локальные встречи гасят большие колебания.
И ещё одна подсказка: при найденном масштабе времени заяц в модели живёт 4–7 «лет» без голода и хищников, а настоящий заяц-беляк — 1–2 года. Быстрой популяции жертвы в модели не получается.
Насколько однозначны параметры
Плохо. В калибровке A 8 из 20 лучших вариантов неотличимы друг от друга, и смертность рыси в них гуляет на 25–40%. В B неотличимы 11 из 20, а обмен рыси меняется в 6 раз. По периоду и запаздыванию параметры B почти не определены. И это оценка снизу: все варианты из одного прогона подбора.
Несколько параметров упёрлись в границы допустимого (рост растений — максимум, обмен рыси — минимум). Это сигнал не точности, а того, что модель «тянется» за пределы разумного. Границы сознательно не расширял: подгонка экзотическими значениями сделала бы результат бессмысленным.

Ограничения. Данные — число шкурок, а не численность: они зависят от цен на мех, усилий охотников и логистики компании. Запаздывание — как раз та метрика, которую торговля может исказить сильнее всего. Ряд один, около 9 циклов, его собственные метрики шумные. Период подгоняется почти тривиально, поэтому его совпадение — слабое достижение. Модель маленькая и пространственная, размер мира не калибровался. Структурный вариант B один и грубый (единое качество корма на весь мир). Глобальный оптимум подбора не гарантирован, хотя ни у одного из 96 случайных циклящих вариантов запаздывание не было меньше 0,28.
Что дальше
- Обратная проверка: подгонять размах и форму, проверять запаздывание.
- Другая структура: корм отрастает с задержкой локально, по клеткам; мир больше или менее «пространственный».
- Модель наблюдения: шкурки = f(численность, усилие охотников) с отдельным шумом. Это нужно перед палеоданными, где «прокси ≠ численность» ещё сильнее.
- Независимая проверка на ряде Маккензи: период и размах рыси.
Код, данные и все графики — в репозитории evo-brain-sim (папка calibration). Обсудить — в Telegram.