mr_x

Онлайн симулятор строительства в HOI4

Рекомендованные сообщения

mr_x

Представляю вашему вниманию онлайн-симулятор строительства в HOI4 (версия: 1.4.х, x = 0,1,2).
Программа содержит различные приложения для оценки игровых аспектов промышленной эффективности.
В том числе графические.

 

Сразу к делу - функционал симулятора:

- расчет количества построенных военных заводов к определенной дате: 

18388068.png

Hide  
- порядок строительства для максимизации военных заводов к определенной дате: 

18388069.png

Hide  
- оценка производственной окупаемости инфраструктуры как для конкретной ячейки, так и для страны в целом: 

18390171.png

18388070.png

Hide  
- постройка объектов по произвольной очереди строительства с возможностью подробной печати событий: 

18388071.png

Hide  

 

При этом, в полном соответствии с игровой механикой, в процессе стройки динамически учитываются изменения: 
- инфраструктуры ячеек 
- бонусов строительства и штрафа ТНП - по заданным пользователем таймингам

 

И да, все это работает онлайн.

 

Для тех, кто все еще с нами:    
- Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

 

ГАЙД (просьба ознакомиться внимательно) 

Симулятор работает в браузере на ресурсе repl.it (репозиторий с онлайн компилятором/интерпретатором, который при этом умеет в графику).  
При 1м посещении, сайт может предложить зарегистрироваться - отклоняйте - для пользования симулятором регистрация не нужна.

 

Рабочее окно симулятора выглядит следующим образом:  

18390661.png

Hide  

 

Алгоритм работы с симулятором:
1) задаете нужные вам параметры в рабочем поле файла 'main.py'
2) жмете кнопку 'run'
3) получаете результат в консоли и/или в файле 'graph.png' (в этом файле будут отображаться графики)

Таким образом, для большинства пользователей актуальной будет настройка только файла 'main.py'.
Если же вы хотите разобраться глубже или форкнуть проект - вся начинка симулятора находится в файле 'simulator.py'. 

 

Как вносить изменения в 'main.py':  

В целом, ничего хитрого - стираете/комментируете ненужное, печатаете/раскомментируете нужное.
Но есть пара нюансов.

При внесении изменений в проект в 1й раз, ресурс может выдать следующее окно:

18390173.png

 

Если вы не собираетесь вносить долгосрочные изменения - жмите "Cancel".
После этого вы сможете настроить 'main.py' под нужные вам параметры и получить соответствующие результаты.

Некоторое время ресурс сохраняет такие изменения, но затем проект сбрасывается до первоначального состояния.
Впрочем, этого вполне хватает, чтобы протестировать нужный вам сценарий, не регистрируясь на сайте.

Hide  

 

1. Быстрый гайд - конкретные примеры:  

(все изменения в рабочем поле выделены оранжевым)
(результаты примеров - в консоли и/или в файле 'graph.png')

 

1) схема строительства:
строим некоторое количество гражданских фабрик, затем строим военные заводы
 

- график количества построенных заводов к определенной дате по набору количества построенных фабрик: 

18390144.png

18390146.png

 

Hide  
- график экстремума построенных заводов к определенной дате по числу построенных фабрик: 

18390148.png

18390149.png

 

Hide  

 

2) схема строительства:
сравниваем строительство по 2м ячейкам (с равными начальными условиями)
ячейка 1: сначала строим некоторое количество инфраструктуры, затем - фабрики
ячейка 2: сразу строим фабрики
 

- график границы окупаемости строительства инфраструктуры для ячеек данной страны: 

18390150.png

18390160.png

Hide  
- определение - окупается ли строительство инфраструктуры в данной конкретной ячейке: 

18390161.png

Hide  
- определение - окупается ли строительство инфраструктуры для какой-либо из ячеек в данной стране (демо-версия): 

18390162.png

Hide  

 

3) схема строительства:
произвольная очередь строительства - по очереди строительства, заданной пользователем
 

- подробная печать в консоль событий симуляции: 

18390163.png

Hide  

 

Hide  
2. Подробный гайд - принцип работы программы: 

1. В программе существует 3 класса симуляторов:
- BuildSimulator - базовый симулятор
- BuildSimMaxMilitary - симулятор для максимизации военных заводов
- BuildSimInfrEfficiency - симулятор для оценки эффективности строительства инфраструктуры  

2. Каждый симулятор имеет свои приложения 

доступные приложения симуляторов и их параметры:  

- BuildSimulator:

1) симуляция строительства по заданным параметрам:
- build_sim(build_order, laws_timeline, civ_trade_av, date_end)
-----------------------------------------------------

- BuildSimMaxMilitary:

1) симуляция строительства по заданным параметрам:
- build_sim(civ_num_to_build, infr_av, laws_timeline, civ_trade_av, date_end)

2) график количества построенных заводов к определенной дате по набору количества построенных фабрик:
- visualize_efficiency(civ_num_to_build_list, infr_av, laws_timeline, civ_trade_av, date_end)

3) график экстремума построенных заводов к определенной дате по числу построенных фабрик:
- find_mil_extremum(infr_av, laws_timeline, civ_trade_av, date_end)      
-----------------------------------------------------

- BuildSimInfrEfficiency:

1) симуляция строительства по заданным параметрам:
- build_sim(infr_initial, infr_up, laws_timeline)

2) график границы окупаемости строительства инфраструктуры для ячеек данной страны:
- visualize_equilibrium(infr_up, laws_timeline)

3) определение - окупается ли строительство инфраструктуры в данной конкретной ячейке:
- is_cell_profitable(cell, infr_up, laws_timeline)

4) определение - окупается ли строительство инфраструктуры для какой-либо из ячеек в данной стране (демо-версия):
- is_any_cell_profitable(infr_up, laws_timeline)

Hide  
описание и формат параметров:  

