We apply a genetic algorithm (GA) to this problem. The fitness evaluation of a candidate solution has two components. We check the validity of a design (whether or not it satisfies the necessary design constraints) by using standard finite-element analysis software. The evaluation is computationally expensive because it involves inverting. large matrices. Although ultimately the design must have no constraint violations, the number and magnitude of the violations can give us a lot of information about how close we are to a valid solution. The ideal objective is a solution with no constraint violations, but a solution with a small number of violations that are all of a small magnitude would be extremely useful to a designer, who could then most likely finish the design easily.