Overview

When performing an optimization in which there are both geometric design variables (geoX) and angle of attack (AoA) design variables, appropriate scaling must be applied to each type of design variable so that they are of similar magnitude. This becomes important when calculating the sensitivities of an objective or constraint function to each of the design variables. For example, if we have a lift constraint Cl(X) - Cl* >= 0, we will need the gradient of Cl wrt to design variables X, dCl/dX. In a 2D optimization context, let's define geometric design variables as the y coordinates of a specified set of b-spline control points which determine the shape of an airfoil. The units of our geometric design variables are in terms of chord length. AoA design variables are self explanatory. Their units are in degrees.

We can think of the sensitivity dCl/dX as the rate of change of Cl per unit of design variable X. It is easy to visualize dCl/d(AoA). Just think of a plot of Cl vs AoA. It is more or less linear until we reach a stall angle of attack. If we consider the RAE 2822 airfoil at Re=11.8e6, M=0.16, AoA = 4.5 degrees, dCl/d(AoA) =~ 0.1. This means that Cl will increase by ~0.1 for every degree of angle of attack.

What about geometric design variables? Again consider the RAE 2822 airfoil at Re=11.8e6, M=0.16, AoA = 4.5 degrees. An evaluation of the sensitivity of Cl to a geometric design variable on the bottom surface of the airfoil near the trailing edge gives dCl/d(geoX) =~ 11.5. We can interpret this to mean that Cl will increase by ~11.5 for an increase of 1 chord at the trailing edge design variable. However, Cl is non-linear wrt to geoX, so we shouldn't expect this result if we were to increase the trailing edge design variable by 1 chord - not to mention that the airfoil geometry would be infeasible.

Comparing dCl/d(AoA) to dCl/d(geoX) we see that Cl is 100 times more sensitive to changes in the trailing edge design variable vs the AoA design variable. So what will an optimizer do with this unscaled sensitivity information? It will focus its attention on the trailing edge design variable because it thinks it will have the strongest influence on Cl. the AoA design variable will be neglected. The optimized airfoil will satisfy its lift constraint mainly via significant geometric modifications and relatively small changes to the AoA. Surely a more balanced approach is required.

In practice, an AoA design variable could vary by 1 degree from one design iteration to the next. In contrast, a geometric design variable could only vary by a fraction of a chord and still produce a feasible design. Let's assume that our trailing edge design variable cannot change by more than 0.01 chord otherwise we get an infeasible geometry. Recall the sensitivity dCl/d(geoX) =~ 11.5. Given the limitation on the amount of change in the trailing edge design variable, we can only expect a change in Cl of ~0.115. This is about the amount of change in Cl we can expect from varying AoA by one degree.

We can compensate for this mismatch in design variable units by scaling the geometric and AoA design vairables accordingly so that the optimizer doesn't forget about the AoA design variable.


It appears to be beneficial if design variables are scaled such that they are all of order 1e0. AoA design variables typically have values ranging from -5 to +15 degrees. Bspline control point design variables range from -1e-2 to +1e-2. A goal of design variable scaling is to eliminate any bias that arbitrarily gives one design variable greater influence than another on the objective function. It follows that similar groups of design variables should be scaled equally. For example, all bspline control point design variables should be scaled by the same factor. Ideally, the scaling factor applied to bspline control point design variables makes them all of order 1e0. Similarly, all AoA design variables should be scaled by a common factor (but likely different than the scaling factor for bspline control point design variables) that makes them all of order 1e0.

Design Variable Scaling Studies


A study of design variable scaling approaches previously performed by Zingg et al. can be found here. Their study compared performance of several 2D aerodynamic shape optimization test cases using a combination of design variable and Hessian scaling approaches. The optimizations were performed using the BFGS optimization algorithm within Optima2D. Since then, the SNOPT optimization algortihm for constrained optimization problems has become the prefered method for optimizations with Optima2D. Click here for a new study that revisits the design variable scaling question to determine the best scaling approach for optimization when using SNOPT. Also, a discussion of design variable scaling for 3D wing optimizations can be found in Leung's PhD Thesis.


Input Parameters in Optima2D


In Optima2D the following input parameters allow scaling of geometric and AoA design vairables:

SC_METHOD:
An integer value.
Must be set to 3 to allow independent scaling of geometric and AoA design vairables
Default = 3

GDV_SCALE:
A real value.
GDV_SCALE is a scalar divided by all geometric design variables
Default = the average of the absolute initial values of all bspline control point design variables*
*NOTE: setting GDV_SCALE = 0.0 uses the average value described above. Otherwise, GDV_SCALE is set to any non-zero value.

AOADV_SCALE:
A real value.
AOADV_SCALE is a scalar divided by all angle of attack design variables
Default = 5.0