Уважаемые прогеры (или математики) помогите plz

J
На сайте с 18.06.2007
Offline
158
803

Есть база товаров. Стоит задача написать скрипт, который присваивает определенный числовой показатель каждому товару (к примеру, от 0 до 1000), на основе совокупных данных параметров разной "важности"... нужно составить формулу, по которой этот показатель будет считаться:

параметр 1:

диапазон значений – от 0 до 1 000 000 000

важность – 20%

параметр 2:

диапазон значений – от 0 до 10

важность – 15%

параметр 3:

диапазон значений – от 0 до 100 000

важность – 15%

параметр 4:

диапазон значений – от 0 до 1 (т.е. «да/нет»)

важность – 25%

параметр 5:

диапазон значений – от 0 до 1 (т.е. «да/нет»)

важность – 10%

параметр 6:

диапазон значений – от 0 до 1 000 000 000

важность – 5%

параметр 7:

диапазон значений – от 0 до 1 000 000 000

важность – 5%

параметр 8:

диапазон значений – от 0 до 1 000 000 000

важность – 5%

Мой программист говорит, что сам скрипт написать не проблема, а вот как посчитать и вывести этот показатель он понять не в силах, к сожалению (

astraliens
На сайте с 25.09.2009
Offline
54
#1

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

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

ps. у вас совокупная сумма всех "важностей" 110%...

ASTRALiENS - разработка сайтов (http://astraliens.net)
DV
На сайте с 01.05.2010
Offline
644
#2

Помножьте каждый показатель на свой коэффициент, от 0 до 1.

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
war357159
На сайте с 03.11.2009
Offline
252
#3

Данных для решения задачи, возможно, достаточно. Но сформулировать ее явно можно поточнее.

Подпись ➤
J
На сайте с 18.06.2007
Offline
158
#4
astraliens:
учитывая как поставлена задача и отсутствие подробностей помочь Вам никто не сможет здесь за отсутствием самой задачи...
Вы б привели примеры тех самых товаров, параметров, условия их совместимости и собственно что именно считаем, толи суммируется эта важность, толи усредняется, аль ещё какой замысловатый алгоритм...определитесь с условиями и желаемым результатом и наверное помощь общественности не потребуется....

Это внутренние данные, типа количества продаж, наличия на складе и т.п. Каждый параметр независим. Разве имеет значение для программиста, как параметры "называются"?

Вопрос про важность не понял, сорри. Этот процент показывает насколько важен параметр при подсчете итогового показателя, т.е. показатель "продажи" (параметр 1) в 2 раза важнее показателя "наличие на складе"(параметр 5)

astraliens:
ps. у вас совокупная сумма всех "важностей" 110%...

Опечатка, исправил.

Цель всего этого "маскарада" - составить рейтинг товаров. Я извиняюсь, что не могу более точно сформулировать задачу, просто из меня математик как из Валуева балерина )

PS. 500 WMR "на пиво" человеку, чью формулу общественность посчитает рабочей :)

astraliens
На сайте с 25.09.2009
Offline
54
#5

к чему спрашивал про примеры, т.к. итоговые 110% смущали и не совсем было понятно все-ли параметры имеют возможность суммироваться или есть некий исключающий фактор.

тогда, как я понимаю итоговая популярность рассчитывается из суммы всех популярностей... берите двойную пропорцию, сначала считайте процент от диапазона параметра (0-0% и 1 000 000 000 - 100% по примеру первого параметра) а потом вторую исходя из того, что 20%(максимально возможные для данного параметра) - 100%, а искомый процент популярности это результат решения второй пропорции на основании значения из первой пропорции...

т.е. если возьмем первый параметр = 500 000 000, то получаем по решению первой пропорции результат 50%


1 000 000 000 - 100%
500 000 000 - x
500 000 000 * 100 / 1 000 000 000 = 50

и далее вторая пропорция


20% - 100%
x - 50%
20*50/100=10%

