Generando permutaciones con una restricción de suma

Yo tengon conjuntos de longitud variable y quisiera obtener todas las permutaciones de elementos de cada conjunto donde la suma esté dentro de un cierto rango. Por ejemplo enR podemos hacer

set1 <- c(10, 15, 20)
set2 <- c(8, 9)
set3 <- c(1, 2, 3, 4)

permutations <- expand.grid(set1, set2, set3)
permutations$sum <- rowSums(permutations)
final <- permutations[permutations$sum >= 25 & permutations$sum <= 29, ]

# final:
#    Var1 Var2 Var3 sum
# 3    20    8    1  29
# 5    15    9    1  25
# 8    15    8    2  25
# 11   15    9    2  26
# 14   15    8    3  26
# 17   15    9    3  27
# 20   15    8    4  27
# 23   15    9    4  28

Esto está bien para un pequeño número de conjuntos, aunque rápidamente (factorialmente) crece con un número mayor o mayor de conjuntos.

Es posible generar permutaciones que se ajusten a la restricción, sin tener que calcular todas las posibilidades?

En este ejemplo, no hay combinaciones finales que contengan los 10 deset1, ya que la suma resultante sería demasiado pequeña sin importar qué otros números se elijan. Esto podría ser útil para reducir el alcance del problema. Por ejemplo, e, si sé quemin(set1) + max(set2) + max(set3) < 25 == TRUE, entonces puedo asegurarme de no incluirmin(set1) en cualquier permutaciones.

¿Cómo puedo generalizar esto y usar las restricciones para evitar generar permutaciones no válidas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta