0
Answered

Расчет загородного тарифа.

Андрей 7 years ago updated 6 years ago 22

Уважаемые руководители служб такси и разработчики ПО.

Пожалуйста расскажите кто и как рассчитывает загородные тарифы. Используем таксометр, куча поселков и деревень рядом с городом. Матричную схему сразу отметаем, не считает в динамике таксометр. Ждем ваших советов.

Answer

Answer
Answered

Рассмотрим основные настройки тарифа.


Границы города задаются геозоной, которую вы привязываете к городской части тарифа. Все что выходит за пределы этой геозоны, по умолчанию, считается загородом.

Вариант 1; Адрес подачи находится в границах города, а адрес освобождения за городом.

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

Например в городе машина проехала 5 км + 10 км за городом.

Стоимость = 100 руб минималка (2км включено в минималку) + 3км х 12руб (город) + 10км х 15руб (загород) = 100 + 36 + 150 = 286 руб.


Вариант 2; Адрес подачи находится за границей города, а адрес освобождения в городе.

Стоимость подачи загород рассчитывается по формуле: стоимость подача загород + минималка. Стоимость подачи загород зависит от расстояния от границы города до адреса подачи. 

Например: адрес подачи находится в 7 км от границы города. Загородная часть маршрута равна 12 км и городская часть маршрута равна 5 км.

Стоимость = 7км х 10 руб (подача загород) + 120 (минималка за городом) + 12км х 15 руб (путь за городом) + 5км х 12 руб (город) = 70 + 120 + 180 + 60 = 430 руб.







Я уже пару раз поднимал данную тему. Для нас это серьёзная проблема. 

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

+1
Under review

Артур, в HiveTaxi адреса хранятся только с координатами. 

Матричный тариф строится на геозонах, которые задаются географическими координатами.

При расчете стоимости по матричному тарифу из точки А в точку Б - берутся координаты соответствующих точек. по координатам вычисляются геозоны. Далее получаем стоимость поездки из матрицы тарифа.

Возможны вариации поиска координаты. Если оператор ввел не существующий адрес, то берется координата населенного пункта. При этом в строке ввода адреса отображается соответствующая иконка. 



Делаю вывод. Либо вы не неверно сформулировали свою мысль. Либо заблуждаетесь по поводу работы матричных тарифов.

Заказ: Из пункта А в «непонятно куда»(по городу, покажу, не хочу говорить). 


Маршрут: Из зоны 1 в зону 2. 


Хочу: расчёт по матрице Зона1-Зона2


Получаю: расчёт по таксометру. 

Матрица предполагает 2 точки. Ваш клиент называет только одну. 
Вариант с расчетом стоимости оператором отметаем сразу.

Остается вариант расчета после посадки в машину. т.к. водителю необходимо знать куда везти клиента.

Вот тут есть как минимум 3 способа посчитать по матрице:

Способ 1. Водитель звонит диспетчеру и называет адрес освобождения. Диспетчер добавляет адрес освобождения. 

Способ 2. Водитель, до начала движения, вводит самостоятельно адрес освобождения через интерфейс редактирования адресов.

Способ 3. Водитель по окончании движения добавляет самостоятельно адрес освобождения. 


Во всех 3х случаях сработает расчет по матрице.

Способ 1. 

- водитель отвлекается. 

- водитель тратит деньги 

- координаты у конечного адреса могут быть неизвестны. 

- пассажир не знает конечного адреса


Способ 2. 

- водитель отвлекается 

- пассажир и водитель теряют время

- конечного адреса может не быть в системе 

- пассажир не знает конечного адреса


Способ 3. 

- это вообще не приемлемо. На таксометре 100₽. Клиент хочет дать 100₽. Водитель говорит «подожди, я сейчас нашаманю, и сделаю 150₽»


Все проблемы отпадают сразу, если была бы возможность определять зону по координатам. 

В интерфейсе редактирования адресов заказа вы можете:

1) указать адрес из ближайших к точке освобождения

2) указать точный адрес

3) указать "точку на карте", в случае если по близости нет определенных адресов


> Все проблемы отпадают сразу, если была бы возможность определять зону по координатам. 

почитайте мой первый комментарий еще раз

+1

Мы знаем много способов по решению данной проблемы. Но мы хотим 100% автоматизации. Без нажатий, добавлений, звонков, объяснений клиенту и прочего. Взять заказ-На месте-Поехали-Финиш-Расчет.

Опишите с примерами. Как если бы вы ставили задачу разработчику. 

Цель: Автоматизировать все варианты расчета для зональных тарифов:


Вот вам для затравки два варианта: 

Во всех примерах известна только точка подачи - геозона А


Пример 1: 

Условия:

Две геозоны: А, Б

Маршрут: А->Б

Ожидаемый алгоритм работы таксометра: 

  1. При посадке клиента таксометр показывает минимальную стоимость из базовых настроек Город
  2. При въезде из А в Б: такомметр показывает стоимость из матрицы А->Б (конечная точка)
  3. Завершение заказа: Стоимость = А->Б (конечная точка)



Пример 2: 

Условия:

Три геозоны: А, Б, С

Маршрут: А->Б (с остановкой)->С

Ожидаемый алгоритм работы таксометра: 

  1. При посадке клиента таксометр показывает минимальную стоимость из базовых настроек Город
  2. При въезде из А в Б: такомметр показывает стоимость из матрицы А->Б (конечная точка)
  3. При въезде из Б в С: такомметр показывает стоимость из матрицы А->Б (промежуточная точка) + Б->C (промежуточная точка)
  4. Завершение заказа: Стоимость = А->Б (промежуточная точка)Б->C (промежуточная точка)


Опишите ваш алгоритм работы для следующих ситуация:


Пример 3: 

Условия:

Три геозоны: А, Б, С

Маршрут: А->Б (без остановки)->С

Ожидаемый алгоритм работы таксометра:  Ваш вариант ???


Пример 4: 

Условия:

Три геозоны: А, Б, С  - геозоны находятся вдоль одной прямой

Маршрут: А->Б ((без остановки)) ->С ((без остановки))->А

Ожидаемый алгоритм работы таксометра:  Ваш вариант ???




Пример 5: 

Условия:

Три геозоны: А, Б, С

Маршрут: А->Б->Б (клиент делает 2 остановки в геооне Б) ->С

Ожидаемый алгоритм работы таксометра:  Ваш вариант ???



Пример 6: 

Условия:

Три геозоны: А, Б

Маршрут: А->Б (клиент ездит кругами и освобождается в геозоне Б)

Ожидаемый алгоритм работы таксометра:  Ваш вариант ???





+1

Пример 1:

Посадка в точке А. Включается таксометр и работает в обычном режиме. При въезде в зону Б, на таксометре выходит стоимость из матрицы (А-Б), но при этом таксометр продолжает работать и считает "в уме". Если сумму "в уме" превышает стоимость из матрицы (А-Б), то сумма на экране таксометра начинает увеличиваться и конечная стоимость будет считаться по таксометру.

Пример 2: 

Три геозоны: А, Б, С

Маршрут: А->Б (с остановкой)->С

Посадка в точке А. Включается таксометр и работает в обычном режиме. При въезде в зону Б, на таксометре выходит стоимость из матрицы (А-Б), но при этом таксометр продолжает работать и считает "в уме" (в том числе и стоянку). Если сумму "в уме" превышает стоимость из матрицы (А-Б), то сумма на экране таксометра начинает увеличиваться.

При заезде в зону С, на таксометре выходит выходит Стоимость из матрица (А-С). но при этом таксометр продолжает работать и считает "в уме". Если сумму "в уме" превышает стоимость из матрицы (А-С), то сумма на экране таксометра начинает увеличиваться.


Пример 3: 

Аналогично Примеру 2.


Пример 4: 

Аналогично примеру 2


Пример 5: 

Аналогично примеру 2


Пример 6: 

Аналогично примеру 2


Суть: таксометр всегда работает по базовому тарифу. Но конечная стоимость всегда берется максимум из двух вариантов: Матрица  таксометр. При этом на экране таксометра должна быть всегда актуальная информация. Въехали в зону, стоимость поменялась. Таксометр превысил стоимость матрицы - на экране стоимость начала увеличиваться.

