Метод отслеживания транспортных средств, перевозящих АХОВ, без использования GPS
Метод отслеживания транспортных средств, перевозящих АХОВ,
без использования GPS
Пахомов А.А., Волкова Л.Л., МГТУ им. Н.Э. Баумана [email protected], [email protected]
Аннотация
Предлагается решение задачи определения времени нахождения транспортного средства в каждой точке маршрута с помощью расчёта времён на этапе регистрации перевозки. Метод использует данные как минимум о начальном и конечном пунктах перевозки и механизм построения кратчайшего маршрута, рассчитывающий промежуточные точки и общее время в пути. Применяется в задаче оценочного отслеживания местоположения ТС для зарегистрированных перевозок АХОВ при невозможности снятия данных с установленных на них ОРБ-модулей. Метод поддаётся распараллеливанию. В статье предлагается алгоритм, реализующий разработанный метод.
1 Введение
В МЧС существует задача отслеживания перевозок аварийно химически опасных веществ (далее АХОВ) для принятия своевременных мер по устранению последствий аварии при ЧС [1]. Не все транспортные средства (далее ТС) оснащены ОРБ-датчиками или не всегда представляется возможным считать с них показания, поэтому необходимо иметь оценку местоположения водителя в любой момент времени на основании только данных, указанных в путевом листе: ГРЗ автомобиля, пункт отправления, пункт назначения, время отправления, перевозимый груз и т.д.
В случае поступления сигнала о ЧС ставится задача наискорейшего определения возможных транспортных средств с АХОВ, находившихся в окрестности ЧС, поэтому снижение времени расчёта является актуальным. Для достижения этой цели предложен метод, производящий прогнозирование местоположения ТС по заданному в путевом листе маршруту заранее.
Необходимо сразу отметить два существенных допущения:
1. ТС движется без остановок со скоростью 60 км/ч;
2. маршрут зарегистрированной перевозки не может быть изменён.
Если маршрут предусматривает остановки, его можно разбить на несколько и свести задачу к предыдущей.
При расчёте стадий можно пользоваться API модуля работы с картой, который предоставляет функцию построения маршрута, получающую на вход начальную и конечную точки и возвращающую промежуточные, а также общее время в пути. Функция не предоставляет время до каждой из промежуточных точек - его надо найти и установить связь заданной точки со временем нахождения в ней для однозначной локализации аварии как по месту, так и по времени ЧС.
Имея заранее вычисленные данные, можно по необходимости определить время и местонахождение любого ТС.
Таким образом, цель статьи заключается в разработке вспомогательного метода предварительного расчёта стадий перевозки для указанного выше метода определения местонахождения ТС. Маршруты могут быть длинными, а расчёт должен завершиться в пределах времени заполнения оператором путевого листа (примерно от 10 до 40 сек.), поэтому метод должен обеспечивать возможность параллельного выполнения реализующего его алгоритма.
2 Хранение промежуточных стадий
Существуют следующие варианты решения.
1. Сохранять промежуточные данные в таблице базы данных.
2. Для каждой перевозки создавать отдельный файл, в который записывать время и положение транспортного средства.
3. Создавать M файлов по промежутку времени по максимум N записей в каждом.
Первый вариант выглядит нелогичным, потому что создавать таблицу, которой не требуется первичный ключ и ограничения, не имеет смысла. Таблица будет больших размеров, соответственно и выборка из неё будет занимать много времени. Кроме того, будет тратиться дополнительное время на подключение к базе данных.
Второй и третий варианты удобнее реализовать на файлах, а не в базе, потому что файлов предполагается много (более 10000), и самые частые операции - запись, создание и удаление, а не чтение. Кроме того, на промежуточные данные не требуется накладывать какие-либо ограничения.
Проблема второго варианта заключается в том, что при поиске перевозки необходимо просмотреть каждый файл, потому что результат на этом этапе может быть неоднозначным: найдётся несколько перевозок, удовлетворяющих данному промежутку времени. Тогда сложность алгоритма будет равна
С = ©(и * т), где и - количество перевозок, т - среднее количество стадий перевозки (точек типа «широта/долгота», возвращаемых алгоритмом построения маршрута).
При использовании третьего варианта может быть достигнута сложность
С = О(к),
где, к - количество стадий перевозок, происходящих в одно время. Такой результат будет получен, если каждый файл будет отражать определённый момент времени, что при расчёте на неделю вперёд (программное ограничение на длительность перевозки) составит максимум 60*24*7 = 10080 файлов, т.к. длительность рассчитывается поминутно, а все стадии, которые старше текущего времени на
2 часа (предполагаемое максимальное время получения информации о происшествии), можно удалять. В каждый файл в среднем будет записано по 10 Кб информации, тогда директория, содержащая эти файлы, займёт 100800 Кб (~100 Мб). Определение необходимого файла для поиска перевозки произойдёт со сложностью О(1).
Таким образом, для реализации следует выбрать третий вариант хранения предобра-ботанных данных, который обеспечит наиболее эффективное обнаружение объекта произошедшей аварии. Второй вариант также может быть использован для инициализации текущих стадий перевозок при запуске программы.
3 Расчёт промежуточных стадий
Метод предполагает вычисления в три эта-
па:
таким образом, чтобы каждая стадия длилась примерно минуту;
2. для каждой стадии рассчитывается время, затрачиваемое на переход в неё из предыдущей стадии;
3. результаты предыдущего этапа суммируются и получается массив пар типа ключ/значение, где ключ - это географическая позиция стадии перевозки, значение - время, затрачиваемое на перемещение в эту точку из начальной.
Несмотря на то, что маршруты между соседними стадиями короткие, времени на их построение тратится много, поэтому необходимо строить их в параллельных потоках. Для этого подходит технология map-reduce [2], пример применения которой к исследуемой задаче показан на рис. 1 (над стрелочками одинаковой толщины указаны значения, обрабатываемые одним map-потоком).
Первому потоку передаётся первая стадия, второму - вторая и т.д. После расчёта пере-
}Г, S4 . _ А? 57 57 _ _
Мар-поток 1 Мар-поток 2 Map-поток 3
1.5; 4.2...
2.6; 5.7...
3.4; 6.4...
Keduee-поток -
1.5:4.1:7.5;
Рисунок 11 - Применение технологии тар-
данного этапа происходит переход через и элементов, где и - количество потоков.
Суть распараллеливания [3] заключается в том, что каждый тар-поток генерирует последовательности, у которых ге^се-поток за каждую итерацию забирает по первому элементу, суммирует значения времени и добавляет в результирующий массив.
Количество потоков может варьироваться в зависимости от конфигурации машины, на которой выполняется программа.
На рис. 2 представлена структурная схема алгоритма предварительного расчёта стадий маршрута, использующего разработанный метод.
На алгоритм должны быть наложены следующие ограничения: количество потоков и количество точек в стадии положительны.
1. рассчитывается длина стадии перевозки (количество точек типа «широта/долгота»)
Метод отслеживания транспортных средств, перевозящих АХОВ, без использования ОРБ
Рисунок 2 - Схема алгоритма предварительного расчёта стадий маршрута
Необходимо протестировать алгоритм на следующих классах эквивалентности:
1. пустой маршрут (не содержащий точек);
2. маршрут, состоящий из одной точки;
3. количество точек маршрута делится на количество точек в стадии;
4. количество точек маршрута не делится на количество точек в стадии.
4 Зависимость времени расчёта промежуточных стадий перевозки от количества потоков
Для проведения подобного исследования разработан дополнительный модуль программы, очищающий кэш маршрутов перед каждой итерацией, в которой варьируется количество потоков, используемых в алго-
ритме расчёта промежуточных стадий перевозки.
На рисунке 3 представлены результаты исследования. Расчёт проведён для маршрутов длиной 100, 500, 1000 и 1500 километров. На оси абсцисс показано количество потоков, используемое при расчёте, на оси ординат - время расчёта в миллисекундах.
Зависимость вида exp(-x) подтверждает оправданность использования технологии map-reduce, позволяющей организовывать параллельные вычисления. На основании результатов исследования оптимальным предлагается использование 20 потоков. Это позволит сократить время расчётов приблизительно в 5 раз.
Рис. 3. Графики зависимости времени расчёта промежуточных стадий перевозки от количества потоков
5 Заключение
Разработанный метод позволяет определить время в пути от начальной точки до каждой из промежуточных путём нахождения маршрутов до них по отдельности, причём расчёт для каждой пары точек проводится только один раз. Описанный алгоритм использует технологию map-reduce для распараллеливания. Таким образом достигается цель, заключающаяся в расчёте промежуточных стадий во время заполнения путевого листа. При помощи данного метода анализ местонахождения ТС в зоне локализованной аварии производится за время, зависящее только от количества стадий перевозки, с линейной сложностью.
Список литературы
Вестник ГЛОНАСС. 2013. URL: http://vestnik-glonass.ru/stati/perevozka_opasnykh_gruzov_i_ passazhirov pod kontrolem glonass/ (Дата обращения: 31.05.2015).
MapReduce или подсчеты за пределами возможностей памяти и процессора (попробую без зауми): [Электронный ресурс] // Хабрахабр. 2010. URL: http://habrahabr.ru/post/103467/ (Дата обращения: 31.05.2015).
Задачи и отмена в .Net — tips & tricks: [Электронный ресурс] // Хабрахабр. 2013. URL: http: //habrahabr. ru/post/168669/ (Дата обращения: 31.05.2015).