Разработка алгоритма, обеспечивающего равномерное распределение трафика по сети.
Мой вопрос не связан с тем, как кодировать конкретную вещь или каким-либо техническим вопросом программирования. Мне нужна помощь в разработке логики алгоритма, над которым я работаю, и который я расскажу чуть позже. Я здесь, потому что я не мог придумать лучшего места, чем stackru, чтобы помочь мне, поскольку это оказалось лучшим вариантом в прошлом. Я хотел бы поблагодарить вас, ребята, за то, что вы помогли мне и дали мне ваше драгоценное время.
Итак, вот мой алгоритм дразнить мозг:
Цель: я разрабатываю алгоритм, который направлен на равномерное распределение трафика (машин) по сети. Я буду симулировать этот алгоритм, чтобы проверить, как он работает на симуляторе трафика.
Чтобы выразить это визуально, я планирую сделать следующее:
Построение транспортной сети, которая показывает, что некоторые дороги заселены, чем другие. Более толстые линии обозначают дороги с более интенсивным движением по сравнению с другими.**
Вот несколько моментов, на которые следует обратить внимание:
Изображение представляет 8*8 перекрестков (пересечение дорог) и самих дорог. Не очень хорошо с моими графическими навыками, поэтому просто хотел прояснить, что 4 дороги встречаются, чтобы сделать перекресток (не ясно показано на диаграмме, но вы понимаете, что я имею в виду).
Обратите внимание на стрелки, указывающие направление, в котором будет двигаться трафик. Например, первая строка указывает, что трафик будет двигаться справа налево. Второй ряд указывает, что трафик будет двигаться слева направо. Аналогично, первый столбец показывает, что трафик будет больше снизу вверх и т. Д. Если вы внимательно наблюдаете, вы заметите, что я сохранил альтернативный шаблон, т.е. справа налево, затем слева направо, затем снова справа налево и т. д. Аналогично обстоит дело со столбцами.
Не допускается поворот транспортных средств. Поскольку это начальные этапы моего алгоритма, я наложил ограничение на то, что транспортным средствам не разрешается поворачивать и продолжать движение в направлении стрелки.
Это сеть кругового типа. Это означает, что машины, достигшие крайних значений в сети, не исчезают, они зацикливаются и снова попадают в сеть. Имейте в виду, автомобили подаются в направлении стрелки. Например, в первом ряду, после того, как автомобили выезжают с самого левого перекрестка, автомобили снова присоединятся к крайнему правому перекрестку. Проще говоря, это что-то вроде обтекания или типа сетки.
Трафик создается случайным образом, и, как видно из изображения, чем толще линии, тем больше трафика на этой дороге и наоборот.
Важно: если на перекрестке разрешено движение автомобилей слева направо (по горизонтали), все автомобили, движущиеся в вертикальном направлении, должны быть остановлены (очевидно, чтобы они не врезались друг в друга) и наоборот.
Что мне нужно помочь в:
Псевдокод / логика для алгоритма, который позволяет мне равномерно распределять трафик в сети (графически линии почти такой же толщины, как на моем изображении). Математически, толщина линии будет средним числом автомобилей, которые должны быть на каждой дороге, чтобы вся сеть была сбалансированной. Дороги должны быть одинаково заселены, ни одна дорога не должна иметь больше движения, чем другая (политика справедливости).
Я хотел решить проблему, используя подход "разделяй и властвуй". Это означает, что в реальном мире сеть будет очень большой, поэтому практически невозможно иметь информацию о всей сети с нами в любой момент времени.
Я хочу решить проблемы на местном и круглом уровне.
Например, Раунд 1: Решите 4 перехода за раз и попытайтесь выровнять трафик на них.
Раунд 2: некоторые другие 4 соединения
и так далее...
Совет: Эффект должен распространяться по мере продвижения раундов, достигая некоторого оптимального решения, где трафик распределяется равномерно, а затем мы останавливаем алгоритм.
Я знаю, что это длинный пост, и я действительно ценю любого, кто даже пытался понять мою цель и задумался над этим.
Эта идея пришла мне в голову в связи с растущими транспортными ситуациями и тем, что некоторые дороги менее населены, чем другие, и таким образом в равной степени распределяют автомобили и в большей степени используют имеющуюся инфраструктуру.