[ Главная · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Пытаюсь замутить свой симулятор.
olegpersh999Дата: Суббота, 13.06.2026, 15:32 | Сообщение # 841
Поездной диспетчер
Группа: Пользователи
Сообщений: 373
Награды: 4
Репутация: 3
Статус: Offline
Цитата V9 ()
Пожелайте мне удачи, я работаю над "время работы локомотивных бригад"
вот это отлично) просто предыдущие не понимаю к чему относятся)) а с этим удачи! Надеюсь что все получится
 
V9Дата: Воскресенье, 14.06.2026, 05:43 | Сообщение # 842
Поездной диспетчер
Группа: Пользователи
Сообщений: 798
Награды: 14
Репутация: 3
Статус: Offline
Затык. У каждого поезда есть ID. В теории все просто: поезд появляется на полигоне, назначаем время работы локомотивной бригаде. Но есть проблема. Пассажирские поезда едут на НВ1, там стоят, разворачиваются, выезжают и едут обратно не меняя ID. Так сделал Zork в Неве и это логично, ибо зачем помечать поезд "неработающим" в save.sav, вводить новую запись с новым ID, если по сути, этот тот же поезд?

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

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

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

При этом, я не могу ни при каких обстоятельствах делать какие-то внутренние отсылки на Сургут, НВ, УЯ чисто по логике, что DSim по замыслу должен опираться строго на сведения из .dat файлов и не хранить какой-либо подобной инфы, "зашитой" внутри.

Можно хранить две записи: по Сургуту приехали, время назначили, в НВ приехали, время назначили. Часть проги, ответственная за отрисовку списка выберет последнее. Но снова вылазит проблема УЯ - а там-то что делать? Там время трогать нельзя!

И еще у нас новая проблема. Пользователь может восстановиться из архива. И восстановиться, когда поезд проехал Сургут и не приехал в НВ1. Тогда у нас две записи от предыдущего состояния симулятора, но использовать надо Сургутскую запись.
 
olegpersh999Дата: Воскресенье, 14.06.2026, 06:06 | Сообщение # 843
Поездной диспетчер
Группа: Пользователи
Сообщений: 373
Награды: 4
Репутация: 3
Статус: Offline
А допустим назначать время работы лок.бригадам по Покачевскому для поездов следующих с Ноябрьска. Допустим часа 4 на работе (я дальше просто не знаю, где находится станция смены л/б и сколько время хода от нее.) Тогда Ульт-Ягун проходящая будет.

Добавлено (14.06.2026, 06:09)
---------------------------------------------

Цитата V9 ()
Пассажирские поезда едут на НВ1, там стоят, разворачиваются, выезжают и едут обратно не меняя ID.
ну с этим да проблема. По сути в расписании только у 379/380 нормальный оборот в НВ1 буквально 2 часа в принципе той же бригаде хватит время привезти этот поезд обратно, но у остальных оборот многочасовой. А расформировывать пассажирские и потом заново их выставлять по НВ1 нельзя так сделать? Потому что реально это так и происходит
 
V9Дата: Воскресенье, 14.06.2026, 07:21 | Сообщение # 844
Поездной диспетчер
Группа: Пользователи
Сообщений: 798
Награды: 14
Репутация: 3
Статус: Offline
Цитата olegpersh999 ()
А допустим назначать время работы лок.бригадам по Покачевскому для поездов следующих с Ноябрьска. Допустим часа 4 на работе (я дальше просто не знаю, где находится станция смены л/б и сколько время хода от нее.) Тогда Ульт-Ягун проходящая будет.
Хых! Если бы Нева передавала сведения по Покачам, у нас давно бы был допграфик DSim для северного участка. Графика нет потому что нет сведений от Невы по Ингу-Ягуну, Покачам, Черному мысу и Сургут-порту.

Добавлено (14.06.2026, 07:50)
---------------------------------------------

Цитата olegpersh999 ()
ну с этим да проблема. По сути в расписании только у 379/380 нормальный оборот в НВ1 буквально 2 часа в принципе той же бригаде хватит время привезти этот поезд обратно, но у остальных оборот многочасовой. А расформировывать пассажирские и потом заново их выставлять по НВ1 нельзя так сделать? Потому что реально это так и происходит
В принципе, я понял, как сделать нужно. Нужно иметь два списка: "Валидные поезда" и "Невалидные". Оцениваться будет связка "ID+номер поезда". Перед проходом цикла отрисовки перекидываем все поезда из Валидных в Невалидные. По мере прохода списка событий перекидываем существующие записи из "невалидных" в "валидные". Но если у нас событие тип "6" - "расформирование поезда" - снова выбрасываем из "валидного" в "невалидный" список.

