I think you should use genetic algorithm because:
- It is best suited for large problem instances.
- It yields reduced time complexity on the price of inaccurate answer(Not the ultimate best)
- You can specify constraints & preferences easily by adjusting fitness punishments for not met ones.
- You can specify time limit for program execution.
-
The quality of solution depends on how much time you intend to spend solving the program..