genetic algorithms
come up with a solution, mutate it, see if it’s reasonable. Cool? Cool.
What if it’s infeasible? You could repair it…
alternatively you could have two populations, one that’s alright being infeasible, and one that is only feasible. Evolve infeasible solutions towards feasibility, and move children from one population to another if necessary
you could even get fancy with multiobjective evolutionary algorithms