-----------------------------------------------------
параметр laws_timeline:
-----------------------------------------------------

laws_timeline - очередь изменения законов/технологий/советников, влияющих на бонусы строительства и штраф ТНП
(важнейший параметр, используется абсолютно во всех приложениях)

формат:
[
[ (год, месяц, день), ['имя_нового_закона_1', ...] ],
...
]

доступные имена законов/технологий/советников: 
(подробнее - см LAWS_MODIFICATORS в файле проекта 'simulator.py')
-----------------------------------------------------
'Обезоруженная_нация', 'Только_добровольцы', 'Ограниченный_призыв', 'Расширенный_призыв', 'Обязательная_служба', 'Все_взрослые', 'Всех_под_ружье',
'Свободная_торговля', 'Приоритет_экспорт', 'Ограниченный_экспорт', 'Закрытая_экономика',
'Ненарушаемая_изоляция', 'Изоляция', 'Гражданская_экономика', 'Ранняя_мобилизация', 'Частичная_мобилизация', 'Военная_экономика', 'Всеобщая_мобилизация',

'Строительство_1', 'Строительство_2', 'Строительство_3', 'Строительство_4', 'Строительство_5',

'Капитан_индустрии', 'Капитан_индустрии_уволен',
'Военный_магнат','Военный_магнат_уволен'
-----------------------------------------------------

пример:
laws_timeline = [
                            [(1936, 1, 1), ['Только_добровольцы', 'Приоритет_экспорт', 'Гражданская_экономика']],
                            [(1936, 3, 11), ['Свободная_торговля']]
                          ]

-----------------------------------------------------
параметр build_order: 
-----------------------------------------------------

build_order - очередь строительства

формат: 
[ ['имя_ячейки', 'объект_для_постройки', количество], ... ]

имена ячеек:
- произвольная строка, например: 'моя_ячейка'

имена объектов для постройки:
'infr' - инфраструктура
'civ' - гражданская фабрика
'mil' - военный завод

примеры:
build_order = [['Москва', 'infr', 2], ['Сталинград', 'civ', 2], ['Харьков', 'mil', 2], ['Москва', 'mil', 1]]
build_order = [['Минас-Тирит', 'mil', 5], ['Винтерфелл', 'mil', 4]] 
build_order = [['Whatever', 'infr', 2], ['Nevermind', 'civ', 7]]

-----------------------------------------------------
прочие параметры:
-----------------------------------------------------

civ_trade_av - средняя разница фабрик от торговли
пример: civ_trade_av = 10

date_end - дата принудительного завершения симуляции (год, месяц, день)
пример: date_end = (1941, 6, 22)

civ_num_to_build - количество фабрик для постройки (симулятор BuildSimMaxMilitary)
пример: civ_num_to_build = 15

civ_num_to_build_list - набор количества фабрик для постройки (симулятор BuildSimMaxMilitary)
пример: civ_num_to_build_list = [0, 10, 20]

infr_av - средняя инфраструктура ячеек, в которых ведется строительство (симулятор BuildSimMaxMilitary)
пример: infr_av = 6

infr_initial - изначальная инфраструктура ячеек (симулятор BuildSimInfrEfficiency)
пример: infr_initial = 4

infr_up - поднятие уровня инфраструктуры, относительно которого оцениваем окупаемость (симулятор BuildSimInfrEfficiency)
пример: infr_up = 2

Hide  

 

Цель пользователя программы - получить результат работы некоторого приложения.

Чтобы вызвать конкретное приложение, нужно сделать 2 шага:

ШАГ 1. Создать определенный симулятор.
формат:
=====================================================
имя_симулятора = КлассСимулятора(стартовые_условия)
=====================================================

--------------------------------------------------------------------------------------------
В качестве стартовых условий для каждого из симуляторов можно задать страну. 
Доступные страны: 
'СССР', 'ГЕРМАНИЯ', 'ЯПОНИЯ', 'ИТАЛИЯ', 'ФРАНЦИЯ', 'США', 'ВБ'
--------------------------------------------------------------------------------------------

ШАГ 2. Вызвать приложение созданного симулятора. 
формат:
=====================================================
имя_симулятора.имя_приложения(параметры_приложения)
=====================================================

Собственно, это вся схема.

 

Рассмотрим теперь пример, используя приведенную информацию.

1) Создадим симулятор для расчета максимума военных заводов Японии:
=====================================================
мой_симулятор = BuildSimMaxMilitary('ЯПОНИЯ')
=====================================================

Теперь мы можем пользоваться приложениями созданного симулятора 'мой_симулятор'. 

Допустим, мы хотим выполнить find_mil_extremum: 
- определить количество построенных фабрик, которое даст нам максимальное число заводов к некоторой дате

2) Смотрим под спойлер 'доступные приложения симуляторов', и находим параметры find_mil_extremum :
find_mil_extremum(infr_av, laws_timeline, civ_trade_av, date_end) 

3) Смотрим под спойлер 'описание и формат параметров':
- infr_av - средняя инфраструктура ячеек, в которых ведется строительство
- laws_timeline - очередь изменения законов/технологий/советников, влияющих на бонусы строительства и штраф ТНП
- civ_trade_av - средняя разница фабрик от торговли
- date_end - дата принудительного завершения симуляции 

4) Задаем требуемые параметры и вызываем приложение find_mil_extremum:
=====================================================
laws_timeline =  [
                            [(1936, 3, 11), ['Свободная_торговля']], 
                            [(1936, 6, 27), ['Строительство_1']], 
                            [(1937, 4, 22), ['Строительство_2']], 
                            [(1937, 12, 1), ['Военная_экономика']],
                            [(1939, 4, 15), ['Строительство_3']], 
                           ]

 

infr_av = 5
civ_trade_av = 3
date_end = (1941, 12, 7)

мой_симулятор.find_mil_extremum(infr_av, laws_timeline, civ_trade_av, date_end)
=====================================================

результат выполнения приведенного примера в симуляторе:  

18390164.png

18390166.png

Hide  


По описанному выше принципу работает любое приложение симулятора

Hide  

 

Для дополнительной информации читайте также непосредственно в программе:
- файл "ГАЙД" (симуляция для стран не из списка, создание ячеек строительства, код примеров и прочее)
- текстовые пояснения в файле "simulator.py"

 

Важное дополнение:  

Так как пользователь программы задает большое количество параметров, вероятен некорректный ввод, и, как следствие - ошибка работы программы.

Большинство ошибок ввода имеет детальное описание, например:
18390174.png

 

Поэтому, в подобной ситуации - первым делом внимательно прочитайте сообщение, вызванное ошибкой, и сверьтесь с корректным форматом вводимых значений - здесь или в файле проекта 'ГАЙД'.

Hide  

 

Hide  


Упрощения некоторых приложений симулятора:
- используется средняя инфраструктура ячеек, в которых ведется строительство
- используется среднее количество гражданских фабрик от торговли
- не учитываются дополнительные фабрики/заводы от нацфокусов, аннексий итд

 

Данные ограничения введены прежде всего для удобства пользователя. 

 

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

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

 

По сути, симулятор отвечает на 2 главных вопроса, связанных со строительством в игре:
1) Нужно ли строить инфраструктуру ради промышленной выгоды? Кстати, Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.
2) Сколько нужно построить фабрик, чтобы максимизировать число военных заводов к определенной дате?

 

Однако, потенциал программы на этом не исчерпан.
Фактически - в симуляторе можно ставить любые вопросы на тему строительства, и функционал проекта в любой момент может быть расширен под новые задачи.  
Если у вас есть идеи - какие еще аспекты строительства важны для оценки - пишите.


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

 

Только еще раз прошу - сначала внимательно прочитайте гайд.

 

Забавный факт  

Как оказалось, парадоксы не добавили в игру высокосные годы. Без шуток.
Попробуйте найти в игре 29 февраля 1936го или 1940го, Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. .
Это безобразие приводит, например, к тому, что в глобальной ИСТОРИЧЕСКОЙ стратегии дата 22.06.41 наступает на 2 игровых дня раньше, чем это должно произойти.

Hide  
 
Изменено пользователем DmitriyM
Изменено по просьбе автора

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mr_x
20 часов назад, mr_x сказал:

и делитесь своими открытиями

 

Собственно, начну.
В упомянутой выше теме про промышленную эффективность инфраструктуры, я уже Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. и писал, что строительство инфраструктуры не окупается
Но модель скрипта, используемого тогда, была относительно грубой.
Теперь же, имея данный симулятор, можно провести более качественный анализ.

 

Рассмотрим Германию.
Стартовые законы и производственные мощности учтены.
В качестве остальных параметров я взял значения из своей партии за СССР.
Да, это несколько неточно, но развитие Рейха и Союза по законам и технологиям отличается несущественно. 
И по картине ниже вы увидите, что результат настолько показательный, что данное отличие не играет никакой роли.
Впрочем, вы всегда можете протестировать случай с вашими истинными параметрами для Рейха.

 

Итак, построим график границы производственной окупаемости инфраструктуры:  

18390150.png

18388070.png

Hide  

 

Зеленые точки на графике - характеристики регионов Германии в соответствующих осях. 
Причем не стартовые, а значения в условиях изучения концентрированной/рассредоточенной промышленности 1937 (2й уровень) => +40% к слотам строительства.  
Соответственно, я воссоздал стандартную игровую ситуацию, когда первые 2 уровня технологии промышленности мы учим рано - как правило, до момента, когда у нас исчерпаются слоты строительства в ячейках. К тому же, таким образом я пытался помочь Рейху дотянуть до окупаемости.

 

Но, как видим, даже не близко.
(Не окупается даже Мозель с 11ю ячейками!)

 

замечание:  

Регионы страны в виде зеленых точкек на графике - это демонстрационный пример, который работает пока только для Германии и только в описанных выше условиях. 
Чтобы расширить функционал данного графического эффекта до полноценного, требуется переписать данные всех ячеек в игре. 
Или как минимум - всех ячеек мажоров.
Что, очевидно, довольно хлопотно, и я не планирую заниматься этим в ближайшее время.
Впрочем, для интересующего вас сценария вы можете сделать это самостоятельно.
Для добавления ячеек других стран - редактируйте константу CELLS_DICT_DEMO (в соответствии с описанным в ней форматом) в файле simulator.py.

 

Но имейте ввиду, что данный эффект - просто дополнительная плюшка - инструменты симулятора делают анализ окупаемости строительства инфраструктуры полноценным и без точек регионов.

Hide  

 

В той же теме мне возразили, что, якобы, для США строительство инфраструктуры окупается.
Я крайне в этом сомневаюсь. 
Но теперь, наконец, можно перейти от пустых споров и очень легко проверить данное утверждение на истинность.
Необходимо только указать реальные тайминги смены законов и прочие параметры.
За американцев я не играл ни разу, поэтому предоставляю эту возможность игрокам за США. 

Если действительно окажется, что строительство инфраструктуры в США (или где-то еще) имеет смысл, то отлично. 


Но до тех пор я утверждаю, что ответом на вопрос:

20 часов назад, mr_x сказал:

1) Нужно ли строить инфраструктуру ради промышленной выгоды?

 

Будет: 'НЕТ' (довольно жирное, обратите внимание).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Закреплённое сообщение
Flamme
1 час назад, mr_x сказал:

Если у вас есть идеи - какие еще аспекты строительства важны для оценки - пишите.

