Попробую изложить, как я собираюсь программировать вторую часть.
Еще раз повторю: задача второго этапа - моделирование изолированных поселений.
Значит, у нас есть поселение, у которого есть фактор местности - облегченное производство продуктов одной определенной группы товаров, и затрудненное производство товаров других групп.
Внутри этого поселения живёт некоторое количество (сгенерированных нами изначально) людей, которые заняты производством (все юниты, так как среди них нет торговцев).
Поскольку я настаиваю на расширенном воспроизводстве всего, в том числе и популяции людей, то я ввожу в свою модель еще одно образование - семью. Семья мне нужна для того, чтобы было где жить и подрастать детям - юнитам родившимся уже внутри действующей модели. В такой модели, где будет предусмотрена возможность рождения новых юнитов, должна быть предусмотрена и смерть юнитов, скажем, от старости, или от длительной неудовлетворенности потребностей (например, группы R1 - непосредственно связанной с жизнедеятельностью). А возможность рождения новых юнитов в семье должна быть привязана со степенью удовлетворения продуктами группы R2, которые связаны с расширенным воспроизводством: если эти потребности у человека удовлетворяются в полной мере, то у него с большой вероятностью будут рождаться новые дети, которые когда подрастут станут работать на семью.
И да, Семья, в таком моем представлении, есть ничто иное, как родо-племенная Община - то есть, одна Семья, с одним Отцом-основателем и множеством отпрысков - сыновей (женщины в моей модели не предусмотрены

), и все они работают на общее благо - на благо своей Семьи. Чем больше Семья, тем полнее будут удовлетворены потребности всех её членов-участников.
Семья (в моей модели) ведет свое происхождение от Отца-основателя - патриарха. И с его (неминуемой) смертью распадается на множество Семей по числу детей (сыновей) этого Отца-основателя. Поэтому вместо одной Семьи получится много. Когда умрут Главы этих Семей, то они распадутся точно так же. И так далее.
Рождение юнитов, их смерть, возраст взросления и возраст старения (выхода на пенсию и увеличения вероятности смерти) можно будет отключать. Как и все вносимые мною в модель нововведения отличающиеся от основной генеральной линии заданной нам Пойнтсом (все-таки он для нас главный идеолог) я делаю опциональными, с тем, чтобы ими можно было бы легко пожертвовать без потери функциональности основной модели. Точно так же можно будет отключить и Семью и само расширенное воспроизводство: и у нас в системе ВЕЧНО будут жить и работать сгенерированные нами с первого момента работы программы юниты.
Но пока я рассматриваю ситуацию с расширенным воспроизводством, с Семьями, с рождением в них детей и возможностью смерти.
Примерный алгоритм поведения юнитов - членов большой Семьи (как я это планирую делать).
Поначалу в каждый элементарный временной промежуток (а нам придется вводить в модель фактор времени, скажем, один день, или год - это, в общем-то такая же условность, как и все остальные вводимые нами условия) каждый юнит в нашей модели ПРОИЗВОДИТ продукты. Как он это делает? Какие продукты он будет производить, а какие - не будет? Чем он будет руководствоваться в своём выборе, что ему производить?
Поскольку у нас докапиталистические отношения, то каждый условный агент волен САМ определять чем ему заниматься, и я считаю (принимаю за существенный фактор влияния внутри своей модели), что он будет руководствоваться своими потребностями что-то производить, то есть, чем ему интересно заниматься, тем он и будет заниматься. Есть, правда, еще фактор необходимости (скажем, ему чего-то очень не хватает), но кто подскажет, как мне этот фактор учесть в своей модели? Итак, я считаю, что он будет распределять своё свободное время в полном соответствии с теми коэффициентами потребностей производить, которые мы у него сгенерировали. То есть, он будет чаще и дольше заниматься производством продукта, которым ему ИНТЕРЕСНЕЕ заниматься (потребность производить который у него выше), то есть, нравится ему, например, играть на музыкальных инструментах, и он будет на них играть даже в ущерб другим своим занятиям (и от себя добавлю, даже если он не умеет на них играть), а если ему будет нравится ковыряться в своем огороде, то он будет в нем ковыряться даже если в этом не будет особой необходимости.
По истечении этого первого периода производства мы подводим итоги, и каждый юнит начинает личное потребление всего им произведенного (не забываем, что у нас, типа, натуральное хозяйство). Все им не употребленное он относит в общесемейную кладовую. На втором этапе потребления, каждый юнит берет из семейной кладовой все что ему еще нужно, для удовлетворения тех потребностей, которые еще остались у него неудовлетворенными, и потребляет их.
Все свои оставшиеся неудовлетворенными потребности эти юниты относят также в общую семейную кладовую, только не кладовую продуктов, а так сказать, кладовую потребностей - и это будут уже общесемейные потребности.
Далее у нас начинается период обмена.
Патриарх каждой Семьи выходит на рынок. Он выступает не от своего имени, а от имени Семьи, и ищет на рынке продукты не для собственного удовольствия, а для удовлетворения семейных потребностей, которые остались неудовлетворенными у всех членов его Семьи. Если он находит на рынке такие продукты, то он расплачивается за них теми продуктами, которые скопились на складе его Семьи, если, конечно, они окажутся нужны его партнеру по обмену.
После совершенных обменов Патриарх возвращается в свою Семью, и начинается еще один цикл потребления. Все члены его Семьи потребляют те продукты, потребность в которых у них осталась неудовлетворенной.
Далее я планирую оставить возможность для каждого юнита НЕЗАВИСИМО от всех других членов его Семьи выходить на рынок, так сказать, людей посмотреть и себя показать. Если, разумеется, у них еще остались неудовлетворенные потребности (помните первый постулат Пойнтса?). Возможность совершать сделки для единичных юнитов можно сделать ограниченной (например, двумя-четырьмя сделками, выбранными случайным образом, если не повезло, то значит - не повезло).
После этого повторяется цикл потребления (а вдруг кто-то все же смог приобрести для себя нужный продукт?). И мы переходим к процессу воспроизводства.
Смотрим на степень удовлетворенности в Семье совокупной потребности в продуктах группы R2, если всё в порядке, то воспроизводство возможно, затем смотрим на удовлетворенность этой потребности у каждого юнита внутри этой семьи (у взрослых, разумеется), и случайным образом генерируем рождение нового юнита внутри этой Семьи - потомка какого-нибудь конкретного юнита (за этим я буду следить строго - кто и от кого произошел, типа: Иоан родил Иакова и т.д.). Рождение будет событием вероятностным, но очень сильно будет зависеть от удовлетворенности продуктами группы R2 (прежде всего), даже степень удовлетворенности продуктами группы R1 не должны оказывать на процесс рождения новых юнитов влияния. Зато неудовлетворение потребностей продуктами группы R1 будет заметно сказываться на смертности (вероятности умереть, как у взрослых юнитов, так и у детей). Так что в моей модели легко будет складываться ситуация, когда много рожают, но так же легко и умирают. Одно, как говорится, другому не противоречит.
Затем всё повторяется.
Никакого сезонного влияния я не предусматриваю, но вполне допускаю, что это придется сделать. Но надеюсь, что наша модель обойдется и без этих излишностей. Все-таки мне хочется удержать взятый изначально градус абстрактности (и не скатиться к стульям и табуреткам, а так же к весне, зиме, лету и осени).
Если у меня всё получится, то на выходе второго этапа моделирования должно получится изолированное поселение состоящее из нескольких Семей, которые осуществляют между собой взаимовыгодные операции обмена. Эти поселения должны быть устойчивыми в достаточной степени, чтобы иметь возможность выживать и без участия торговцев. Если это у меня получится, то можно будет переходить к следующему этапу.