Дилемма заключённого с памятью: как компаундинг общего счёта меняет баланс кооперации
Что будет, если накопленный общий счёт игры умножает ценность будущих раундов? Симулятор à la Аксельрод с рекурсивным компаундингом: 5 экспериментов, 10 стратегий, аналитическое предсказание кроссовера CC ≥ DC и воспроизводимый Python-код.
22 мая 2026 г.
1. Введение
В 1981 году Роберт Аксельрод провёл компьютерный турнир: программисты со всего мира прислали стратегии для повторяющейся дилеммы заключённого, и победил Анатоль Рапопорт с четырёхстрочной стратегией «Ты — мне, я — тебе» (Tit-for-Tat). Этот результат стал каноническим: при достаточно длинном горизонте взаимное сотрудничество выгоднее взаимной дефекции, и простые взаимные стратегии побеждают жадных.
Дилемма заключённого интересна именно тем, что создаёт противоречие между индивидуальной рациональностью и коллективным оптимумом. В единичном раунде дефектировать — строго доминирующая стратегия. В повторяющейся игре это перестаёт быть верным: теорема фолка показывает, что при достаточном «весе будущего» кооперативные равновесия могут поддерживаться. Стандартный способ моделировать «вес будущего» — дисконтирующий множитель δ < 1, который уменьшает ценность отдалённых раундов.
Мы предлагаем противоположную конструкцию: мультипликатор, который растёт с историей, а не убывает. Это соответствует ситуациям, где совместный успех создаёт ресурсы, усиливающие будущие взаимодействия: накопленный капитал генерирует доход, ресурсная база, выигранная кооперацией, повышает приспособленность потомства, или история взаимодействий увеличивает «вес» каждого следующего решения в долгосрочных отношениях. В таких системах прошлое сотрудничество создаёт мультипликатор для будущих ставок.
Классическая повторяющаяся PD устроена так: базовые выигрыши (CC=3, CD=0, DC=5, DD=1) суммируются раунд за раундом, и итог — просто накопленная сумма. Каждый раунд независим в том смысле, что прошлые выигрыши не влияют на ценность будущих очков. В нашей модификации это условие снимается: совокупный счёт S(t) определяет, сколько «стоит» раунд t+1.
Компаундинг получается рекурсивным — S(t+1) зависит от уже умноженных выигрышей, которые в свою очередь зависели от S(t-1) и так далее. Это создаёт нелинейную обратную связь: партнёрства, которые генерируют большие потоки, разгоняют множитель быстрее и тем самым делают будущие раунды ещё ценнее. Ключевое наблюдение: взаимная кооперация (CC = 6 суммарных очков за раунд) разгоняет S быстрее, чем асимметричный исход DC (= 5) или взаимная дефекция DD (= 2).
Мы проверяли две гипотезы:
- Компаундинг через M(S) делает кооперацию рационально выгодной даже против стратегий, не наказывающих дефекцию, начиная с некоторого горизонта T*.Жёсткие непрощающие стратегии (Grim/Friedman) проигрывают прощающим значительно сильнее, чем в классической PD, — из-за потерянного будущего множителя после первой случайной ошибки.
2. Механика модификации
Базовая матрица выигрышей стандартная: CC = (3, 3), CD = (0, 5), DC = (5, 0), DD = (1, 1).
В каждом раунде t выигрыш игрока умножается на M(S_t), где S_t — накопленный общий счёт обеих сторон (сумма уже умноженных выигрышей всех предыдущих раундов):
r_i(t) = payoff_i(a_t, b_t) # сырой выигрыш из матрицы
p_i(t) = r_i(t) · M(S_t) # умноженный выигрыш
S_{t+1} = S_t + p_A(t) + p_B(t) # обновление накопленного счёта
Начальное состояние: S_0 = 0, поэтому M(0) = 1 при всех реализованных функциях — первый раунд всегда равен классической PD.
Ключевое наблюдение: сумма выигрышей по исходам составляет CC = 6, CD = DC = 5, DD = 2. Взаимная кооперация генерирует наибольший совокупный поток (6/раунд против 5 при асимметрии и 2 при взаимной дефекции). Это означает, что CC-партнёрство разгоняет множитель быстрее, чем любой другой исход.
Мы протестировали пять форм M(S):
| Функция | Формула | Характер роста |
|---|---|---|
| Constant(1) | M = 1 | Классическая PD (контроль) |
| Linear(k) | M = 1 + S/k | Линейный, неограниченный |
| Power(k, α) | M = (1 + S/k)^α | Сублинейный при α < 1 |
| Log(k) | M = 1 + ln(1 + S/k) | Медленный, всегда растущий |
| Capped(M_inner, cap) | M = min(inner(S), cap) | Ограниченный сверху |
3. Аналитическое предсказание
Рассмотрим непрерывное приближение для пары AllC vs AllC (CC) и AllD vs AllC (DC, с точки зрения игрока A).
Случай CC. Каждый раунд S растёт на 6·M(S), а игрок A получает 3·M(S). Для Linear с параметром k:
dS/dt = 6·(1 + S/k) → S_CC(t) = k·(e^(6t/k) − 1)
Cum_CC(t) = ∫ 3·e^(6τ/k) dτ = (k/2)·(e^(6t/k) − 1)
Случай DC. AllD получает 5·M(S), AllC получает 0; S растёт на 5·M(S):
dS/dt = 5·(1 + S/k) → S_DC(t) = k·(e^(5t/k) − 1)
Cum_DC(t) = k·(e^(5t/k) − 1)
Условие кроссовера Cum_CC(t*) = Cum_DC(t*) после подстановки u = e^(t/k) даёт:
u^6 − 2u^5 + 1 = 0
Нетривиальный корень численно: u ≈ 1.96, откуда t* ≈ 0.673·k. Для k = 100: t* ≈ 67 раундов.
Численный эксперимент E4 даёт кроссовер на раунде 71 — разница в 6% объясняется дискретностью симуляции. Для Power(100, 0.5) и Log(100) кроссовер CC vs DC в пределах 500 раундов отсутствует.
4. Методология
Стек: Python 3.14, NumPy, Pandas, Matplotlib, Seaborn, tqdm, pytest.
Стратегии (10): AllC, AllD, Random(p=0.5), TitForTat, SuspiciousTfT, TitForTwoTats, GrimTrigger, GenerousTfT(forgiveness=0.1), ContriteTfT, Pavlov.
Шум: два режима —
| Эксперимент | Параметры |
|---|---|
| E1 базовый турнир | Round-robin, T=200, noise=0, 100 повторений, 5 функций M(S) |
| E2 шум | Linear(100), T=200, noise ∈ {0, 0.01, 0.05, 0.1, 0.2}, 100 повторений |
| E3 горизонт | Linear(100), noise=0, T ∈ {10, 50, 100, 200, 500, 1000}, 100 повторений |
| E4 дуэль | CC/DC/DD/CD сценарии, T=500, 4 функции M(S) |
| E5 эволюция | Репликатор, 200 поколений, 4 функции M(S) |
5. Результаты
Эксперимент 1: базовый турнир