т.е. по примеру получаем, что первый параметр даёт Вам 10% к сумме общей важности...и так далее суммируем все остальные результаты и итоговое значение пишем куда-то куда программист Ваш пожелает

BlueRay
На сайте с 09.03.2011
Offline
38
#6

Вот по моему мнению наиболее простое решение вашей проблемы. Наш условный рейтинг товара будет изменяться от 0 до 1. Приведу пример с 2 параметрами. Вес: чем меньше, тем лучше (обратная зависимость), изменяется от 1 до 1000, "важность" 30%. КоличествоПродаж: чем больше, тем лучше (прямая зависимость), изменяется от 0 до 100, "важность" 70%.

Итак имеем формулу: (1/Вес)*КоэффициентВеса + КоличествоПродаж*КоэффициентПродаж = Рейтинг. Для подсчёта коэффициентов возьмём товар с наилучшими показателями, т.е. такой, у которого Рейтинг равен единице. У лучшего товара вес минимален (1), и количество продаж максимально (100).

Получаем: (1/1)*КоэффициентВеса = 0,3 и 100*КоэффициентПродаж = 0.7.

Т.е. КоэффициентВеса = 0.1, КоэффициентПродаж = 0.007.

Итоговая формула для таких 2 параметров с такими диапазонами значений:

(1/Вес)*0.3 + КоличествоПродаж*0.007 = Рейтинг.

Минус такого подхода в том, что при изменении диапазона значений параметров (например, количество продаж у топового параметра выросло) необходимо пересчитывать коэффициенты. Но это совсем не проблема. Просто при каждом пересчёте рейтинга заново вычислять коэффициенты по формуле: Коэффициент = Важность / ЛучшийПоказатель, если зависимость рейтинга и показателя прямая (как в случае с количеством продаж); и Коэффициент = Важность * ЛучшийПоказатель, если зависимость рейтинга и показателя обратная (как в случае с весом).

Самое сложное, с чем вам надо будет разобраться, это как определить "важность" различных показателей. Яндекс и гугл до сих пор не могут определиться... Да и количество факторов может изменяться, тогда формулу надо изменять или просто сделать рекурсивно (с этим проблем быть не должно).

Пишу десктопные и web приложения на C# (ASP.NET MVC) :-) Хотите сказать спасибо или обозвать дураком? Для этого есть репутация, не надо флудить.
B
На сайте с 02.05.2007
Offline
240
#7

ТС - програмера заставьте выучить что такое нормирование, вот тут более-менее человеческим языком описан ваш случай

Snake800
На сайте с 02.02.2011
Offline
235
#8

Рейтинг=МаксЗначениеРейтинга*(Важн1*Параметр1/МаксПараметр1+Важн2*Параметр2/МаксПараметр2+...+Важн8*Параметр8/МаксПараметр8)/100

где МаксЗначениеРейтинга - максимально допустимый рейтинг (1000)

МаксПараметрN - максимальное значение оцениваемого параметра (1 000 000 000, 10, 100 000, 1...)

ПараметрN - собсна, значение текущего параметра

Для обратных условий, когда 1 "лучше" 10, заменяем

ПараметрN=(МаксПараметрN-ПараметрN)

Если возможны отрицательные значения и _максимальные_ значения параметра=0, - тогда максимум определять по модулю длины отразка. Лучше это сделать сразу: приложение будет отказоустойчивее ;)

---------- Добавлено 11.04.2012 в 04:56 ----------

Забыл добавить. При каждом ранжировании по каждому из 8 параметров надо определять реальное максимальное значение или близкое к нему. Т.к. если за максимум брать заявленный миллиард, а по факту лучший показатель будет сотня, то этот фактор ранжирования практически теряет смысл: 10%*(100/1000000000)=одна миллионная процента. Хотя между фактическими значениями параметра пары товаров в 100 и скажем, единицей, разница будет большая. Если всёже оставлять миллиард, будет работать правило типа "всё, что меньше десятка лямов при любом раскладе не играет роли и ничтожно - хоть сто, хоть миллион". Ну это уже зависит от конкретного ТЗ.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий