I would think this would be best approached as a linear programming/optimization problem. Basically optimizing a linear equation under a set of linear constraints ...