Кратко: задача сводится к моделированию времени прихода вас и мамы в каждую из пяти точек маршрута как случайных величин, вычислению вероятности того, что разница прихода на каждой точке меньше допустимого «окна встречи», и подбору стартовых моментов (временных сдвигов) так, чтобы суммарная вероятность встречи была максимальной. Практически надёжнее всего — написать простой Монте‑Карло‑моделятор и выполнить поиск по сетке стартовых времён. Ниже — пошаговое объяснение и формулы‑инструменты.
1. Обозначения и модель движения
- t_me_start, t_mom_start — моменты выхода вас и мамы из дома/с работы (то, что мы выбираем).
- T_me(i), T_mom(i) — случайные времена прихода в i‑ю точку маршрута (в абсолютных секундах от некоторого нуля).
- v_me — ваша средняя скорость; v_mom = k * v_me, где k = 1.10…1.15.
- d_i — расстояние от стартовой точки до i‑й точки (можно по сегментам; если маршрут имеет промежуточные точки, использовать суммарные расстояния).
- D_extra_me — суммарная случайная задержка у вас (проход двора + лифт), моделируемая, например, как равномерная на [2,4] минут = [120,240] с. Аналогично D_extra_mom на работе = равномерно [60,120] с.
- Светофор: один цикл C = green + red + blink = 20 + 45 + 5 = 70 с. Номер фазы и начальная фаза известны или принимаются случайными (если неизвестны — считать равномерно распределёнными по циклу).
- W_k(t) — задержка на k‑м светофоре при приходе в момент t (определяется по фазе: ноль, если приход в зелёный, иначе оставшееся время до зелёного).
- delta — допустимое временное окно встречи в одной точке (на примере: если «встретиться» означает пройти друг мимо — можно взять delta = 10–30 с; выберите в зависимости от ширины дороги и скорости движения).
2. Формула для времени прихода
- Номинальное (без светофоров и случайных задержек) время до точки i:
T_nom_me(i) = t_me_start + d_i / v_me,
T_nom_mom(i) = t_mom_start + d_i / v_mom.
- С учётом случайных задержек и светофоров (последовательно):
T_me(i) = t_me_start + d_i / v_me + D_extra_me + sum_k W_k( arrival_time_before_k ).
Аналогично для мамы.
- Замечание: выражение с суммой W_k(…) является рекурсивным, потому что задержка на одном светофоре меняет времена прихода к следующим. Это делает аналитическое решение громоздким.
3. Вероятность встречи в одной точке
- Определим f_me_i(t), f_mom_i(t) — плотности распределения случайных величин T_me(i), T_mom(i). Тогда вероятность встречи в точке i (в одном проходе), при допущении, что встреча означает |T_me(i) − T_mom(i)| ≤ delta, равна
P_i = ∫ f_me_i(t) * [F_mom_i(t+delta) − F_mom_i(t−delta)] dt.
Это свёртка плотностей; в частном случае нормально приближаемых распределений можно использовать явные формулы, но в общем требуются численные методы.
- Если точки маршрута взаимоисключающие по событию «встречи» (т.е. встреча может произойти в только в одной из них), то суммарная вероятность P_total = sum_i P_i. В противном случае применяется формула для объединения событий (включая зависимости между точками), что усложняет аналитическое вычисление.
4. Учёт фаз светофоров (формула ожидания ожидания)
- Если приход к светофору равномерно распределён по фазе цикла длины C и длина красной фазы = R, то среднее время ожидания на светофоре
E[W] = R^2 / (2 C).
(Это стандартная формула ожидания оставшегося времени до конца красной фазы при равномерном приходе.)
- Однако ваш приход не обязательно равномерный по фазе — поэтому при точном моделировании надо вычислять W в зависимости от конкретного t (через операцию по модулю): определить phi = (t mod C); если phi в интервале [green, green+red) тогда W = green+red − phi (или с учётом мигающего сигнала на ваше усмотрение), иначе W = 0.
5. Практический алгоритм (рекомендуемый): Монте‑Карло + поиск по сетке
- Выберите дискретизацию времени стартов: например, шаг 5–10 с в интересном интервале (±5 минут вокруг типичного выхода).
- Для каждой пары (t_me_start, t_mom_start) выполнить N симуляций (N = 5 000–50 000):
- Сгенерировать D_extra_me ~ Uniform(120,240), D_extra_mom ~ Uniform(60,120) или по выбранным распределениям.
- Сгенерировать скорость мамы k ~ Uniform(1.10,1.15) или фиксировать.
- Если фазы светофоров неизвестны, сгенерировать начальную фазу phi0 ~ Uniform(0,C) (или взять реальное значение, если известно). Затем для каждого светофора последовательно вычислить задержки W_k по формуле с mod C.
- Вычислить T_me(i) и T_mom(i) для всех i; проверить условие |T_me(i) − T_mom(i)| ≤ delta. Отметить, была ли встреча в этой симуляции (и в какой точке).
- Оценить для данной пары стартов P_total как долю симуляций с хотя бы одной встречей (или как суммарную P_i, если точки взаимно исключающие).
- Повторить для всех пар стартов; выбрать пару с максимальным P_total.
6. Более простая аналитическая оценка для быстрой оценки стартового сдвига
- Если вы хотите простой ориентир (без полной симуляции), подберите стартовый сдвиг так, чтобы математические ожидания времен прихода совпадали:
E[T_me(i)] = E[T_mom(i)]
=> t_me_start + d_i / v_me + E[D_extra_me] + E[sum W]_me = t_mom_start + d_i / v_mom + E[D_extra_mom] + E[sum W]_mom.
- Отсюда желаемый сдвиг:
t_mom_start − t_me_start = (d_i / v_me − d_i / v_mom) + (E[D_extra_me] − E[D_extra_mom]) + (E[sum W]_me − E[sum W]_mom).
- Если вы хотите, чтобы встречи случались на среднем по маршруту (учитывая несколько точек), можно взять средневзвешенное по i с весами, пропорциональными вероятностям точки (или равновероятными) и получить общий сдвиг.
7. Практические советы и замечания
- Монте‑Карло даёт гибкость: можно легко учесть любой набор случайных задержек и зависимостей, а также разные delta для разных точек.
- Шаг сетки стартов выбирайте, исходя из чувствительности: если небольшие изменения в 10 с сильно влияют — уменьшите шаг.
- Если фаза светофора известна в момент начала эксперимента, используйте её детерминированно: это сильно улучшит точность.
- Если вы хотите минимально вмешиваться, можно установить правило: мама выходит на X секунд позже вас, где X ≈ E[travel_me] − E[travel_mom] + (E_extra_me − E_extra_mom). На практике это будет близко к оптимуму при малых разбросах.
- Не забывайте, что суммарная текущая вероятность 45% (как сумма по пяти точкам) — полезная начальная информация: симуляция с текущими стартами должна воспроизводить ~0.45, это позволит откалибровать модель (выбрать delta, поправки по светофорам и т.д.).
8. Итог: конкретные шаги для вас
- Соберите данные: расстояния до пяти точек, текущее среднее время выхода и наблюдаемая разброс (если есть), реальная фаза светофора в момент начала (если можете измерить).
- Реализуйте простую симуляцию (например, в Excel с большим числом строк, в Python или любом другом инструменте): см. алгоритм в пункте 5.
- Пройдите по сетке возможных стартовых времени и найдите максимальную вероятность встречи; проверьте чувствительность результата к параметрам (delta, распределения задержек, k = скорость мамы).
- Если нужно очень быстро — используйте приближённую формулу ожиданий (пункт 6) и возьмите стартовый сдвиг равным разности средних времен прихода.
Если хотите, могу помочь: пришейте сюда конкретные числа (расстояния до каждой из пяти точек, текущее время выхода вас и мамы, как вы оцениваете delta для встречи, известны ли фазы светофоров). Тогда я составлю более конкретную модель и отмечу, какой начальный сдвиг дать маме/вам для максимизации вероятности встречи.