2013-06-27 2 views
3

Представьте, что вы попросите своих товарищей по команде сделать выбор на том, кто должен организовать следующий барбекю. Ваша команда составляет около 120 человек, и вы хотите выбрать 3 человека из пула из 6 человек для выполнения этой работы. Каждый из 120 человек может голосовать до 3 человек, оценивая их: 1-й лучший человек - X, 2-й лучший человек Y, 3-й лучший человек - Z.Алгоритм для ранжирования ранжированных результатов

В конце все голоса должны быть объединены в ранжированный результат листинга.

| Candidate | Voter 1 | Voter 2 | Voter 3 | 
------------------------------------------- 
| A   | 1. Pos |   | 2. Pos | 
| B   | 3. Pos | 1. Pos | 3. Pos | 
| C   | 2. Pos | 2. Pos |   | 
| D   |   | 3. Pos |   | 
| E   |   |   |   | 
| F   |   |   | 1. Pos | 
------------------------------------------- 

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

Я не знаю, какие существуют алгоритмы для агрегирования ранжированных данных, и я не знаю, как должен выглядеть результат. F получил голосование за pos.1, это хорошо, но A и B тоже получили такой голос. С моей точки зрения, A и B лучше, потому что они получили больше голосов. Но лучше, чем B? A получил pos.2 но B получил 2 раза pos.3, что должно быть оценено выше? Является 2 раза pos.2 лучше, чем 1 раз pos.1 и 2 раза pos.3?

Звучит как реализация мета-поисковой системы рейтинга альго. Какие алгоритмы существуют? Что я должен использовать?

+2

Вопрос может быть отключен от темы, но посмотрите на метод Condorcet (http: // http: //en.wikipedia.org/wiki/Condorcets_Method), который делает попарные сравнения между кандидатами и находит который выигрывает большинство из них. –

+0

@Terje D. href вашей ссылки недействителен, добавьте «:». – DanielaWaranie

+0

@ DanielaWaranie. Благодарю. Правильная ссылка: [http://en.wikipedia.org/wiki/Condorcets_Method](http://en.wikipedia.org/wiki/Condorcets_Method) –

ответ

3

Как вы спросили: «Что я должен использовать?» я могу рекомендовать эту группу методов под названием «Condorcet methods», как упоминал Терье Д. Если вы не хотите больше узнать о сложной теории методов выборов, я могу порекомендовать один из методов кондорсетов: «Метод Шульце» (также известный как победитель пути или победитель битпа). Это, например, используемый Debian, KDE и Pirates Party of Germany.

Вы можете использовать этот онлайн-голосования, чтобы получить специальный решение вашей проблемы: https://modernballots.com/elections/qm65cnts/vote/

Если вы хотите реализовать его в веб-сайте компании (интранет или любой) я рекомендую вам внести свой вклад в существующий проект. Если вы являетесь разработчиком PHP, проверьте это: https://bitbucket.org/robla/electowidget/src/14581ac7a5f2/lib/methods/SchulzeMethod.php Electowidget изначально был плагином для MediaWiki. Возможно, это хороший момент для начала, и, возможно, вы хотите внести некоторые изменения, чтобы сделать его библиотекой.

0

Возможно, просто сделайте это так: назначьте по 3 очка на каждое первое место, 2 очка на каждое второе место и 1 пункт на каждое третье место. Затем проверьте, у каких кандидатов больше очков.

+0

Результат: Candidate, Sum: A = 5 Pt, В = 5 Pt, С = 4 Pt, D = 1 Pt, Е = 0 Pt, F = 3 Pt Это справедливо? 1,2,3 - деспотизм. Что насчет 2,4,8 или других номеров? Метод Condorcet выглядит хорошо для меня. – DanielaWaranie

+1

@ DanielaWaranie Присвоение N-1, N-2 и N-3 (здесь 5, 4 и 3 балла) будет лучше, так как это число кандидатов, которых кандидат предпочтет (сделав это методом Condorcet). Результат: A: 9, B: 11, C: 8, D: 3, E: 0, F: 5 –