Программа проживает одну жизнь одного индивида в условном мире: до 400 дней, шаг времени (такт) равен одному часу. Опыт гл. 32 — это сотни таких жизней, прожитых по очереди. Код программы опубликован на сайте автора; здесь описано, что она делает, без кода.

1. Из чего состоит программа

Схема частей программы и того, что они передают друг другу, — в гл. 32, раздел «Как устроен условный мир и его обитатель».

Части не вызывают друг друга. Каждый час они получают одну и ту же картину и возвращают свои ответы; что пришло раньше, то и сложилось раньше.

2. Один час жизни

  1. Мир делает шаг. Голод растёт. Тяга к вершине «Голод» усиливается вместе с голодом. Выбор сдвигается под усилием индивида, сделанным в прошлый час; сила усилия уменьшается от усталости и трудности способа и растёт от прилива сил. Растёт или снимается усталость; индивид засыпает или просыпается. Если выбор коснулся вершины способа — добыча (или гибель, если способ опасен). Еда из запаса, порча, отрастание грибов. Иногда — встреча с соседом. Старость. Смерть от голода.
  2. Выбирается главное событие часа — по важности: смерть, добыча, питьё, увиденное у соседа, падение в сон, еда из запаса, пробуждение, порча.
  3. Индивид думает. Графы и способность рождать новое одновременно получают одну картину: тело, главное событие, положение выбора, свои графы и их удачи.
  4. Рождение нового графа, если индивид в агонии: мир предлагает один из ещё не испробованных способов — какой, решает случай.
  5. Исполнитель складывает усилия, придаёт им силу тела, добавляет шум — это усилие следующего часа.
  6. Проверки и журнал. Программа проверяет, что выбор остаётся в допустимых пределах, а тело — в своих границах, и записывает события.

3. Как устроен индивид

Выбор

Рисунок «выбор индивида — шарик в треугольнике» — в гл. 32, раздел «Как устроен условный мир и его обитатель».

Выбор — точка (шарик) в треугольнике с вершинами Голод, Охота, Сон. Шарик движется плавно, а поступки и состояния дискретны: коснулся Охоты — добыча; коснулся Голода — смерть; подошёл к Сну — заснул. Каждый рождённый граф (грибы, дерево, вода) добавляет новую вершину.

Графы и матрицы

Граф — какие состояния и переходы есть у дела (охота, сон, дерево…). Матрица — что известно о каждом состоянии. В программе матрица графа хранит его ожидание: сколько облегчения даёт час усилия. У графа «грибы» в матрице есть ещё записи: «гриб А можно есть», «гриб Б опасен».

Врождённое (опыт поколений)

Как выбирается способ

Порыв к еде отдаётся одному способу. Охота открыта всегда. Другие способы открываются по мере того, как охота «не идёт», то есть её ожидание падает ниже врождённого. Способы соревнуются ожиданиями. Начатое дело держит: пока попытка идёт, её тяга усилена тем больше, чем ближе шарик к цели. Новое решение — после сна или после добычи — принимается только по ожиданиям. Все усилия (еда, сон) складываются без судьи.

Шесть способов учиться (других в программе нет)

  1. Ожидание способа пересчитывается по часам усилия: добыча — облегчение 1, вода — 1/6, ничего — 0. Часы сна не считаются.
  2. Длина памяти. Пока опыта мало, каждый час меняет ожидание заметно; с опытом — меньше. Но память не длиннее примерно трёх суток усилия: неделя полных неудач подрывает веру в способ.
  3. Возврат к охоте. Пока индивид не охотится, его ожидание от охоты само возвращается к врождённому — примерно за неделю. Кончились трудные времена — индивид снова пробует охоту и, если она кормит, возвращается к ней.
  4. Рождение нового графа. По двум поводам: агония (на краю голода, см. ниже) и новизна (увидел соседа с грибами, а графа «грибы» ещё нет). Новорождённый граф наследует врождённое ожидание охоты с небольшим случайным отклонением.
  5. Записи в матрице графа «грибы». Увидел, что сосед отравился грибом Б, — «Б опасен»; увидел, что сосед поел гриб А и доволен, — «А можно». Сам поел и остался жив — «этот можно» (бывает и ложный урок: выжил после Б).
  6. Сноровка. Каждая удача на рискованном способе снижает его опасность для этого индивида.

Рождение нового графа в агонии

Пока жить можно — новых идей нет. Новый граф рождается только на краю: шарик близко к Голоду (порог с шумом), тело голодно, давно не ел, а ни старая охота, ни способ, который уже удавался, не помогли. В миг рождения — озарение: шарик сразу оказывается близко к новой вершине, и новый способ пробуется немедленно. Близость к Голоду вызывает прилив сил (адреналин): усилие сильнее, но и усталость растёт быстрее; прилив спадает медленно, примерно за сутки.

Если индивид лишён способности рождать новое (для сравнения), он может получить новый граф только по новизне — подсмотрев у соседа.

Индивид без памяти (для сравнения)

То же тело и та же способность рождать новое, но графы ничего не помнят: жёсткое правило «старая охота → способ, который уже удавался → новый граф».

4. Как устроен мир

Что это Числа
Время такт = час, сутки = 24 такта предел жизни 400 дней
Голод растёт сам, снижается только едой без еды тело живёт ~20 дней
Охота основной способ; добыча — 3 порции: одна съедается сразу, две в запас запас портится за ~10 дней
Сон засыпает, подойдя к вершине Сон; спящее тело неподвижно без сна не больше 3 суток, потом засыпает поневоле; сон ~6 ч (дольше после бессонницы, короче на голодный желудок)
Трудные времена добыть охотой в 5 раз труднее ~30 дней раз в ~100 дней, 4 раза за жизнь
Дерево кормит и в трудные времена риск упасть 15 % на добычу, со сноровкой меньше
Вода не кормит; тело живёт своими запасами (худеет) каждое питьё — ~2 дня жизни; риск утонуть 20 %, со сноровкой меньше
Грибы кормят; хорошие (А) и ядовитые (Б); грибов мало грибница — 2 трапезы, одна отрастает за ~3 недели; гриб Б убивает в 80 % случаев
Сосед случайная встреча вместо стада примерно раз в 15 дней: видит, как сосед ел грибы, отравился, упал, утонул, умер с голоду

Какой способ предложит мир при рождении нового графа, решает случай. Свойства способов знает только мир.

5. Что задано заранее

Калибровка Агента — величины, которые в живом задаёт опыт поколений, а в программе задаёт её автор:

Мир (раздел 4) задан тоже заранее и во всех опытах один и тот же.

Случайность. Источник шума — аппаратный: случайность самого компьютера; каждое значение новое, поэтому две жизни никогда не повторяются в точности. Шум не реакция на равенство вариантов, а постоянная часть программы: в исполнителе (каждый час), на краю агонии, в выборе способа при рождении графа, в наследовании ожидания новорождённым графом, в длительности сна, в риске способов, в выборе гриба, во встречах с соседом. Для отладки отдельной части поток шума можно записать и подать повторно — тогда результат совпадает до бита.

6. Как повторить

Код и инструкции — на сайте автора (ссылка для скачивания). Каждая таблица и каждый рисунок гл. 32 получаются одной командой; ожидаемые числа совпадают с книгой с точностью до случайного разброса между сериями (около ±10 %).