Wolfram-Math-in-Logistics: Кольцевые маршруты

в 11:50, , рубрики: logistics, mathematica, Wolfram, wolfram mathematica, математика, никто не читает теги, метки: , , , ,

Logo

Начнём мы конечно же с теории и дадим определение кольцевому маршруту и его возможным частным случаям. Кольцевой маршрут — маршрут движения автомобиля по замкнутому контуру, соединяющему несколько потребителей (поставщиков). Разновидностями кольцевых маршрутов являются развозочные, сборные и сборно-развозочные маршруты. Развозочным называется такой маршрут, при котором продукция загружается у одного поставщика и развозится нескольким потребителям. Сборочный маршрут — это маршрут движения, когда продукция получается у нескольких поставщиков и доставляется одному потребителю. Сборно-развозочный маршрут — это сочетание развозочного и сборочного маршрутов.

Построение графа

Поскольку развозочные и сборочные маршруты частные случаи кольцевых маршрутов, а мы стремимся создать универсальный автоматизированный расчёт показателей, то все усилия сосредоточим на классическом кольцевом маршруте.
По большей части конструкция графа повторяет тот же принцип, что был описан уже в в посте с маятниковыми маршрутами (тут). Для начала создаём набор грузопунктов и соединяем их линиями:
Wolfram Math in Logistics: Кольцевые маршруты

Затем добавляем для каждой линии и грузопункту текстовые метки, а так же разделяем груженные ездки от холостых и нулевых:
Wolfram Math in Logistics: Кольцевые маршруты

Добавляем другие свойства, улучшая внешний вид графа в целом:
Wolfram Math in Logistics: Кольцевые маршруты

Каждой свойство мы либо уже обсуждали, либо их название говорит само за себя. Единственное что вызывает недоумение, почему я выбрал SpectralEmbedding, а не CircularEmbedding, которое так и напрашивается в нашем случае. Дела в том, что CircularEmbedding делает граф слишком угловатым, простым и некрасивым. Вот и все.

Дано

Wolfram Math in Logistics: Кольцевые маршруты
Wolfram Math in Logistics: Кольцевые маршруты

Решение

1. Определяем время работы автомобиля на маршруте, ч:
Wolfram Math in Logistics: Кольцевые маршруты

2. Устанавливаем время оборота автомобиля, ч:
Wolfram Math in Logistics: Кольцевые маршруты

3. Определяем число оборотов автомобиля на маршруте за время работы:
Wolfram Math in Logistics: Кольцевые маршруты

4. Пересчитываем время работы автомобиля на маршруте и в наряде в связи с округлением числа оборотов, ч:
Wolfram Math in Logistics: Кольцевые маршруты

5. Определяем дневную выработку автомобиля в тоннах и тонно-километрах:
Wolfram Math in Logistics: Кольцевые маршруты

6. Определяем необходимое количество автомобилей для работы на маршруте:
Wolfram Math in Logistics: Кольцевые маршруты

7. Определяем суточный пробег автомобиля, км:
Wolfram Math in Logistics: Кольцевые маршруты

8. Коэффициент использования пробега на маршруте:
Wolfram Math in Logistics: Кольцевые маршруты

Автоматизация расчёта показателей кольцевых маршрутов

При расчёте показателей для маятниковых маршрутов мы уже выработали структуру и отказываться от неё было бы грешно. Поэтому я не стану вдаваться в подробности её строения, так как сделал это в посте с маятниковыми маршрутами (и снова отсылка сюда).
Но кольцевые маршруты имеют одну отличительную особенность — количество грузопунктов в маршруте не ограничено, а значит мы должны дать возможность пользователю вводить столько данных, сколько он посчитает нужным. Для этого сначала модифицируем InputField так, чтобы поле могло принимать не ограниченное количество значений. Звучит сурово, но на самом деле достаточно поменять свойство этого поля на String, то есть чтобы оно принимало строки, а не отдельные числа:
Wolfram Math in Logistics: Кольцевые маршруты

Это порождает проблему, так как мы не может подставлять строки в формулу не переведя их предварительно в числовое значение. Для этого создаём модуль convert:
Wolfram Math in Logistics: Кольцевые маршруты

Принцип работы модуля:
Wolfram Math in Logistics: Кольцевые маршруты

Как видите, модуль convert достаточно устойчив к возможному нестандартному вводу, ошибкам в виде пропущенной запятой или точки вместо запятой.

Исходный код

Wolfram Math in Logistics: Кольцевые маршруты
Внешний вид

Wolfram Math in Logistics: Кольцевые маршруты
Используемая литература

Неруш Ю. М. Логистика: учеб. — 4-е изд., перераб. и доп. — М.: ТК Велби, H54 Изд-во Проспект, 2008 — 520 с.
ISBN 978-5-482-01995-5
Рекомендую купить, например, здесь: OZON.ru

Исходники

Проект в виде репы на GitHub — Wolfram-Math-in-Logistics
Буду очень рад видеть ваши вопросы, рекомендации и возможно форки.

Подборка ссылок

Автор: iwi

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js