1. Introduction
This work is a continuation of a previous paper, presenting a preliminary design methodology for axial turbocharger turbines [
1]. The computational resource increment in recent years has allowed multidisciplinary design optimisation (MDO) to permeate multiple R&D disciplines, to the point of becoming essential in aerodynamic shapes optimization [
2,
3]. Traditionally, the design process required a high degree of engineering involvement and was reliant on designer experience in the field. Over the past 20 years, with the improvement in computational resources and in fluid dynamics algorithms accuracy, the trend in research has shifted to a predominantly numerical approach: “In regard to human interface, MDO developers and users seem to have arrived at a consensus that computer-based MDO methodology is an increasingly useful aid to the creative power of human mind” [
4].
In the specific case of turbines, a multidisciplinary approach is necessary as changes in blade geometry lead to variations in both structural and aerodynamics results, rendering it impossible to obtain realistic geometries without taking both fields into consideration.
Design optimisation processes are largely portable across similar applications, thus research can be conducted on optimisation techniques in axial turbines for different applications. Multiple sources are present, however, it is clear that the design optimisation topic is highly sensitive to manufacturers, with the majority of the sources being obsolete [
5,
6], as highlighted by the most recent paper on the topic [
7]. The most notable common trait in previous examples of design optimisation is the fact that most of them were carried out using genetic algorithms (GAs). The method is one of the most popular in MDO, as it can handle “discontinuities, multimodality, disjoint feasible spaces and noisy function evaluations” [
8], which are common features in the optimisation task to be carried out, as most of the objectives are effectively described by discontinuous functions. These capabilities are what distinguish GAs from its competitors.
In recent years, research on this relatively new topic has been extremely prolific, with numerous innovations and schools of thoughts developing at an incredible pace. In 2018 alone, more than 20,000 papers or books have been published on the topic of genetic algorithm optimisation [
9]. The general consensus gauged from surveys [
10,
11] is that methodologies and implementations are still in an embryonal stage, and that there is no clear best implementation of the method. The authors’ conclusions are that techniques should be evaluated in a case-by-case manner.
Recent literature focuses on theoretical of purely numerical approaches, especially in a manufactural design optimisation task. The complexity and time-consuming nature of MDOs featuring multiple evaluations, however, is preventing any complete (i.e., from preliminary to final) design optimisation tasks relevant for this project. Research has followed two different approaches, either reducing the objectives to optimise for [
12], or accepting less accurate results by utilising simpler mathematical models [
13].
The first example of axial turbine parameter optimisation available was published in 1985 [
5]. The algorithm, coded in FORTRAN, allowed the user to obtain a preliminary blade design with 11 independent parameters, mathematically derived by the author. The other 14 parameters were optimised by using a mathematical model. While the results were heavily approximated, this publication is of absolute importance from an historic point of view, as Pritchard, in their ingenuity, understood the need of a parametric blade generation to allow a faster preliminary design process, thus allowing engineers to apply their experience and expertise in a focussed way. The procedure features numerous approximations and essentially no integration with computational fluid dynamics (CFD), however it should be noted that the algorithm was executed on a computer with 8 kB of RAM [
14].
A systematic automatic design optimisation approach for turbine blades was firstly developed in 1996 [
15] and was confirmed to be effective in 1997 [
16]. The authors considered a GA approach to be possible, however overly expensive in terms of computational resources. In 1999, the first GA approach was implemented, and the authors utilised a simplified mathematical model, which estimated profile losses through a two-dimensional approximated CFD analysis [
6]. The algorithm yielded extremely promising results, with two-dimensional losses reduced by an order of magnitude compared to baseline blades. The optimisation task was proved to be an effective tool for design exploration, as it aided the visualisation of trends and general behaviour with varying parameters. The innovation allowed blade designers to focus on the three-dimensional aspect of the design process, as they were provided with an excellent baseline.
Öksüz and Akmandor published their MDO using a GA approach on an axial turbine in 2010 [
7]. The authors optimised an axial turbine and stator profiles to maximise efficiency and torque. Once again, the main challenge was the incredible amount of computational resources needed to perform multiple CFD evaluations. Their 37 parameters GA implementation used an approximation exploit, which featured a surrogate model, with a dynamic correction factor calculated as a function of the percentage difference between a fast, inaccurate CFD analysis, and a high-fidelity one. Algorithm run times required to implement this solution were relatively small if compared to a traditional design optimisation task, with 20 days of CPU usage for the first 10 generations. This process was also carried out with no consideration for any structural element, thus once again providing results only useful in a preliminary design environment. The implementation showed that MDO using GAs is not only beneficial, but also highly viable.
Across all reviewed literature, conclusions tend to be coherent in suggesting the methodology to be extremely promising, with computational time being the limiting factor preventing a widespread application. Computational resources have drastically increased since the last publication, however they still are not at a level that would allow a pure genetic algorithm to be implemented. Thus, any GA implementation involving CFD analysis should focus on minimising algorithm run time. The techniques used in this article are analysed in the next section.
2. Genetic Algorithm Dimensioning
An automated MATLAB script (R2018a, MathWorks, Natick, MA, USA) was set to generate a population, simulate the members in a complex ANSYS Workbench project (18.2, ANSYS Inc., Canonsburg, PA, USA), and evaluate the results through a fitness function. The foundation of the coding methodology was to allow multiple similar problems to be solved by the same script with minimal adjustments. This decision dramatically increased the complexity of the code, forcing an object-oriented programming approach [
17].
The main aim of the implementation was to provide a fast, reliable, and effective tool for design optimisation of axial turbines or other similar problems, thus many features of this GA are geared towards convergence rate and speed of execution, rather than focusing on providing the absolute optimal result.
2.1. Population Member Chromosome Encoding
Randomly generated chromosomes needed to be encoded in binary form, to facilitate crossover, population, and mutation calculations. It can also help assess the quality of the design optimisation approach, by giving a total design space dimension. Each of the 48 parameters was encoded as a bit sequence of length proportionate to the perceived relevance in the design quality. Once the value ranges were defined, parameters then had number of possible values, ranging from minimum to maximum, with being the number of assigned bits to that value. The total number of bits is essential to estimate a correct number of population members, and it was chosen to be the maximum possible for a realistic execution. Number of bits allocation is discussed in the following section.
2.2. Population Size
The available literature in genetic algorithm dimensioning is surprisingly shallow, as researchers seem to have focused on more efficient procedures and direct applications, more than studying the actual dimensioning of the GA parameters. It should be noted that applications such as the one presented in this article, which feature significantly longer (time-wise) design evaluation phases relative to data processing phases are not a common occurrence. The dimensioning of this algorithm was derived from a statistical analysis of a generic GA, with several corrections applied to account for out-of-ordinary implemented methodologies [
18]. Population number is constrained in the following way:
where
is the population number,
is the bit size of every chromosome,
is the probability of a bit having the same value throughout the genetic pool.
was chosen to be
as suggested by the literature [
18]. This value was found to be appropriate for medium size GAs as this one through testing. Values of population numbers against total bits are shown as a continuous function in
Figure 1.
Due to technical limitations, the maximum population number was set to be 21. This was chosen due to the implementation of a cluster network briefly explained in a
Section 3.3, which was constrained by the number of computing facilities available. Another plot was then produced (
Figure 2) using only integer values of population sizes, resulting in the chosen number of bits per chromosome to be 220.
2.3. Mutation Rate
Gutowski suggested multiple formulations to optimally determine the mutation rate of a GA. Mutation is fundamental in a GA as it increases the coverage of the design space. Gutowski suggests multiple equations to be used to calculate mutation rates, shown below:
where
,
and
being the maximum, minimum, and suggested mutation rate for every bit for the algorithm at each iteration. The minimum mutation rate is calculated assuming an average of one chromosome mutating at each generation. The maximum mutation rate is set as the minimum required to have half the bits mutating at each generation. The suggested value is somewhat in-between the extremes and is defined as the maximum mutation probability that features negligible chances of two mutated chromosomes to perform a crossover with each other.
While this approach is the purely theoretical optimum, it was not practically viable. It served more as a valid guideline. More recent literature [
19] showed that algorithm performance is not sensitive to mutation rate in terms of quality of results, however lower mutation rates achieve faster convergences. Literature also suggests a chromosome-based mutation rate, with complete regeneration in case of mutation, with one full reset per generation. The mutation rate in this case that would correspond to this value is 4.76%. Later analysis on GAs featuring Elitism (see
Section 2.5) identified a low genetic variability, requiring a higher mutation rate.
Figure 3 provides a visualisation of increased genetic variance in the population with increased mutation rate. Red data points are relative to the first 15 generations of the GA, run with 4.76% entire-bit mutation rate (
. Black data points are representative of the final results, run with a value for mutation probability of 15.10%. Generation 13 onwards show a complete convergence for low mutation rates, and the algorithm is essentially relying on a mutation to improve on fitness values, thus operating as an incredibly inefficient Monte-Carlo-style search. Mutation was also chosen to not affect the elite member, as to not lose any GA progress to chance. This approach prevented the process from being chaotic, thus higher variance was effectively positive. The metric for genetic variability was chosen to be power generated, as it was a secondary objective of the optimization. Results would still be influenced by this parameter, while not as heavily as efficiency. This gave the algorithm the ability to pursue the lowest energy path to the optimal power generated value, which was reached after 13 generations. In other words, a low mutation rate meant that essentially all turbines were generating the same amount of power after an extremely low amount of design space exploration, and that was determined by the elite member’s power generation value, which in turn was determined by the random initialization. By observing
Figure 3, one can see the gradual reduction of variance around the elite members for every generation (at around 1.81 kW).
2.4. Generation Number
The minimum number of generations to be run is suggested by Gutowski for a statistically optimal solution [
18]:
The theoretical number is unfeasibly high in a real-world scenario; thus the generation number should be as high as possible, up to the time limit allowed. An estimated minimum can be achieved by using values of instead. The resultant minimum generation number for this case was set at 16. This number, while seemingly small, was found to be rather correct in empirical tests, effectively due to elitism and parent selection choices. The final GA was run with 19 generations, and the GA would have had minimal improvement in maximum fitness if it were to be run for higher numbers of generations. Once again, the configuration surely is highly unlikely to converge to an absolute optimum, and tasks that would require an absolute optimum would require a substantially different layout in order to obtain it.
2.5. Elitism
Single-member elitism was implemented in this algorithm in order to ensure time efficiency of the script. By maintaining the best performing member of each generation, the algorithm is prevented from losing the best solution. This allows the algorithm to never lose progress, allowing for more flexibility in the search [
20]. This technique is widely recognised as highly beneficial and is essential in the application discussed in this article, as any amount of computational resources invested in the optimisation had to yield positive or null results.
2.6. Crossover Method
A uniform crossover method was chosen as this method is more exploratory when compared to alternative methods, like chromosome splitting. The crossover probability was set to a fixed 0.5 as default in uniform crossover methods, as no discontinuous parameter behaviour was observed in preliminary analysis [
21]. Crossover chance, or the probability for a pair of mating chromosomes to effectively perform crossover, was set to 1 as it is recognised as inefficient and extremely uninfluential [
19]. An overview of the method is detailed in
Figure 4.
2.7. Parent Selection
The chosen parent selection method was tournament mode with a size of 3. Compared to the alternative prominent parent selection method (roulette wheel selection), tournament selection does not feature stochastic noise [
22]. Furthermore, it has been shown to be independent of the scaling of the algorithm fitness function [
19]. The selection method with elitism schematic is shown in
Figure 5.
Takeover time (τ) is defined as the number of generations “for the population to be filled with the best solutions found in the initial generation, in the absence of recombination and mutation” [
19]. Lower takeover times lead to faster convergence, with higher chances of premature (i.e., local minimum) convergences. According to literature [
19], the takeover time can be approximated using the equation:
where
is the chosen tournament size. The result for this particular case presented in the example of
Figure 6 (population size 21) was
. This was an excessively low number, if the aim of the algorithm was to find the absolute optimal solution. However, this approach tries to find a better solution in a short time span, thus a premature convergence is effectively desired. Takeover time was found to be the most effective way of gauging the expected behaviour of a particular GA dimensioning, and values ranging from 5.5 to 7 were found to conform to the problem specific of a fast convergence, high average fitness gain per generation.
2.8. Fitness Function
The design constraints for this specific problem are presented in
Table 1. Note the safety factor is defined as the ratio of Von Mises stress and the elastic limit of the material at 0.2% elongation.
To implement these design constraints the following fitness function was used shown in
Table 1. The initial fitness function features efficiency maximisation exclusively, with the rest of the parameters being expressed as constraints:
where
F is the fitness value,
is the turbine efficiency, and
N is a constraints check value of 0 if any values are outside acceptable ranges, 1 if within. The genetic pool in this configuration would, however, be strictly dependent on efficiency alone. This meant that the GA would not evolve towards a better blade overall, but towards a more efficient design exclusively. After numerous considerations and tests, a coefficient to account for power produced was added to the function. The reason behind this decision is that a turbine that would affect the flow in a more profitable way would not necessarily feature the maximum efficiency. Extremely, an exemplar A that would produce twice as much power, with 1% less efficiency compared to exemplar B would be considered closer to the optimum. Therefore, following some preliminary testing of the algorithm it was decided that an efficiency/power balance of 1% every ~2 kW (2060 W). In practical terms, a 77% efficiency, 17 kW power turbine worse than a 75%, 21.5 kW one. While the main task was to obtain a hyper efficient blade, results would not have been realistically better than the results obtained. The fitness function implemented in the final GA run was as following:
The scalar factors were added in to direct the genetic pool towards high fitness levels in case of populations featuring many failing chromosomes. The efficiency/power compromise ratio was revealed to be dramatically less impactful than the effective presence of the power factor, and in future applications this value should be tuned to fit the particular problem specifics.