Средневзвешенный расчет на основе различных критериев - PullRequest
0 голосов
/ 24 мая 2019

Я работаю над системой обратного аукциона на PHP. Мои клиенты получают предложения от разных поставщиков на запрашиваемые товары / услуги. При отображении полученных заявок зарегистрированному клиенту необходимо выполнить сортировку на основе средневзвешенного значения по следующим критериям:

  1. Цена (40%) -> Самая низкая цена - это хорошо.
  2. Рейтинг поставщиков (20%) -> Рейтинг = 1-5 (5 лучших).
  3. Варианты доставки (10%) -> Больше вариантов доставки предлагаются лучшие.
  4. Расстояние (10%) -> Наименьшее расстояние от местоположения клиента - лучшее.
  5. Способы оплаты (10%) -> Больше способов оплаты предлагают лучшие.

Пока мне удалось создать следующую формулу:

$weightage = ($price*.40) + ($rating*.20) + ($delivery_options*.10) + ($distance*.10) + ($payment_methods*.10);

Мне нужно показать ставки, имеющие наибольшее значение веса сверху. Меня смущает сложение / вычитание веса, основанное на том, что лучше для покупателя, т. Е. Если цена ниже, то это следует считать лучшим для покупателя, и мне следует добавить вес или вычесть вес?

Любая помощь будет оценена. Спасибо

1 Ответ

0 голосов
/ 03 июня 2019

Я разобрался. Вот что я сделал:

Цитата # 1 (Лучшая цитата)

Цена: 120

Рейтинг: 5

Варианты доставки: 2

Расстояние: 2000 км

Способы оплаты: 5

Наличие: 1

Ценовой фактор = 1 - ((Цена - минимальная цена) / (Максимальная цена - минимальная цена)) = 1

Коэффициент рейтинга = ((Рейтинг - минимальный рейтинг) / (Максимальный рейтинг - минимальный рейтинг)) = 1

Коэффициент параметров доставки = ((Параметры доставки - минимальные параметры доставки) / (Максимальные параметры доставки - минимальные параметры доставки)) = 1

Коэффициент расстояния = 1 - ((Расстояние - Минимальное расстояние) / (Максимальное расстояние - Минимальное расстояние)) = 1

Коэффициент методов оплаты = ((Способы оплаты - минимальные способы оплаты) / (Максимальные способы оплаты - минимальные способы оплаты)) = 1

Коэффициент доступности = ((Доступность - минимальная доступность) / (Максимальная доступность - минимальная доступность)) = 1

Цитата # 1 Вес = ( Ценовой коэффициент * 40%) + ( Рейтинговый фактор * 20%) + ( Коэффициент доставки вариантов * 10%) + ( Коэффициент расстояния * 10%) + ( Коэффициент методов оплаты * 10%) + ( Коэффициент доступности * 10%) = 1

Примените ту же формулу к другим цитатам, вы получите вес для каждой цитаты, а затем сможете легко сортировать цитаты (Order By Quote Weightage Asc / Desc).

...