Тогда последовательность действий будет такая:
1. Приходит в Сургут, связки нет, создается новая запись "сургутское время"
2. Приезжаем в УЯ, но связка уже есть, время не обновляем;
3. Приезжаем в НВ1, связка есть. не обновляем;
4. Получаем событие №6, выбрасываем связку в "невалидные" и там удерживаем;
5. Получаем новую связку ID+номер, присваиваем новое время, уже с НВ1
6. Едем в УЯ, связка есть, время не назначаем;
7. Приезжаем в Сургут, время как бы тикает, но так как это последняя станция полигона, из списка валидных можно убрать, а значит пропадет со списка рабочего времени л/б.

Соответственно, в связке ID+номер храним момент, когда ей назначили время. После цикла отрисовки мы знаем "текущее время игры". Проходим по связкам  и те связки, где у нас время назначено больше 14-18 часов "назад", удаляем из списка. 

Дополнительный режим сокращения списка, в основном для Северного хода, будет заключаться в том, чтобы анализировать save.sav. Если поезд по save.sav "расфомирован", то записи удерживаем в списке "невалидных". После прохода Покачей, поезда будет помечен Невой как "расформированный", а значит - можно убрать из списка рабочего времени.
 
V9Дата: Вторник, 16.06.2026, 06:12 | Сообщение # 845
Поездной диспетчер
Группа: Пользователи
Сообщений: 798
Награды: 14
Репутация: 3
Статус: Offline
Лол, приехали! smile При очередной компиляции компилятор выдал ошибку:


Однако в коде все идеально:


А что произошло? Код стал слишком сложным для компилятора. Он, компилятор, в нем, коде, "захлебнулся". Что интересно, это уже было раньше. Я компилировал компилятором Java 1.0 и запускал Java 1.0. Потом компилятор Java 1.0 захлебнулся. И мне пришлось перейти на компилятор Java 1.1. Который компилирова код, который код запускался на Java 1.0. Сейчас будет попытка еще раз подняться по ветке компиляторов вверх и компилировать уже Java 1.2, чтобы по прежнему запускать на Java 1.0
Прикрепления: 4425474.png (18.1 Kb) · 1160207.png (4.0 Kb)
 
V9Дата: Вторник, 16.06.2026, 08:42 | Сообщение # 846
Поездной диспетчер
Группа: Пользователи
Сообщений: 798
Награды: 14
Репутация: 3
Статус: Offline
Фух! Пока нашел ошибку... Наконец-то появился список поездов и времени работы лок бригад "впринципе".

Уф! Можно выдохнуть. Теперь список требуется "уточнять" и "проверять", а потом прикручивать графическую часть.
Прикрепления: 5859595.png (4.1 Kb)
 
olegpersh999Дата: Вторник, 16.06.2026, 08:59 | Сообщение # 847
Поездной диспетчер
Группа: Пользователи
Сообщений: 373
Награды: 4
Репутация: 3
Статус: Offline
Это номер поезда и время в минутах?
 
V9Дата: Вторник, 16.06.2026, 09:44 | Сообщение # 848
Поездной диспетчер
Группа: Пользователи
Сообщений: 798
Награды: 14
Репутация: 3
Статус: Offline
Цитата olegpersh999 ()
Это номер поезда и время в минутах?
Да. Типа "на текущий момент". В будущем там всё красиво будет в отдельном окне с часами и  минутами.

ps. Пока столкнулся с проблемой. Поезд, когда "снимается" с полигона Невой, получает временный признак "снят" в файле save.sav, но из списка не удаляется. Я опираюсь на этот признак, чтобы удалить поезда "ушедшие" с полигона. Но выяснилось, что через некоторое время поезд и из списка удаляется. DSim найти поезд не может и считает, что "возможно, мы живем без save.sav, будем ждать признак "расформирован!" в GID.txt". А нева его, признак расформирования, туда не посылает для поездов, уехавших на север.
Легкий "тупиг". smile
 
V9Дата: Вторник, 16.06.2026, 10:16 | Сообщение # 849
Поездной диспетчер
Группа: Пользователи
Сообщений: 798
Награды: 14
Репутация: 3
Статус: Offline
Списочек, однако, огого! smile
Прикрепления: 5734055.png (11.2 Kb)
 
olegpersh999Дата: Вторник, 16.06.2026, 12:07 | Сообщение # 850
Поездной диспетчер
Группа: Пользователи
Сообщений: 373
Награды: 4
Репутация: 3
Статус: Offline
V9, а через дробь это что?
 
V9Дата: Вторник, 16.06.2026, 13:18 | Сообщение # 851
Поездной диспетчер
Группа: Пользователи
Сообщений: 798
Награды: 14
Репутация: 3
Статус: Offline
Альфа-релиз "учет локомотивного времени бригад" v0.5.8.8a. На данный момент таблица рабочего выводится и обновляется в консоли в момент, когда DSim получает команду на обновление ГИДа. Было много косяков, буду еще улучшать, тестировать и добавлять вывод в графическое окно. Но скорей всего - послезавтра.

Сведения о присвоении времени берутся из polygon.dat внутри каталога Territory\1. Можно донастроить "под себя" при желании. Если потребуются разъяснения, спрашивайте, расскажу!

Добавлено (16.06.2026, 13:19)
---------------------------------------------

Цитата olegpersh999 ()
V9, а через дробь это что?
ID поезда, уникальный идентификатор поезда. Использую для себя при отладке, чтобы понять что за поезд.
Прикрепления: dsim_0_5_8_8a.zip (79.9 Kb)
 
V9Дата: Вторник, 16.06.2026, 13:23 | Сообщение # 852
Поездной диспетчер
Группа: Пользователи
Сообщений: 798
Награды: 14
Репутация: 3
Статус: Offline

Номер поезда, его ID (в граф интерфейсе не будет), сколько бригада работает, на какой станции бригада, условно, села, и на какой станции данный поезд был замечен в последний раз.

Для поездов с севера время назначается по УЯ так как северный участок - ИЯ и Покачи - не пишутся в GID.txt Невой и моя прога просто о тех поездах не знает.

Поезда удаляются из списка немедленно по прибытию в Сургут или НВ1 или если Нева его "удалила" у себя в save.sav (для северного хода).

Добавлено (16.06.2026, 13:23)
---------------------------------------------
Отрицательное время, условно "бригада еще не явилась в поездку".

Прикрепления: 8251895.png (8.5 Kb)
 
olegpersh999Дата: Вторник, 16.06.2026, 13:26 | Сообщение # 853
Поездной диспетчер
Группа: Пользователи
Сообщений: 373
Награды: 4
Репутация: 3
Статус: Offline
пошел тестировать

Добавлено (16.06.2026, 13:33)
---------------------------------------------
Сразу же казус. Лок.бригада у поезда 332 9 минут на работе. Такого не может быть. Машинист пришел в депо, прошел мед.комиссию и вставил кассету в устройство специальное (не помню как называется) и с этого момента пошла у машиниста явка. Пока он дошел из депо до своего локомотива время его уже идет. Пока он принял локомотив пока оттормозился время уже где-то за час на работе должно быть.

 
V9Дата: Вторник, 16.06.2026, 13:44 | Сообщение # 854
Поездной диспетчер
Группа: Пользователи
Сообщений: 798
Награды: 14
Репутация: 3
Статус: Offline
Я не знаю, как сейчас, но раньше явка была с момента прихода в депо. Далее отсчитывалось время на прохождение медкомиссии, на приемку тепловоза и т.п. Был норматив времени "выезда на контрольный пост", 40 минут помоему. То есть, не с момента вставления кассеты. Однажды мы в депо Сургут куковали 6 часов, так как не было свободного тепловоза. Потом нам тепловоз нашли и мы за 6 оставшихся часов доехали до Демьянки.

Я пока что сделал "широкий размах" начала времени. Это моделирует две возможные "необычные" ситуации:
1. Бригада ждала поезд в депо, время явки уже шло.
2. Бригаду не нашли вовремя. Скажем, пассажирская бригада приехала с опозданием и ее время отдыха еще не вышло, чтобы уехать обратно.

Параметры назначения времени находятся в polygon.dat, там можно "подкрутить" как угодно.
 