Constant(1) — контроль. Ранжирование точно воспроизводит классический Аксельрод: GenerousTfT первый (537 очков), за ним TFT2 (535), TfT и ContriteTfT делят третье место (532). AllD последний (366). Разрыв GenerousTfT — AllD составляет 46%.
Linear(100) — компаундинг. Расстановка меняется кардинально. AllC поднимается с 7-го места на 1-е (4 679 071 против 506 в Constant), AllD остаётся последним, но теперь отстаёт от лидера в 25 раз (189 K против 4.7 M). Grim опускается с 5-го на 7-е место: его доля кооперации 70% против 87% у TFT2 обходится дороже при компаундинге.
Важная деталь: доля кооперации у всех стратегий не меняется от множителя к множителю — TFT2 всегда 87%, AllD всегда 0%. Компаундинг не перепрограммирует стратегии, он только усиливает разницу в выигрышах. Именно поэтому разрыв между кооперативными и дефектными стратегиями растёт экспоненциально при нетривиальных M(S).
Эксперимент 2: чувствительность к шуму

Самый показательный результат исследования. При нулевом шуме Grim набирает 4 036 K — чуть хуже GenerousTfT (4 594 K). При шуме всего 1% Grim падает до 644 K — снижение на 84%. GenerousTfT при том же шуме теряет 30%, TfT — 50%.
При noise = 0.20 Grim сохраняет лишь 145 K (3.6% от бесшумного результата), тогда как GenerousTfT держит 658 K (14.3%). Разрыв между ними вырастает с 14% до 353% — GenerousTfT обходит Grim в 4.5 раза.
Механизм: одна случайная дефекция навсегда включает триггер Grim. В классической PD это потеря потока кооперации. В модели с компаундингом цена выше — теряется ещё и рост множителя: будущие раунды с высоким M(S) уже никогда не состоятся. Grim замораживает S на более низком уровне, чем прощающие стратегии.
Показательно сравнение AllC и Grim. AllC при noise = 0.01 теряет лишь 23% — стратегия без памяти не может «обидеться» навсегда и не разрушает нарастающий множитель ответными дефекциями.
Эксперимент 3: чувствительность к горизонту