Верфи? Морских стран, конечно, немного - но для той же Японии баланс между фабриками, заводами и верфями является критическим - поскольку воюет она и на земле, и на море.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
злой юзер
1 час назад, Flamme сказал:

Верфи? Морских стран, конечно, немного - но для той же Японии баланс между фабриками, заводами и верфями является критическим - поскольку воюет она и на земле, и на море.

Возможно я что-то не понимаю, но верфь же во всём как военный завод. Вплоть до бонусов от министров.

Изменено пользователем злой юзер

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mr_x
1 час назад, злой юзер сказал:

Возможно я что-то не понимаю, но верфь же во всём как военный завод. Вплоть до бонусов от министров.

 

Не совсем так. Стоимость завод vs верфь = 7200 vs 6400.
Но это мелочь, самое важное отличие - на верфи не действует штраф ТНП.
То есть, мы можем построить миллион верфей, и при этом количество доступных фабрик останется прежним.

 

А вот количество заводов всегда лимитировано, тк их постройка сокращает количество доступных фабрик. 
Кстати, это не все знают, и вот конкретный пример. 

 

Тк в ТНП уходит: 

фабрики_на_ТНП = штраф_ТНП * (количество_фабрик + количество_заводов)

 

То:

макс_число_заводов =  ((1 - штраф_ТНП) / штраф_ТНП) * количество_фабрик

 

Допустим, штраф_ТНП = 0.3, количество_фабрик = 50
=> макс_число_заводов = (0.7/0.3) * 50 = 116 заводов

UPD. На практике будет даже 114, тк в формуле расчета фабрик на ТНП используется округление вверх.

 

Выше этого числа в приведенных условиях построить невозможно, тк будет доступно ровно 0 фабрик.

 

1 час назад, Flamme сказал:

Верфи? Морских стран, конечно, немного - но для той же Японии баланс между фабриками, заводами и верфями является критическим

 

Я не понимаю, что такое "баланс между фабриками, заводами и верфями".
Например, задача максимизации одного из параметров к определенной дате понятна, а определение баланса - нет.
Можете написать подробнее - что вы имеете ввиду.

 

Изменено пользователем mr_x
см UPD

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Flamme
9 часов назад, mr_x сказал:

Можете написать подробнее - что вы имеете ввиду.

Ну как понимаю это я - Японии надо к лету 37-го (сейчас берём исторический путь) получить максимум возможных военных заводов - поскольку для войны с Китаем нужна, в первую очередь, армия. А к декабрю 41-го нужны и верфи, и заводы - поскольку для войны с США и Великобританией нужны и флот, и армия - причём в равной степени. Т.е. требуется расчёт более-менее равномерного их развития, а не просто максимизации одного из параметров.

Помню я 6 раз играл за Японию и только в последние 2 мне удалось более-менее ровно усилить и армию, и флот - в предыдущие получался перекос: или в сторону верфей (что давало мощный флот, но недостаточную армию) или в сторону заводов (что давало достаточную армию, но слишком слабый флот). 

________________________
добавлено 0 минут назад

И при этом Японии очень нужны фабрики - поскольку ресурсы она просто вынуждена закупать. И ещё при этом что-то строить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mr_x

@Flamme, такой пример сложно анализировать из-за ранней масштабной войны и неопределенности срока ее окончания.

Я бы оценивал отдельно 2 случая.

 

1. Старт игры -> начало войны с Китаем.


Срок окупаемости фабрики превышает 1.5 года.
Поэтому, конкретно для максимизации воензаводов к лету 1937го, нужно строить только их.

 

картинки:  

(ваши тайминги и прочие параметры могут отличаться, но картина от этого не изменится)

Также, полагаю, +- несколько заводов не сыграют критической роли. 
Поэтому на этом этапе можно выбрать тот баланс, который вас устраивает.

18399508.png

18399599.png

Hide  

 

Далее интенсивность развития по большей части определяется не нашими стройками, а сроком окончания войны.
Поэтому я бы рассматривал отдельно 2й случай:

 

2. Конец войны с Китаем -> Перл-Харбор.


Соответственно, для анализа данного сценария, нужно знать тайминг окончания войны и промышленную мощность к этой дате.

Допустим, это 01.01.38 и фабрики/заводы = 40/35.

 

Тогда, можно использовать уже имеющиеся инструменты симулятора, внеся в них некоторые правки.
Если вы хотите максимизировать связку завод+верфь, то можно изменить стоимость объекта 'военный завод', добавив к нему стоимость верфи.

(см ключ 'mil' в константе OBJ_COST файла simulator.py)


И затем запустить стандартную максимизацию воензаводов к 07.12.41. 
(с учетом текущих законов и сдвинув в параметрах все даты на 2 года назад, тк стартуем с 01.01.38)

В данном случае у нас будет строиться объект 'завод+верфь' со стоимостью: 7200 + 6400 = 13600.

 

картинки:  

18399510.png

18399600.png

Hide  

 

Таким образом, получившиеся +35 'заводов' одновременно означают + 35 верфей.
При этом, тк на фабрики в ТНП будут влияют только воензаводы, схема строительства останется корректной.


Как-то так. 
Получилось не очень изящно, да.
Но ранняя масштабная война + необходимость верфей делают приведенный вами пример исключительным.

 

Я подумаю - стоит ли добавлять верфи в проект.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
DmitriyM
i

Ссылка на симулятор изменена по просьбе автора. Теперь можно скачать последнюю версию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
olvera007
В 27.08.2017 в 22:00, mr_x сказал:


Упрощения некоторых приложений симулятора:
- используется средняя инфраструктура ячеек, в которых ведется строительство
- используется среднее количество гражданских фабрик от торговли
- не учитываются дополнительные фабрики/заводы от нацфокусов, аннексий итд

 

Уверены, что это полезно? Например, я прогнав в "симуляторе", зашел в игру и закупаю ресурсы для техники. Как результат у меня меньше фабрик/заводов и я продул. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mr_x
3 часа назад, olvera007 сказал:

Уверены, что это полезно? Например, я прогнав в "симуляторе", зашел в игру и закупаю ресурсы для техники. Как результат у меня меньше фабрик/заводов и я продул.

 

Симулятор всего-навсего позволяет научиться правильно строить в HOI4, не гоняя для этого десятки партий.
Полезно это или нет - решать конкретному пользователю.

 

О чем ваш вопрос?

 

Вы владеете врожденным чувством баланса в HOI4, и любые программные инструменты для вас чрезмерно грубы?
Тогда да, симулятор для вас бесполезен.

 

Вы сомневаетесь в точности симулятора из-за использования среднего значения, не проведя в нем ни одного теста?
Это забавно.
Кстати, не зная хотя бы примерно среднее количество фабрик от торговли, вы всегда строите вслепую.
Что в игре, что в симуляторе.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
olvera007
15 часов назад, mr_x сказал:

 

Симулятор всего-навсего позволяет научиться правильно строить в HOI4, не гоняя для этого десятки партий.
Полезно это или нет - решать конкретному пользователю.

 

О чем ваш вопрос?

 

Вы владеете врожденным чувством баланса в HOI4, и любые программные инструменты для вас чрезмерно грубы?
Тогда да, симулятор для вас бесполезен.

 

Вы сомневаетесь в точности симулятора из-за использования среднего значения, не проведя в нем ни одного теста?
Это забавно.
Кстати, не зная хотя бы примерно среднее количество фабрик от торговли, вы всегда строите вслепую.
Что в игре, что в симуляторе.

 

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

Что же вы сразу обижаетесь и слюной брызжете? Может я недостаточно тактично выразился по отношению к вашему детищу. Но вот какая штука, знать точное количество заводов/фабрик к некому году особо не нужно. Важно знать количество дивизий определенного шаблона к некому времени. Поясняю: для нормальной игры в хойку, не в режиме аутиста, необходим план. Т.е. например высадка в суматру. Я прикидываю количество портов, примерное количество дивизий, что будет защищаться. И решаю выделить необходимый наряд сил - столько то и столько то дивизий. Для этого мне нужно знать сколько у меня будет именно снаряги. А не сколько я заводов сделаю. Потому как в общем и целом прогнать чисто стройку - это одно. А прогнать с закупом ресурсов - совсем другое. Реально, что бы хоть какая то польза была от подобных программ, нужно сделать некий симулятор промышленности. Где указать рост последовательности линеек различных видов техники/снаряги, стартовое количество промышленности. И хотя бы примерную последовательность исследований и законов - в сути бонусов. Т.е. я пишу количество стартовых ресурсов, количество стартовых фабрик, заполняю, пусть будет таблица, последовательность производства: 15 на винтовки, 10 на арту, 5 на доп снаряжение. Программа должна посчитать, с учетом постепенного "развертывания" заводов в линейки производства,  с учетом роста эффективности промышленности(для концентрированной одно значение, для рассредоточенной - другое) сколько и к какому времени будет снаряжения, и идеально, сколько дивизий определенного шаблона будет доступно. Естественно отсюда должны быть вычеты значения для закупки требуемых ресурсов сверх доступных стране с начала. И учитывать бонусы от исследований и законов, хотя бы на уровне: " в 37 изучу концепромку2". 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mr_x
1 час назад, olvera007 сказал:

Что же вы сразу обижаетесь и слюной брызжете? Может я недостаточно тактично выразился по отношению к вашему детищу

 

Поясняю. 

 

Изначально я написал программу для себя.
Но затем, в знак благодарности за информацию, полученную здесь, я решил поделиться с форумом. 
И это определенный труд, притом безвоздмездный.
Естественно, мне неприятно читать развязный бессодержательный вброс без намека на конструктив от прохожего с комплексом превосходства.
Который поленился внимательно ознакомиться с заглавным постом и протестировать программу. 
Но зато счел необходимым выразить свое доминантное неодобрение.
Если в детстве вас не воспитали уважать чужой труд, не удивляйтесь, что вам отвечают подобным образом.

 

Далее.

 

1 час назад, olvera007 сказал:

Реально, что бы хоть какая то польза была от подобных программ, нужно сделать некий симулятор промышленности.

 

Вы скачете с темы на тему.
Это симулятор строительства. Точка.
Не промышленности, не десантных высадок, и даже не WC за Бутан.

 

Полезен он или нет, "реально" или "нереально" - очевидно, можно утверждать только после пользования программой.

 

1 час назад, olvera007 сказал:

А не сколько я заводов сделаю.

 

Если вы заявляете, что планирование строительства неважно в принципе, то советую перезагрузиться и продолжить:
 

1 час назад, olvera007 сказал:

не в режиме аутиста

 

О том, насколько важно планирование строительства - можете заглянуть в тему "СССР" и почитать мои отчеты о партиях на AI Expert.
Большинство опытных игроков там не могут произвести то количество техники, которое получается у меня.
И весь секрет - внимание - да, данный симулятор строительства.
Которым я с успехом пользуюсь, и который вы уже так решительно списали.

 

1 час назад, olvera007 сказал:

Потому как в общем и целом прогнать чисто стройку - это одно. А прогнать с закупом ресурсов - совсем другое

 

1 час назад, olvera007 сказал:

И учитывать бонусы от исследований и законов, хотя бы на уровне: " в 37 изучу концепромку2".

 

Вы совершенно не разобрались в предмете, который критикуете

В симуляторе используются как закупка ресурсов - ч/з среднее количество фабрик от торговли, так и динамика изменения законов, определяемая пользователем.

И это реализовано не на уровне "в 37 изучу концепромку2", а примерно так:

 

В 27.08.2017 в 22:00, mr_x сказал:

laws_timeline =  [
                            [(1936, 3, 11), ['Свободная_торговля']], 
                            [(1936, 6, 27), ['Строительство_1']], 
                            [(1937, 4, 22), ['Строительство_2']], 
                            [(1937, 12, 1), ['Военная_экономика']],
                            [(1939, 4, 15), ['Строительство_3']], 
                           ]

 

Вы даже заглавный пост не прочитали, о чем тут говорить.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
lleyton
В 27.08.2017 в 23:00, mr_x сказал:

Представляю вашему вниманию онлайн-симулятор строительства в HOI4 (версия: 1.4.х, x = 0,1,2).
Программа содержит различные приложения для оценки игровых аспектов промышленной эффективности.
В том числе графические.

 

Сразу к делу - функционал симулятора:

- расчет количества построенных военных заводов к определенной дате:

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Hide
- порядок строительства для максимизации военных заводов к определенной дате:

18388069.png

Hide
- оценка производственной окупаемости инфраструктуры как для конкретной ячейки, так и для страны в целом:

18390171.png

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Hide
- постройка объектов по произвольной очереди строительства с возможностью подробной печати событий:

18388071.png

Hide

 

При этом, в полном соответствии с игровой механикой, в процессе стройки динамически учитываются изменения: 
- инфраструктуры ячеек 
- бонусов строительства и штрафа ТНП - по заданным пользователем таймингам

 

И да, все это работает онлайн.

 

Для тех, кто все еще с нами:    
- Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

 

ГАЙД (просьба ознакомиться внимательно)

Симулятор работает в браузере на ресурсе repl.it (репозиторий с онлайн компилятором/интерпретатором, который при этом умеет в графику).  
При 1м посещении, сайт может предложить зарегистрироваться - отклоняйте - для пользования симулятором регистрация не нужна.

 

Рабочее окно симулятора выглядит следующим образом:

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Hide

 

Алгоритм работы с симулятором:
1) задаете нужные вам параметры в рабочем поле файла 'main.py'
2) жмете кнопку 'run'
3) получаете результат в консоли и/или в файле 'graph.png' (в этом файле будут отображаться графики)

Таким образом, для большинства пользователей актуальной будет настройка только файла 'main.py'.
Если же вы хотите разобраться глубже или форкнуть проект - вся начинка симулятора находится в файле 'simulator.py'. 

 

Как вносить изменения в 'main.py':

В целом, ничего хитрого - стираете/комментируете ненужное, печатаете/раскомментируете нужное.
Но есть пара нюансов.

При внесении изменений в проект в 1й раз, ресурс может выдать следующее окно:

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

 

Если вы не собираетесь вносить долгосрочные изменения - жмите "Cancel".
После этого вы сможете настроить 'main.py' под нужные вам параметры и получить соответствующие результаты.

Некоторое время ресурс сохраняет такие изменения, но затем проект сбрасывается до первоначального состояния.
Впрочем, этого вполне хватает, чтобы протестировать нужный вам сценарий, не регистрируясь на сайте.

Hide

 

1. Быстрый гайд - конкретные примеры:

(все изменения в рабочем поле выделены оранжевым)
(результаты примеров - в консоли и/или в файле 'graph.png')

 

1) схема строительства:
строим некоторое количество гражданских фабрик, затем строим военные заводы
 

- график количества построенных заводов к определенной дате по набору количества построенных фабрик:

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

 

Hide
- график экстремума построенных заводов к определенной дате по числу построенных фабрик:

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

 

Hide

 

2) схема строительства:
сравниваем строительство по 2м ячейкам (с равными начальными условиями)
ячейка 1: сначала строим некоторое количество инфраструктуры, затем - фабрики
ячейка 2: сразу строим фабрики
 

- график границы окупаемости строительства инфраструктуры для ячеек данной страны:

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Hide
- определение - окупается ли строительство инфраструктуры в данной конкретной ячейке:

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Hide
- определение - окупается ли строительство инфраструктуры для какой-либо из ячеек в данной стране (демо-версия):

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Hide

 

3) схема строительства:
произвольная очередь строительства - по очереди строительства, заданной пользователем
 

- подробная печать в консоль событий симуляции:

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Hide

 

Hide
2. Подробный гайд - принцип работы программы:

1. В программе существует 3 класса симуляторов:
- BuildSimulator - базовый симулятор
- BuildSimMaxMilitary - симулятор для максимизации военных заводов
- BuildSimInfrEfficiency - симулятор для оценки эффективности строительства инфраструктуры  

2. Каждый симулятор имеет свои приложения 

доступные приложения симуляторов и их параметры:

- BuildSimulator:

1) симуляция строительства по заданным параметрам:
- build_sim(build_order, laws_timeline, civ_trade_av, date_end)
-----------------------------------------------------

- BuildSimMaxMilitary:

1) симуляция строительства по заданным параметрам:
- build_sim(civ_num_to_build, infr_av, laws_timeline, civ_trade_av, date_end)

2) график количества построенных заводов к определенной дате по набору количества построенных фабрик:
- visualize_efficiency(civ_num_to_build_list, infr_av, laws_timeline, civ_trade_av, date_end)

3) график экстремума построенных заводов к определенной дате по числу построенных фабрик:
- find_mil_extremum(infr_av, laws_timeline, civ_trade_av, date_end)      
-----------------------------------------------------

- BuildSimInfrEfficiency:

1) симуляция строительства по заданным параметрам:
- build_sim(infr_initial, infr_up, laws_timeline)

2) график границы окупаемости строительства инфраструктуры для ячеек данной страны:
- visualize_equilibrium(infr_up, laws_timeline)

3) определение - окупается ли строительство инфраструктуры в данной конкретной ячейке:
- is_cell_profitable(cell, infr_up, laws_timeline)

4) определение - окупается ли строительство инфраструктуры для какой-либо из ячеек в данной стране (демо-версия):
- is_any_cell_profitable(infr_up, laws_timeline)

Hide
описание и формат параметров:

-----------------------------------------------------
параметр laws_timeline:
-----------------------------------------------------

laws_timeline - очередь изменения законов/технологий/советников, влияющих на бонусы строительства и штраф ТНП
(важнейший параметр, используется абсолютно во всех приложениях)

формат:
[
[ (год, месяц, день), ['имя_нового_закона_1', ...] ],
...
]

доступные имена законов/технологий/советников: 
(подробнее - см LAWS_MODIFICATORS в файле проекта 'simulator.py')
-----------------------------------------------------
'Обезоруженная_нация', 'Только_добровольцы', 'Ограниченный_призыв', 'Расширенный_призыв', 'Обязательная_служба', 'Все_взрослые', 'Всех_под_ружье',
'Свободная_торговля', 'Приоритет_экспорт', 'Ограниченный_экспорт', 'Закрытая_экономика',
'Ненарушаемая_изоляция', 'Изоляция', 'Гражданская_экономика', 'Ранняя_мобилизация', 'Частичная_мобилизация', 'Военная_экономика', 'Всеобщая_мобилизация',

'Строительство_1', 'Строительство_2', 'Строительство_3', 'Строительство_4', 'Строительство_5',

'Капитан_индустрии', 'Капитан_индустрии_уволен',
'Военный_магнат','Военный_магнат_уволен'
-----------------------------------------------------

пример:
laws_timeline = [
                            [(1936, 1, 1), ['Только_добровольцы', 'Приоритет_экспорт', 'Гражданская_экономика']],
                            [(1936, 3, 11), ['Свободная_торговля']]
                          ]

-----------------------------------------------------
параметр build_order: 
-----------------------------------------------------

build_order - очередь строительства

формат: 
[ ['имя_ячейки', 'объект_для_постройки', количество], ... ]

имена ячеек:
- произвольная строка, например: 'моя_ячейка'

имена объектов для постройки:
'infr' - инфраструктура
'civ' - гражданская фабрика
'mil' - военный завод

примеры:
build_order = [['Москва', 'infr', 2], ['Сталинград', 'civ', 2], ['Харьков', 'mil', 2], ['Москва', 'mil', 1]]
build_order = [['Минас-Тирит', 'mil', 5], ['Винтерфелл', 'mil', 4]] 
build_order = [['Whatever', 'infr', 2], ['Nevermind', 'civ', 7]]

-----------------------------------------------------
прочие параметры:
-----------------------------------------------------

civ_trade_av - средняя разница фабрик от торговли
пример: civ_trade_av = 10

date_end - дата принудительного завершения симуляции (год, месяц, день)
пример: date_end = (1941, 6, 22)

civ_num_to_build - количество фабрик для постройки (симулятор BuildSimMaxMilitary)
пример: civ_num_to_build = 15

civ_num_to_build_list - набор количества фабрик для постройки (симулятор BuildSimMaxMilitary)
пример: civ_num_to_build_list = [0, 10, 20]

infr_av - средняя инфраструктура ячеек, в которых ведется строительство (симулятор BuildSimMaxMilitary)
пример: infr_av = 6

infr_initial - изначальная инфраструктура ячеек (симулятор BuildSimInfrEfficiency)
пример: infr_initial = 4

infr_up - поднятие уровня инфраструктуры, относительно которого оцениваем окупаемость (симулятор BuildSimInfrEfficiency)
пример: infr_up = 2

Hide

 

Цель пользователя программы - получить результат работы некоторого приложения.

Чтобы вызвать конкретное приложение, нужно сделать 2 шага:

ШАГ 1. Создать определенный симулятор.
формат:
=====================================================
имя_симулятора = КлассСимулятора(стартовые_условия)
=====================================================

--------------------------------------------------------------------------------------------
В качестве стартовых условий для каждого из симуляторов можно задать страну. 
Доступные страны: 
'СССР', 'ГЕРМАНИЯ', 'ЯПОНИЯ', 'ИТАЛИЯ', 'ФРАНЦИЯ', 'США', 'ВБ'
--------------------------------------------------------------------------------------------

ШАГ 2. Вызвать приложение созданного симулятора. 
формат:
=====================================================
имя_симулятора.имя_приложения(параметры_приложения)
=====================================================

Собственно, это вся схема.

 

Рассмотрим теперь пример, используя приведенную информацию.

1) Создадим симулятор для расчета максимума военных заводов Японии:
=====================================================
мой_симулятор = BuildSimMaxMilitary('ЯПОНИЯ')
=====================================================

Теперь мы можем пользоваться приложениями созданного симулятора 'мой_симулятор'. 

Допустим, мы хотим выполнить find_mil_extremum: 
- определить количество построенных фабрик, которое даст нам максимальное число заводов к некоторой дате

2) Смотрим под спойлер 'доступные приложения симуляторов', и находим параметры find_mil_extremum :
find_mil_extremum(infr_av, laws_timeline, civ_trade_av, date_end) 

3) Смотрим под спойлер 'описание и формат параметров':
- infr_av - средняя инфраструктура ячеек, в которых ведется строительство
- laws_timeline - очередь изменения законов/технологий/советников, влияющих на бонусы строительства и штраф ТНП
- civ_trade_av - средняя разница фабрик от торговли
- date_end - дата принудительного завершения симуляции 

4) Задаем требуемые параметры и вызываем приложение find_mil_extremum:
=====================================================
laws_timeline =  [
                            [(1936, 3, 11), ['Свободная_торговля']], 
                            [(1936, 6, 27), ['Строительство_1']], 
                            [(1937, 4, 22), ['Строительство_2']], 
                            [(1937, 12, 1), ['Военная_экономика']],
                            [(1939, 4, 15), ['Строительство_3']], 
                           ]

 