olegpersh999Дата: Вторник, 16.06.2026, 14:34 | Сообщение # 855
Поездной диспетчер
Группа: Пользователи
Сообщений: 373
Награды: 4
Репутация: 3
Статус: Offline
Цитата V9 ()
Параметры назначения времени находятся в polygon.dat, там можно "подкрутить" как угодно.
понял) так вроде все показывает, время обновляется. Теперь реально видно кто где стоит и уже где заканчивается время работы лок.бригады планируешь скорейшее продвижение поезда до конца явки. Еще бы списки разделить на четные и нечетные поезда
 
V9Дата: Вторник, 16.06.2026, 14:58 | Сообщение # 856
Поездной диспетчер
Группа: Пользователи
Сообщений: 798
Награды: 14
Репутация: 3
Статус: Offline
Апдейт! 0.5.8.8b.  По просьбе Олега поезда разделены на четные и нечетные. Релиз-апдейт, ставим сначала альфу, на нее накатываем бету.
Прикрепления: dsim_0_5_8_8b.zip (59.6 Kb)
 
olegpersh999Дата: Вторник, 16.06.2026, 15:01 | Сообщение # 857
Поездной диспетчер
Группа: Пользователи
Сообщений: 373
Награды: 4
Репутация: 3
Статус: Offline
V9, О-оперативность) Спасибо большое)
 
V9Дата: Вторник, 16.06.2026, 19:20 | Сообщение # 858
Поездной диспетчер
Группа: Пользователи
Сообщений: 798
Награды: 14
Репутация: 3
Статус: Offline
Настройка назначения времени работы локбригад. В данный момент сведения находятся в секции [Simple_Crew_Time_Accounting] файла polygon.dat. В текущей версии выглядит так:

Код
[Simple_Crew_Time_Accounting]
; Упрощенный учет рабочего времени локомотивных бригад до введения более детального
; 1 - Станция учета времени, место, где поезд впервые появился на полигоне, 41 = Сургут
; 2 - Количество диапазонов станций назначений поезда, если "в любое направление", то используем 0. Иначе указываем количество пар диапазонов, а потом - сами диапазоны станций назначений
; 3 - Количество диапазонов станций прихода данного поезда на полигон. Используется для уточнения рабочего времени бригад при подходе поездов с разных направлений. 0 - не учитываем, если не ноль, то аналогично п.2
; 4 - Четные/нечетные поезда. 1 - нечетные, 2 - четные, 3 или 0 - все поезда
; 5 - Количество диапазонов номеров поездов. Позволяет уточнить рабочее время для разных номеров поездов. 0 - все номер, если не ноль, то аналогично п.2
; 6 - Минимально возможное начальное время на работе на момент прибытия/формирования поезда. Может быть меньше нуля, означает, что бригада еще не пришла на работу.
; 7 - Значение "один-сигма" слева от среднего значения. В диапазон плюс-минус "одна-сигма" от среднего попадет 68% всех значений установки рабочего времений.
; 8 - Среднее значение рабочего времени на момент прибытия.
; 9 - Значение "один-сигма" справа от среднего значения.
;10 - Максимально возможное начальное время на работе.
; FFFFh - конец

41, 0, 0, 3, 0, -120, -60, 0, 60, 180
46, 0, 0, 3, 0,  240,  300, 360, 420, 700
56, 0, 0, 3, 0, -240, -150, -120, -60, 0
56, 0, 0, 3, 2, 1, 999, 6001, 7999, -180, -120, -60, -40, -20
56, 2, 1, 45, 120 ,141, 1, 56, 56, 3, 2, 1, 999, 6001, 7999, -180, -120, -60, -40, -20

FFFFh


Начинается  с названия секции, потом объяснения через точку с запятой (символ комментария), далее - строки настроек. Первое число строки - станция настройки, это станция где поезд появится впервые одним из вариантов: (а) прибытие; (б) проследование; (в) формирование; (г) назначение номера. 41 - Сургут, 46 - Ульт-Ягун, 56 - НВ1. Коды станций находятся в секции [DataS_Stanz_Name] файла data.dat. Второе число - это назначения поезда. Назначение читается из файла save.sav. Если назначений нет, то там 0. Если есть, то пишется количество пар назначений, а пишутся пары. Пример. Назначение на юг будет из двух диапазонов: 1-40 и 120-141. Эти две пары диапазонов можно закодировать так:
46, 2, 1, 40, 12, 141.
46 - УЯ, 2 - количество пар, далее - две пары, или четыре числа.


