Тарифный калькулятор ОТМ. Вычислительная машина.

Все мы уже давно привыкли к тарифным калькуляторам на различных сайтах, например, авиакомпаний или экспедиторов, предлагающих отправить груз в любую точку страны и даже мира. А вы никогда не задумывались что за этим стоит? Как это работает и как вводимые параметры меняют конечную стоимость услуги?

Бывает так, что буквально за несколько запросов можно уловить закономерность и понять, что калькулятор обращается к очень простой тарифной сетке, которая умещается в обычную таблицу. Как правило, в этом случае и заполнить пришлось всего-то 2-3 поля для получения цены услуги. Но бывает и так, что нужно изрядно потрудиться и выбрать/заполнить десяток уточняющих параметров, изменение которых приводит к совершенно непредсказуемым колебаниям цены. Тут начинаешь подозревать, что имеешь дело с какой-то высокоинтеллектуальной вычислительной машиной.

ЭВМ_IBM_2

И, разумеется, именно такая изощренная вычислительная машина идет в комплекте с ОТМ.  Причем нельзя сказать, что тарифный калькулятор в ОТМ имеет единственное назначение — рассчитывать стоимость перевозки для клиента по контрактному тарифу или расходы на привлеченный транспорт по тарифам поставщиков. Это прямое назначение и это на поверхности. Но на самом деле тарифный движок выполняет гораздо более важную функцию, которая лежит в основе всех имеющихся оптимизационных алгоритмов ОТМ. А именно — стоимостную оценку каждого выработанного системой решения. Каждый критерий оптимизации в конечном итоге может быть сведен к деньгам и идеальным вариантом ОТМ считает тот, который принес наибольший выигрыш по стоимости перевозки на единицу груза.

В статье про Задачу маршрутизации в ОТМ уже затрагивалась эта тема, но применительно к экономии на пробеге: логика поиска решения строится на понятии «выигрыша» — каждое следующее решение по объединению точек в один маршрут оценивается в сравнении с вариантом без этого объединения по общему пробегу. Решение с наибольшим выигрышем переходит на следующую итерацию. Этот способ известен как «Механизм сбережений» (Savings, Clark and Wright, 1964).

Надо отметить, что фактор стоимости затмевает экономию на пробеге в километрах. Это хорошо видно на таком примере — если наша цель состоит в сокращении времени ожидания на точках с жесткими окнами приемки и отгрузки, то мы задаем стоимостной показатель ожидания (ставка за 1 час простоя). В этом случае стоимость ожидания будет перевешивать выигрыш на пробеге, по которому для чистоты эксперимента тоже должна быть назначена ставка за 1 км. Если стоимость ожидания будет превышать выгоду от сокращения расстояния, то система выделит точку в отдельный рейс, где не будет ожидания. При увеличении стоимости ожидания количество рейсов и общий пробег будут увеличиваться, а время ожидания сведется к минимуму.

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

Думаю принцип понятен — вводить стоимостную оценку можно по множеству факторов. Эти условные оценки могут использоваться только в целях оптимизации без включения их в состав реальной стоимости перевозки по тарифу.

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

Одним словом, тарифный калькулятор ОТМ — это объективная оценка для принятия решений как по маршрутизации, так и по выбору поставщиков.

Специализированное против универсального

Надо сказать, что понятия «специализированный» и «универсальный» очень относительны и место любых решений на этой шкале очень сильно зависит от позиции наблюдателя. Что есть универсальный тарифный калькулятор? Если доводить до крайности, то это собственно калькулятор с кнопочками и бумажные каталоги тарифных сеток, из которых нужно брать входные параметры для расчета, основываясь на параметрах груза и дальности перевозки. Что-то похожее на эту таблицу:

жд тарифная сетка

Если без крайностей, то остановимся на таком понятном примере как файл Excel. Это эталон универсальности сегодня. Все другие средства, которые пусть на полшага от Excel ушли — это уже более специализированные решения. Сделать из файла Excel тарифный калькулятор очень просто — нужно внести таблицу с переменными параметрами для выбора ставки, зарезервировать поля под входные параметры для расчета и самое главное — задать формулу, по которой должен вычисляться тариф.

Теперь вопрос — Будет ли такой калькулятор универсальным? Ответ — Нет. Он работает только для очень конкретного вида тарифа с зафиксированными и описанными с помощью таблицы параметрами. Хотя создан калькулятор был с помощью самого универсального инструмента.

Та же история будет, кстати, с любыми другими «универсальными» системами тарификации, которые предлагают удобные инструменты для хранения сеток, задания параметров и формул, автоматизации наиболее частых действий над тарифами. Но по сути они не так далеко ушли от нашего файла Excel, как может показаться, и созданные с их помощью калькуляторы всегда будут неуниверсальными. Ведь под каждый тариф нужно продумывать и создавать свою модель данных, которая вместит все участвующие параметры и придаст им смысл. Новый вид тарифа — новая модель или надстройка старой. Казалось бы — выстраивай что хочешь, изобретай, выдумывай! Но в наше время все меньше первооткрывателей и желающих изобретать велосипед новой модели.