Кооперативные стратегии обгоняют дефектные уже при T = 10 раундов: 33.3 против 25.3. В классической PD при T = 10 дефекция рациональна из-за обратной индукции — здесь нет.
С ростом T разрыв увеличивается суперлинейно: при T = 1000 кооперативные стратегии опережают дефектные в 5 раз (7.57 × 10²⁶ против 1.47 × 10²⁶). При Linear(100) в первые 10 раундов CC-партнёрство разгоняет S до ≈ 60 единиц, M(S) ≈ 1.6 — кооперирующие зарабатывают 3·1.6 = 4.8 за раунд, тогда как AllD против SuspiciousTfT большую часть матча играет DD, получая лишь 1·M.
Эксперимент 4: дуэль исходов

В прямом голове-в-голову AllC всегда проигрывает AllD: CD-выигрыш равен нулю при любом M(S), поэтому 0·M = 0 всегда. Это честный результат.
Ключевое сравнение — CC против DC:
- Constant(1): CC = 1 500, DC = 2 500. Дефектор выигрывает. Кроссовера нет.Linear(100): кроссовер на раунде 71. К раунду 500: CC = 2.25 × 10¹⁴, DC = 3.93 × 10¹². Взаимная кооперация опережает в 57 раз.Power(100, 0.5) и Log(100): кроссовера нет; CC/DC = 0.70 и 0.63.
Численный T* = 71 хорошо согласуется с аналитическим предсказанием 67. Только линейный рост M(S) достаточно агрессивен, чтобы преимущество взаимной кооперации перевесило начальную фору дефектора.
Эксперимент 5: эволюционная динамика