Затем идет число: "откуда состав прибыл". На текущий момент это не учитывается вообще, но принцип будет такой же. Количество пар диапазонов станций, а потом сами диапазоны станций.

Следующее число: четные/нечетные. 1 - нечетные; 2 - четные; 3 либо 0 - все поезда.
Следующее число: количество пар диапазонов номеров поездов. И затем - сами пары диапазонов. И последние пять чисел - это настройка параметров случайности, разберу отдельным постом. На данный момент там числа "на глаз".

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

В конце фирменная Zork'овская фишка - FFFFh как признак конца секции. только так.

Разберем последнюю строку: "56, 2, 1, 45, 120 ,141, 1, 56, 56, 3, 2, 1, 999, 6001, 7999, -180, -120, -60, -40, -20"
56 - НВ1.
2 - два диапазона назначений
1, 45 - "от Тобольска до Вач-Ягуна". (ps. Это я  ошибся)
120, 141 - Войновка и всё далее на юга.
1 - один диапазон создания поезда
56, 56 - НВ1 только.
3 - все поезда.
2 - два диапазона номеров
1, 999 - первый диапазон номеров, пассажирские поезда с 1 номера по 999
6001, 7999 - второй диапазон номеров, это пригородные.

Итого: "Все пассажирские и пригородные, созданные в НВ1, следующие на юга, четным или нечетным номером".


-180, -120, -60, -40, -20 - это параметры назначения времени явки бригады, разберу следующим постом.
 
V9Дата: Среда, 17.06.2026, 03:33 | Сообщение # 859
Поездной диспетчер
Группа: Пользователи
Сообщений: 798
Награды: 14
Репутация: 3
Статус: Offline
Настраиваем параметры генерации времени. Практически все случайные процессы в мире подвержены "нормальному распределению": случайные числа будут группироваться вокруг некоего среднего параметра μ. В нашем случае - в среднем поезда будут приезжать за время Икс, возле Икса будет максимальное количество поездов и чем дальше мы считаем время от Икса влево и вправо, тем меньше поездов приедет в этот промежуток. График нормального распределения формирует колокол, "разброс" колокола определяется параметром сигма σ, где график колокола из выпуклого становится вогнутым.

Внутри плюс-минус сигмы приедет 68.26% поездов. Я взял расписание грузовых поездов и высчитал, сколько они по расписанию едут с Ноябрьска до Ульт-Ягуна:

251 2933
266 2927
300 2923
303 2925
314 3205
333 2921
351 2935
403 2931

9 поездов. Среднее значение  μ у нас получится 307.44 минуты ((251 + 266 + 300 + 314 + 333 + 351 + 403) / 9), округляем - 307.  Сколько поездов должно попасть в 68.26%? 9 поездов * 0,6826 = 6,1434 ≈ 6.

307 минут лежит между поездам 2925  (303) и  3205 (314). То есть берем по три поезда (6/2) в меньшую и большую сторону. Три туда и три сюда как раз дадут нам 68% внутри колокола. Слева будут поезда 2927, 2923, 2925, справа -- 3205, 2921, 2935. Считаем сигму влево и вправо:
307 (средняя) - 266 (время 2927) = 41.
351 (2935) - 307 (средняя) = 44.

Приложенная сигма 44 влево (307 - 44 = 263) будет все равно больше чем время 251 от поезда 2933, то есть поезд 2933 не попадет в колокол. Сигму немного увеличим, чтобы более активно задействовать промежутки между поездами внутри колокола и снаружи. До 48.
307 - 48 = 259 слева.
307 + 48 =  355 справа.

(Еще более точно сигма считается если нагуглить формулу "расчет сигмы для генеральной совокупности". Рассчитанное по формуле наше значение даст сигму 47,70)

Отлично! Из этих 5 "хвостовых" чисел в полигоне определили 3:
_, 259, 307, 355, _

Еще два числа, "Левая" и "правая" граница определяют лимиты "не может быть меньше, чем поезд физически может проехать" и "не может быть больше чем 11 часов". По расписанию, поезд может проехать от Ноябрьска минимум за 202 минуты, а сдать нам поезд диспетчер, будем считать, может не менее чем за час до конца времени(11 часов или 660 минут). Промежуточный набор данных чисел:

202, 259, 307, 355, 660.