Полностью согласен!

Но не стыковки даже при такой схеме будут. Нам допустим очень сложно будет отрисовать 100-150 поселков и это только ближайших. Нужен универсальный инструмент. Подача и матричный+ вместе могу решить все проблемы.

Сейчас попробую изложить:

1. Начнем с подачи. У нас подача заложена в км если едут из города в деревню или из деревни в город. Грабли начинаются если клиент едет деревня>деревня. Вот тут нам нужна подача, но до точки ближайшей к городу, а не до точки подачи. Но проблема опять появляется в том, что если не указан конечный адрес - программа не знает ставить подачу или нет. Т.е. пока не нажмем финиш (это если брать по координатам).

2. Нас матрица не интересует, а интересует матрица+базовый. Т.е. расчет идет по таксометру, но при пересечении границ зоны если есть в матрице должна добавиться сумма к сумме на таксометре и именно в динамике.


И приходим к тому что нужно рисовать кучу зон.

На сколько геозон порезан ваш город ?

город на 5 зон. и несколько соседних деревень, ещё 10 зон. 

Город 1 зона. Пригород минимум 100 зон или проигрываем простому человеческому расчету по прайсу. И в основном эти 100 зон как раз нужны чтоб считать подачу, т.к. стоимость километра почти везде одинакова.

Вот так можно рассчитывать тариф по матрице, если в конце цеплять координату освобождения. Цитата с сайта одного не безызвестного такси:

"Примечание. Если в заказе не был выбран конечный пункт поездки, на экране появится стоимость подачи машины по выбранному тарифу. Итоговая
стоимость будет рассчитана после завершения поездки."

И нет проблем и матричный тариф действует!


Answer
Answered

Рассмотрим основные настройки тарифа.


Границы города задаются геозоной, которую вы привязываете к городской части тарифа. Все что выходит за пределы этой геозоны, по умолчанию, считается загородом.

Вариант 1; Адрес подачи находится в границах города, а адрес освобождения за городом.

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

Например в городе машина проехала 5 км + 10 км за городом.

Стоимость = 100 руб минималка (2км включено в минималку) + 3км х 12руб (город) + 10км х 15руб (загород) = 100 + 36 + 150 = 286 руб.


Вариант 2; Адрес подачи находится за границей города, а адрес освобождения в городе.

Стоимость подачи загород рассчитывается по формуле: стоимость подача загород + минималка. Стоимость подачи загород зависит от расстояния от границы города до адреса подачи. 

Например: адрес подачи находится в 7 км от границы города. Загородная часть маршрута равна 12 км и городская часть маршрута равна 5 км.

Стоимость = 7км х 10 руб (подача загород) + 120 (минималка за городом) + 12км х 15 руб (путь за городом) + 5км х 12 руб (город) = 70 + 120 + 180 + 60 = 430 руб.







+1

Согласен с Артуром. Нам тоже не хватает расчета тарифов матрицы по координатам автоматически в динамике.

И почему то минималка за городом превращается при нажатии кнопки финиш в городскую минималку.

И про подачу я уже писал. https://help.hivetaxi.ru/communities/1/topics/5935-dorabotka-rascheta-stoimosti-podachi-za-gorod

В маленьких городах не хватает гибкости настройки. С городом все отлично, а на пригороде или цена слишком низкая - водители отказываются брать заказ, или наоборот высокая - клиенты отказываются.

https://help.hivetaxi.ru/communities/1/topics/432-zagorodnyij-tarif-taksometra

А вот тут тоже обсуждали загородный тариф, у нас проблема схожая.

Еще на старом ПО минимальная стоимость в зоне устанавливалась на таксометре сразу при пересечении границы зоны. Т.е. при пересечении границы города допустим сразу установиться загородная минималка.

Вообще идеально. Заехал в зону - цена изменилась.

Еще вариант: если не указан конечный адрес (в адресной строке остается же город), то стоимость подачи не прибавляем. Это заставит водителей ставить конечный при загородних заказах, когда едут минуя город.

Что то нужно уже делать с загородом. Реальная проблема.

Апну тему! Ждем решение...