Általános megoldást nem ismerek, Google OR Tools-ba megpróbálnám felvenni a constraint-eket, aztán lesni mit hoz ki belőle.