Почему "промежуточный"? Потому что в этих числах не учтено время "от явки до отправления". Тут у на сведений нет, поэтому возьмем "волюнтаристки" 35 минут. Эти 35 минут нужно добавить в первые 4 числа:
237, 294, 342, 390, 660

Собираем полную строку по УЯ: "Для нечетных грузовых по УЯ (два диапазона номеров - 1001 по 5999 и с 8001 по 9999, нижний лимит - 237 минут, среднее минус левая сигма - 294, среднее 342, среднее плюс правая сигма - 390, максимум - 660".

Код
46, 0, 0, 1, 2, 1001, 5999, 8001, 9999, 237, 294, 342, 390, 660

Можно вставлять в polygon.dat. Симулятор при приходе грузового и назначении времени будет максимально точно отражать то, что увидит диспетчер по Ульт-Ягуну.


Добавлено (17.06.2026, 04:32)
---------------------------------------------
Последнее, что осталось рассмотреть. Не всегда колокол будет симметричным. Пример. Нормативный осмотр поездов - 60 минут. На уменьшение у нас колокол падает вертикально вниз: в лучшем случае осмотрят за 50 минут. А справа - хз сколько, зависит от того, сколько неисправностей найдут. Поэтому можно заложить примерно такие числа:
45, 55, 60, 75, 120.
минимум - 45 минут. Слева сигма 5 минут (60 - 55), справа - 15 (75 - 60), максимально предельно пусть будет 120 минут.

Как прога будет считать? Сначала она посчитает доли слева и справа.
Общая ширина сигм: 75 - 55 = 20 минут. Из них слева 25% (5 / 20), а справа - 75% (15 / 20). То есть, до 25%(0.25) включительно - это слева, свыше - справа. Прога сгенерит случайное число от 0 до 1 и сравнит с левой границей 0.25. Если число от 0 до 0.25, то прога будет использовать левую часть колокола и сигму от нее и границу будет проверять слева. Если больше - то правую часть. То есть, 25% чисел ляжет слева, 75% - справа. Что и максимально точно смоделирует осмотр вагонов.

Вот прога, где используется часть алгоритма из DSim с этими значениями:

Код
import java.util.Random;

class Main {
  public static void main(String[]args) {
    int leftLimit = 45;
    int leftSigma = 55;
    int mean = 60;
    int rightSigma = 75;
    int rghtLimit = 120;
    Random r = new Random();
    int[]hits = new int[120 / 5];
    int value;
    for (int i = 0; i < 100000; i++) {
      if (r.nextDouble() <= leftFraction) {
        // use left
         while((value = (int)(mean - Math.abs(r.nextGaussian() * (mean - leftSigma)))) < leftLimit);
      } else {
        // use right
         while((value = (int)(mean + Math.abs(r.nextGaussian()* (rightSigma - mean)))) > rghtLimit);
      }
      hits[(value / 5) - 1]++;
    }
    for (int i = 0; i < hits.length; i++){
      System.out.println((((i + 1) * 5) < 10 ? "  " : (((i + 1) * 5) < 100 ? " " : "")) + ((i + 1)  * 5) + ":" + hits[i]);
    }
    
  }
}

Ее можно загрузить в любой онлайн Java компилятор (гуглить Java Online Compiler) И запустить несколько раз. Времена сгруппированы по пять минут, чтобы было четко видно. Один из выводов:
Код

  5:0
10:0
15:0
20:0
25:0
30:0
35:0
40:0
45:1047
50:6914
55:17187
60:19585
65:17527
70:13945
75:10222
80:6394
85:3830
90:1836
95:911
100:376
105:158
110:50
115:17
120:1

Хорошо видна и колоколообразность и неравность колокола. Максимально количество осмоторов значения сосредоточены на 60 минутах, влева резкий обрыв, вправо - плавный спуск.
Прикрепления: 2356902.png (62.3 Kb)


Сообщение отредактировал
V9 - Среда, 17.06.2026, 04:34
 
V9Дата: Среда, 17.06.2026, 04:56 | Сообщение # 860
Поездной диспетчер
Группа: Пользователи
Сообщений: 798
Награды: 14
Репутация: 3
Статус: Offline
Апдейт 0.5.8.8с. После написания гайда нашел и исправил ошибку у себя в генерации времени локомотивных бригад.
Прикрепления: dsim_0_5_8_8c.zip (59.6 Kb)
 
Поиск: