Wolfram-Math-in-Logistics: Маятниковые маршруты

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

LogoКак и обещал в своём прошлом посте (тут), что в случае если он будет «принят», я продолжаю цикл статей об использовании Wolfram Mathematica для решения небольших прикладных задач в логистике. Жаль только читатели поскупились на комментарии.
Сегодня мы рассмотрим маятниковые маршруты. Мы будем преследовать две цели: с одной стороны рассмотрим три вида маятниковых маршрутов, а именно маятниковый маршрут с холостым обратным пробегом, с не полностью груженым обратным пробегом, с полностью груженым обратным пробегом, и их технико-эксплуатационные показатели, с другой рассмотрим как можно автоматизировать расчёт этих показателей, дабы избавить себя от излишнего вбивания чисел в калькулятор. Трудно сказать насколько такая автоматизация эффективна и полезна, но работать над этим было по крайней мере интересно.
Под катом много картинок, но не бойтесь, их общий вес около 640 КБ. Как говорил один советский летчик-космонавт «Поехали!».

Думаю все понимают что такое маршруты и почему они называются маятниковыми. Всем будут понятны показатели этих маршрутов: длина маршрута, груженный пробег, холостой пробег и тп. Единственное, что может вызвать непонимание это определения оборота и ездки, где:

  • оборот автомобиля — законченный цикл движения, т.е. движение от начального до конечного пункта и обратно;
  • ездка — цикл транспортного процесса, т.е. движение от начального до конечного пункта.

Маятниковый маршрут с обратным холостым пробегом

Первым делом необходимо взглянуть на схематическое изображение подобного маршрута, чтобы иметь представление о том, с чем имеем дело. Для этого построим граф. Граф, он же Graph в Mathematica, идеально подходит для такого рода задачи, когда нужно отобразить несколько грузопунктов и соединить их линиями, длина которых нам сейчас не важна.

Wolfram Math in Logistics: Маятниковые маршруты

Хорошо, но совершенно не ясно где какой грузопункт и не ясно что значат эти стрелки. При помощи EdgeLabels и VertexLabels, названия которых говорят сами за себя, добавим текст в наш граф.

Wolfram Math in Logistics: Маятниковые маршруты

Уже лучше, но внешне выглядит не похоже на маятниковый маршрут, пора изменить это. Параметр GraphLayout с значением CircularEmbedding позволяет нам «закрутить» граф.

Wolfram Math in Logistics: Маятниковые маршруты

ImagePadding необходим для того, что бы весь текст помещался в рамки отображения графа. Отлично, остаётся только добавить красок и навести марафет.

Wolfram Math in Logistics: Маятниковые маршруты

Теперь, когда у нас перед глазами образец, рассчитаем показатели данного вида маршрута.

Дано

Wolfram Math in Logistics: Маятниковые маршруты

Решение

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

2. Определяем количество оборотов за время работы автомобиля на маршруте:
Wolfram Math in Logistics: Маятниковые маршруты

3. Определяем возможную массу груза, перевозимую автомобилем за день, т:
Wolfram Math in Logistics: Маятниковые маршруты

4. Определяем необходимое количество автомобилей для перевозки 320т. груза:
Wolfram Math in Logistics: Маятниковые маршруты

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

Маятниковый маршрут с не полностью груженым обратным пробегом

Попробуем нарисовать граф. Почему попробуем? Потому что мне так и не удалось довести его до такого состояния, когда автоматически выводится граф в готовом виде. И только при помощи рук возможно отобразить его в необходимом виде. Что имеем:

Wolfram Math in Logistics: Маятниковые маршруты

Надеюсь что более продвинутые в Wolfram Mathematica пользователи помогут мне получить необходимый результат.

Дано

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. Определяем коэффициент использования пробега за 1 оборот:
Wolfram Math in Logistics: Маятниковые маршруты

Маятниковый маршрут с полностью груженым обратным пробегом

С построением этого графа проблем не возникло:

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: Маятниковые маршруты

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

Проделано не мало работы, но какой в ней смысл, если большая часть формул считается на калькуляторе за полминуты? Поэтому мы не остановимся на достигнутом и пойдём дальше. Мы создадим интерфейс, который будет за нас считать все показатели, наше дело только «скормить» ему исходные данные.
Начнём с простого, а именно с поля ввода (оно же и поле вывода результата):

Wolfram Math in Logistics: Маятниковые маршруты

Отлично, но непонятно что следует вводить или что выводится в этом поле. При помощи Row создаём строку, состоящую уже из нескольких элементов:

Wolfram Math in Logistics: Маятниковые маршруты

Поле вывода будет соответственно содержать в себе некую расчётную формулу, например:

Wolfram Math in Logistics: Маятниковые маршруты

Скомпонуем несколько таких полей для ввода и вывода:

Wolfram Math in Logistics: Маятниковые маршруты

Я думаю в структуре компоновки легко разобраться. Множество Row выстраиваются в колонки Column. Сами строки чередуются с описанием для них, простые строки. Style позволяет присвоить тексту какой-нибудь цвет, вроде Brown, Gray и тп. Результат выглядит так:

Wolfram Math in Logistics: Маятниковые маршруты

Упакуем всю структуру сначала в Panel, чтобы получить рамку, а затем ещё и в Style, чтобы получить возможность изменять оформление полей, а точнее их размер:

Wolfram Math in Logistics: Маятниковые маршруты

Но и это не всё. Всю полученную структуру помещаем в DynamicModule[{Локальные переменные}, Deploy[]]. Очевидно, что это позволит нам создать набор локальных переменных, полностью изолировать структуру от любых расчётов вне её. Такая структура будет легко переносима или легко импортируется из одного блокнота в другой. Результат:

Wolfram Math in Logistics: Маятниковые маршруты

Окончательный внешний вид

Wolfram Math in Logistics: Маятниковые маршруты

Автопоказатели для маятникового маршрута с обратным холостым пробегом

Исходный код

Wolfram Math in Logistics: Маятниковые маршруты

Внешний вид

Wolfram Math in Logistics: Маятниковые маршруты
Автопоказатели для маятникового маршрута с не полностью груженым обратным пробегом

Исходный код

Wolfram Math in Logistics: Маятниковые маршруты

Внешний вид

Wolfram Math in Logistics: Маятниковые маршруты
Автопоказатели для маятникового маршрута с полностью груженым обратным пробегом

Исходный код

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