У меня есть ситуация, когда мне нужно распределить людей по нескольким событиям. Если бы мы просто имели цену как фактор, это было бы хорошо, но есть ряд факторов, которые входят.
Сначала немного фона. Это для некоммерческой организации, которая продвигает часы истории для детей, которые госпитализируются по любой причине, поэтому они зависят от добровольной работы, чтобы сделать это. Таким образом, поскольку они полагаются на добрую волю людей, они дают людям столько работы, сколько люди могут / хотят делать, что варьируется как:
- Некоторые люди могут делать только по утрам, а некоторые другие могут делать только после обеда;
- Некоторые люди могут ходить только по понедельникам и четвергам, другие не могут ходить в августе или декабре;
- Некоторые люди могут ходить только один раз в месяц, другие могут ходить 4 раза (и даже другие люди получают «приоритет» в этих действиях, потому что они более опытны и могут делать это 10 раз в месяц)
Итак, я вроде разобрался с первыми двумя. Поскольку венгерский алгоритм имеет отношение к цене, я бы дал им тупо высокую цену за те времена, когда они не могут идти. Однако, как бы вы поступили с остальными?
Я думал дать им какую-то оценку Нечто подобное: один человек, который может делать это раз в месяц, стоит около 1000 очков. Если кто-то может ходить 10 раз в месяц, этот человек стоит 100 баллов (1000 на основе деления на 10). Кроме того, способ распространить это будет увеличивать цену всякий раз, когда будет выполнено отдельное действие, например, (у выбранных людей есть * на их стоимость):
Первая итерация
| August 1st 2009
Person A | 1000
Person B | 500 *
Вторая итерация
| August 8th 2009
Person A | 1000 *
Person B | 1000
Это был бы способ распределить соответственно между всеми людьми, отдавая больший приоритет тем, кто может сделать это несколько раз.
Что вы думаете и как бы вы это сделали?