Алгоритм распределения

Рейтинг: 1Ответов: 1Опубликовано: 25.02.2015

Есть поток клиентов и N менеджеров, у каждого из которых свой процент клиентов задан, которых он может обслужить суммарно, - у всех менеджеров не больше 100%.

То есть.
Допустим:
менеджер 1 50%
менеджер 2 25%
менеджер 3 25%

И надо равномерно (согласно процентов распределять клиентов между ними), то есть когда суммарно будет 100 клиентов у первого менеджера будет 50 клиентов и у 2-х остальных по 25.

По какому алгоритму решить эту задачу (при поступлении нового клиента определить, к какому менеджеру цеплять)?

Обновление

Пытался, на python как-то воспроизвести, и решить задачу, доолго и упорно гуглил. Я просто даже не представляю, куда смотреть. http://tny.cz/eb55c611

Обновление

Нашел алгоритм, взевешеный рандом, Random Weighted, вот что-то подобное ищу, у меня макс 100-150 клиентов, и менеджеров до 5~, а тот алгоритм, о котором писал выше, больше подходит для небольших значений.

Ответы

▲ 1

Все достаточно просто. Это обычная задача балансировки нагрузки. В каждый момент времени Вам известно, сколько сейчас клиентов и менеджеров. Посчитайте распределение задач между ними в процентах. Теперь сравните полученные проценты с заданными (просто вычтите). Полученные разницы - сортируйте. Самый верхний (или самый нижний, все зависит как разницу посчитаете) - самый менее загруженный. Вот ему задачу и можно бросать. Но это не совсем правильно. Нужно и другим набрасывать, но с меньшей вероятностью. Например, каждую вторую заявку - верхнему, каждую четвертую - второму, каждую восьмую третьему