Add detailed technical specification for village economy simulation (v2)
This commit is contained in:
commit
1d10a96930
91
docs/design/village-tz-v2.md
Normal file
91
docs/design/village-tz-v2.md
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
# Симуляция экономики деревни (Техническое задание v2)
|
||||||
|
|
||||||
|
## 1. Общие положения
|
||||||
|
Симуляция агентная, пошаговая. Основная цель — наблюдение за формированием экономических связей и выживанием популяции при заданных правилах.
|
||||||
|
|
||||||
|
### Цикл симуляции
|
||||||
|
1. **День:** Длится **10 шагов**. Агенты активны (работают, торгуют, потребляют).
|
||||||
|
2. **Ночь:** Длится **1 шаг**. Все агенты спят.
|
||||||
|
3. **Итого сутки:** 11 шагов.
|
||||||
|
4. **Синхронизация:** Все агенты делают ход одновременно. Следующий шаг наступает, когда все завершили выбор действия.
|
||||||
|
|
||||||
|
## 2. Модель Агента
|
||||||
|
|
||||||
|
### Жизненные показатели (Максимумы / Старт)
|
||||||
|
При падении любого показателя (кроме Энергии) до 0 агент умирает.
|
||||||
|
|
||||||
|
| Показатель | Макс | Старт | Расход (Пассив) | Примечание |
|
||||||
|
| :--- | :--- | :--- | :--- | :--- |
|
||||||
|
| **Энергия** | 100 | 80 | -2 / ход | Не умирает при 0, но не может совершать активные действия |
|
||||||
|
| **Голод** | 100 | 80 | -2 / ход | |
|
||||||
|
| **Жажда** | 50 | 40 | -3 / ход | Убывает быстрее голода |
|
||||||
|
| **Тепло** | 100 | 100 | -2 / ход | |
|
||||||
|
|
||||||
|
### Инвентарь
|
||||||
|
* Ограниченное количество слотов (например, 10 или по весу).
|
||||||
|
* При переполнении новые ресурсы исчезают (или не могут быть добыты).
|
||||||
|
* Стартовый капитал: **100 Монет**.
|
||||||
|
|
||||||
|
## 3. Экономическая Модель
|
||||||
|
|
||||||
|
Вводится универсальная валюта — **Монеты** (Coins), чтобы решить проблему бартера.
|
||||||
|
|
||||||
|
### Механика Рынка (Биржа)
|
||||||
|
Торговля происходит через общий реестр заявок (Order Book), доступный всем агентам мгновенно.
|
||||||
|
1. **Продажа:** Агент выставляет лот: `{Товар, Кол-во, Цена за шт.}`.
|
||||||
|
2. **Покупка:** Агент ищет самый дешевый лот нужного товара и покупает его.
|
||||||
|
3. **Видимость:** Все видят все заявки.
|
||||||
|
|
||||||
|
### Ценообразование и "Парадокс цены"
|
||||||
|
Для решения проблемы, когда неэффективный работник продает дороже, используется разделение цен:
|
||||||
|
1. **Себестоимость:** `(Потраченная Энергия * Стоимость Энергии) / Кол-во товара`.
|
||||||
|
2. **Рыночная цена:** Динамическая.
|
||||||
|
* Агент выставляет товар по *Себестоимости* (или с небольшой наценкой).
|
||||||
|
* Если товар не покупают `N` ходов -> Агент снижает цену (скидка), даже ниже себестоимости, чтобы выжить.
|
||||||
|
* Если товар купили быстро -> В следующий раз агент повышает цену.
|
||||||
|
|
||||||
|
## 4. Ресурсы и Производство
|
||||||
|
|
||||||
|
| Ресурс | Источник (Действие) | Эффект | Срок жизни | Примечание |
|
||||||
|
| :--- | :--- | :--- | :--- | :--- |
|
||||||
|
| **Мясо** | Охота | Голод +30, Энергия +5 | 5 ходов | Сытное, быстро портится |
|
||||||
|
| **Ягоды** | Собирательство | Голод +5, Жажда +2 | 20 ходов | "Консервы", мало насыщают |
|
||||||
|
| **Вода** | Добыча воды | Жажда +40 | ∞ | Не портится |
|
||||||
|
| **Дерево** | Рубка | Топливо для костра | ∞ | |
|
||||||
|
| **Шкура** | Охота (побочный) | Крафт -> Одежда | ∞ | |
|
||||||
|
| **Одежда** | Ткачество (из Шкуры) | Снижает потерю тепла на 50% | 50 ходов | Изнашивается |
|
||||||
|
| **Тепло** | Костер (из Дерева) | Тепло +10/ход (пока горит) | 1 ход | Активное действие (разжечь) |
|
||||||
|
|
||||||
|
## 5. Баланс Действий (Draft)
|
||||||
|
|
||||||
|
| Действие | Расход Энергии | Результат (Успех) | Риски/Шансы |
|
||||||
|
| :--- | :--- | :--- | :--- |
|
||||||
|
| **Сон (Ночь)** | +60 (Восст.) | - | - |
|
||||||
|
| **Отдых (Днем)** | +10 (Восст.) | - | Пропуск хода |
|
||||||
|
| **Охота** | -15 | 1-3 Мяса, 0-1 Шкуры | Шанс успеха 70% |
|
||||||
|
| **Собирательство** | -5 | 2-5 Ягод | Шанс 100% |
|
||||||
|
| **Рубка дерева** | -10 | 1-2 Дерева | Шанс 90% |
|
||||||
|
| **Добыча воды** | -5 | 1 Вода | Шанс 100% |
|
||||||
|
| **Ткачество** | -8 | 1 Одежда (нужна 1 Шкура) | |
|
||||||
|
| **Разведение костра**| -5 | +Тепло (нужно 1 Дерево) | |
|
||||||
|
| **Торговля** | -1 | Выставить/Снять лот | Не тратит ход? (обсуждаемо) |
|
||||||
|
|
||||||
|
## 6. Логика ИИ (Приоритеты)
|
||||||
|
|
||||||
|
Агенты используют систему приоритетов ("Пирамида Маслоу") для принятия решений:
|
||||||
|
|
||||||
|
1. **Критическое состояние (< 20%):**
|
||||||
|
* Если Голод/Жажда/Тепло < 20% -> **ВЫЖИВАНИЕ**.
|
||||||
|
* Потребление из инвентаря -> Покупка на рынке -> Добыча (если есть силы).
|
||||||
|
2. **Усталость:**
|
||||||
|
* Если Энергия слишком низкая для работы -> **ОТДЫХ**.
|
||||||
|
3. **Экономическая эффективность:**
|
||||||
|
* Если профильный ресурс переполняет инвентарь -> **ПРОДАЖА**.
|
||||||
|
* Если нет инструментов/сырья -> **ПОКУПКА**.
|
||||||
|
4. **Рутина:**
|
||||||
|
* Выполнение основной работы (Охота/Собирательство/Крафт).
|
||||||
|
|
||||||
|
## 7. Нерешенные вопросы / На будущее
|
||||||
|
1. **Социальное взаимодействие:** Передача ресурсов без денег?
|
||||||
|
2. **Репродукция:** Появление новых агентов?
|
||||||
|
3. **Обучение:** Повышение навыка охоты со временем (снижение затрат энергии)?
|
||||||
64
docs/design/village-tz.md
Normal file
64
docs/design/village-tz.md
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
# Симуляция экономики деревни
|
||||||
|
|
||||||
|
# Краткое описание
|
||||||
|
|
||||||
|
Идея заключается в том, чтобы проверить как образуется экономика при разных заданных условиях. Первая версия симуляции будет довольно простой с упрощениями. Есть некоторое количество агентов, у которых есть следующие индикаторы: энергия, голод, жажда, тепло. Любые действия агентов тратят энергию. Она восстанавливается отдыхом, сном и едой (ночью все обязательно спят). Голод со временем усиливается, поэтому агенты должны добыть еду. Они могут охотиться (тратит больше энергии) или заниматься собирательством (мясо и растительность в разной степени утоляют голод). Для утоления жажды нужно достать воду (одно действие). Для поддержания тепла нужно дерево (сначала срубить его, затем использовать для прогревания (а-ля костер) \- 2 действия), или шкура (охотимся и затем из шкуры получаем одежду). Если какой-либо из индикаторов дойдет до нуля – агент умирает. У каждого агента также есть некоторое “хранилище” в которое они могут складывать добытые ресурсы (но количество слотов ограничено). Когда агент понимает, что у него есть незакрытая потребность, но при этом у него, например, нет возможности самому сделать необходимые действия – агент может произвести торговлю. Из хранилища товары можно покупать/продавать. Стоимость равна затраченной энергии. Например, если охотник потратил 10 единиц энергии и добыл 5 кусков мяса, то стоимость 1 куска \= 10 / 5 \= 2 у.е.. При этом другой охотник мог потратить 30 единиц энергии и при этом добыть только 1 кусок мяса (неудачная охота), и тогда у него стоимость одного куска будет \= 30 / 1 \= 30 у.е.. При торговле агенты как-то должны выбирать хотят или не хотят они торговаться с определенными агентами (пока опускаем наценку, торг, кредиты \- это добавим позже). Ну и в целом, наверное, желание торговаться должно чем-то регулироваться (не быть рандомным или слишком топорным). Как было описано ранее, для закрывания некоторых потребностей нужно совершить несколько действий (напр. чтобы согреться), но с помощью торговли можно сократить количество действий (т.е. потратить меньше энергии). Например, купить у другого агента шкуру (вместо того, чтобы охотиться), и потом самому уже из него сделать одежду.
|
||||||
|
|
||||||
|
# Симуляция
|
||||||
|
|
||||||
|
1. Симуляция происходит пошагово
|
||||||
|
2. Симуляция имеет цикл день-ночь
|
||||||
|
3. Ночь длится один шаг
|
||||||
|
4. Ночью все агенты спят (восполняют энергию)
|
||||||
|
5. В течение шага житель может совершить одно действие
|
||||||
|
6. Шаги всех жителей происходят одновременно
|
||||||
|
7. Шаг заканчивается, когда все жители сообщили о конце хода
|
||||||
|
8. У жителей есть три потребности:
|
||||||
|
1. Голод
|
||||||
|
1. Голод увеличивается каждый шаг
|
||||||
|
2. Голод восстанавливается путем потребления пищи
|
||||||
|
2. Жажда
|
||||||
|
1. Жажда увеличивается каждый шаг
|
||||||
|
2. Жажда восстанавливается путем потребления воды
|
||||||
|
3. Тепло
|
||||||
|
1. Тепло уменьшается каждый шаг
|
||||||
|
2. Потеря тепла уменьшается при носке одежды
|
||||||
|
3. Тепло восстанавливается при нахождении у костра
|
||||||
|
9. В симуляции есть следующие ресурсы:
|
||||||
|
1. Дерево
|
||||||
|
2. Вода
|
||||||
|
3. Мясо
|
||||||
|
4. Шкура
|
||||||
|
10. Есть следующие виды деятельности:
|
||||||
|
1. Охота
|
||||||
|
2. Собирательство
|
||||||
|
3. Добыча воды
|
||||||
|
4. Рубка дерева
|
||||||
|
5. Ткачество
|
||||||
|
6. Разведение костра
|
||||||
|
11. Работа:
|
||||||
|
1. Работа тратит энергию
|
||||||
|
2. Работа приносит соответствующий ресурс согласно распределению
|
||||||
|
12. У каждого жителя есть энергия:
|
||||||
|
1. Энергия тратится на каждом ходе с работой
|
||||||
|
2. Энергия восстанавливается во время отдыха и во время ночного сна
|
||||||
|
13. В симуляции следующие цепочки производства:
|
||||||
|
1. Охота \-\> Мясо \+ Шкура
|
||||||
|
2. Мясо \-\> (-) Голод
|
||||||
|
3. Шкура \-\> Ткачество \-\> Одежда
|
||||||
|
4. Одежда \-\> (модификация на расход) Тепло
|
||||||
|
5. Добыча воды \-\> Вода
|
||||||
|
6. Вода \-\> (-) Жажда
|
||||||
|
7. Рубка дерева \-\> Дерево
|
||||||
|
8. Дерево \-\> Разведение костра \-\> (+) Тепло
|
||||||
|
14. Порча:
|
||||||
|
1. Еда портится через несколько шагов
|
||||||
|
2. Одежда портится через несколько шагов
|
||||||
|
15. Инвентарь:
|
||||||
|
1. Все ресурсы занимают определенное место в инвентаре
|
||||||
|
2. Ресурсы из инвентаря можно выкидывать
|
||||||
|
16. Торговля:
|
||||||
|
1. Торговля может происходить на любом шаге, кроме ночи
|
||||||
|
2. Цена товара вычисляется напрямую из затраченной энергии согласно формуле
|
||||||
|
|
||||||
|
#
|
||||||
Loading…
x
Reference in New Issue
Block a user