Во всех четырёх условиях репликаторная динамика вытесняет AllD и SuspiciousTfT до нуля. При Constant(1) суммарная доля кооперативных стратегий — 87.5%, AllD = 1.7 × 10⁻⁴³. При Linear(100): 87.5% кооперация, AllD = 1.9 × 10⁻²⁵⁹.
Качественная структура равновесия не меняется при переходе к нетривиальным множителям. Внутри кооперативного кластера при Constant(1) лидирует GenerousTfT (16.2%), при Linear(100) — AllC (16.4%). Grim держится в кластере (~12–13%), поскольку E5 запускался без шума: в детерминированном мире его жёсткость не является недостатком.
6. Обсуждение
Судьба Grim
В чистой среде Grim работает достаточно хорошо: 5-е место при Constant, 7-е при Linear. Без ошибок он кооперирует с кооперативными и наказывает AllD. Но при noise = 1% выигрыш падает на 84%, тогда как GenerousTfT теряет лишь 30%. При компаундинге цена каждой непрощённой ошибки — не просто потерянные раунды, а замороженный множитель. Grim хорош в стабильных детерминированных мирах; в реальных системах с любым уровнем шума он нежизнеспособен.
Подъём AllC
AllC побеждает в E1 при Linear(100) не потому что стала умнее, а потому что CC-матчи разгоняют множитель быстрее всех. Компаундинг не делает наивную доброту рациональной в изоляции — в прямом противостоянии AllC/AllD AllC всегда получает ноль. Но в среде с преобладанием кооперативных агентов это рациональная стратегия. Близкая аналогия — концепция ассортативного взаимодействия в эволюционной биологии.
TfT всё ещё силён?
Да, но иначе. В классическом турнире TfT доминирует за счёт «наказательной симметрии». При компаундинге добавляется второй канал: взаимная кооперация создаёт нарастающую ренту, которую дефекция обрывает. TFT2 и GenerousTfT держат высокую долю кооперации и выигрывают рекурсивно. Ранжирование верхней части таблицы сохраняется, но абсолютные разрывы многократно возрастают.
Какая форма M(S) эффективнее?
Только Linear(100) даёт CC > DC в прямом противостоянии (кроссовер на раунде 71). Power(α = 0.5) и Log медленнее раскручивают множитель — CC/DC к раунду 500 составляет 0.70 и 0.63. Capped(Linear, 50) — промежуточный случай: после cap компаундинг прекращается.
Форма M(S) — это не технический параметр, а моделируемое предположение о природе среды. В экосистемах с линейным ростом ресурсов кооперация выгодна уже при T > 67. В средах с убывающей отдачей порог выше или недостижим. Институциональный дизайн, управляющий «скоростью компаундинга» совместных ресурсов, может качественно менять равновесие.
Pavlov: стабильный середняк
Pavlov держится на 6-м месте во всех условиях. Он не прощает так агрессивно, как GenerousTfT, и не запоминает дефекцию так жёстко, как Grim — просто повторяет успешное поведение и меняет провальное. В шумной среде эта адаптивность позволяет ему держаться лучше Grim, хотя и хуже GenerousTfT.
7. Ограничения
Конечный горизонт фиксирован заранее — игроки его знают, но не используют стратегически.
Без коэволюции стратегий: репликатор меняет доли, но не параметры. Grim не может «научиться» прощать; добавление мутаций изменило бы долгосрочное равновесие.
Фиксированная M(S): эндогенный выбор функции компаундинга самими игроками — открытый вопрос.
Только два игрока: групповые дилеммы (n > 2) принципиально отличаются; условие взаимности сложнее выполнить, а компаундинг может создать проблемы free-rider.
8. Дальнейшая работа
Мета-стратегии с выбором M(S): если игроки могут предлагать правила компаундинга до игры, возникает двухуровневая игра с потенциально богатой структурой равновесий.
Многоагентные группы: расширение на n > 2 с общим пулом — прямая связь с моделями публичных благ.
Адаптивные стратегии: Q-learning агенты, адаптирующие поведение к текущему S и M(S), вероятно, найдут стратегии, недоступные нашему зоопарку.
Несимметричные функции: разные M_A(S) и M_B(S) для двух игроков — формализация асимметрии интересов в долгосрочных контрактах.
Приложение: параметры экспериментов
| Параметр | E1 | E2 | E3 | E4 | E5 |
|---|---|---|---|---|---|
| Раундов T | 200 | 200 | 10–1000 | 500 | 200 |
| Повторений | 100 | 100 | 100 | 1 | — |
| Шум | 0 | 0–0.2 | 0 | 0 | 0 |
| Функции M(S) | 5 | Linear(100) | Linear(100) | 4 | 4 |
| Seed | 42 | 42 | 42 | 42 | 42 |
cd pd_multiplier
python -m venv .venv && .venv/Scripts/activate
pip install -e .[dev]
pytest -v # 80 тестов
python -m experiments.run --exp 1 --seed 42