In this introduction, we will look at optimizing a structure. We will start with a simple example to explain optimization concepts in intuitive terms. From there we will build on the example to explain more concepts we will need to understand in order to optimize a real structure.

# The cost function

In order to optimize a structure, we need some numerical value that tells us how good the design is. Some examples for a structure include:

- Maximum stress in the structure
- Mass
- The first natural frequency
- Stiffness

We call this value the cost function or objective function. If lowering the cost function (e.g. mass) improves the design, then optimization would be the process of minimizing the cost function. In some cases maximizing the cost function (for example stiffness) would improve the design.

By the way, maximizing a cost function is the same as minimizing the negative of the same cost function. Therefore, we’ll simply refer to minimization in the rest of the article.

We can now write our first attempt at a definition for optimization:

*Optimization is the process of minimizing the cost function*

# Design variables

While the cost function tells us numerically how good a design is, design variables tell us what we are allowed to change. Some examples include:

- Plate thicknesses
- Beam cross sections
- Length or width of plates

We can now expand the definition of optimization to include design variables:

*Optimization is the process of changing the design variables in order to minimize the cost function*

A simplified example:

A rod in tension would have a Tensile Stress of where is the applied load and is the cross sectional area. If we choose tensile stress as the cost function, and cross sectional area as the design variable, our optimization statement would be:

Minimize the tensile stress () by changing the cross sectional area ().

Let’s do this manually. Increasing the cross sectional area decreases the tensile stress. The optimum is reached at an infinite cross sectional area. This results in a tensile stress of exactly zero (See figure 1).

This is definitely not what we had in mind. Changing the cost function does not help: Minimizing mass for the same structure would result in a cross sectional area of zero and an infinite stress (see figure 1). Again, this is not what we had in mind when we started with the optimization.

Figure 1 Plot showing mass and tensile stress as a function of area

What about creating some artificial cost function that combines tensile stress and mass? Yes it can work.

However, slight changes in the coefficients of this artificial cost function would result in different optima. Again, this is not what we had in mind.

What we need is some way to say: “Minimize the stress, but don’t go totally bonkers on weight”, or “Minimize the mass, but limit the stress to some sensible value”

# Design constraints

This brings us to the topic of constraints, also known as constraint equations or constraint functions. A constraint is a limit placed either on a design variable, or on some calculated response. The equation is something simple, such as .

A calculated response is simply anything that comes out of the calculation. In the previous example, the calculated response would be tensile stress. It could as easily have been maximum displacement. Also, nothing stops us from having multiple constraints.

To make constraints more intuitive to understand: A constraint is a limit placed on a design. Typical limits for structures includes the allowed range of plate thicknesses, the maximum allowed stress in the structure, maximum allowed displacement due to applied loads, minimum value of the buckling safety factor or a maximum amount of plastic strain.

In optimization, we are only allowed a single cost function. However, we are allowed as many constraints as we need: The list of constraints is how we specify what constitutes a valid design.

The design is valid only if ALL the constraint equations for the structure are satisfied. If a single constraint is not satisfied, the design is not valid and can therefore not be an optimum. Back to our example: If a tensile stress limit of 200 MPa was specified, then a design with a tensile stress of 220 MPa is not valid.

A note for the impatient: We often need multiple load-cases and constraints to completely specify a valid design. It may sound painful to implement the combination of multiple load-cases and their corresponding constraints. In reality, it is so simple that it feels wrong at first: We simply specify a separate set of constraints for each load-case. If this is confusing, don’t worry - we’ll discuss this in a follow-on article in more detail.

Now that we have discussed design constraints, it is time to refine the optimization statement:

*Optimization is the process of minimizing the cost function by changing the design variables in such a way that no constraint equation is violated*

In terms of our example: Change the design variable(s) to find the lightest structure for which the design is valid (stress less than 200 MPa).

# Some notes:

No document on design optimization will be complete without discussing concepts such as multiple local minima or optimization algorithms.

In brief: A large class of models has multiple local minima. A local minimum is one in which changing any design variable (or combination of design variables) by a small amount will result in a worse cost function or an invalid design. The global minimum is the best local minimum in the allowed design space. As can be imagined, finding the global minimum is not trivial. Even if a local minimum happens to be the global minimum, only an exhaustive search of the design space will prove it as such.

In structural analysis, gradient-based optimizations algorithms are most commonly used. This is partially because some gradient info is easily accessible, often analytically. Another reason is that evaluating the cost function and the constraint equations require a complete analysis which is often very slow. Gradient based methods tend to find a local minimum with relatively few evaluations compared to other methods.

Also note that, in our last example we have used mass as the cost function. This is no accident. Stress, stiffness, etc. tend to be bad choices the moment we have multiple load-cases. This is due to these values having different values between load-cases. Mass on the other hand is directly a function of the design variables, and therefore per definition independent of the number of load-cases. Also, mass often equates with cost. There is a reason it is called a “cost function”…

Setting up an optimization run

Engineers are often excited by the idea of optimizing a structure. After reading up on the topic, most are disappointed due to the seeming complexity of performing an optimization. In reality, the process is often simple:

- Pick a sensible cost function. Mass is usually the sensible choice
- Determine what the software is allowed to change, and specify limits on how much they can change (for example plate no. 11 can vary from 2mm to 20mm, etc.)
- Look at all the possible ways the structure can “fail”. (In this context, fail means that it does not meet the requirements of the design).
- Create load-cases that cover the whole spectrum of failure modes (e.g., different static load-cases, a buckling load-case etc.).
- For each load-case, specify the constraints that define when the structure is not valid (e.g. too highly stressed, too low buckling safety factor)

This completely specifies most structural optimization models. The rest of the setup is mostly in terms of settings like the algorithm used, number of allowed design cycles and maximum change allowed per design cycle for the design variable.

To help understand Step 3 in case it isn’t clear: Think of the combination of 3a and 3b as the checklist of requirement that the software has to meet in order to determine if the design is valid. A single “fail” means the design is invalid, so the design first has to change to become valid before further optimization is attempted.

# Conclusion

In this article, we have discussed the basics of structural optimization. This is enough information to allow us to approach of a large class of structural optimization problems.

In all probability, the following three concepts are the most important concepts to grasp in order to start performing structural optimization:

- Cost function (aka objective function)
- Design variables
- Constraints (constraint equations)

To understand these better, start with a small model that will run fast so that early mistakes do not waste a lot of time.

The other major requirements in order to perform successful structural optimization are:

- A thorough understanding of the possible failure mechanisms of the structure in question
- A high fidelity model (FEA usually) of the structure and its loads and boundary conditions

As long as these are understood and met, there is very little reason for optimization to be painful.

Contact SIMTEQ Engineering for more information.