Конкретное против абстрактного

Вот так медленно подходим к выводу о том, что специализированный тарифный калькулятор в своей основе — это вовсе не конструктор формул, а модель данных, созданная под конкретную предметную область, например, под транспортную логистику. С этой точки зрения весь ОТМ — это мощная, разветвленная и хорошо продуманная модель данных, каждый значимый элемент которой закодирован в виде одного из параметров для тарификации.  Эти параметры называются тарифными базисами и на данный момент в ОТМ их уже более 1000.

Тарифные базисы обращаются к различным числовым, справочным и логическим элементам, присущим заказам и перевозкам. Самые простые примеры тарифных базисов — это количество грузовых мест, их вес и объем, код груза по классификатору, порожний и груженый пробег по перевозке, ее длительность, время простоев, тип подвижного состава, количество остановок. Понятно, что параметры транспортных тарифных сеток в основном обращены на географию и физические параметры грузов и перевозок.

Отдельного упоминания достоин такой важный элемент модели данных ОТМ как геоиерархия (geohierarchy). Есть подозрение, что этот термин существует только в ОТМ, поэтому и толкование возьмем оттуда же. Суть геоиерархии в том, что любая точка характеризуется принадлежностью к стране, городу, почтовому индексу, тарифной зоне или произвольному региону. На уровне любой из этих географических сущностей (минимальной из которых как раз и является точка) можно вести тарифные сетки по направлениям перевозок.

Итак, именно конкретная модель данных наполняет смыслом формулы, которые применяются для вычисления стоимости по тарифу. Поэтому инструменты, которые позволяют строить формулы с абстрактными переменными (как наш любимый Excel), еще далеко не являются тарифными калькуляторами.

Шаблоны против импровизации

Наконец, подходим к тому с чего обычно начинают, когда речь заходит о тарифных калькуляторах — это собственно конструктор формул тарифов. Конструктор — это шаблон, призванный определенным образом организовать творческую деятельность по разработке собственных тарифных сеток. Даже можно сказать, что сам конструктор несколько ограничивает простор для импровизации, впрочем вполне логичными рамками. На мой взгляд, ограничения эти во благо, поскольку они намечают общий путь, по которому уже успело пройти очень много людей. Как раз ради этого выстраданного опыта и «лучших практик» и покупают такие сложные и дорогие системы как ОТМ.

Расскажу немного о принципах, заложенных в конструктор тарифных сеток ОТМ, чтобы вы могли проникнуться этими замечательными идеями.

  1. Разделение услуг на базовые и дополнительные. Причем возможный набор дополнительных услуг ассоциируется с определенной базовой услугой.
  2. Стоимость базовой услуги может состоять из нескольких компонентов, каждый из которых рассчитывается по отдельной формуле. Результаты вычислений могут складываться, а также среди них может быть выбран минимум или максимум, что полезно при выборе между результатом по весу и объему, например.
  3. Стоимость дополнительных услуг может зависеть или не зависеть от географии перевозки. В последнем случае тариф на дополнительную услугу удобно задавать для всей тарифной сетки сразу,  а не в отдельности по направлениям перевозок.
  4. Для задания формулы для дополнительных услуг используется тот же шаблон формулы, что и для базовых.
  5. Шаблон формулы позволяет обращаться к предопределенным в ОТМ тарифным базисам, которых более 1000.
  6. Шаблон формулы расчета стоимости услуги состоит из двух разделов: раздел условий и раздел ставки. Условия перед расчетом по тарифу позволяют выбрать только те компоненты стоимости, которые должны быть применены к конкретной перевозке. Например, если условие задано по типу подвижного состава, то в одном тарифе могут быть несколько ставок по различным типам машин, а для конкретной перевозки будет выбрана только одна из них. Именно условия позволяют создавать сетки по диапазонам веса или объема грузов. Ставка уже непосредственно участвует в расчете и задается в денежном выражении по определенному базису: за 1 км груженого пробега, за 1 кг веса груза, за 1 т/км, за 1 час простоя, за 1 рейс.
  7. Работать со скидками и надбавками можно как в структуре базового тарифа, так и в формате дополнительных услуг. В этом случае ставка будет задаваться в процентном выражении. Скидки и надбавки могут применяться на всю стоимость, а также выборочно на стоимость базовой услуги или некоторых дополнительных услуг.

Согласитесь, уже вырисовывается очень неплохой инструментарий для воплощения самых замысловатых идей тарификации. А если к этому добавить все те многочисленные мелкие детали и нюансы, которым стоит посвятить отдельную статью, то картинка окончательно сложится.