Я думаю, что это все еще дубликат, может быть, я ошибаюсь.

лятьP=[P1, P2, ..., Pk]&nbsp;бытьk&nbsp;натуральные числа и пустьT&nbsp;быть положительным целым числом. Я хотел бы генерировать все комбинации, которые в сумме не болееT, Это,sum(x[i] * P[i] for i in 1:k) <= T&nbsp;гдеx[i] = 1&nbsp;тогда и только тогдаi&nbsp;выбран в комбинации.

Пример.

ПозволятьP=[1, 2, 3]&nbsp;а такжеT=4, Комбинации должны быть:

1
2
3
1, 2
1, 3
2, 3

Так что только комбинация1, 2, 3&nbsp;не может быть там, потому что1 + 1 + 3 = 5 > 4.

Сначала я подумал о генерации всех комбинаций, а затем начал проверять ограничениеsum(x[i] * P[i] for i in 1:k) <= T, Но этот подход может занять больше времени, чем другие умные подходы. Как мы можем генерировать такие комбинации?

NB. Если вам известна какая-либо функция в Python или Matlab, которую можно использовать для генерации таких комбинаций, вы можете предоставить ее.

Спасибо.