Распределение требований на перевозки

__Avenger__
Дата: 30.03.2018 16:47:46
Добрый день.

Пусть есть три компании-перевозчика. И проценты распределения для отдачи требований на перевозки:
1 компания - 60%
2 и 3-я компания - 20%

Есть также понятие коэффициент сложного маршрута. По умолчанию этот коэффициент = 1. Для сложных маршрутов он >1

Необходимо найти какой компании отдать K-тое требование на перевозку, что бы соблюдалось %% соотношение и сложность маршрутов для перевозчиков была одинаковой.

Подскажите, как подойти к решению такой задачи?

Пример:
1 требование, КС=1 => отдаем первой компании
2 требование КС=1.5=> Отдаем 2-й компании
3 требование КС=1 => Отдаем 3-й компании
4 требование КС=1 => Отдаем 1-й компании
5 требование КС=1 => Отдаем 1-й компании
6 требование КС=1.5 => Второй компании уже нельзя, потому что у нее уже были сложные требования, поэтому предпочтительней отдать 3-й компании.


Спасибо.
Akina
Дата: 30.03.2018 17:11:16
Требования - это массив или поток? Вы сразу имеете комплект требований для распределения, или следующее надо распределять, когда предыдущие уже распределены?
__Avenger__
Дата: 30.03.2018 17:40:16
Akina
Требования - это массив или поток? Вы сразу имеете комплект требований для распределения, или следующее надо распределять, когда предыдущие уже распределены?


Требование - это поток, надо распределять (одно) следующее. Но кому достались предыдущие и с какой сложность мы знаем.
Akina
Дата: 30.03.2018 18:04:24
А тогда какие проблемы? Формируешь выражение критерия - грубо, суммарный вес распределённых перевозчику требований, и направляешь очередное требование тому, у кого этот вес минимален.
__Avenger__
Дата: 31.03.2018 10:02:53
Akina
А тогда какие проблемы? Формируешь выражение критерия - грубо, суммарный вес распределённых перевозчику требований, и направляешь очередное требование тому, у кого этот вес минимален.
Может есть более сложные алгоритмы распределения требований по весу?
vikkiv
Дата: 31.03.2018 11:28:23
__Avenger__,

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