Design is Compromise
Rare is the occasion when you can design a new widget without constraints, in fact I'd argue that it's not only rare but it's never. Engineering design is all about compromise. Take a Formula 1 car as an example, its success on the race track is overwhelmingly governed by the efficiency of its aerodynamics - yet even though it's so important the external aerodynamics for F1 cars is an exercise in compromise. Compromise to satisfy regulations, which are in place to actually slow cars down for safety's sake. Compromise to ensure that the wheels are supported correctly relative to the road. Compromise to ensure that the engine gets enough inlet air, cooling air, and a path to eject exhaust. Compromise in terms of the driver's safety structure. Compromise after compromise. No one element of a design can be optimized without considering the effect on the overall design.
The implications of total design optimization on automated design approaches is profound. The holy grail of automated optimization is to enter all the design constraints into a magic box, press a button, and out pops the optimal design. The reality of multidisciplinary design optimization (MDO) as it's known is far from ideal. The main problem is defining the constraints and evaluating their effect through a so-called cost function on a series of design configurations. The computer has no implicit knowledge of, say, aerodynamics, whereas an F1 aerodynamicist has built up a massive implicit database of aerodynamics knowledge over many years of study and experience. For an automated optimization routine all that implicit knowledge carried by an aerodynamicist has to be converted into explicit constraints in terms that the computer can interpret. Not only does this have to happen for aerodynamics, but also for materials, structures, etc. Clearly no such automated routine is currently feasible - it ventures into the realm of Sci-Fi artificial intelligence. However, all is not lost.
Simple parameterization of key areas of a design, e.g., the camber of an airfoil, within tight limits to meet structural constraints are typical of current optimization routines. Then a design of experiments-type sweep of the parameters are performed, which all being well will indicate in which range the parameters best optimize a given cost function, e.g., in the case of an airfoil lift might be the cost function.
The whole process of effective design optimization is driven and governed by human domain experts - engineers. Engineers with domain expertise know which initial designs are most likely to be effective and then they can define limited parameter-based optimization studies to nudge the design closer to a more optimal but ultimately compromised design, given all the other implicit multi-disciplinary constraints.
Computer Aided Engineering tools, such as Computational Fluid Dynamics (CFD), are an excellent way to perform batches of analyses driven by parameter variations. Most tools incorporate a parameterization method (e.g., in Caedium you can create parameterized Python scripts to drive your CFD simulations) and results that indicate the performance of a design (e.g., lift force values in CFD simulations). Of course the closer the initial design is to the optimal, the quicker you can progress through the analysis phase, build your racecar, and start winning races. The real secret to design success is no secret, it is obvious, you need to start with excellent engineers and a well-defined process, but you already knew that, didn't you?!