infr_av = 5
civ_trade_av = 3
date_end = (1941, 12, 7)

мой_симулятор.find_mil_extremum(infr_av, laws_timeline, civ_trade_av, date_end)
=====================================================

результат выполнения приведенного примера в симуляторе:

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Hide


По описанному выше принципу работает любое приложение симулятора

Hide

 

Для дополнительной информации читайте также непосредственно в программе:
- файл "ГАЙД" (симуляция для стран не из списка, создание ячеек строительства, код примеров и прочее)
- текстовые пояснения в файле "simulator.py"

 

Важное дополнение:

Так как пользователь программы задает большое количество параметров, вероятен некорректный ввод, и, как следствие - ошибка работы программы.

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

 

Поэтому, в подобной ситуации - первым делом внимательно прочитайте сообщение, вызванное ошибкой, и сверьтесь с корректным форматом вводимых значений - здесь или в файле проекта 'ГАЙД'.

Hide

 

Hide


Упрощения некоторых приложений симулятора:
- используется средняя инфраструктура ячеек, в которых ведется строительство
- используется среднее количество гражданских фабрик от торговли
- не учитываются дополнительные фабрики/заводы от нацфокусов, аннексий итд

 

Данные ограничения введены прежде всего для удобства пользователя. 

 

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

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

 

По сути, симулятор отвечает на 2 главных вопроса, связанных со строительством в игре:
1) Нужно ли строить инфраструктуру ради промышленной выгоды? Кстати, Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.
2) Сколько нужно построить фабрик, чтобы максимизировать число военных заводов к определенной дате?

 

Однако, потенциал программы на этом не исчерпан.
Фактически - в симуляторе можно ставить любые вопросы на тему строительства, и функционал проекта в любой момент может быть расширен под новые задачи.  
Если у вас есть идеи - какие еще аспекты строительства важны для оценки - пишите.


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

 

Только еще раз прошу - сначала внимательно прочитайте гайд.

 

Забавный факт

Как оказалось, парадоксы не добавили в игру высокосные годы. Без шуток.
Попробуйте найти в игре 29 февраля 1936го или 1940го, Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. .
Это безобразие приводит, например, к тому, что в глобальной ИСТОРИЧЕСКОЙ стратегии дата 22.06.41 наступает на 2 игровых дня раньше, чем это должно произойти.

Hide

писал тоже самое для себя

выводы такие же

 

для оценки эффективности заводы/фабрики есть 2 способа:

1. по доп фабрикам (как у вас)

2. объем выпуска заводов (у вас не увидел)

завод построенный на год раньше выпустит значительно больше техники

 

ПС прогу не качал, выводы по скриншотам, но однозначный +

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mr_x
В 16.09.2017 в 23:15, lleyton сказал:

ПС прогу не качал, выводы по скриншотам, но однозначный +

 

Прогу не нужно качать, все работает онлайн =)

 

В 16.09.2017 в 23:15, lleyton сказал:

для оценки эффективности заводы/фабрики есть 2 способа:

1. по доп фабрикам (как у вас)

2. объем выпуска заводов (у вас не увидел)

завод построенный на год раньше выпустит значительно больше техники

 

Согласен, но для себя я пришел к выводу, что сложно ввести однозначные критерии для сравнения по объему выпуска.

Все-таки, большое количество актуального к войне вооружения в первые годы недоступно, а то, которое доступно, зачастую даже на стартовых заводах будет произведено с избытком.

При таком подходе все упирается в конкретную стратегию игрока и реализовать общую модель, на мой взгляд, крайне проблематично.

 

Также есть такой момент, как строительные мощности.

Дополнительный завод произведет дополнительное вооружение, да, но дополнительная фабрика (за вычетом ТПН) даст возможность быстрее построить, например, линию укреплений перед войной.

Что важнее - опять же, упирается в конкретного игрока и конкретную партию.

 

Поэтому я остановился на относительно грубой, но достаточно общей модели, которая дает возможность рассчитать соотношение фабрики/заводы к дате.

Исходя из полученных результатов, можно произвести более аккуратный анализ уже с учетом особенностей своего расклада. 

По крайней мере, в партиях за СССР у меня получалось спрогнозировать производственные мощности поразительно точно =)

 

Можете поделиться - как именно вы учитывали эффективность по объему выпуска?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
lleyton
13 часа назад, mr_x сказал:

Можете поделиться - как именно вы учитывали эффективность по объему выпуска?

выпуск одного завода в день = 5

+ бонусы от конц/рассред промышленности (к соответствующим датам)

+ делим на эффективность производства (опять капы к датам)

есть конечно момент набора этой самой эффективности, но его можно проигснорировать, он будет одинаковый для любой даты постройки завода и дельту не создаст

 

а так просто учитываем объемы производства стартовых заводов + каждый построенный завод (от даты его постройки)

можно тоже сделать красиво с графиком (у меня просто цифорки были)

 

ну и в целом абсолютно верно, важно какую технику производить,  все зависит от стратегии конкретного игрока

 

еще было бы интересно оценить варианты игры рейха автаркия/свободная торговля

фабрики/нефтянка 

там тоже далеко не все так очевидно

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Daymas

Очень крутая задумка.

На будущее... если уж так интересно все прогнозировать, советую добавить ещё одну фичу... как максмизировать колличство выпущенной техники к определённому году) 

 

Допустим те которые доступны с 36.

Изменено пользователем Daymas

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
KarambaKG

Да ТС ты молодец, но я как web-developer говорю что прога вообще не user friendly. 

( и да я понимаю, что ты делал это для себя)

 

А так классно, я полазил по разбирался и пришёл к выводу что я хочу играть, а не копаться в чужом коде)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

  • Модераторы онлайн

    • Дон Андрон