Скажем, у нас есть ряд элементов E
и ряд комплектов S
.Назначения с минимальными долями
нам нужно назначить элементы наборов таким образом, чтобы:
- Все наборы примерно содержат одинаковое количество элементов (минимальное разницу в заданной величины между наименьшим и наибольшим набором)
- Число элементов для каждого набора должно быть как можно меньше.
- Каждому элементу необходимо присвоить не менее минимальный% от общего числа. Это% задается для каждого элемента (это означает, что элементы конечно быть отнесены к нескольким наборам соответственно)
Заметим, что (1) и (2) являются проблемными задачами, а в некоторых случаях существует компромисс между ними. Я эффективно ищу математическую формулировку/решение, которое параметризует этот компромисс. Между тем (3) является просто проблемой ограничения.
Как найти оптимальное назначение? Имеет ли эта проблема название в литературе? В случае, если это имеет значение, я специально ищу решение в Python.
В качестве примера, скажем, у нас есть 3 комплекта и 10 элементов, каждый из них с указанием мин. часть множеств следующим образом:
0 97.844356
1 48.006223
2 99.772135
3 16.899074
4 0.111023
5 1.028894
6 5.315590
7 100.000000
8 99.838698
9 93.323315
Если существует только 3 набора, то есть 'S = 3', то указание минимальной доли как' 0.111023' или '1.028894' не имеет смысла, поскольку оно строго эквивалентно 33. –
Спасибо @DmitriЧубаров, вот почему они минимум фракции, но я понимаю вашу точку зрения. –
Цели 1 (минимальная разница) и 3 (минимальное количество элементов) противоречивы: предположим, что мы имеем допустимое решение, которое удовлетворяет ограничению 2 (минимальный% множеств), который имеет # (set1) = # (set2)> # (set3). Должен ли мы добавить элемент для set3 для улучшения цели 1 или оставить как можно сохранить цель 3? –