2.2. Selection of Design Variables
Two types of design variables were proposed: those that describe in a general way the geometry of the propeller or the operation, such as the diameter of the propeller (d, in m), number of blades (B), and number of revolutions per minute (n
m, rev/min); and others that change depending on the radius of the propeller, such as the chord length, effective angle of the airfoil, and the geometry of the airfoil. We considered that these variables have a smooth and continuous variation along the propeller radius using Bezier curves. This variation was achieved using two quadratic Bezier curves [
43] (see
Figure 1). A quadratic Bezier curve is the path drawn by the following function:
where P
0, P
1 and P
2 are control points, and t is a parameter that always varies from 0 to 1.
BC(t) can also be decomposed as (
(t), B
x(t)), where
indicates the relative radius of the propeller and
x the design parameter.
The control points that determine the Bézier curves for each design variable as a function of the propeller’s relative radius are as follows:
In Equations (4)–(7), x may be the chord relative to the propeller diameter (c/d), the effective angle (α), maximum thickness (yt), position of the maximum thickness relative to the chord (xt), the maximum camber (yc), and the position of the maximum camber relative to the chord (xc). Each of these variables is with respect to the profile of each section of the propeller blade. The variable xm refers to the union position of the two Bezier curves. The subscripts r, m, t refers to the values of the design variable with respect to 10% of the blade radius, the union point of the Bezier curves, and 97% of the blade radius, respectively. Therefore, each vector of design variables is formed as xi = [(c/d)r, (c/d)m, (c/d)t, cm, αr, αm, αt, αm, ytr, ytm, ytt, ytm, xtr, xtm, xtt, xtm, ycr, ycm, yct, ycm, xcr, xcm, xct, xcm, nm, B, d]i.
2.5. Isolate Section Method
The objective function of the optimization process is to calculate the propeller power (W, in W) required to achieve thrust (T, in N). A modified version of was used to obtain these values. The variation between the original and our modified version of the isolated section method (ISM) is the geometric twisting of the sections (φ, in deg) using the effective angle of attack of the sections (α, in deg) as the input value (Algorithm 2).
The input variables required by the method are as follows: B, V∞, d, n (n, rev/s), and the physical characteristics of the air (density (ρ, in kg/m3), kinematic viscosity (ν, [m2/s]), and sound speed (a, [m/s])). The isolated section method requires sectioning one of the propeller blades into a finite number of sections (NS). In each section, it is necessary to know the following values: chord length (c, in m), , and the geometry of the airfoil ((XU, YU), (XL, YL), where each coordinate is in m).
The iterative method for obtaining the thrust provided by the propeller and the required power is described in [
44]. This method was modified to use the effective angle of attack (α) of the profile in each section as a constant and the geometric twist (φ) of the section as a variable that is updated in each iteration.
Having the local characteristics of the flow, in addition to the chord, geometry, and angle of attack of the airfoil, coefficients of lift (c
l) and drag (c
d) coefficients in each section are calculated. The next step is to obtain
,
and
by an iterative process, which is necessary to obtain the coefficients c
t and m
k. The equations involved in this process are as follows:
Previously before initializing the iterative process, it is important to initialize the n values of
and
equal to zero. At the end of each iteration
has to be updated making use by:
while the values of
are updated as shown in lines 24, 25 and 26 of Algorithm 2, where trapz (Y, X) integrates along the given axis using the compound trapezoidal rule, Y is the input array to integrate and X is the sample points corresponding to the Y values.
It has been proven that the loop described between lines 10 and 26 of Algorithm 2 only needs 10 cycles to obtain good results.
To obtain the coefficients c
t and m
k, it is first necessary to calculate their differentials in each section, and then integrate with respect to
, making use of trapz().
By obtaining the coefficients c
t and m
k, the thrust provided by the propeller (T) and the required power of the propeller (W) can be calculated.
Other propeller performance metrics that can be obtained with this method are the dynamic efficiency
and the static efficiency
of the propeller.
Algorithm 2: Modified Isolate Section Method |
| Inputs: n, B, V∞, d, ρ, ν, [XU, YU, XL, YL], NS |
| Outputs: T, W, ηd, ηs |
1 | R = d/2; |
2 | Get ω with (31); |
3 | with (32); |
4 | for s = 1 to NS do |
5 | R; |
6 | Get Res and Ms in each section; |
7 | cls, cds = runXFOIL(αs, [XU, YU, XL, YL]s, Res, Ms); |
8 |
|
9 | for t = 1 to 10 do |
10 | Iu = ∅; |
11 | for s = 1 to NS do |
12 | with (23); |
13 | with (24); |
14 | with (25); |
15 | with (26); |
16 | Get β1s with (27); |
17 | φs = αs + β1s; |
18 | Ks = cls/cds; |
19 | Get σs with (28); |
20 | with (29); |
21 | Get frs with (30); |
22 | with (31); |
23 | ; |
24 | for s = 1 to NS do |
25 | [s:end]); |
26 | for s = 1 to NS do |
27 | with (32); |
28 | with (33); |
29 | ); |
30 | ); |
31 | Get αp, βp and λp with (36), (37) and (38) respectively; |
32 | Get outputs T, W, ηd and ηs with (34), (35), (39) and (40) respectively; |
33 | Save φ; |
34 | return Outputs |
2.6. Airfoil Aerodynamic Coefficients Calculation
The aerodynamic coefficients of each section of the blade was obtained by using the Xfoil program, which shows a good performance for the evaluation of profiles. In
Figure 3, the experimental coefficients of the Clark-Y profile can be observed using XFOIL, OpenFOAM (with the k-ω SST turbulence model) and experimental tests.
In Algorithm 2, the modified ISM is described in pseudo code. To simplify the ISM calculations, it is necessary to obtain the radius (R, [m]), the angular velocity (ω, [rad/s]) and the relative velocity (
, dimensionless) of the propeller.
Sections are defined by the array. For example, in the cases that we evaluate, the sections begin to be numbered from 10% of the R of the propeller and end at 97% of R ( = [0.1, …, 0.97]). In our modified ISM, having the α of each section as input, it is necessary to calculate the aerodynamic coefficients of each section delimited by . For this, it is necessary to obtain the local Reynolds (Re) and Mach (M) numbers.
To determine the aerodynamic characteristics of the propeller and reduce the number of calculations, interpolation of the profile data was performed over a smaller number of sections, in which the characteristics of the angle of attack were calculated considering the local Reynolds and Mach numbers (see
Figure 4).
A study was conducted out on the required number of sections, which showed that the use of 15 sections to calculate the aerodynamics of the profile and 75 sections to integrate thrust and moment allows one to quickly obtain accurate values of the propeller characteristics (
Figure 5).
2.8. Optimization Algorithm
The optimization algorithm used to solve the task is based on the Differential Evolution (DE) algorithm. The proposed algorithm contemplates the use of self-adaptive schemes of evolutionary operators, methods of Population Size Reduction (PSR), sampling techniques for the selection of individuals from the initial population, and stopping conditions that adapt to the needs of the optimization process. In addition, the developed algorithm contemplates the use of parallel computing strategies to accelerate the calculation of the values of the objective function.
Differential evolution is a stochastic, population-based algorithm developed for real-valued function optimization problems. It operates by having a population of individuals (x vector) that move around in the search space by recombining through crossover and mutation with other existing individuals in the population. Through a selection process, a newly generated individual is accepted as part of the population if the new individual x is an improvement; otherwise, it is discarded. This iteration process is repeated to find a vector x that optimizes a function f(x) [
49]. As with other evolutionary algorithms, the search performance of differential evolution algorithms depends on the control parameter settings. A standard differential evolution has three main control parameters: population size, scaling factor F, and crossover factor CR. However, it is well-known that the optimal settings of these parameters are problem dependent. Therefore, when applying differential evolution to a real-world problem, it is often necessary to tune the control parameters to obtain the desired results. In practical cases, many researchers suggest the use of self-adaptive schemes to adjust online control parameters during the search process. A variant of differential evolution that applies this type of scheme is the success history-based adaptation for differential evolution (SHADE) [
50]. In previous works by the authors of this article, the good performance of the SHADE algorithm for the optimization of aerodynamic bodies such as wings has been corroborated [
51].
In SHADE, the mutation factor F ∈ [0, 1] controls the magnitude of the differential mutation operator and CR ∈ [0, 1] is the crossover factor. In the beginning, the contents of MCR, k, MF, k (k = 1, …, H) are all initialized to 0.5. In each generation g, the control parameters CRi and Fi used by each individual xi are generated by randomly selecting an index ri from [1, H], and then applying the formulas below:
Here, randni(M, 0.1), randci(M, 0.1) are values selected randomly from normal and Cauchy distributions with mean M and variance 0.1. In case a value for CRi outside of [0, 1] is generated, it is replaced by the limit value (0 or 1) closest to the generated value. When Fi > 1, Fi is truncated to 1, and when Fi ≤ 0, Equation (44) is repeatedly applied to try to generate a valid value. In Equation (43), if MCR,ri has been assigned the “terminal value” −1, CRi is set to 0.
The mutation strategy used by SHADE current-to-pbest/1 is a variant of the current-to-best/1 strategy where the greediness is adjustable using a parameter p.
The individual xpbest,g is randomly selected from the top p·NP members in the g-th generation (p ∈ [0, 1]). Fi is the F parameter used by individual xi. The greediness of current-to-pbest/1 depends on the control parameter p to balance exploitation and exploration (small p behaves more greedily).
SHADE uses binary crossover strategy,
Perform selection between the trial vector (u
i,g) and target vector (x
i,g) using a greedy selection criterion,
SHADE uses a historical memory MCR, MF which stores a set of CR, F values that have performed well in the past, and generates new CR, F pairs by directly sampling the parameter space close to one of these stored pairs.
In Algorithm 3, index k determines the position in memory to be updated. In generation g, the k-element in the memory is updated. At the beginning of the search, k is initialized to 1. k is incremented whenever a new element is inserted into the history. If k > H, k is set to 1. In the updated algorithm 1, note that when all individuals in generation g fail to generate a trial vector that is better than the parent, i.e., S
CR = S
F = ∅, the memory is not updated. The weighted Lehmer mean mean
WL(S) is computed using the following formula:
Algorithm 3: Memory update algorithm in SHADE |
| Inputs: SCR, SF, MCR,k,g, MF,k,g, k, H |
| Outputs: MCR,k,g+1, MF,k,g+1, k |
1 | if SCR ≠ ∅ and SF ≠ ∅ then |
2 | if MCR,k,g = −1 or max(SCR) = 0 then |
3 | MCR,k,g+1 = −1; |
4 | else |
5 | MCR,k,g+1 = meanWL(SCR); |
6 | MF,k,g+1 = meanWL(SF); |
7 | k++; |
8 | if k > H then |
9 | k = 1; |
10 | else |
11 | MCR,k,g+1 = MCR,k,g; |
12 | MF,k,g+1 = MF,k,g; |
13 | return Outputs |
The amount of fitness improvement ∆fm is used to influence the parameter adaptation (S refers to either SCR or SF). As MCR is updated, if MCR,k,g = −1 or max(SCR) = 0 (i.e., all elements of SCR are 0), MCR,k,g+1 is set to −1. Thus, if MCR is assigned the terminal value −1, then MCR will remain fixed at −1 until the end of the search. This has the effect of locking CRi to 0 until the end of the search, causing the algorithm to enforce a “change-one-parameter-at-a-time” policy, which tends to slow down convergence, and is effective on multimodal problems.
The SHADE algorithm works well in conjunction with the PSR methods. To develop this optimization algorithm, we decided to incorporate the continuous adaptive population reduction (CAPR) method. The CAPR method gradually reduces the population size according to the change in the gradient of the fitness value [
52].
where
In the third generation and in subsequent generations, the evaluated function values of all vectors in the population are averaged to be . This value, together with that form the previous evaluation generation, is used to calculate the normalized gradient value . is calculated in a similar fashion using the previous average function evaluation value, , and the one before the previous . If the ratio / is within the range of [0, 1], then NP is reduced by a fraction equal to the γ-th root of the ratio /. The reason for taking root of the ratio is to slow down the population size reduction rate.
Another criterion to consider when increasing the performance of algorithms based on differential evolution is the generation of the initial population. It has been shown that a population, whose individuals are best distributed throughout the entire design space, has a greater chance of finding a global optimum, in addition to reducing the search time. The LHS design is a statistical method for generating a quasi-random sampling distribution. It is one of the most popular sampling techniques used in computer experiments because of its simplicity and projection properties with high-dimensional problems. The LHS is built as follows: each dimensional space, representing a variable, is cut into n sections, where n is the number of sampling points, and only one point is placed in each section [
53].
For real-case optimization processes, it is common to use two types of stopping criteria. The following two types of stopping criteria were considered for this algorithm [
54]:
Exhaustion-based criteria: due to limited computational resources, the optimization run might be terminated after a certain number of objective function evaluations or CPU time. Typically, a maximum number of generations or number of objective function evaluations is used in combination with every stopping criterion to prevent the algorithm from running forever if a criterion cannot stop the run.
Distribution-based criteria: for differential evolution algorithms, all individuals eventually converge to the optimum. Therefore, it can be concluded that convergence occurs when individuals are close to each other. Because it is assumed that the optimum is not known for the reference criterion, the distances between the population members are examined. This type of criterion can be applied to the design space or objective space.
One of the main disadvantages of evolutionary algorithms is that they need to evaluate multiple vectors to find the global optimum, which implies calculating the values of the objective function many times. One way to speed up the calculation process is to use parallel computing strategies. The strategy that was proposed to be used is Lightweight Pipelining (LP) [
55]. The pipelining process provides an easy approach for downloading and using the models on demand. It helps in parallelization, which means that different jobs can be run in parallel. It also reduces redundancy and helps to inspect and debug the data flow in the model. Some features that pipeline provides are on-demand computing, tracking of data and computation, and inspection of data flow.
OpenVINT is the union and adaptation of each of the aforementioned algorithms and methods to achieve the objective of the optimization process mentioned at the beginning of this work. Coding of this algorithm was performed mainly on Python 3 in a GNU/LINUX environment.