To add a bit more information to the comment I left on World Engineer's answer:
This is generally referred to as multi-objective optimisation. Wikipedia has a pretty good summary of the topic, I recommend you go through it. The good news is that it's a very well researched area, with plenty of ideas and algorithms available. The bad news is that it is a difficult area of optimisation, except in the most basic cases (which can often be solved with basic maths, e.g. with Linear Programming).
If your set of constraints is pretty fixed (or generally follows some simple pattern), I'd recommend attempting to solve the problem in a mathematical fashion. These solutions are almost always more efficient than the alternatives, which would be some kind of exhaustive search, or if the search space is too big, a randomised search with some kind of heuristic / intelligence built into it.
A word on weighting: there typically exist a whole number of solutions which are "pareto optimal", which means that you can no longer improve any of the objectives without causing impairment to the others (this is akin to "local minimum / minima" in standard optimisation). Together, these pareto-optimal solutions form the pareto front, which often forms a visually continuous shape. Mathematically, these solutions are considered equivalent, and it is up to you to provide extra information in order to choose between them, i.e. which trade-offs you consider more important. Sometimes, these decisions are left up to the user, and the role of the software is to provide them with the various pareto-optimal solutions (e.g. an investment professional choosing risk profile for a portfolio). This could be an option to consider in your case, too.