AEROSPACE DESIGN OPTIMIZATION USING A REAL CODED GENETIC
ALGORITHM
Except where reference is made to the work of others, the work described in this thesis is
my own or was done in collaboration with my advisory committee. This thesis does not
include proprietary or classified information.
_______________________
John David Dyer
Certificate of Approval:
____________________________
John Burkhalter
Professor Emeritus
Aerospace Engineering
____________________________
Roy J. Hartfield, Chair
Professor
Aerospace Engineering
____________________________
Robert Gross
Associate Professor
Aerospace Engineering
____________________________
Brian Thurow
Assistant Professor
Aerospace Engineering
____________________________
Joe F. Pittman
Interim Dean
Graduate School
ii
AEROSPACE DESIGN OPTIMIZATION USING A REAL CODED GENETIC
ALGORITHM
John David Dyer
A Thesis
Submitted to
the Graduate Faculty of
Auburn University
in Partial Fulfillment of the
Requirements for the
Degree of
Master of Science
Auburn, Alabama
May 10th, 2008
iii
AEROSPACE DESIGN OPTIMIZATION USING A REAL CODED GENETIC
ALGORITHM
John David Dyer
Permission is granted to Auburn University to make copies of this thesis at its discretion,
upon request of individuals or institutions and at their expense. The author reserves all
publication rights
__________________________
Signature of Author
__________________________
Date of Graduation
iv
VITA
John David Dyer was born on July 13, 1983, in New Orleans, Louisiana to Mark
and Cetta Dyer. He began attending Auburn University after graduating from De La Salle
High School in 2001. While at college, he was a member of Tau Beta Pi engineering
society, and was a co-op for Chromalloy Florida in Ft. Walton Beach, Florida. John
graduated Cum Laude in May 2006 with a Bachelor of Aerospace Engineering degree.
He began graduate school at Auburn University where he pursued a master?s degree in
aerospace engineering.
v
ABSTRACT
AEROSPACE DESIGN OPTIMIZATION USING A REAL CODED GENETIC
ALGORITHM
John David Dyer
Master of Science, May 10, 2008
(B.A.E., Auburn University, 2006)
114 Typed Pages
Directed by Roy J. Hartfield
This study demonstrates the advantages of using a real coded genetic algorithm
(GA) for aerospace engineering design applications. A real coded GA was written from
first principles for this study and the source code can be seen in Appendix A. The GA
runs steady state, meaning that after every function evaluation a tournament scheme
determines the worst performer and that worst performer is then thrown out and replaced
by a new member that has been evaluated. The new member is produced by mating two
successful parents through a crossover routine, and then mutating that new member. For
this study three different preliminary design studies were conducted using both a binary
and a real coded GA including a Single Stage Solid Propellant Missile Systems Design, a
Two Stage Solid Propellant Missile Systems Design and a Single Stage Liquid Propellant
Missile Systems Design.
vi
ACKNOWLEDGEMENTS
The author would like to thank Dr. Roy Hartfield and Dr. Gerry Dozier for their
guidance with this thesis as well as Dr. John Burkhalter for his help with technical missile
matters. The author also wishes to thank Dr. Murray Anderson, the author of the
IMPROVE 3.1 Genetic Algorithm. The author would also like to thank his friends,
family, and loving fianc? for being patient with him as he worked to complete this thesis.
vii
Style manual of journal used:
The American Institute of Aeronautics and Astronautics Journal
Computer software used:
Improve 3.1 Genetic Algorithm, Tecplot 360, Compaq Visual Fortran Compiler,
Microsoft Excel, Microsoft Word
viii
TABLE OF CONTENTS
LIST OF TABLES....................................................................................................ix
LIST OF FIGURES....................................................................................................x
NOMENCLATURE.................................................................................................xii
1 INTRODUCTION..............................................................................................1
2 REAL CODED GA METHODOLOGY............................................................5
2.1 CROSSOVER............................................................................................6
2.2 MUTATION...............................................................................................8
2.3 STEADY STATE GA..............................................................................10
2.4 VARIABLE MUTATION.......................................................................13
3 MISSILE SYSTEM DESCRIPTIONS............................................................14
4 REAL GA CONVERGENCE TESTING........................................................25
5 MISSILE SYSTEM DESIGNS GA COMPARISONS ...................................31
5.1 SINGLE STAGE SOLID MISSILE SYSTEM DESIGN........................31
5.1.1 SINGLE STAGE SOLID 100,000 FT 2,500 LB GOAL.................35
5.1.2 SINGLE STAGE SOLID 350,000 FT 4,000 LB GOAL.................39
5.1.3 SINGLE STAGE SOLID 2,500 LB 240 SEC TOF GOAL.............45
5.2 TWO STAGE SOLID MISSILE SYSTEM DESIGN.............................50
5.2.1 TWO STAGE SOLID 100,000 FT 6,000 LB GOAL......................51
5.2.2 TWO STAGE SOLID 250,000 FT 7,000 LB GOAL......................57
5.3 SINGLE STAGE LIQUID MISSILE SYSTEM DESIGN......................63
5.3.1 SINGLE STAGE LIQUID 450K FT 55K LB WEIGHT GOAL ....64
5.3.2 SINGLE STAGE LIQUID 700K FT 55K LB WEIGHT GOAL ....68
6 REAL CODED GA CONVERGENCE TESTING REVISITED....................74
7 CONCLUSIONS AND RECOMMENDATIONS ..........................................80
REFERENCES.........................................................................................................83
APPENDIX A: Real Coded GA Source File...........................................................86
APPENDIX B: Single Stage Solid Real GA Input File..........................................94
APPENDIX C: Single Stage Solid Binary GA Input File.......................................95
APPENDIX D: Two Stage Solid Real GA Input File..............................................97
APPENDIX E: Two Stage Solid Binary GA Input File ..........................................99
APPENDIX F: Single Stage Liquid Real GA Input File.......................................101
APPENDIX G: Single Stage Liquid Binary GA Input File...................................102
ix
LIST OF TABLES
Table 1. General Form of the initial constants input file for the Missile Design Codes
..................................................................................................................................15
Table 2. Single Stage Solid GA Variable Definition...............................................17
Table 3. Two Stage Solid GA Variable Definition..................................................18
Table 4. Single Stage Liquid GA Variable Definition.............................................22
Table 5. Mutation Operator Fitness Comparison.....................................................27
Table 6. Population Testing Fitness Comparison.....................................................28
Table 7. Single Stage Solid Optimization Results...................................................35
Table 8. Single stage solid 100,000 ft 2,500 lb Final Design Variables..................36
Table 9. Single stage solid 350,000 ft 4,000 lb Final Design Variables..................40
Table 10. Single stage solid 2,500 lb 240 sec Final Design Variables ....................45
Table 11. Two Stage Solid Optimization Results....................................................50
Table 12. Two stage solid 100,000 ft 6,000 lb Final Design Variables...................51
Table 13. Two stage solid 250,000 ft 7,000 lb Final Design Variables...................57
Table 14. Single Stage Liquid Optimization Results...............................................63
Table 15. Single Stage Liquid 450,000 ft 55,000 lb Final Design Variables...........64
Table 16. Single Stage Liquid 700,000 ft 55,000 lb Final Design Variables...........69
Table 17. Two Goal Mutation Testing Results........................................................75
Table 18. One and Two goal GA Parameter Comparison........................................77
Table 19. Overall Final Fitness Comparison............................................................81
x
LIST OF FIGURES
Figure 1. Tournament Selection Mutation and Crossover Flow Chart......................6
Figure 2. Blend X Crossover.....................................................................................7
Figure 3. Single-Point Crossover..............................................................................7
Figure 4. Uniform Crossover .....................................................................................8
Figure 5. Real Coded Steady State GA Program Flow............................................10
Figure 6. Steady State Detailed Flow Chart.............................................................12
Figure 7. Missile System Design Code Program Flow............................................16
Figure 8. Solid Propellant Grain Cross-Section.......................................................20
Figure 9. Nose Design Schematic............................................................................20
Figure 10. Nozzle Design Schematic.......................................................................21
Figure 11. Tail Design Schematic............................................................................21
Figure 12. Liquid Missile Design Schematic...........................................................24
Figure 13. 1 Stage Solid Missile Crossover Testing 400,000 ft (Single) Goal........26
Figure 14. Single Stage Solid Missile Mutation Testing 400,000 ft Goal...............27
Figure 15. Single Stage Solid Missile Population Testing 400,000 ft Goal ............28
Figure 16. 1 Stage Solid Variable Mutation Convergence Plot...............................30
Figure 17. Single Stage Solid 700,000 ft Preliminary Test Convergence History ..32
Figure 18. Single Stage Solid 250,000 ft Preliminary Test Convergence History ..33
Figure 19. Single stage solid 100,000 ft 2,500 lb convergence ...............................37
Figure 20. Single Stage Solid Missile Body Diameter Convergence History.........38
Figure 21. Single Stage Solid 3D Model-Real GA..................................................39
Figure 22. Single Stage Solid 3D Model-Binary GA ..............................................39
Figure 23. Single stage solid 350,000 ft 4,000 lb convergence ...............................41
Figure 24. Single Stage Solid Missile Body Diameter Convergence History.........42
Figure 25. Single Stage Solid Missile Initial Launch Angle Convergence History.43
Figure 26. Single Stage Solid 3D Model-Real GA..................................................44
Figure 27. Single Stage Solid 3D Model-Binary GA ..............................................44
Figure 28. Single stage solid 2,500 lb 240sec convergence history.........................46
Figure 29. Single Stage Solid Missile Body Diameter Convergence History.........47
Figure 30. Single Stage Solid Missile Initial Launch Angle Convergence History.48
Figure 31. Single Stage Solid 3D Model-Real GA..................................................49
Figure 32. Single Stage Solid 3D Model-Binary GA ..............................................49
Figure 33. Two stage solid 100,000 ft 6,000 lb convergence history......................53
Figure 34. Two Stage Solid Missile Upper Body Diameter Convergence History.53
Figure 35. Two Stage Solid Missile Initial Launch Angle Convergence History....55
Figure 36. Two Stage Solid 3D Model-Real GA.....................................................56
Figure 37. Two Stage Solid 3D Model-Binary GA .................................................56
Figure 38. Two stage solid 250,000 ft 7,000 lb convergence history......................59
Figure 39. Two Stage Solid Missile Upper Stage Diameter Convergence History.60
xi
Figure 40. Two Stage Solid Missile Initial Launch Angle Convergence History....61
Figure 41. Two Stage Solid 3D Model-Real GA.....................................................62
Figure 42. Two Stage Solid 3D Model-Binary GA .................................................62
Figure 43. Single Stage Liquid 450,000 ft 55,000 lb Convergence Plot .................65
Figure 44. Single Stage Liquid Missile Body Diameter Convergence History.......66
Figure 45. Single Stage Liquid Missile Tail Leading Edge Angle Convergence History
..................................................................................................................................67
Figure 46. Single Stage Liquid 3D Model-Real GA................................................68
Figure 47. Single Stage Liquid 3D Model-Binary GA............................................68
Figure 48. Single Stage Liquid 700,000 ft 55,000 lb Convergence Plot .................70
Figure 49. Single Stage Liquid Missile Body Diameter Convergence History.......71
Figure 50. Single Stage Liquid Missile Burn Time Convergence History..............72
Figure 51. Single Stage Liquid 3D Model-Real GA................................................73
Figure 52. Single Stage Liquid 3D Model-Binary GA............................................73
Figure 53. Two Goal Crossover Convergence History............................................74
Figure 54. Two Goal Mutation Testing Convergence History ...............................75
Figure 55. Two Goal Population Test Convergence History..................................76
Figure 56. Two Stage Solid Match 100k ft 6k lb Re-Run........................................78
Figure 57. Two Stage Solid Match 250k ft 7k lb Re-Run........................................78
xii
NOMENCLATURE
? Mutation Rate
? Mutation Amount
Ae Nozzle Exit Area
A* Nozzle Throat Area
b2tail Tail Semi-Span
b2wing Wing Semi-Span
crtail Tail Root Chord
crwing Wing Root Chord
dbody Diameter of Body
dnose Nose Diameter
dstar Throat Diameter
eps Epsilon-Grain
f Propellant Grain Fillet Radius
GA Genetic Algorithm
lbody Length of Body
LE Leading Edge
lnose Length of Nose
N Number of Star Points-Grain
rbody Radius of Body
Ri Propellant Inner Grain Radius
rnose Radius of Nose
Rp Propellant Outer Grain Radius
TE Trailing Edge
TOF Time of Flight
xLEt X-Location of Tail Leading Edge
xLEw X-Location of Wing Leading Edge
1
1 INTRODUCTION
Optimization of aerospace engineering applications using GA?s such as spacecraft
controls1,2, turbines3, helicopter controls4, flight trajectories5, wings and airfoils6,7,
missiles8,9,12,11, rockets12,13,14, propellers15 and inlets16 have been preformed with great
success. In some cases, real coded genetic algorithm?s have been shown to produce better
results than binary coded GA?s17,18,19. This success is the primary motivation for the
current study involving aerospace applications.
The goal of engineering design optimization is to find an optimum solution to a
design problem. Optimization has evolved throughout the years from classical methods
to modern evolutionary algorithms and modern computers with their exceedingly fast
computational times have enabled optimizers to become extremely efficient at solving
very complex problems.
The first mathematical optimization methods were developed by Newton.
Newton formulated that by taking the first derivative of a function and setting it equal to
zero one could find the local maxima or minima of a piecewise continuous, finite
solution. Later Siddal20 showed that when using multiple functions to describe a system,
Newton?s method produces multiple non-linear equations that must be solved
simultaneously. Because of the complexity of solving a system of non-linear equations
other optimization methods were developed. The next major step in optimization came in
the 1800?s with the gradient methods. Gradient decent (or ascent) works on the method
of taking steps proportional to the negative (or positive for ascent) of the gradient of the
2
function. Steps continue until a local minimum has been reached. The main problem
with the gradient methods is they are very susceptible to converging to local minima or
maxima instead of converging to a global minima or maxima.
The next breakthrough in optimization came in the mid 1900?s from George B.
Dantzig with linear programming21. Linear programming works on the principle of
optimizing a linear objective function with a set of linear constraints. The optimization is
set up to either maximize or minimize the objective function. The simplex method
developed by Dantzig works in polyhedron space by constructing a solution on the vertex
of the polyhedron and then walking along the edges of the polyhedron until the optimal
solution is reached. The algorithm is quite efficient and in practice can be set up to only
converge to global optimums if the proper constraints are used. This method does not
work for complex multi-variable problems because the constraints and objective function
must be linear. Nonlinear programming addresses this issue.
Genetic algorithms in theory can overcome many of the issues that the early
optimization schemes encountered. All GA?s are based on the principles developed by
John Holland in his book ?Adaptation in Natural and Artificial Systems?22. Holland
outlined the methods for successfully implementing population based adaptive
optimizers. Holland?s methods operate on the principle of survival of the fittest. In a
computational sense, candidate solutions are assembled in a population and compared to
one another, the weak die off and the strong are left to reproduce and mutate to produce
better children.
The search for a more efficient optimizer for some of these aerospace applications
arose due to the extended run times associated with long range missiles when solved
3
using binary coded genetic algorithms, such as IMPROVE? (Implicit Multi-objective
PaRameter Optimization Via Evolution)23. The IMPROVE? software was shown to be a
very versatile and robust method for optimization. A primary disadvantage of the binary
coded GA comes from the fact that because all of the variables must be converted into a
single bit string, the solution accuracy is dependant on the number of bits that can be used
for the string.
Because of the large ranges associated with many on the genes the smallest
resolution was limited to 0.01 while the real coded GA is only limited to a double
precision number. The two stage solid system used in this study has 46 genes making up
each individual. Because of this large number of genes, the resolution of each gene is
limited in order to reduce the size of the bit string. This translates into a reduced level of
accuracy because each gene is limited to a specific number of significant digits because
of the nature of the binary GA. Resolution is not a significant issue with a real coded GA
because all of the variables remain real double precision variables. Dozier24,25,26
demonstrated the ability for a real coded GA to achieve shorter run times as well as more
accurate solutions for some applications. Another problem associated with the binary
GA is hamming cliffs. Hamming cliffs can also pose a problem for the binary GA
because all of the design parameters are converted into a single bit string. For example if
two integers 15, and 16 were represented by the bit strings 10000 and 01111 respectively
, the GA would have to change all of the bits simultaneously to change from 15 to 16.
Mutation and crossover do not always solve this problem. Hamming cliffs are not
possible with the real GA because the design variables remain real coded.
4
Another advantage of the real GA created for this study is that it uses steady
state optimization unlike the generational optimization used by the binary GA. The key
difference is that in the steady state GA for each generation only the worst performer is
thrown out and replaced by a new member, whereas for the generational GA all of the
members of the population are thrown out and replaced (expect in elitist mode when the
best member remains in the next generation) using a similar tournament routine. For the
steady state GA, once the survivors have had a chance to crossover (i.e. pass genetic
material back and forth through their variables), the new member replacing the worst
performer is run back through the objective function. This process continues, with the
parents producing on average better offspring, until the maximum number of generations
(user specified) is reached. There are proofs27,28 which show why this process produces
increasingly superior performers in a population, but a simplistic view is that a good
parent mated with another good parent, is more likely to produce good offspring than two
poor parents when mated. This is not to say that two good parents cannot produce poor
performers. Rather, when two good performers exchange genes, statistically the resulting
offspring have a higher chance of outperforming their parents.
5
2 REAL CODED GA METHODOLOGY
The real and binary GA?s used in this study both operated using the same
tournament style evolution of a population. They each work with a number of candidate
solutions to solve a particular problem. A data structure known as an individual is used
to represent each candidate solution. Each individual has a fitness and a chromosome.
Each chromosome is made up of genes, in this case the genes used are the GA variables
in the design variable input (GANNL.DAT) files associated with each code used. (see
Appendix B through G) A group of individuals makes up a population. In order to
create a new population, individuals called parents are selected based on their fitness and
allowed to create children using a tournament selection process. Details of the binary GA
operation can be found in references 20 and 27. For the real coded GA, parents are
chosen in groups of two and the parent with the better fitness survives to produce
children. This process is repeated to select a second parent. The tournament selection
process is shown in Figure 1. Both parents then use a crossover routine to mix their genes
in order to produce a child.
6
Figure 1. Tournament Selection Mutation and Crossover Flow Chart
2.1 CROSSOVER
Three different crossover routines were used for the real coded GA, Blend X,
Uniform and Singlepoint crossover. For Blend X29 crossover each design parameter of
the two parents selected is subtracted and then multiplied by a random number (between
0 and 1), and added to the smaller parent as shown below. Blend X crossover allows for
the most mutation of all the crossover routines. Blend X crossover creates children
unique from their parents, unlike uniform or single-point crossover, whose children are
the same values from either one parent or the other. It should be noted while Blend X
crossover does produce a unique child from the two parents, the child cannot be outside
the range of the values of the parents, and for this reason mutation is necessary.
For i = 1 to number of design parameters:
Two members of current
population chosen at
random. Member with
best fitness survives.
Two members of current
population chosen at
random. Member with
best fitness survives.
New member replaces
worst performer of
previous population.
Only the new member
is run in next
generation
Surviving two members
undergo crossover and
mutation to form new
offspring.
( ) ( ))(2)(1min#)(2)(1)( iParentiParentRandomiParentiParentabsiChild ?+??=
7
Figure 2. Blend X Crossover
Both Single-point and Uniform crossover swap design parameters between
parents. For Single-point crossover a random number is used to define a cut point where
in the first parents design parameters are used up to that cut point, and the second parents
design parameters are used after that cut point, as shown in Figure 3.
Figure 3. Single-Point Crossover
Uniform crossover works very similarly to single-point crossover except each
design parameter in the child is randomly chosen from either parent 1 or parent 2, this
allows a child to be made up of any combination of both parents design parameters as
shown in Figure 4.
Random number=2
Parent 1: 7.0 5.0 3.0
Parent 2: 6.0 3.5 3.9
Child: 7.0 5.0 3.9
Parameter: 1 2 3
Parent1: 10.0 5.0 1.0
Parent2: 8.0 4.0 0.0
Parameter: 1 2 3
Child: 8.71 4.63 1.89
Child(1) = (10-8) x Rnd# + 8
Child(2) = (5-4) x Rnd# + 4
Child(3) = (1-0) x Rnd# + 0
8
Figure 4. Uniform Crossover
2.2 MUTATION
After a child has been created it can be mutated using a Gaussian mutation
routine. Two main operators control the mutation, mutation amount and mutation rate.
Mutation rate, ? determines how many genes of each child will be mutated, this operator
is set between 0.0 and 1.0, with 1.0 mutating every gene within the child. The second
operator used in mutation is the mutation amount ?. The mutation amount determines
how much each gene will be mutated, this usually ranges from 0.5 (high mutation) to
0.005 (very low mutation). A Gaussian distributed random number is used with the
mutation amount in order to mutate the child as shown below.
For i = 1 to number of genes:
[ ] )(__*)min()max()( iChildnumberrandomgaussianixixiChild +??=?
Parent 1: 6.6 5.0 11.0 0.5
Parent 2: 5.0 4.4 9.9 0.1
Child: 6.6 4.4 9.9 0.5
9
Where xmax(i) and xmin(i) are the maximum and minimum values specified by
the user for each gene in the GA variable input file (GANNL.DAT). If any of the
mutated child?s design parameters are larger than the maximum or smaller than the
minimum value then that design parameter is set to the maximum or the minimum value.
It has been shown that mutating with a Gaussian distributed random number with a zero
mean and unit variance works well for optimizations 30.
After the parents design parameters have been crossed and mutated to produce a
new child or individual, that individual is evaluated and given a fitness. In order for the
new individual to become a member of the population, one member must die in order for
the new member to take its place. The member that dies off is the member in the
population with the worst fitness. This method of allowing individuals to create new
children while also killing off members with bad fitness? is known as natural selection31.
This process of creating new children and killing off members with bad fitness? continues
on until a set number of iterations have been satisfied. The entire program flow for the
real coded GA is shown in Figure 5.
10
Figure 5. Real Coded Steady State GA Program Flow
2.3 STEADY STATE GA
The real GA developed for this study operates in steady state as opposed to
generational as the binary GA. The main difference between steady state and
generational is the number of members after each generation that are evaluated by the
objective function. For a generational GA all of the members of a population, usually at
least 50, are evaluated by the objective function. Their fitnesses are then evaluated and
Objective
Function
Initial Population
Tournament to get
two good members
Crossover and
Mutation to
generate new
offspring
Replace worst
performer of
previous
generation with
new offspring
Check to see if
max number of
generations is
reached
If no, repeat
tournament?o
n previous
generation
If yes, Stop
Run Initial
Population Through
Objective Function
11
sorted and then a tournament scheme replaces each member of the population by
crossover and mutation, and all of the new members are evaluated by the objective
function, except for the best performer.
For a steady state GA after the initial population is evaluated by the objective
function, only one member is replaced by a tournament scheme using crossover and
mutation. That new member is evaluated by the objective function and then replaces the
previous generation?s worst performer. This can lead to quick and very accurate
convergence due to the fact that the member immediately becomes part of the mating
pool making a shift toward an optimal fitness possible early in the optimization31. A flow
chart showing the steady state process in detail is shown in Figure 6. The main drawback
to steady state is that it does not have the large number of random guesses that the
generational GA can obtain. Since each member that is created is composed of 2 good
members from the previous generation the steady state GA can quickly converge to a
good solution, however if none of the members of the initial population are good
members the steady state GA can only rely on mutation of the one member each
generation to find a good fitness. For this reason BlendX crossover was included to
enable more mutation for each new member.
12
Figure 6. Steady State Detailed Flow Chart
GA Generates
Initial Population
Member 2
Design Variables:
1.8 12.0 46.1
Member 1
Design Variables:
2.1 10.1 77.7
Objective Function
Evaluates the Entire
Population
Member 3
Fitness
1.2
Member 2
Fitness:
1.5
Member 1
Fitness
155.9
Tournament Selects
2 Groups of 2 to
Find Two Good
Parents
Dashed
Group:
Member 1 vs
Member 2
Member 2
Wins
Solid Group:
Member 2 vs
Member 3
Member 3
Wins
New Member is Created by Crossover
and Mutation of Members 2 and 3?s
Design Variables
Objective Function
Evaluates New
Member
Member 3
Fitness
1.2
Member 2
Fitness:
1.5
Old Member 1
Fitness
155.9
Removed From
Population
New Member 1
Fitness
1.1
Member 3
Design Variables:
1.5 11.9 86.5
13
2.4 VARIABLE MUTATION
Variable mutation is used to obtain quick convergence for a given function. The
mutation rate ? is allowed to vary throughout the GA?s run. The code is set up to keep
track of how many individuals were better than the previous population. After a
specified number of function evaluations, if the number of successful mutations is less
than 1/5th of the total number of mutations then the mutation rate is reduced by 20%,
similarly if more than 1/5th of the individuals are better then the mutation rate is increased
by 20%. This 1/5th rule was pioneered by Rechenberg32 and has been shown to provide
quick convergence. Initial testing of variable mutation demonstrated the ability of quick
convergence, however in many instances a local minimum was achieved.
14
3 MISSILE SYSTEM DESCRIPTIONS
Three different missile system design codes were used in this study to compare
the real and binary GA?s. The missile system design code17 creates and flies preliminary
design level models for missiles powered by one or two stage solid propellant rocket
propulsion or liquid rocket propulsion using a set of approximately 26-46 critical design
variables. The GA is used to optimize the missile to meet certain goals. Burhalter,
Jenkins, Hartfield, Anderson and Sanders have developed the programs used to design
the physical model of the missile that they described in their paper ?Missile Systems
Design Optimization Using Genetic Algorithms?12 . Further research has been conducted
on missile design optimization by Burhalter, Jenkins and Hartfield in their paper,
?Optimizing a Solid Rocket Motor Boosted Ramjet Powered Missile Using a Genetic
Algorithm?14. The missile design codes have been shown to be a very good tool for
preliminary design and have been extensively used as a design tool.
All three missile system design codes follow a similar program flow. In the main
program, the first task is to read in two input files that contain constants including
densities masses and moments of inertia. The block of information in these files is
divided into major sections as listed in Table 1. The number listed to the right is the
number of variables included in each of the major sections. Initially, the table must be
generated with known values for each of the variables.
15
Table 1. General Form of the initial constants input file for the Missile Design
Codes
1. densities 30
2. masses 30
3. center of gravity 27
4. moments of inertia 60
5. lengths and limits 30
6. external geometry 30
7. required computed data from aero 30
8. other dimensions 11
9. internal solid rocket grain variables 12
10. nozzle and throat variables 14
11. other computed stage variables 8
12. program lengths,limits and constants 10
13. initiation of launch data 14
14. target data 6
15. GA goals (outdata variables) 20
16. auxillary variables to be used as needed 10
17. list of GA variables passed to setup, etc. 29
18. Total missile variables 10
After the initial constants input files are read in, the GA input file is read in,
which contains the GA variables to be optimized. For each member of a population a new
missile is built using the data from the initial constants input file and the design
parameters that the GA generates using the GA input file. After the initial parameters are
stored, the program designs and flies the missile using a series of subroutines to
determine the propulsion, mass properties and aerodynamics. This missile is then flown
in the 6-DOF routine as shown in Figure 7.
16
Figure 7. Missile System Design Code Program Flow
Begin Code
SETUP
Mass
Properties
Propulsion Aerodynamics SIXDOF
Read GA
Input File GA
Main
If Max Generations has
been reached: STOP
Else: GA Generates
new design variables
Fuels
Read in initial constants
Genetic
Algorithm
17
The first system tested was the single stage solid missile design. The single stage
solid missile design uses 29 design variables in order to produce a physical model of the
system. An overview of the 29 design variables is shown in Table 2.
Table 2. Single Stage Solid GA Variable Definition
Geometry Propellant Auto Pilot
1.nose radius ratio =
rnose/rbody
3. fuel type
24. auto pilot on delay
time
2.nose length ratio =
Lnose/dbody
4. propellant out rad
rpvar=(rp+f)/rbody
25. auto pilot time
constant-tau, f.c.s. time
const
10. fractional nozzle length
ratio = f/rp
5.propellant inner radius
ratio=ri/rp
26. auto pilot damping
-zeta, f.c.s. damping
11. throat diameter /Dbody 6. number of star points 27. cross over freq -
wcr, f.c.s. crossover
freq
12. total length of
stage1/Dbody
7. fillet radius ratio=f/rp
28. pronav gain - n-
prime, guidance gain
13. dia of stage1 center
section dbody (in)
8. epsilon - star width
14.wing exposed semi-
span = b2w/dbody
9. star point angle
15. wing root chord =
crw/dbody
16. wing taper ratio =
ctw/crw
17. LE sweep angle deg
18. xLEw/lbody
19. tail exposed semi-span
= b2t/dbody
20. tail root chord =
crt/dbody
21. tail taper ratio = ctt/crw
22. LE sweep angle deg
23. xTEt/lbody
29. Initial Launch Angle
(deg)
18
These 29 GA variables in conjunction with the initial constants in the constants
input file are used to design and fly the missile through the 6-DOF. The performance is
then stored and used to compute the overall fitness depending on the goal chosen for the
optimization.
The second system tested was the two stage solid propellant missile design. The
two stage solid missile design operates in a similar fashion to the single stage solid code,
however it uses 46 design variables in order to produce a physical model of the system
instead of the 29 used in the single stage solid code. An overview of the 46 design
variables is shown in Table 3.
Table 3. Two Stage Solid GA Variable Definition
Geometry (Upper Stage) Propellant (Upper
Stage)
Auto Pilot (Upper
Stage)
1.nose radius ratio =
rnose/rbody
3. fuel type
36. auto pilot on delay
time
2.nose length ratio =
Lnose/dbody
4. propellant out rad
rpvar=(rp+f)/rbody
37. auto pilot time
constant-tau,
f.c.s. time const
10. fractional nozzle length
ratio = f/rp
5.propellant inner radius
ratio=ri/rp
38. auto pilot damping -
zeta,
f.c.s. damping
11. throat diameter /Dbody 6. number of star points 39. cross over freq - wcr,
f.c.s. crossover freq
12. total length of
stage1/Dbody
7. fillet radius ratio=f/rp
40. pronav gain - n-
prime,guidance gain
13. dia of stage1 center
section dbody (in)
8. epsilon - star width
14.wing exposed semi-span =
b2w/dbody
9. star point angle
15. wing root chord =
crw/dbody
16. wing taper ratio =
ctw/crw
17. LE sweep angle deg
18. xLEw/lbody
Geometry (Bottom Stage) Propellant (Bottom Auto Pilot (Bottom
19
Stage) Stage)
26. fractional nozzle length
ratio = f/rp
19. fuel type
41. auto pilot on delay
time
27. throat diameter /Dbody 20. propellant out rad
rpvar=(rp+f)/rbody
42. auto pilot time
constant-tau,
f.c.s. time const
28. total length of
stage1/Dbody
21.propellant inner
radius ratio=ri/rp
43. auto pilot damping -
zeta, f.c.s. damping
29. dia of stage1 center
section dbody (in)
22. number of star points 44. cross over freq - wcr,
f.c.s. crossover freq
30.wing exposed semi-span =
b2w/dbody
23. fillet radius ratio=f/rp
45. pronav gain - n-
prime, guidance gain
31. wing root chord =
crw/dbody
24. epsilon - star width
32. wing taper ratio =
ctw/crw
25. star point angle
33. LE sweep angle deg
34. xLEw/lbody
35. Upper Stage Separation
Time
46. Initial Launch Angle
(deg)
The second column in Table 2 and Table 3 is used to generate the solid propellant
grain. An example of the cross-section of a solid propellant grain is shown in Figure 8.
The third column for all three missile design codes is used for autopilot controls. For the
tests used in this study the autopilot was not activated leaving only ballistic trajectory
missiles.
20
Figure 8. Solid Propellant Grain Cross-Section33
The geometry (1st column in Table 2 and Table 3) is used to physically design the
exterior of the missile including the nose, nozzle, tails and body as shown in Figure 9,
Figure 10, and Figure 11.
Figure 9. Nose Design Schematic33
21
Figure 10. Nozzle Design Schematic33
Figure 11. Tail Design Schematic33
The third missile design code tested was the liquid propulsion missile design
code. The liquid code follows a slightly different program flow than the two solid codes.
The basic performance of the liquid code is based on the assumption that combustion
takes place under constant pressure and constant temperature. The initial constants input
file is set up similarly to the solid input files, however the GA variables input file is
comprised of a different set of 26 design parameters. An overview of the 26 design
variables is shown in Table 4. For the liquid system it is assumed to have a single stage
22
comprised of a single engine, where the fuel and oxidizer tanks are modeled to be
cylindrical tanks with hemispherical endcaps.
Table 4. Single Stage Liquid GA Variable Definition
Geometry Propellant Auto Pilot
1. body diameter 2. propellant type 21. auto pilot on delay
time
5. nose dia ratio =dnose/DB 3. oxidizer to fuel ratio 22. auto pilot time
constant-tau, f.c.s. time
const
6. length of nose ratio =
blnose/dnose
4. chamber pressure 23. auto pilot damping
-zeta, f.c.s. damping
7. nozzle throat dia
ratio=dstar/dbody
24. cross over freq -
wcr, f.c.s. crossover
freq
8. nozzle expansion
ratio=Ae/A*
25. pronav gain - n-
prime, guidance gain
9. fractional nozzle length
11. wing root chord ratio =
crwing/DB
12. wing taper ratio
13. wing b/2 ratio =
b2wing/DB
14. wing le angle
15. wing X loc =
xLEwing/totlen
16. tail root chord ratio =
crtail/DB
17. tail taper ratio
18. tail b/2 ratio = b2tail/DB
19. tail le angle deg
20. tail X loc = xTEtail/totlen
10. burn time
26. Initial Launch Angle (deg)
23
The geometry for the liquid system is used to generate the physical model of the
missile in the same way that it was developed for the two solid systems as shown in
Figure 12. The main difference between the solid systems and the liquid systems is the
propellant. For the liquid system, the code generated models the tanks used to store the
fuel and oxidizer. The second column in Table 4 is used to determine the fuel-oxidizer
combination as well as the initial chamber pressure. These inputs along with the
geometric inputs are used to design the liquid propellant missile.
24
Figure 12. Liquid Missile Design Schematic33
25
4 REAL GA CONVERGENCE TESTING
The binary GA IMPROVE? used in this study has been used for many years and
has proven to be very robust. Because the binary GA has been proven to be successful
with its current GA parameters, no testing was done in order to optimize the binary GA
parameters, for this study they remained constant. These parameters can be seen in
Appendix B-G. In order to compare the binary and the real GA?s, the parameters for the
real GA needed to be tested. The parameters tested were the type of crossover (blendx,
single-point and uniform), mutation rate, mutation amount and population size.
Changing any one of these parameters can cause the GA to converge faster or slower to a
solution. For these tests the single stage solid missile system design code was used to
match a range of 400,000 ft.
The first parameter tested was crossover. Each type of crossover was tested using
the single stage solid code and run out to 10,000 function evaluations to determine which
type would achieve the best fitness. All three types of crossovers performed well in this
test, with the BlendX converging more rapidly to the best fitness. This coupled with the
fact that the binary GA had single-point crossover and uniform crossover made BlendX
the crossover type chosen for this study. The fitness for each test was calculated as
follows:
geDesiredRan
geDesiredRanRangeabsFitness )( ?=
26
Figure 13. 1 Stage Solid Missile Crossover Testing 400,000 ft (Single) Goal
The next parameters studied were the mutation operators. Both mutation rate and
mutation amount were tested in an attempt to find a trade off between quick convergence
and not converging to a local minimum. Four different sets of mutation operators were
tested using the single stage solid missile system design code matching a range of
400,000 ft. All GA parameters were held constant except the mutation rate and mutation
amount. Table 5 shows the different sets of mutation operators and their converged
fitness.
Crossover Testing
0.0000001
0.000001
0.00001
0.0001
0.001
0.01
0.1
1
0 2000 4000 6000 8000 10000
Function Evaluations
Fi
tn
es
s
Single-Point BlendX Uniform
27
Table 5. Mutation Operator Fitness Comparison
Mutation Testing
Mutation Operators Mutation Rate
Mutation
Amount Fitness
Test_1 1.00 0.05 3.98E-06
Test_2 0.20 0.10 6.54E-09
Test_3 0.05 1.00 8.03E-12
Test_4 0.50 0.05 4.26E-06
Of the cases explored, the best converged fitness was achieved using a mutation
rate of 0.05 and a mutation amount of 1.00. This means that the best convergence was
obtained by only mutating 5% of the genes in each individual, but those 5% were mutated
the most amount possible. Figure 14 shows the convergence data for each of the four
cases tested.
Figure 14. Single Stage Solid Missile Mutation Testing 400,000 ft Goal
Mutation Test Convergence Data
1.00E-12
1.00E-11
1.00E-10
1.00E-09
1.00E-08
1.00E-07
1.00E-06
1.00E-05
1.00E-04
1.00E-03
1.00E-02
1.00E-01
1.00E+00
0 2000 4000 6000 8000 10000
Function Evaluations
Fit
ne
ss
Test_1 Test_2 Test_3 Test_4
28
The last parameter studied was the population size. This parameter is able to
change the amount of selection pressure on good members of the population. The fewer
the number of members in a population the higher probability that two good members
could be chosen for the tournament. This allows for quicker convergence, yet again at
the cost of potential premature convergence on a local minimum.
Table 6. Population Testing Fitness Comparison
Population Testing Population Size Fitness
Test_1 3 8.03E-12
Test_2 5 3.79E-06
Test_3 7 6.52E-11
Test_4 10 2.40E-06
Test_5 30 6.56E-11
Figure 15. Single Stage Solid Missile Population Testing 400,000 ft Goal
Table 6 shows the results for the population testing. Of the five tests completed
Test_1 having a population size of 3 was able to achieve the best fitness. Population
sizes of 30 and 7 were also able to achieve surprisingly low fitness. Figure 15 shows the
Population Size Convergence Testing
1E-12
1E-10
1E-08
1E-06
0.0001
0.01
1
0 2000 4000 6000 8000 10000
Function Evaluations
Fi
tn
es
s
Pop Size = 3 Pop Size = 5 Pop Size = 7 Pop Size = 10 Pop Size = 30
29
convergence data for the 5 population tests conducted. A population size of three is the
clear winner having a converge fitness of 8.03x10-12 in just 10,000 function evaluations.
The results of the GA convergence testing have shown that using a BlendX
crossover with a mutation rate of 0.05, mutation amount of 1.0 and a population of 3
yielded the best results for a single stage solid missile design system with a single
400,000 ft match range goal. Therefore for the binary versus real GA comparisons these
parameters will be used for all cases. Changing each parameter for each different GA run
could certainly yield better results, however in and effort to compare for this comparison
one set of parameters was chosen for each GA and held constant for each test.
Variable mutation was also tested to demonstrate its ability for quick
convergence. Figure 16 shows the convergence history for a single stage solid with a
goal of matching a 400,000 ft range. The fitness (miss distance) is plotted versus the
number of function evaluations. For this test after every 40 function evaluations the
number of better individuals was checked and the mutation rate was adjusted. The
constant mutation rate real-coded GA was able to converge to a very good fitness of
9.85x10-5 in just 10,000 function evaluations. This corresponded to a range of
400,003.94 ft, with a miss distance of 3.94 ft. Keep in mind that this is a numerical result
and is not intended to represent the accuracy of the physical model. For this test the
fitness was determined using the equation shown below:
With variable mutation turned on the GA was able to converge to a fitness of 10-8
in under 2,000 function evaluations. The variable mutation allowed the GA to converge
geDesiredRan
geDesiredRanRangeabsFitness )( ?=
30
to a better solution in 80% less function evaluations compared to the constant mutation
rate real-coded GA. After 10,000 function evaluations the variable mutation GA was
able to converge to a fitness of 1.31x10-15, corresponding to a miss distance of 5.24x10-11
ft.
Figure 16. 1 Stage Solid Variable Mutation Convergence Plot
The variable mutation GA was able to obtain its final fitness after 4,000 function
evaluation, 50% less than the regular real coded GA. Variable mutation gives the real
coded GA the possibility to converge to a very accurate solution very rapidly however it
also has the tendency to get stuck on a local minimum and converge to a non-optimum
solution. For this reason variable mutation was not used for the binary versus real GA
comparison tests.
1 Stage Solid Variable Mutation
1E-15
1E-13
1E-11
1E-09
1E-07
1E-05
0.001
0.1
10
0 2000 4000 6000 8000 10000 12000
Function Evaluations
Fi
tn
es
s
1 STG Solid Vary Mutation 1 STG Solid NO Vary Mutation
31
5 MISSILE SYSTEM DESIGNS GA COMPARISONS
Comparisons of the real and binary GA were conducted using all three missile system
design codes outlined in Chapter 3. Initially both GA?s were setup to optimize a single
goal, match a range. These tests are shown below in Chapter 5 Section 1. It was later
determined that a more robust comparison would be two optimize two goals for each GA,
match a range and match a weight, or any two goal combination that would drive each
GA to a similar global optimum. Optimizing two goals for the missile system design
codes drives the GA?s to a particular solution because it limits the possibilities for good
missiles. For the match range goal, there are a wide variety of missiles that can match the
range, however if a match range and match weight goals are both in effect the number of
possible solutions is limited.
5.1 SINGLE STAGE SOLID MISSILE SYSTEM DESIGN
For both the real and binary GA?s, each variable is given a maximum allowable
value, and a minimum allowable value. For the binary GA, each variable is also given a
resolution, this resolution is limited by the number of bits as described in Chapter 1.
The initial excitement for the real coded GA came from preliminary comparisons
of the real and binary GA?s for single stage solid propellant missile design using a single
goal, match range. The first two tests conducted demonstrated the real GA?s potential for
quick and accurate convergence when compared to the binary GA. The convergence
plots for both tests are shown in Figure 17 and Figure 18.
32
Figure 17. Single Stage Solid 700,000 ft Preliminary Test Convergence History
The first preliminary test was to design a single stage solid missile that could hit a target
700,000 ft down range. The fitness is calculated as follows:
Single Stage Solid Match 700,000 ft Convergence
Data
1.00E-14
1.00E-12
1.00E-10
1.00E-08
1.00E-06
1.00E-04
1.00E-02
1.00E+00
0 2000 4000 6000 8000 10000
Function Evaluations
Fi
tn
es
s
Binary GA Real GA
10
)( geDesiredRanRangeabsFitness ?=
33
The real-coded GA was able to achieve a better fitness than the binary GA in just
over 2,000 function evaluations, and when let run to the full 10,000 function evaluations
was able to converge to a solution 6 orders of magnitude more accurate. It should be
noted that for this problem a miss distance of a foot or less is practically considered to be
a hit. Therefore the increased precision is for academic purposes only.
Figure 18. Single Stage Solid 250,000 ft Preliminary Test Convergence History
The second preliminary test was to design a single stage solid missile that could
hit a target 250,000 ft down range. The fitness is calculated as follows:
The real GA was able to achieve a better fitness than the binary GA in just over
300 function evaluations, and when let run to the full 10,000 function evaluations was
able to converge to a solution 2 orders of magnitude more accurate. The success of both
Single Stage Solid Match 250,000 ft Convergence History
1E-10
1E-09
1E-08
1E-07
1E-06
1E-05
0.0001
0.001
0.01
0.1
1
0 2000 4000 6000 8000 10000
Function Evaluations
Fi
tn
es
s
Real GA Binary GA
10
)( geDesiredRanRangeabsFitness ?=
34
preliminary tests lead to more detailed and complex goals to better compare the two
GA?s.
Three more complex cases were tested in order to compare the binary and real
coded GA?s: match range 100,000 ft while also matching a 2,500 lb take-off weight,
match range 350,000 ft while also matching a 4,000 lb take-off weight, and match a
2,500lb take-off weight with a 240 second time of flight. By adding a second goal to each
test both GA?s would be forced to a global solution in order to minimize each goal. Both
missile design codes were identical with the exception of the GA?s. The GA input file
(GANNL.DAT) can be seen in Appendix B for the real coded GA and Appendix C for
the binary coded GA. Fitness? for the single stage solid system were calculated using the
following equations. The real and binary GA?s both summed up the fitnesses for multiple
goals, therefore the optimization only consisted of a single number to minimize as shown
in the equations below.
A summary of the single stage solid optimization results is shown in Table 7. For
the single stage solid propellant missile design code the binary coded GA was able to
converge to better solutions more rapidly than the real GA for all three cases tested. For
two of the three cases tested both the real and binary GA?s converged to very similar
results.
10
)(
10
)( sDesiredMasMassabsgeDesiredRanRangeabsFitness ?+?=
10
)(
10
)( DesiredTOFTOFabsghtDesiredWeiWeightabsFitness ?+?=
35
Table 7. Single Stage Solid Optimization Results
GA Fitness Comparison Real GA Binary GA F.E.
1 Stg Solid
Match 100kft 2500lb weight 50.61 46.69 10,000
Match 350kft 4000lb weight 48.67 3.98 10,000
Match 2500 lbs 240 sec 16.65 16.61 10,000
5.1.1 SINGLE STAGE SOLID 100,000 FT 2,500 LB GOAL
For the first test the binary coded genetic algorithm was able to produce a missile
that could hit a target 100,000.53 ft down range with a 2,969.91 lb initial take-off weight
using 10,000 function evaluations with a converged solution having a fitness of 46.69.
36
Table 8. Single stage solid 100,000 ft 2,500 lb Final Design Variables
Real GA Binary GA Design Variable Definition
0.4667 0.4732 1 rnose/rbody
2.7097 2.1902 2 lnose/dbody
2.6000 3.6958 3 (1)fuel type
0.5857 0.5955 4 (1)star out R
0.7067 0.5538 5 (1)star inner ratio
6.6000 10.2099 6 (1)number of star points
0.0627 0.0665 7 (1)fillet radius ratio
0.6111 0.6622 8 (1)eps
5.0000 4.7193 9 (1)star point angle deg
0.7386 0.8935 10 (1)fractional nozzle length
0.2825 0.2996 11 (1)Dia throat/Dbody
12.0000 12.1720 12 (1)Fineness Ratio
1.3410 1.3245 13 (1)dia stage 1 ft
0.0386 0.0495 14 (1)wing semispan / dbody
0.0271 0.0114 15 (1)wing root chord/dbody
0.9900 0.9708 16 (1)taper ratio
25.8571 15.8560 17 (1)wing LE sweep angle deg
0.2000 0.2105 18 (1)xLEw/lbody
1.3333 1.3965 19 (1)tail semispan/dbody
0.9000 1.0415 20 (1)tail root chord/dbody
0.9591 0.8318 21 (1)tail taper ratio
29.0794 12.8401 22 (1)LE sweep angle deg
0.9500 0.9642 23 (1)xTEt/lbody
4000.0000 4000.1293 24 (1)autopilot delay time sec
0.4000 0.7345 25 (1)auto pilot time constant sec
0.7622 0.4595 26 (1)auto pilot damping
54.2857 64.1508 27 (1)crossover freq hz
4.1613 3.1442 28 (1)pronav gain
62.1429 56.4049 29 initial launch angle deg
This corresponded to a miss distance of 0.53 ft and a miss weight of 469.91 lb.
Given the same inputs the real coded GA was able to achieve a fitness of 50.61 after
10,000 function evaluations. This corresponded to a miss distance of 0.00 ft and a miss
weight of 506.10 lb. Table 8 lists all of the final design parameters chosen by both GA?s.
Both GA?s converged to different propellant types and grain geometry as shown in
design variables 3-9. The only other major differences in the converged design
parameters were tail geometries shown in variables 19-23. The body diameter converged
to very similar values for both GA?s, and can be seen in variable 13.
37
Figure 19. Single stage solid 100,000 ft 2,500 lb convergence
Even though there are major design differences between the two missiles, both
were able to meet their goals with similar fitness?s. A comparison of the performance of
the two GA?s is shown in Figure 19. The binary coded GA was able to produce a more
accurate converged solution quicker than its real counterpart.
Single Stage Solid 100k ft Range 2.5k lb
Convergence Data
1.00E+01
1.00E+02
1.00E+03
1.00E+04
0 2000 4000 6000 8000 10000
Function Evaluations
Fi
tn
es
s
Binary GA Real GA
38
Figure 20. Single Stage Solid Missile Body Diameter Convergence History
Figure 20 shows how both GA?s changed the missile body diameter as they
converged to their final solution. The binary GA started out with a small missile body
diameter for its initial guess, this contributed to its quicker convergence compared to the
real coded GA. The real GA?s initial guess for body diameter was much larger than the
binary GA?s initial guess. It should be noted that the overall convergence of the real GA
closely follows the minimizing of the missile body diameter. The initial body diameter
for the real GA was 1.94 ft, while the binary GA?s initial diameter was 1.34 ft. After
10,000 function evaluations the real GA converged to a body diameter of 1.32 ft, while
the binary GA?s diameter remained at 1.34 ft. Three dimensional models of the single
stage solid designed by the real and binary coded GA?s are shown in Figure 21 and
Figure 22.
Missile Body Diameter Convergence History
0.00E+00
5.00E-01
1.00E+00
1.50E+00
2.00E+00
2.50E+00
0 2000 4000 6000 8000 10000
Function Evaluations
Mi
ss
ile
B
od
y D
iam
et
er
(f
t)
1.00E+00
1.00E+01
1.00E+02
1.00E+03
1.00E+04
1.00E+05
Fit
ne
ss
Real GA Binary GA Real GA Fitness Binary GA Fitnes
39
Figure 21. Single Stage Solid 3D Model-Real GA
Figure 22. Single Stage Solid 3D Model-Binary GA
5.1.2 SINGLE STAGE SOLID 350,000 FT 4,000 LB GOAL
For the second test the binary coded genetic algorithm was able to produce a
missile that could hit a target 350,000.05 ft down range with a 4,039.75 lb initial take-off
weight using 10,000 function evaluations with a converged solution having a fitness of
3.982. This corresponded to a miss distance of 0.05 ft and a miss weight of 39.75 lb.
Given the same inputs the real coded GA was able to achieve a fitness of 48.67 after
10,000 function evaluations. This corresponded to a miss distance of 0.00 ft and a miss
weight of 485.6 lb. Table 9 shows the final design variables chosen by both GA?s.
40
Table 9. Single stage solid 350,000 ft 4,000 lb Final Design Variables
Real GA Binary GA Design Variable Definition
0.5550 0.4000 1 rnose/rbody
2.1030 1.8387 2 lnose/dbody
7.6170 2.0667 3 (1)fuel type
0.5464 0.4429 4 (1)star out R
0.8000 0.5667 5 (1)star inner ratio
7.6293 10.2000 6 (1)number of star points
0.0751 0.0907 7 (1)fillet radius ratio
0.6707 0.7833 8 (1)eps
3.8307 3.2857 9 (1)star point angle deg
0.8320 0.7543 10 (1)fractional nozzle length
0.2803 0.2619 11 (1)Dia throat/Dbody
12.6541 14.3333 12 (1)Fineness Ratio
1.7177 1.4312 13 (1)dia stage 1 ft
0.0204 0.0386 14 (1)wing semispan / dbody
0.0332 0.0157 15 (1)wing root chord/dbody
0.9230 0.9360 16 (1)taper ratio
5.4306 23.0952 17 (1)wing LE sweep angle deg
0.2000 0.2000 18 (1)xLEw/lbody
1.3111 1.2000 19 (1)tail semispan/dbody
1.0726 0.9000 20 (1)tail root chord/dbody
0.7168 0.6620 21 (1)tail taper ratio
23.5479 1.9206 22 (1)LE sweep angle deg
0.9754 1.0000 23 (1)xTEt/lbody
3999.6107 4000.0000 24 (1)autopilot delay time sec
0.5869 0.4000 25 (1)auto pilot time constant sec
0.8690 0.7819 26 (1)auto pilot damping
47.5653 48.0952 27 (1)crossover freq hz
3.3209 4.0323 28 (1)pronav gain
74.2459 44.2857 29 initial launch angle deg
For this case almost all of the final converged design variables differed for both
GA?s. The propellant type and grain geometry converged to different values as shown in
variables 3-9. The wing and tail geometries, variables 14-23, also converged to different
values. The initial launch angle, variable 29 and the body diameter, variable 13 also
converged to very different values. These parameters played a very important role in the
convergence of this missile system, as will be shown in later sections. A comparison of
the performance of the two GA?s is shown in Figure 23.
41
Single Stage Solid 350k ft Range 4k lb
Convergence Data
1.00E+00
1.00E+01
1.00E+02
1.00E+03
1.00E+04
0 2000 4000 6000 8000 10000
Function Evaluations
Fi
tn
es
s
Binary GA Real GA
Figure 23. Single stage solid 350,000 ft 4,000 lb convergence
42
Figure 24. Single Stage Solid Missile Body Diameter Convergence History
Figure 24 shows the how both GA?s changed the missile body diameter as they
converged to their final solution. The binary GA was able to quickly converge to a small
missile body diameter, this contributed to its quicker convergence compared to the real
coded GA. The real GA?s initial guess for body diameter was much larger than the
binary GA?s initial guess. The initial body diameter for the real GA was 1.95 ft, while
the binary GA?s initial diameter was 1.43 ft. After 10,000 function evaluations the real
GA converged to a body diameter of 1.72 ft, while the binary GA?s diameter remained at
1.43 ft.
It should be noted that the overall convergence of the real GA closely follows the
minimizing of the missile body diameter, while the binary GA?s overall convergence
does not. Figure 25 shows the convergence of another GA design variable, initial launch
angle. Figure 25 shows that the convergence of this design variable contributed more for
Missile Body Diameter Convergence History
0.00E+00
5.00E-01
1.00E+00
1.50E+00
2.00E+00
2.50E+00
0 2000 4000 6000 8000 10000
Function Evaluations
Mi
ss
ile
B
od
y D
iam
et
er
(f
t)
1.00E+00
1.00E+01
1.00E+02
1.00E+03
1.00E+04
1.00E+05
Fit
ne
ss
Real GA Binary GA Real GA Fitness Binary GA Fitness
43
the overall convergence of the binary GA. Three dimensional models of the single stage
solid designed by the real and binary coded GA?s are shown in Figure 26 and Figure 27.
Figure 25. Single Stage Solid Missile Initial Launch Angle Convergence History
Initial Launch Angle Convergence History
0.00E+00
1.00E+01
2.00E+01
3.00E+01
4.00E+01
5.00E+01
6.00E+01
7.00E+01
8.00E+01
9.00E+01
0 2000 4000 6000 8000 10000
Function Evaluations
Ini
tia
l L
au
nc
h A
ng
le
(d
eg
)
1.00E+00
1.00E+01
1.00E+02
1.00E+03
1.00E+04
1.00E+05
Fit
ne
ss
Real GA Binary GA Real GA Fitness Binary GA Fitness
44
Figure 26. Single Stage Solid 3D Model-Real GA
Figure 27. Single Stage Solid 3D Model-Binary GA
45
5.1.3 SINGLE STAGE SOLID 2,500 LB 240 SEC TOF GOAL
For the third test the binary coded genetic algorithm was able to produce a missile
with a 2,500.00 lb initial take-off weight and a 406.05 second flight time using 10,000
function evaluations with a converged solution having a fitness of 16.61. This
corresponded to a miss weight of 0.00 lb and miss time of 166.05 seconds.
Table 10. Single stage solid 2,500 lb 240 sec Final Design Variables
Given the same inputs the real coded GA was able to achieve a fitness of 16.65
after 10,000 function evaluations. This corresponded to a miss weight of 0.00 lb and a
Real GA Binary GA Design Variable Definition
0.4000 0.4000 1 rnose/rbody
1.7483 2.4194 2 lnose/dbody
2.9399 2.0667 3 (1)fuel type
0.6144 0.5143 4 (1)star out R
0.7426 0.6600 5 (1)star inner ratio
10.1264 5.0000 6 (1)number of star points
0.0300 0.0533 7 (1)fillet radius ratio
0.6000 0.6000 8 (1)eps
4.8342 1.0000 9 (1)star point angle deg
0.7293 0.7124 10 (1)fractional nozzle length
0.2500 0.2683 11 (1)Dia throat/Dbody
12.0881 14.0000 12 (1)Fineness Ratio
1.0447 0.9579 13 (1)dia stage 1 ft
0.0401 0.0100 14 (1)wing semispan / dbody
0.0234 0.0329 15 (1)wing root chord/dbody
0.9852 0.9720 16 (1)taper ratio
10.5898 18.0317 17 (1)wing LE sweep angle deg
0.2010 0.2071 18 (1)xLEw/lbody
1.3036 1.3333 19 (1)tail semispan/dbody
0.9641 0.9667 20 (1)tail root chord/dbody
0.7347 0.5077 21 (1)tail taper ratio
30.0000 29.0794 22 (1)LE sweep angle deg
0.9562 0.9857 23 (1)xTEt/lbody
3999.8384 3999.0000 24 (1)autopilot delay time sec
0.5699 0.6286 25 (1)auto pilot time constant sec
0.7403 0.4945 26 (1)auto pilot damping
40.0000 51.4286 27 (1)crossover freq hz
3.0626 3.3226 28 (1)pronav gain
85.0000 85.0000 29 initial launch angle deg
46
miss time of 166.49 seconds. Table 10 shows the final converged design variables for
each GA. Both the real and binary GA?s produced similar missiles for this test. When
analyzing Table 11 the only real difference between the two missiles is the fineness ratio,
variable 12, which is defined as the length of the missile divided by the diameter of the
body. The binary GA converged to a larger fineness ratio of 14 while the real GA
converged to a value of just above 12. This effectively made the binary GA longer as
shown in Figure 28. A comparison of the performance of the two GA?s is shown in
Figure 28. The binary coded GA was able to produce a slightly more accurate converged
solution quicker than its real counterpart.
Figure 28. Single stage solid 2,500 lb 240sec convergence history
Single Stage Solid 2500lb 240s Flight Time
Convergence Data
1.00E+01
1.00E+02
0 2000 4000 6000 8000 10000
Function Evaluations
Fi
tn
es
s
Binary GA Real GA
47
Figure 29. Single Stage Solid Missile Body Diameter Convergence History
Figure 29 shows the how both GA?s changed the missile body diameter as they
converged to their final solution. Body diameter did not contribute as much to the overall
fitness for the binary GA as it did for the real GA. The binary GA?s diameter started off
at a small value and remained there throughout the GA run. The diameter did however
change dramatically for the real GA. The initial drop in the fitness of the real GA was
largely contributed by the initial decrease in body diameter from 1.93 ft to 1.18 ft in the
first 100 function evaluations. Since the second goal for this test was match a flight time,
it is not surprising that the initial launch angle played a major role in the overall fitness of
both GA?s. A plot of the initial launch angle vs. function evaluations can be seen in
Figure 30.
.
Missile Body Diameter Convergence History
0.00E+00
5.00E-01
1.00E+00
1.50E+00
2.00E+00
2.50E+00
0 2000 4000 6000 8000 10000
Function Evaluations
Mi
ss
ile
B
od
y D
iam
et
er
(f
t)
0.00E+00
1.00E+01
2.00E+01
3.00E+01
4.00E+01
5.00E+01
6.00E+01
7.00E+01
8.00E+01
9.00E+01
1.00E+02
Fit
ne
ss
Real GA Binary GA Real GA Fitness Binary GA Fitness
48
Figure 30. Single Stage Solid Missile Initial Launch Angle Convergence History
Figure 30 shows that the convergence of the initial launch angle contributed to the
overall convergence of both GA?s. The real and binary GA?s both started with relatively
low initial launch angles and quickly increased the angle to increase the time of flight
while maintaining a low take-off weight. Three dimensional models of the single stage
solid designed by the real and binary coded GA?s are shown in Figure 31 and Figure 32.
Initial Launch Angle Convergence History
0.00E+00
1.00E+01
2.00E+01
3.00E+01
4.00E+01
5.00E+01
6.00E+01
7.00E+01
8.00E+01
9.00E+01
0 2000 4000 6000 8000 10000
Function Evaluations
In
iti
al
La
un
ch
A
ng
le
(d
eg
)
0.00E+00
5.00E+00
1.00E+01
1.50E+01
2.00E+01
2.50E+01
3.00E+01
3.50E+01
4.00E+01
4.50E+01
5.00E+01
Fi
tn
es
s
Real GA Binary GA Binary GA Fitness Real GA Fitness
49
Figure 31. Single Stage Solid 3D Model-Real GA
Figure 32. Single Stage Solid 3D Model-Binary GA
50
5.2 TWO STAGE SOLID MISSILE SYSTEM DESIGN
Two cases were tested in order to compare the binary and real coded GA?s for the
two stage solid propellant missile system: match range 100,000 ft with a 6,000 lb initial
take-off weight and match range 250,000 ft with a 7,000 lb initial take-off weight. Both
missile design codes were identical with the exception of the GA?s. The GA input file
(GANNL.DAT) can be seen in Appendix D for the real coded GA and Appendix E for
the binary coded GA. The fitness? for the two stage system were calculated as shown
below.
A summary of the 2 stage solid optimization results is shown in Table 11. For the two
stage solid propellant missile design code the real coded GA was able to converge to a
better solution more rapidly for one case, while the binary GA was able to converge to a
better solution for the other case tested.
Table 11. Two Stage Solid Optimization Results
GA Fitness Comparison Real GA Binary GA F.E.
2 Stg Solid
match 100k ft 6000lbm weight 408.6 414.1 10,000
match 250k ft 7000lbm weight 5148 314.1 10,000
0.10
)( geDesiredRanRangeabsFitness ?=
0.10
)( ghtDesiredWeiWeightabsFitness ?=
51
5.2.1 TWO STAGE SOLID 100,000 FT 6,000 LB GOAL
For the first test the binary coded genetic algorithm was able to produce a missile
that could hit a target 101,387.69 ft down range with a 8,758.00 lb initial take-off weight
using 10,000 function evaluations with a converged solution having a fitness of 414.1.
This corresponded to a miss distance of 1,387.69 ft and a miss weight of 2,758.00 lb.
Given the same inputs the real coded GA was able to achieve a fitness of 408.6 after
10,000 function evaluations. This corresponded to a miss distance of 1,427.14 ft and a
miss weight of 2,658.80 lb. Table 12 shows the final design variables that both the real
and binary GA?s converged to.
Table 12. Two stage solid 100,000 ft 6,000 lb Final Design Variables
Real GA Binary GA Design Variable Definition
0.4000 0.5333 1 nose radius ratio
3.0000 2.1774 2 nose length ratio
6.0916 6.1000 3 (1)fuel type
0.5000 0.5000 4 (1)propellant outer radius ratio
0.5022 0.5000 5 (1)propellant inner radius ratio
9.0000 9.1000 6 (1)number of star points
0.0896 0.0957 7 (1)fillet radius ratio
0.8000 0.9000 8 (1)epsilon
10.0000 11.1063 9 (1)star point angle
0.9369 0.9313 10 (1)fractional nozzle length ratio
0.2800 0.2933 11 (1)throat diameter/dbody
11.9668 10.1000 12 (1)total length of stg 1 in
1.5359 1.8331 13 (1)dia of stg 1 center body ft
1.2000 1.2000 14 (1)exposed semi span/dbody1
0.9000 0.9000 15 (1)root chord/dbody1
0.9600 0.9814 16 (1)taper ratio
39.3637 40.0000 17 (1)LE sweep angle deg
0.9938 1.0000 18 (1)xTE/lbody1
6.0000 6.1000 19 (2)fuel type
0.4000 0.4000 20 (2)propellant outer radius ratio
0.6000 0.6000 21 (2)propellant inner radius ratio
9.0948 9.0000 22 (2)number of star points
0.1000 0.1000 23 (2)fillet radius ratio
0.8756 0.8667 24 (2)epsilon
10.0000 10.0000 25 (2)star point angle
0.9900 0.9900 26 (2)fractional nozzle length ratio
52
0.3200 0.3200 27 (2)throat dia/dbody2
7.0000 7.0000 28 (2)total length of booster stage 2 ft
1.4000 1.4000 29 (2)dia of booster center section stg 2 ft
1.4000 1.4000 30 (2)exposed semi-span/dbody2
1.0956 1.1000 31 (2)root chord/dbody2
0.9600 0.9814 32 (2)taper ratio
2.0000 15.4839 33 (2)LE sweep angle deg
1.0000 0.9933 34 (2)xTE/lbody2
2.4092 2.2000 35 time to separate stage 1 sec
4001.0000 4000.0000 36 (1)autopilot on delat time stage 1
0.5570 0.5714 37 (1)autopilot time constant stage 1
0.6376 0.6190 38 (1)autopilot damping stage 1
60.0000 59.3333 39 (1)crossover freq hz stage 1
5.6430 5.8000 40 (1)pronavgain stage 1
4000.5150 4001.0000 41 (2)autopilot on delat time stage 2
0.6493 0.4857 42 (2)autopilot time constant stage 2
0.6000 0.8048 43 (2)autopilot damping stage 2
51.2369 50.6667 44 (2)crossover freq hz stage 2
3.0000 3.6000 45 (2)pronavgain stage 2
45.0906 45.0000 46 initial launch angle deg
Both the real and binary GA?s produced similar missiles for this test. When
analyzing Table 12 the only real difference between the two missiles was the top stage
body diameter variable 13. The binary GA converged to a larger body diameter of 1.83 ft
while the real GA converged to a value of just above 1.5 ft. This effectively increased
the binary GA?s weight increasing the fitness as shown in Figure 33. A comparison of the
performance of the two GA?s is shown in Figure 33.
53
Figure 33. Two stage solid 100,000 ft 6,000 lb convergence history
Figure 34. Two Stage Solid Missile Upper Body Diameter Convergence History
The real coded GA was able to produce a slightly more accurate converged
solution than its binary counterpart. Figure 34 shows the how both GA?s changed the
Two Stage Solid 100,000 ft Match 6000lb Weight
Convergence Data
1.00E+02
1.10E+03
2.10E+03
3.10E+03
4.10E+03
5.10E+03
6.10E+03
7.10E+03
8.10E+03
9.10E+03
0 2000 4000 6000 8000 10000
Function Evaluations
Fit
ne
ss
Binary GA Real GA
2 Stage Solid Match 100k ft Match 6000 lb Upper Stage Diameter
History
1.00E+00
1.20E+00
1.40E+00
1.60E+00
1.80E+00
2.00E+00
2.20E+00
2.40E+00
2.60E+00
2.80E+00
0 2000 4000 6000 8000 10000
Function Evaluations
Up
pe
r S
tag
e
Di
am
ete
r (
ft)
1.00E+00
1.00E+01
1.00E+02
1.00E+03
1.00E+04
Fi
tn
es
s
Binary GA Real GA Fitness Binary GA Fitness Real GA
54
upper stage missile body diameter as they converged to their final solution. The body
diameter is very important when trying to minimize the weight of a missile. For the two
stage solid system the body diameter is the only dimensional parameter, all of the other
parameters are non-dimensional therefore it is easy to see the overall scale of the missile
when looking at the body diameter. For this test the upper stage body diameter could
vary between 2.62 and 1.31 feet. The binary GA started with an initial upper stage body
diameter of 1.96 ft and converged to a body diameter if 1.83 ft after 10,000 function
evaluations. When comparing the overall convergence plot with the body diameter plot
there does not seem to be a correlation between the body diameter and the overall
convergence for the binary GA. There does seem to be a correlation between the overall
convergence and the body diameter for the real GA. After approximately 5000 function
evaluations the real GA?s body diameter was reduced from 1.92 ft to 1.54 ft, this reduced
the weight of the missile and helped to reach a better solution.
Another very important design parameter is the initial launch angle. The launch
angle is very important when trying to match a range for a ballistic trajectory. Figure 35
shows the convergence of another GA design variable, initial launch angle. When
comparing the overall convergence plot with the launch angle convergence plot it
becomes clear that for both the real and binary GA?s the launch angle was a large
contributor to the overall convergence. The binary GA started off with an initial launch
angle of 63.9 degrees and rapidly converged to a launch angle of 45 degrees within the
first 1000 function evaluations. The real GA started with an initial launch angle of 85
degrees and fluctuated slightly for the first 5000 function evaluations and then rapidly
decreased to 45 degrees after 5000 function evaluations. The max value allowed for the
55
launch angle was 85 degrees and the minimum value was 45 degrees, therefore better
fitness? could possibly have been obtained with a broader range of initial launch angles.
The 3D models of the two stage solid designed by the real and binary coded GA?s are
shown in Figure 36 and Figure 37.
Figure 35. Two Stage Solid Missile Initial Launch Angle Convergence History
2 Stage Solid Match 100k ft Match 6000 lb Initial Launch Angle
History
0.00
10.00
20.00
30.00
40.00
50.00
60.00
70.00
80.00
90.00
100.00
0 2000 4000 6000 8000 10000
Function Evaluations
In
iti
al
La
un
ch
A
ng
le
(d
eg
)
1.00E+00
1.00E+01
1.00E+02
1.00E+03
1.00E+04
1.00E+05
1.00E+06
1.00E+07
1.00E+08
1.00E+09
1.00E+10
Fi
tn
es
s
Binary GA Real GA Fitness Binary GA Fitness Real GA
56
Figure 36. Two Stage Solid 3D Model-Real GA
Figure 37. Two Stage Solid 3D Model-Binary GA
57
5.2.2 TWO STAGE SOLID 250,000 FT 7,000 LB GOAL
For the second test the binary coded genetic algorithm was able to produce a
missile that could hit a target 251,144.44 ft down range with a 9,391.07 lb initial take-off
weight using 10,000 function evaluations with a converged solution having a fitness of
314.1. This corresponded to a miss distance of 1,144.44 ft and a miss weight of 2,391.07
lb. Given the same inputs the real coded GA was able to achieve a fitness of 5,148 after
10,000 function evaluations. This corresponded to a miss distance of 50,377.97 ft and a
miss weight of 1,105.80 lb.
Table 13. Two stage solid 250,000 ft 7,000 lb Final Design Variables
Real GA Binary GA Design Variable Definition
0.5764 0.5333 1 rnose/rbody
2.0296 2.1774 2 lnose/dbody
6.0069 6.1000 3 (1)fuel type
0.4949 0.5000 4 (1)star out R
0.5126 0.5000 5 (1)star inner ratio
9.0962 9.1000 6 (1)number of star points
0.0944 0.0957 7 (1)fillet radius ratio
0.8083 0.9000 8 (1)eps
10.0145 11.1063 9 (1)star point angle deg
0.9567 0.9313 10 (1)fractional nozzle length
0.2905 0.2933 11 (1)Dia throat/Dbody
10.6759 10.1000 12 (1)Fineness Ratio
1.6277 1.8331 13 (1)body dia ft
1.3963 1.2000 14 (1)wing semispan / dbody
1.0155 0.9000 15 (1)wing root chord/dbody
0.9877 0.9814 16 (1)taper ratio
26.1889 40.0000 17 (1)wing LE sweep angle deg
0.9944 1.0000 18 (1)xLEw/lbody
6.1000 6.1000 19 (2)fuel type
0.6000 0.4000 20 (2)star out R
0.5000 0.6000 21 (2)star inner ratio
9.0181 9.0000 22 (2)number of star points
0.1000 0.1000 23 (2)fillet radius ratio
0.8000 0.8667 24 (2)eps
10.0648 10.0000 25 (2)star point angle deg
0.9900 0.9900 26 (2)fractional nozzle length
58
0.3100 0.3200 27 (2)Dia throat/Dbody
7.0000 7.0000 28 (2)Fineness Ratio
1.9685 1.9685 29 (2)body dia ft
1.2000 1.4000 30 (2)wing semispan / dbody
1.1000 1.1000 31 (2)wing root chord/dbody
0.9843 0.9814 32 (2)taper ratio
29.1717 15.4839 33 (2)wing LE sweep angle deg
0.9800 0.9933 34 (2)xLEw/lbody
2.5789 2.2000 35 time to separate stage 1 sec
4000.1986 4000.0000 36 (1)autopilot delay time sec
0.4000 0.5714 37 (1)auto pilot time constant sec
0.8700 0.6190 38 (1)auto pilot damping
52.6969 59.3333 39 (1)crossover freq hz
3.4299 5.8000 40 (1)pronav gain
4000.0869 4001.0000 41 (12autopilot delay time sec
0.4120 0.4857 42 (2)auto pilot time constant sec
0.6182 0.8048 43 (2)auto pilot damping
53.3991 50.6667 44 (2)crossover freq hz
4.1287 3.6000 45 (2)pronav gain
86.0000 45.0000 46 initial launch angle deg
When comparing the final converged design variables for the real and binary
GA?s the main differing variables are the upper stage body diameter, initial launch angle,
and both the upper stage(1) and bottom stage(2) wing LE angles as shown above in Table
13. A comparison of the performance of the two GA?s is shown in Figure 38.
59
Figure 38. Two stage solid 250,000 ft 7,000 lb convergence history
The binary coded GA was able to produce a much more accurate converged
solution than its real counterpart. While the binary GA was able to produce a better
overall fitness than the real GA, it was not able to match the weight as accurately as the
real GA. The real GA was able to get over 1,000 lbs closer to the desired weight of 7,000
lbs than the binary GA. The weight difference can be accounted for by the body
diameter. Figure 39 shows that the real GA was able to converge to a smaller upper stage
body diameter than the binary GA.
Two Stage Solid 250,000 ft Match 7000lb Weight
Convergence Data
1.00E+01
1.00E+02
1.00E+03
1.00E+04
1.00E+05
0 2000 4000 6000 8000 10000
Function Evaluations
Fit
ne
ss
Binary GA Real GA
60
Figure 39. Two Stage Solid Missile Upper Stage Diameter Convergence History
For this test the upper stage body diameter could was allowed to vary between
2.62 and 1.31 feet, the same ranges as the previous two stage test. The binary GA started
with an initial upper stage body diameter of 1.96 ft and converged to a body diameter if
1.83 ft after 10,000 function evaluations. When comparing the overall convergence plot
with the body diameter plot there does not seem to be a correlation between the body
diameter and the overall convergence for the binary GA. There does seem to be a
correlation between the overall convergence and the body diameter for the real GA. In
the first few hundred function evaluations the real GA?s body diameter was reduced from
1.92 ft to 1.63 ft, this reduced the weight of the missile and helped to reach a better
solution.
While the weight of the real GA was closer to the desired weight than the binary
GA, the binary GA was able to match the range much more accurately than the real GA,
Two Stage Solid Match 250k ft Match 7000 lb Upper Stage
Diameter History
1.00E+00
1.20E+00
1.40E+00
1.60E+00
1.80E+00
2.00E+00
2.20E+00
2.40E+00
0 2000 4000 6000 8000 10000
Function Evaluations
Up
pe
r S
tag
e
Di
am
ete
r (
ft)
1.00E+00
1.00E+01
1.00E+02
1.00E+03
1.00E+04
1.00E+05
1.00E+06
1.00E+07
1.00E+08
1.00E+09
1.00E+10
1.00E+11
Fi
tn
es
s
Binary GA Real GA Fitness Binary GA Fitness Real GA
61
giving the binary GA a converged fitness almost an order of magnitude better than the
real GA. When the design parameters are analyzed it becomes clear that the reason for
the poor performance of the real GA was the initial launch angle. Figure 40 shows the
initial launch angle for both the real and binary GA?s plotted against function evaluations.
Figure 40. Two Stage Solid Missile Initial Launch Angle Convergence History
Two Stage Solid Match 250k ft Match 7000 lb Initial Launch Angle
History
0.00
10.00
20.00
30.00
40.00
50.00
60.00
70.00
80.00
90.00
100.00
0 2000 4000 6000 8000 10000
Function Evaluations
In
iti
al
La
un
ch
A
ng
le
(d
eg
)
1.00E+00
1.00E+01
1.00E+02
1.00E+03
1.00E+04
1.00E+05
1.00E+06
1.00E+07
1.00E+08
1.00E+09
1.00E+10
1.00E+11
Fi
tn
es
s
Binary GA Real GA Fitness Binary GA Fitness Real GA
62
The real GA started with an initial launch angle of 75 degrees and quickly rose
to 85 degrees, where it remained to the remainder of the function evaluations. This may
be due to the fact that the real GA?s smaller body diameter missile needed to have a high
initial launch angle in order to coast to the target because of the decreased propellant
mass associated with a smaller diameter. Any lower launch angle could have come up far
short of the target. The binary GA was able to start of with a 65 degree launch angle and
it converged to a 45 degree launch angle. The binary GA was able to achieve a better
overall fitness by trading off weight for range. Three dimensional models of the single
stage solid designed by the real and binary coded GA?s are shown in Figure 41and Figure
42.
Figure 41. Two Stage Solid 3D Model-Real GA
Figure 42. Two Stage Solid 3D Model-Binary GA
63
5.3 SINGLE STAGE LIQUID MISSILE SYSTEM DESIGN
Two cases were tested in order to compare the binary and real coded GA?s for the
single stage liquid propellant missile tests: match range 450,000 ft while also matching a
55,000lb initial take-off weight and match range 700,000 ft while also matching a
55,000lb initial take-off weight. Both missile design codes were identical with the
exception of the GA?s. The GA input file (GANNL.DAT) can be seen in Appendix F for
the real coded GA and Appendix G for the binary coded GA. The fitness? for the liquid
system were calculated as shown below.
A summary of the single stage liquid optimization results is shown in Table 14.
For the single stage liquid missile design code the real coded GA was able to converge to
a better solution in one of the two tests. The binary GA was able to converge to better
solutions in the remaining test however the fitness?s were on the same order of
magnitude.
Table 14. Single Stage Liquid Optimization Results
GA Fitness Comparison Real GA Binary GA F.E.
1 Stg Liquid
Match 450kft 55000lb weight 6.97 276.16 10,000
Match 700kft 55000lb weight 94.00 72.03 10,000
0.10
)(RangeabsFitness= )( eActualRanggeDesiredRanabsRange ?=
0.10
)( ghtDesiredWeiWeightabsFitness ?=
64
5.3.1 SINGLE STAGE LIQUID 450K FT 55K LB WEIGHT GOAL
For the first test the binary coded genetic algorithm was able to produce a missile
that could hit a target 450,088.15 ft down range with an initial take-off weight of
57,812.7 lbs using 10,000 function evaluations with a converged solution having a fitness
of 276.2. This corresponded to a miss distance of 88.15 ft and a miss weight of 2,812.7
lbs. Given the same inputs the real coded GA was able to achieve a fitness of 6.973 after
10,000 function evaluations. This corresponded to a miss distance of 19.97 ft and a miss
weight of 49.76 lbs.
Table 15. Single Stage Liquid 450,000 ft 55,000 lb Final Design Variables
Real GA Binary GA Design Variable Definition
5.1644 5.5677 1 body diameter ft
4.1000 4.1000 2 propellant type
0.6928 0.7000 3 equivalence ratio
2457.9795 2340.1575 4 chamber pressure psi
0.5460 0.7143 5 nose dia ratio
1.9389 1.7333 6 nose length ratio
0.1040 0.1013 7 nozzle throat dia/dbody
20.7429 10.3922 8 nozzle expansion ratio
0.6359 0.7600 9 fractional nozzle length
87.6968 87.6378 10 burn time sec
0.0229 0.0400 11 wing root chord ratio
0.8968 0.8900 12 wing taper ratio
0.0259 0.0457 13 wing b/2 ratio
3.8352 2.1429 14 wing le angle deg
0.5000 0.3095 15 XLEwing/lbody
1.0551 1.1000 16 tail root chord ratio
0.5000 0.5656 17 tail taper ratio
1.0128 1.0667 18 tail b/2 ratio
20.4071 25.5484 19 tail le angle deg
0.9809 0.9786 20 tail x loc
4999.0000 4999.0000 21 autopilot delay time sec
0.6716 0.3094 22 autopilot time const
0.5849 0.9206 23 autopilot damping coeff
40.0672 60.0000 24 cross freq hz
5.5797 4.4194 25 pronav gain
83.0333 83.7419 26 initial launch angle deg
65
When analyzing the final converged design parameters for both GA?s, all of the
parameters are very similar except for the missile body diameter, variable 1, the nozzle
expansion ratio, variable 8 and variable 19, the tail leading edge angle. Since both GA?s
converge to different fitness?s it is logical that for a match weight goal the diameters
would be different, and similarly for a match range goal the tails would also be different
for two missiles that fly out to differing ranges. A comparison of the performance of the
two GA?s is shown in Figure 43.
Figure 43. Single Stage Liquid 450,000 ft 55,000 lb Convergence Plot
The real coded GA was able to produce a much more accurate converged solution
than its binary counterpart. The weight difference can be accounted for by the body
diameter. Figure 44 shows that the real GA was able to converge to a smaller body
diameter than the binary GA. For the single stage liquid the body diameter was allowed
to vary between 6.6 ft and 5.0 ft. The binary GA started out with a body diameter of 6.19
Single Stage Liquid 450,000 ft Range 55,000 lb Weight
Convergence Data
1.00E+00
1.00E+01
1.00E+02
1.00E+03
1.00E+04
1.00E+05
0 2000 4000 6000 8000 10000
Function Evaluations
Fit
ne
ss
Binary GA Real GA
66
ft and converged to a 5.52 ft body diameter. The real GA was able to converge to a 5.14
ft body diameter, allowing for a lower initial take-off weight.
Figure 44. Single Stage Liquid Missile Body Diameter Convergence History
Single Stage Liquid Match 450k ft Match 55,000 lb Diameter
History
4.00
4.50
5.00
5.50
6.00
6.50
0 2000 4000 6000 8000 10000
Function Evaluations
Bo
dy
D
iam
ete
r (
ft)
1.00E+00
1.00E+02
1.00E+04
1.00E+06
1.00E+08
1.00E+10
Fi
tn
es
s
Real GA Binary GA Real GA Fitness Binary GA Fitness
67
Figure 45. Single Stage Liquid Missile Tail Leading Edge Angle Convergence
History
While the diameter is important for the overall convergence, it does not seem to
be contributing to the final drop in the fitness for the real coded GA. When the
convergence history was analyzed it was discovered that the final decreases in fitness for
the real coded GA was due to the tail leading edge angle. The angle was allowed to vary
between 44.0 and 0.0 degrees. After 7,000 function evaluations the real GA had
converged to a 14.6 degree tail leading edge angle, in the remaining 3,000 function
evaluations the real GA increased the angle to 20.6 degrees aided in converging closer to
the target giving the real GA the better overall fitness. Three dimensional models of the
single stage solid designed by the real and binary coded GA?s are shown in Figure 46 and
Figure 47.
Single Stage Liquid Match 450k ft Match 55,000 lb Tail LE
Angle History
4.00
9.00
14.00
19.00
24.00
29.00
34.00
39.00
0 2000 4000 6000 8000 10000
Function Evaluations
Ta
il L
E
An
gle
(d
eg
)
1.00E+00
1.00E+02
1.00E+04
1.00E+06
1.00E+08
1.00E+10
1.00E+12
Fit
ne
ss
Real GA Binary GA Real GA Fitness Binary GA Fitness
68
Figure 46. Single Stage Liquid 3D Model-Real GA
Figure 47. Single Stage Liquid 3D Model-Binary GA
5.3.2 SINGLE STAGE LIQUID 700K FT 55K LB WEIGHT GOAL
For the second test the binary coded genetic algorithm was able to produce a
missile that could hit a target 700,417.41 ft down range with an initial take-off weight of
55,302.29 lbs using 10,000 function evaluations with a converged solution having a
fitness of 72.03. This corresponded to a miss distance of 417.41 ft and a miss weight of
302.29 lbs. Given the same inputs the real coded GA was able to achieve a fitness of
69
94.00 after 10,000 function evaluations. This corresponded to a miss distance of 848.21
ft and a miss weight of 91.80 lbs.
Table 16. Single Stage Liquid 700,000 ft 55,000 lb Final Design Variables
When analyzing the final converged design parameters for both GA?s, all of the
parameters are very similar except for the missile body diameter, variable 1, the nozzle
expansion ratio, variable 8 and variable 19, the tail leading edge angle. The initial launch
angles were also different by a few degrees which could have contributed to the increased
accuracy for the match range goal. A comparison of the performance of the two GA?s is
shown in Figure 48.
Real GA Binary GA Design Variable Definition
5.4645 5.0021 1 body diameter ft
4.0000 4.0936 2 propellant type
0.6000 0.6998 3 equivalence ratio
2018.8976 2496.5987 4 chamber pressure psi
0.7143 0.5000 5 nose dia ratio
1.7333 1.9850 6 nose length ratio
0.1173 0.1159 7 nozzle throat dia/dbody
8.5294 21.2879 8 nozzle expansion ratio
0.8200 0.6176 9 fractional nozzle length
73.7795 73.8050 10 burn time sec
0.0333 0.0316 11 wing root chord ratio
0.8900 0.9188 12 wing taper ratio
0.0500 0.0322 13 wing b/2 ratio
2.1429 4.2167 14 wing le angle deg
0.2206 0.3488 15 XLEwing/lbody
1.0000 1.0410 16 tail root chord ratio
0.8048 0.5000 17 tail taper ratio
1.0667 1.0026 18 tail b/2 ratio
17.0323 10.6517 19 tail le angle deg
0.9643 0.9763 20 tail x loc
5000.0000 4999.3174 21 autopilot delay time sec
0.7890 0.4717 22 autopilot time const
0.8318 0.7489 23 autopilot damping coeff
53.5484 52.4772 24 cross freq hz
6.2258 5.3116 25 pronav gain
82.1936 78.0266 26 initial launch angle deg
70
Figure 48. Single Stage Liquid 700,000 ft 55,000 lb Convergence Plot
The binary coded GA was able to produce a slightly more accurate converged
solution than its real counterpart. The real GA was able to converge to a lower weight
than the binary GA, however it missed the target by a greater distance, therefore the
binary GA converged to a lower overall fitness. The real GA?s ability to converge to a
lower weight can be account for by its body diameter convergence as shown in Figure 49.
The limits allowed for the body diameter were a maximum value of 6.6 ft with a 5.0 ft
minimum. The real GA started off with an initial body diameter of 6.05 ft and quickly
converged to the minimum allowable value for the diameter of 5.0 ft, in order to
minimize the weight. The binary GA also started off with a body diameter above 6.0 ft,
however the binary GA?s body diameter only converged to 5.50 ft.
Single Stage Liquid 700,000 ft Range 55,000 lb Weight
Convergence Data
1.00E+01
1.00E+02
1.00E+03
1.00E+04
1.00E+05
0 2000 4000 6000 8000 10000
Function Evaluations
Fi
tn
es
s
Binary GA Real GA
71
Figure 49. Single Stage Liquid Missile Body Diameter Convergence History
Both GA?s body diameters were converged after only a few thousand function
evaluations. The binary GA?s overall fitness followed the body diameter convergence,
the real GA on the other hand continued to converge well after the body diameter had
converged to the minimum allowable value. The second design variable shown to play
an important role in the convergence of this case was the burn time. A plot of the burn
time versus function evaluations is shown in Figure 50.
Single Stage Liquid Match 700k ft Match 55,000 lb Diameter
History
4.00E+00
4.50E+00
5.00E+00
5.50E+00
6.00E+00
6.50E+00
0 2000 4000 6000 8000 10000
Function Evaluations
Bo
dy
D
iam
ete
r (
ft)
1.00E+00
1.00E+01
1.00E+02
1.00E+03
1.00E+04
1.00E+05
1.00E+06
1.00E+07
1.00E+08
1.00E+09
1.00E+10
1.00E+11
Fi
tn
es
s
Real GA Binary GA Real GA Fitness Binary GA Fitness
72
Figure 50. Single Stage Liquid Missile Burn Time Convergence History
The burn time was allowed to vary between 150 and 70 seconds for the liquid
missile systems. The initial burn times for both GA?s was over 80 seconds. The binary
GA converged to a burn time of 73.8 seconds in just over 2,000 function evaluations.
The real GA converged to the same burn time, however it took just over 7,000 function
evaluations. Three dimensional models of the single stage solid designed by the real
and binary coded GA?s are shown in Figure 51 and Figure 52.
Single Stage Liquid Match 700k ft Match 55,000 lb Burn Time
History
4.00E+00
2.40E+01
4.40E+01
6.40E+01
8.40E+01
1.04E+02
1.24E+02
0 2000 4000 6000 8000 10000
Function Evaluations
Bu
rn
Ti
m
e (
se
c)
1.00E+00
1.00E+01
1.00E+02
1.00E+03
1.00E+04
1.00E+05
1.00E+06
1.00E+07
1.00E+08
1.00E+09
1.00E+10
Fit
ne
ss
Real GA Binary GA Real GA Fitness Binary GA Fitness
73
Figure 51. Single Stage Liquid 3D Model-Real GA
Figure 52. Single Stage Liquid 3D Model-Binary GA
74
6 REAL CODED GA CONVERGENCE TESTING REVISITED
The GA parameters (mutation rate, mutation amount, population size etc) for both
GA?s were held constant throughout all of the comparison tests analyzed in Chapter 5.
The initial convergence testing for the real coded GA demonstrated its ability to converge
to accurate solutions very rapidly for single goal cases. The same GA parameters were
used for the two goal cases discussed in Chapter 5. In order to get a better understanding
of the effect of a second goal on the mutation parameters, a second set of convergence
testing for the real coded GA was conducted.
Figure 53. Two Goal Crossover Convergence History
For the two goal convergence tests the single stage solid code was used, with
goals of match range 150,000 ft, and a match weight of 1,500 lbs. BlendX crossover was
Two Goal Crossover Testing
100
1000
0 2000 4000 6000 8000 10000
Function Evaluations
Fit
ne
ss
Single-Point BlendX Uniform
75
able to achieve the best fitness. The next GA parameter tested was the mutation
operators, mutation rate and mutation amount. Table 17 shows the final fitness? achieved
for the various mutation operator combinations. It should be noted that for the two goal
case the best operator combination was not Test_3 as it was in the 1 goal test.
Table 17. Two Goal Mutation Testing Results
2 Goal Mutation Testing
Mutation Operators Mutation Rate
Mutation
Amount Fitness
Test_1 1.00 0.05 190.49
Test_2 0.20 0.10 181.33
Test_3 0.05 1.00 288.03
Test_4 0.50 0.05 190.25
Figure 54. Two Goal Mutation Testing Convergence History
Figure 54 shows the overall convergence of the two goal mutation test for the
single stage solid. The operator combination used in the comparisons in Chapter 5 was
Test_3, which was the worst performer for this test. The third and final test conducted
was for population size. The same population sizes were tested for the two goal test that
were tested in Chapter 4 for the one goal test.
Two Goal Mutation Test Convergence Data
1.00E+02
1.00E+03
0 2000 4000 6000 8000 10000
Function Evaluations
Fit
ne
ss
Test_1 Test_3 Test_4 Test_2
76
Figure 55. Two Goal Population Test Convergence History
Figure 55 shows that a population size of 30 was able to converge to the best
fitness for the two goal case. The two goal testing demonstrates how sensitive the real
coded GA is to minor charges in any of the GA parameters. Table 18 shows all of the
GA parameters with their achieved fitness values for the one goal and two goal tests.
Two Goal Population Size Convergence Testing
100
150
200
250
300
350
400
450
500
0 2000 4000 6000 8000 10000
Function Evaluations
Fit
ne
ss
Pop Size = 3 Pop Size = 5 Pop Size = 7 Pop Size = 10 Pop Size = 30
77
Table 18. One and Two goal GA Parameter Comparison
One Goal Two Goal
Crossover
Testing
Crossover
Type Fitness
Crossover
Type Fitness
Test_1 Blend X 2.10E-07 Blend X 181.330895
Test_2 Single-Point 9.85E-06 Single-Point 266.909582
Test_3 Uniform 4.23E-06 Uniform 216.382506
Mutation
Testing One Goal Two Goal
Mutation
Operators
Mutation
Rate
Mutation
Amount Fitness
Mutation
Rate
Mutation
Amount Fitness
Test_1 1.00 0.05 3.98E-06 1.00 0.05 190.49
Test_2 0.20 0.10 6.54E-09 0.20 0.10 181.33
Test_3 0.05 1.00 8.03E-12 0.05 1.00 288.03
Test_4 0.50 0.05 4.26E-06 0.50 0.05 190.25
One Goal Two Goal
Population
Testing
Population
Size Fitness
Population
Size Fitness
Test_1 3 8.03E-12 3 181.330895
Test_2 5 3.79E-06 5 172.961289
Test_3 7 6.52E-11 7 246.371314
Test_4 10 2.40E-06 10 176.498353
Test_5 30 6.56E-11 30 169.005173
Due to the differences in the mutation operators and the population size it was
deemed necessary to re-run all of the binary vs real comparisons from Chapter 5 with the
new GA parameters to see if the real GA would produce different results. All of the re-
run cases achieved similar fitness to the first runs, with the exception of the two stage
solid. The two stage solid using the new parameters was able to achieve a better fitness
than the binary GA.
78
Figure 56. Two Stage Solid Match 100k ft 6k lb Re-Run
Figure 57. Two Stage Solid Match 250k ft 7k lb Re-Run
Two Stage Solid 250,000 ft Match 7000lb Weight
Convergence Data
1.00E+01
1.00E+02
1.00E+03
1.00E+04
1.00E+05
0 2000 4000 6000 8000 10000
Function Evaluations
Fi
tn
es
s
Binary GA Real GA Real GA New GA Parameters
Two Stage Solid 100,000 ft Match 6000lb Weight
Convergence Data
1.00E+02
1.00E+03
1.00E+04
0 2000 4000 6000 8000 10000
Function Evaluations
Fit
ne
ss
Binary GA Real GA Real GA New GA Parameters
79
For both tests, the real GA was able to achieve a better fitness than the initial real
GA and the binary GA. The remaining five tests for the single stage solid and single
stage liquid produced similar results to the initial tests.
80
7 CONCLUSIONS AND RECOMMENDATIONS
A real coded genetic algorithm has been written from first principles. The real
GA operators have been tested to find an optimal set of parameters for quick convergence
with minimal convergence on local minimums. The real coded GA was then coupled with
three different design codes, a single stage solid missile system design code, two stage
solid missile system design code and a single stage liquid missile system design code.
Three tests were performed for the single stage solid code while two tests were conducted
for both the two stage solid code and the single stage liquid code giving a total of seven
test cases. For each of the seven tested cases both the real and binary GA?s were run for
10,000 function evaluations in order to compare the converged fitness?s. The real coded
GA demonstrated that it is a viable optimization tool when compared to the already
robust binary GA. Of the seven comparative tests, the real GA was able to converge to a
better fitness in two tests. Table 19 shows an overview of the final fitness?s achieved by
both the real and binary GA?s for the seven cases tested.
81
Table 19. Overall Final Fitness Comparison
GA Fitness Comparison Real GA Binary GA F.E.
1 Stg Solid
Match 100kft 2500lb weight 50.61 46.69 10,000
Match 350kft 4000lb weight 48.67 3.98 10,000
Match 2500 lbs 240 sec 16.65 16.61 10,000
2 Stg Solid
match 100k ft 6000lbm weight 408.6 414.1 10,000
match 250k ft 7000lbm weight 5148 314.1 10,000
1 Stg Liquid
Match 450kft 55000lb weight 6.97 276.2 10,000
Match 700kft 55000lb weight 94.0 72.03 10,000
More research needs to be conducted on the GA parameters themselves to
determine either an overall optimum set of GA parameters for the real coded GA, or a
way to vary all of the parameters throughout the GA run to account for the differing
parameters needed for differing problems. A second GA could be used to optimize the
GA operators to get a set of operators that is truly optimized over a wide variety of tests.
The steady state real coded GA was able to beat the binary GA for simple 1 goal
tests cases. For these tests the real coded GA was able to very rapidly converge to much
more accurate fitness than the binary GA. This is due to the fact that the steady state GA
did not have to waste function evaluations on bad members. The steady state real GA has
proven that it is very effective at optimizing a system that is fairly well known, however
for a very complex unknown system the generational binary GA with its large population
size is better.
While the binary GA converged to better fitness?s for 5 of the 7 tests conducted
for this study, the real GA can still be much more effective than the binary GA for more
82
complex problems involving 60 or more design variables because of the bit limitation
inherent with the binary GA.
The real GA is inherently better than the binary GA for more complex
optimizations because the real coded GA has no limit on resolution other than it what a
double precision real number can handle. Also since the real-coded GA does not have to
convert real numbers into a single binary bit string it is not susceptible to hamming cliffs
therefore making more complex optimizations with more design parameters and finer
resolutions possible. Because the real-coded GA is operating directly on the design
parameters rather than bits of design parameters it is much easier to gain an
understanding of how the GA is modifying the parameters. This could allow the user to
track which parameters are affecting the convergence the most and select them for more
or less mutation throughout the optimization to increase the convergence. This would be
much more difficult for the binary GA because all of the design parameters are
represented by a single bit string.
In the future a real coded generational GA could be written and coupled with the
real coded steady state GA. The generational GA could be used at the beginning of the
optimization, and after a set number of generations the GA could be switched to steady
state to home in on a very accurate fitness, therefore using the best characteristics of both
types of genetic algorithms. Other types of population based optimizers should also be
researched such as particle swarm optimization (PSO) and compared to both binary and
real genetic algorithms for aerospace optimization applications.
83
REFERENCES
1. Karr, C.L., Freeman, L.M., and Meredith, D.L., "Genetic Algorithm based Fuzzy
Control of Spacecraft Autonomous Rendezvous," NASA Marshall Space Flight Center,
Fifth Conference on Artificial Intelligence for Space Applications, 1990.
2. Krishnakumar, K., Goldberg, D.E., ?Control System Optimization Using Genetic
Algorithms?, Journal of Guidance, Control, and Dynamics, Vol. 15, No. 3, May-June
1992.
3. Krishnakumar, K., Goldberg, D.E., ?Control System Optimization Using Genetic
Algorithms?, Journal of Guidance, Control, and Dynamics, Vol. 15, No. 3, May-June 1992.
4. Perhinschi, M.,G., "A Modified Genetic Algorithm for the Design of Autonomous
Helicopter Control System," AIAA-97-3630, Presented at the AIAA Guidance, Navigation, and
Control Conference, New Orleans, LA, August 1997.
5. Mondoloni, S., ?A Genetic Algorithm for Determining Optimal Flight Trajectories?,
AIAA Paper 98-4476, AIAA Guidance, Navigation, and Control Conference and Exhibit, August
1998.
6. Anderson, M.B., ?Using Pareto Genetic Algorithms for Preliminary Subsonic Wing
Design?, AIAA Paper 96-4023, presented at the 6th AIAA/NASA/USAF Multidisciplinary
Analysis and Optimization Symposium, Bellevue, WA, September 1996.
7. Perez, R.E., Chung, J., Behdinan, K., ?Aircraft Conceptual Design Using Genetic
Algorithms?, AIAA Paper 2000-4938, Presented at the 8th AIAA/USAF/NASA/ISSMO
Symposium on Multidisciplinary Analysis and Optimization, September 2000.
8. Anderson, M.B., Burkhalter, J.E., and Jenkins, R.M., "Design of an Air to Air Interceptor
Using Genetic Algorithms", AIAA Paper 99-4081, presented at the 1999 AIAA Guidance,
Navigation, and Control Conference, Portland, OR, August 1999.
9. Anderson, M.B., Burkhalter, J.E., and Jenkins, R.M., ?Intelligent Systems Approach to
Designing an Interceptor to Defeat Highly Maneuverable Targets?, AIAA Paper 2001-1123,
presented at the 39th Aerospace Sciences Meeting and Exhibit, Reno, NV, January 2001.
10. Chernyavsky, B., Stepanov, V., Rasheed, K., Blaize, M., and Knight, D., ?3-D
Hypersonic Inlet Optimization Using a Genetic Algorithm?, AIAA Paper 98-3582, 34th
AIAA/ASME/SAE/ASEE Joint Propulsion Conference and Exhibit, July 1998.
84
11. Torella, G., Blasi, L., ?The Optimization of Gas Turbine Engine Design by Genetic
Algorithms?, AIAA Paper 2000-3710, 36th AIAA/ASME/SAE/ASEE Joint Propulsion
Conference and Exhibit, July 2000.
12. J.E. Burkhalter, R.M. Jenkins, and R.J. Hartfield, M. B. Anderson, G.A. Sanders,
?Missile Systems Design Optimization Using Genetic Algorithms,? AIAA Paper 2002-5173,
Classified Missile Systems Conference, Monterey, CA, November, 2002
13. Hartfield, Roy J., Jenkins, Rhonald M., Burkhalter, John E., ?Ramjet Powered Missile
Design Using a Genetic Algorithm,? AIAA 2004-0451, presented at the forty-second AIAA
Aerospace Sciences Meeting, Reno NV, January 5-8, 2004.
14. Jenkins, Rhonald M., Hartfield, Roy J., and Burkhalter, John E., ?Optimizing a Solid
Rocket Motor Boosted Ramjet Powered Missile Using a Genetic Algorithm?, AIAA 2005-3507
presented at the Forty First AIAA/ASME/SAE/ASEE Joint Propulsion Conference, Tucson, AZ,
July 10-13, 2005.
15. Riddle, David B., ?Design Tool Development for Liquid Propellant Missile System,? MS
Thesis, Auburn University, May 10, 2007.
16. Burger, Christoph and Hartfield, Roy J., ?Propeller Performance Optimization using
Vortex Lattice Theory and a Genetic Algorithm?, AIAA-2006-1067, presented at the Forty-
Fourth Aerospace Sciences Meeting and Exhibit, Reno, NV, Jan 9-12, 2006.
17. Vukovic, S., Sopta, L., ?Binary Coded and Real Coded Genetic Algorithm in Pipeline
Flow?, AMS Paper 35-42, 7 th International Applied Mathematical Communications Conference,
1998
18. Elliot, L., Ingham, D. B., Kyne,K.G., ?A Real Coded Genetic Algorithm for the
Optimization of Reaction Rate Parameters for Chemical Kinetic Modelling in a Perfectly Stirred
Reactor?, Proceeding of Genetic and Evolutionary Computational Conference, New York, 2002
19. Sugala, S. V., Bhattacharaya, P.K., ?Real Coded Genetic Algorithm for Optimization of
Pervaporation Process Parameters for Removal of Volatile Organics from Water?, Ind. Eng.
Chem. Res. 2003, Volume 42, No.13,3118-3128, November 2003
20. Siddal, J.N., Optimal Engineering Design: Principles and Applications, Mercell Dekker
Inc., New York, NY, 1982.
21. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein.
Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-
03293-7. Section 29.3: The simplex algorithm, pp.790?804.
22. Holland, Adaptation in Natural and Artificial Systems, The MIT Press; Reprint edition
1992 (originally published in 1975)
23. Anderson, M.,B., ?Users Manual for IMPROVE? Version 3.0?, Sverdrup Technology
Inc./TEAS Group
85
24. Unsal , E. , Dane , J. H. , and Dozier , G. V. (2005). ?A Genetic Algorithm for
Predicting Pore Geometry Based on Air Permeability Measurements? ,The Vadose Zone
Journal, 4:389-397 (2005), Soil Science Society of America, Madison, WI
25. Dozier , G. , Cunningham , H. , Britt , W. , and Zhang , F. (2004). ?Distributed Constraint
Satisfaction , Restricted Recombination , and Hybrid Genetic Search ,? The Proceedings of the
2004 Genetic and Evolutionary Computation Conference (GECCO-2004) ,LNCS pp. 1078-1087 ,
June 2004 , Seattle , WA. Springer
26. G. Dozier, A. Homaifar, E. Tunstel, and D. Battle, "An Introduction to Evolutionary
Computation" (Chapter 17), Intelligent Control Systems Using Soft Computing Methodologies, A.
Zilouchian & M. Jamshidi (Eds.), pp. 365-380, CRC press
27. Eshelman, L.J., Schaffer, J.D., ?Foundations of Genetic Algorithms 2?, Real Coded
Genetic Algorithms and Interval Schemata, 5-17, San Mateo, CA, 1992
28. G. Dozier, A. Homaifar, E. Tunstel, and D. Battle, "An Introduction to Evolutionary
Computation" (Chapter 17), Intelligent Control Systems Using Soft Computing Methodologies, A.
Zilouchian & M. Jamshidi (Eds.), pp. 365-380, CRC press.
29. L. J. Eshelman and J. D. Schaffer, "Real-coded genetic algorithms and interval-
schemata," in Foundations of Genetic Algorithms-2. San Mateo, CA: Morgan Kaufman, 1993,
pp. 187--202.
30. Fogel, David B., Evolutionary Computation: Toward a New Philosophy of Machince
Intelligence, IEEE Press, 1995.
31. Vavak, F., Fogarty, T. Comparison of Steady State and Generational Genetic Algorithms
for Use in Non-Stationary Environments, IEEE Press, 1996.
32. I. Rechenberg, Evolutionstrategie, Frommann-Hozboog, Stuttgart, 1973
33. Hartfield, Roy J., Burkhalter, John E., Jenkins, Rhonald M., Dyer, John, and McDavid,
Brian., ?Genetic Algorithm Developments for Multiple Stage Missile Analysis?, submitted to
Missile and Space Intelligence Center Redstone Arsenal, Alabama 35898, February 2008,
Reference Contract No. PAN 70084-07.
86
APPENDIX A: Real Coded GA Source File
Subroutine GAMAIN
implicit double precision (a-h,o-z)
character names*14
parameter(npr=200,mstr=750,mpop=400,ngls=20)
dimension xmax(npr),xmin(npr),resolution(npr),names(npr)
dimension niche_par(npr),var(mstr,mpop),storevar(mstr)
dimension ans(ngls),fitness(ngls,mpop),totalfit(mpop)
dimension child(mstr),genchild(mstr,mpop)
integer iBestParent(mpop)
real mue
integer iarray(mstr*2)
character answ*1,fname*50,filename*50
logical micro,elitist,restart,maximize,disrupt,pareto,
& creep,remove_dup,uniform,check_avg,steady_state,
& niche,phenotype,niche_par
common/pass/yy(1,15,30),ys(10,29)
common/draw2/lastgen,mempops1,maxgen1,member1
c
do i=1,40
filename(i:i)=' '
enddo
fname='gannl.dat'
28 format(/,1x,'input the parameter (min/max/res)',
& ' filename, def= ',a12,' > ',$)
filename=fname
open(unit=43,file=filename,status='old')
write(*,*)'input file successfully opened'
write(*,*)
read(43,*) ipopulation
read(43,*) iuniform
read(43,*) iblend
read(43,*) isnglpoint
read(43,*) ivar_mutation
read(43,*) iK_check
read(43,*) xmutation_rate
read(43,*) xmutation_amount
read(43,*) ngoals
ys(4,5)=dble(float(ngoals))
read(43,*) no_para
do j=1,no_para
read(43,*) names(j),xmax(j),xmin(j)
enddo
read(43,*) mempops
read(43,*) maxgen
87
close(43)
icount=0
mue=xmutation_rate
sigma=xmutation_amount
open(unit=41,file='ga_out1.dat',status='unknown')
open(unit=42,file='population.dat',status='unknown')
open(unit=45,file='mutation_check.dat',status='unknown')
open(unit=56,file='Pop_Tracking.dat',status='unknown')
write(45,*)'Gen#,Amountbetter,NewSigma'
write(56,712)(names(i),i=1,no_para),('fitness')
k=0 !number of func evals b4 you check 1/5 rule
ibetter=0
write(*,*)'***STEADY STATE REAL GA SELECTED***'
! Generate Initial Population
T1=1.0d0
idum=SECNDS(T1)
do j=1,mempops
do jk=1,no_para
random=ran1(idum)
var(jk,j)=(xmax(jk)-xmin(jk))*random+xmin(jk)
end do
enddo
! Complete Function evaluations for first generation
do i=1,mempops
do j=1,no_para
storevar(j)=var(j,i)
enddo
do jk=1,no_para
ys(9,jk)=storevar(jk)
enddo
ys(4,2)=i
call setup
do j=1,ngls
fitness(j,i)=sngl(ys(7,j))
enddo
end do
if(ipopulation.eq.-1) then
write(42,*)'Generation#',1
else
88
write(42,*)'Population check must be set to true in gannl.dat
& to record population data '
end if
do j=1,mempops
iarray(j)=j
end do
if(ipopulation.eq.-1) then
write(42,712)(names(i),i=1,no_para),('fitness')
712 format(7x,120(a14,1x))
do i=1,mempops
write(42,713)iarray(i),(var(ii,iarray(i)),ii=1,no_para),
& (fitness(ii,iarray(i)),ii=1,ngoals)
713 format(1x,i3,1x,120(e14.8,1x))
end do
write(42,*)' '
end if
! First Generation now complete
do i=1,mempops
totalfit(i)=0.0d0
do j=1, ngoals
totalfit(i)=totalfit(i)+fitness(j,i)
end do
totalfit(i)=totalfit(i)
end do
Bestfitness=1.0d6
do i=1,mempops
if(totalfit(i) .lt. Bestfitness) then
Bestfitness=totalfit(i)
ielite=i
end if
end do
write(41,*)'Steady State GA'
write(41,*)1,Bestfitness
! Main Generation Loop
do l=2,maxgen
!Get Parent1
randum=ran1(idum)
parent1=randum*mempops
if(parent1.lt.1.d0)parent1=mempops
iparent1=int(parent1)
randum=ran1(idum)
iparent2=randum*mempops
if(parent2.lt.1.d0)parent2=mempops
iparent2=int(parent2)
!Perfom Tournament Selection to get best parent1
if(totalfit(iparent1).lt.totalfit(iparent2)) then
iBestParent1=iparent1
else
89
iBestParent1=iparent2
end if
!Get Parent2
randum=ran1(idum)
parent1=randum*mempops
if(parent1.lt.1.d0)parent1=mempops
iparent1=int(parent1)
randum=ran1(idum)
iparent2=randum*mempops
if(parent2.lt.1.d0)parent2=mempops
iparent2=int(parent2)
!Perfom Tournament Selection to get best parent2
if(totalfit(iparent1).lt.totalfit(iparent2)) then
iBestParent2=iparent1
else
iBestParent2=iparent2
end if
c Check to see which type of crossover to use
!Perform Uniform Crossover using BestParent 1 & 2
if(iuniform.eq.-1)then
do j=1,no_para
rnd=ran1(idum)
if(rnd.ge.0.5d0)child(j)=var(j,iBestParent1)
if(rnd.lt.0.5d0)child(j)=var(j,iBestParent2)
end do
end if
!Perform Single Point Crossover using BestParent 1 & 2
if(isnglpoint.eq.-1)then
rnd=ran1(idum)
ipoint=rnd*no_para
do j=1,ipoint
child(j)=var(j,iBestParent1)
end do
if(ipoint.eq.no_para)goto 876
do j=ipoint+1,no_para
child(j)=var(j,iBestParent2)
end do
876 continue
end if
!Perform Blend-Crossover Using BestParent 1 & 2
if(iblend.eq.-1)then
do j=1,no_para
child(j)=abs(var(j,iBestParent1)-var(j,iBestParent2))
&
*ran1(idum)+dmin1(var(j,iBestParent1),var(j,iBestParent2))
90
end do
end if
if(iuniform.eq.0 .and. iblend.eq.0 .and. isnglpoint.eq.0) then
write(*,*)'****NO CROSSOVER SELECTED****'
write(*,*)'****SET UNIFORM OR BLEND TO TRUE IN GANNL.DAT'
STOP
end if
c end of crossover
!Perform Mutation on Children
do j=1,no_para
rnd=ran1(idum)
if(rnd.lt.mue) then
child(j)=sigma*(xmax(j)-xmin(j))*gasdev(idum)+
& child(j)
end if
end do
do j=1,no_para
if(child(j).gt.xmax(j)) child(j)=xmax(j)
if(child(j).lt.xmin(j)) child(j)=xmin(j)
end do
!Make New Population Replacing Worst Preformer with Child
!Replace Worst Preformer with Child
!Find worst Fitness for the Generation
Worstfitness=0.0d0
do i=1,mempops
if(totalfit(i) .gt. worstfitness) then
worstfitness=totalfit(i)
iworst=i
end if
end do
do j=1,no_para
var(j,iworst)=child(j)
enddo
do jk=1,no_para
ys(9,jk)=var(jk,iworst)
enddo
open(unit=47,file='SaveCurrentVariables.dat',status='unknown')
write(47,*)0
write(47,*)'Current: Gen#,Member#',l,iworst
do jk=1,no_para
write(47,*)var(jk,iworst)
end do
close(47)
ys(4,3)=l
ys(4,2)=iworst
call setup
91
do j=1,ngls
fitness(j,iworst)=sngl(ys(7,j))
enddo
if(ipopulation.eq.-1) then
write(42,*)'Generation#',l
end if
do j=1,mempops
iarray(j)=j
end do
if(ipopulation.eq.-1) then
write(42,712)(names(i),i=1,no_para),('fitness')
write(42,713)iarray(iworst),(var(ii,iarray(iworst)),ii=1,no_para),
& (fitness(ii,iarray(iworst)),ii=1,ngoals)
write(42,*)' '
end if
do i=1,mempops
totalfit(i)=0.0d0
do j=1, ngoals
totalfit(i)=totalfit(i)+fitness(j,i)
end do
totalfit(i)=totalfit(i)
end do
!Test to see if mutation amount needs to be adjusted
if(ivar_mutation.eq.-1)then
k=k+1
do i=1,mempops
if(totalfit(i).lt. bestfitness)then
ibetter=ibetter+1
write(*,*)'ibetter',ibetter,totalfit(i),bestfitness
end if
end do
if(k.eq.iK_check)then
better=float(ibetter)
pop=float(k)
amountbetter=better/pop
if(amountbetter.gt.0.2d0)sigma=sigma*1.2d0
if(amountbetter.lt.0.2d0)sigma=sigma*.8d0
if(sigma.gt.0.8)sigma=0.8
write(45,*)l,amountbetter,sigma
k=0
ibetter=0
end if
end if
!end of variable mutation amount routine
92
!Find Best Fitness for the Generation
do i=1,mempops
if(totalfit(i) .lt. bestfitness) then
bestfitness=totalfit(i)
ielite=i
end if
end do
!Store Variables for best Population
open(unit=46,file='Best_POP.dat',status='unknown')
write(46,*)0
write(46,*)'Best Member:
Gen#,Member#,Fit',l,ielite,bestfitness
do i=1,no_para
write(46,*)var(i,ielite)
end do
close(46)
write(56,717)l,ielite,(var(ii,ielite),ii=1,no_para),
& (fitness(ii,ielite),ii=1,ngoals)
717 format(1x,i7,1x,i3,1x,120(e14.8,1x))
write(41,*)l,ielite,bestfitness
end do
close(56)
end
FUNCTION gasdev(idum)
INTEGER idum
REAL gasdev
CU USES ran1
INTEGER iset
REAL fac,gset,rsq,v1,v2,ran1
SAVE iset,gset
DATA iset/0/
if (idum.lt.0) iset=0
if (iset.eq.0) then
1 v1=2.*ran1(idum)-1.
v2=2.*ran1(idum)-1.
rsq=v1**2+v2**2
if(rsq.ge.1..or.rsq.eq.0.)goto 1
fac=sqrt(-2.*log(rsq)/rsq)
gset=v1*fac
gasdev=v2*fac
iset=1
else
gasdev=gset
iset=0
endif
return
END
93
FUNCTION ran1(idum)
INTEGER idum,IA,IM,IQ,IR,NTAB,NDIV
REAL ran1,AM,EPS,RNMX
PARAMETER (IA=16807,IM=2147483647,AM=1./IM,IQ=127773,IR=2836,
*NTAB=32,NDIV=1+(IM-1)/NTAB,EPS=1.2e-7,RNMX=1.-EPS)
INTEGER j,k,iv(NTAB),iy
SAVE iv,iy
DATA iv /NTAB*0/, iy /0/
if (idum.le.0.or.iy.eq.0) then
idum=max(-idum,1)
do 11 j=NTAB+8,1,-1
k=idum/IQ
idum=IA*(idum-k*IQ)-IR*k
if (idum.lt.0) idum=idum+IM
if (j.le.NTAB) iv(j)=idum
11 continue
iy=iv(1)
endif
k=idum/IQ
idum=IA*(idum-k*IQ)-IR*k
if (idum.lt.0) idum=idum+IM
j=1+iy/NDIV
iy=iv(j)
iv(j)=idum
ran1=min(AM*iy,RNMX)
return
END
94
APPENDIX B: Single Stage Solid Real GA Input File
.true. ;steady_state ONLY 1 GA TYPE TRUE
.false. ;population check true writes popul
.false. ;uniform x (50% parent1 and parent2
.true. ;Blend x (blend of parents)
.false. ;singlepointx
.false. ;var_mutation true allows mutation
500 ;kcheck # of gen before 1/5 rule ck
0.05 ;xmutation_rate how much mutation
1.0 ;xmutation_amount % of variables muta
1 ;ngoals
29 ;no_para
'rnos/rbod' 0.6 0.4 ;xmax-xmin
'lnos/dbod' 3.0 1.5 ;xmax-xmin
'kfuel___3' 9.0 1.0 ;xmax-xmin
'rpvar___4' 0.8 0.3 ;xmax-xmin
'rivar___5' 0.8 0.1 ;xmax-xmin
'nsp_____6' 11.0 5.0 ;xmax-xmin
'fvar____7' 0.1 0.03 ;xmax-xmin
'eps_____8' 0.95 0.6 ;xmax-xmin
'ptang___9' 5.0 1.0 ;xmax-xmin
'fn1____10' 0.99 0.66 ;xmax-xmin
'dth/Db_11' .30 .25 ;xmax-xmin
'Lb/Db__12' 15.0 10.0 ;xmax-xmin
'dbody__13' .64 .25 ;xmax-xmin
'b2w/DB_14' .05 .01 ;xmax-xmin
'crw/DB_15' .05 0.01 ;xmax-xmin
'trw____16' 0.99 0.90 ;xmax-xmin
'wleswe_17' 30.0 1.0 ;xmax-xmin
'xLEw___18' .25 0.20 ;xmax-xmin
'b2t/DB_19' 1.4 1.2 ;xmax-xmin
'crt/DB_20' 1.1 0.9 ;xmax-xmin
'trt____21' 0.99 0.50 ;xmax-xmin
'tleswp_22' 30.0 1.0 ;xmax-xmin
'xTEt___23' 1.00 0.95 ;xmax_xmin
'APdly__24' 4001.00 3999.00 ;xmax-xmin
'APtau__25' .8 .4 ;xmax-xmin
'APzeta_26' .9 0.4 ;xmax-xmin
'APwcr__27' 70.0 40.0 ;xmax-xmin
'pngain_28' 5.0 3.0 ;xmax-xmin
'thet0__29' 85.0 40.0 ;xmax-xmin
1
3
10000
95
APPENDIX C: Single Stage Solid Binary GA Input File
.false. ;micro
.false. ;pareto
.false. ;steady_state
.false. ;maximize
.true. ;elitist
.true. ;creep
.false. ;uniform
.false. ;restart
.true. ;remove_dup
.false. ;niche
.false. ;phenotype
0.04 ;niche_diversity_percent_goal
67741 ;iseed
0.9 ;pcross
0.002 ;pmutation
0.05 ;pcreep
2 ;ngoals
1.0,1.0 ;xgls(j+1),xgls(j+2) . . .
1. ;domst
2550 ;convrg_chk
29 ;no_para
'rnos/rbod' 0.6 0.4 0.1 .false. ;xmax-xmin-resolution-niche_par
'lnos/dbod' 3.0 1.5 0.1 .false. ;xmax_xmin_resolution_niche_par
'kfuel___3' 9.0 1.0 1.0 .false. ;xmax_xmin_resolution_niche_par
'rpvar___4' 0.8 0.3 0.1 .false. ;xmax_xmin_resolution_niche_par
'rivar___5' 0.8 0.1 0.1 .false. ;xmax_xmin_resolution_niche_par
'nsp_____6' 11.0 5.0 1.0 .false. ;xmax_xmin_resolution_niche_par
'fvar____7' 0.1 0.03 0.01 .false. ;xmax_xmin_resolution_niche_par
'eps_____8' 0.95 0.6 0.01 .false. ;xmax_xmin_resolution_niche_par
'ptang___9' 5.0 1.0 1.0 .false. ;xmax_xmin_resolution_niche_par
'fn1____10' 0.99 0.66 0.01 .false. ;xmax_xmin_resolution_niche_par
'dth/Db_11' .30 .25 0.002 .false. ;xmax_xmin_resolution_niche_par
'Lb/Db__12' 15.0 10.0 .5 .false. ;xmax_xmin_resolution_niche_par
'dbody__13' .64 .25 .002 .false. ;xmax_xmin_resolution_niche_par
'b2w/DB_14' .05 .01 0.01 .false. ;xmax_xmin_resolution_niche_par
'crw/DB_15' .05 0.01 0.01 .false. ;xmax_xmin_resolution_niche_par
'trw____16' 0.99 0.90 0.01 .false. ;xmax_xmin_resolution_niche_par
'wleswe_17' 30.0 1.0 1.0 .false. ;xmax_xmin_resolution_niche_par
'xLEw___18' .25 0.20 0.01 .false. ;xmax_xmin_resolution_niche_par
'b2t/DB_19' 1.4 1.2 0.1 .false. ;xmax_xmin_resolution_niche_par
'crt/DB_20' 1.1 0.9 0.1 .false. ;xmax_xmin_resolution_niche_par
'trt____21' 0.99 0.50 0.01 .false. ;xmax_xmin_resolution_niche_par
'tleswp_22' 30.0 1.0 1.0 .false. ;xmax_xmin_resolution_niche_par
'xTEt___23' 1.00 0.95 0.01 .false. ;xmax_xmin_resolution_niche_par
'APdly__24' 4001.00 3999.00 1.00 .false. ;xmax-xmin-resolution-niche_par
'APtau__25' .8 .4 0.1 .false. ;xmax_xmin_resolution_niche_par
'APzeta_26' .9 0.4 0.01 .false. ;xmax_xmin_resolution_niche_par
'APwcr__27' 70.0 40.0 1.0 .false. ;xmax_xmin_resolution_niche_par
'pngain_28' 5.0 3.0 0.1 .false. ;xmax_xmin_resolution_niche_par
'thet0__29' 85.0 40.0 1.0 .false. ;xmax-xmin-resolution-niche_par
96
1
100
100
97
APPENDIX D: Two Stage Solid Real GA Input File
.false. ;population check true writes popul
.false. ;uniform x (50% parent1 and parent2
.true. ;Blend x (blend of parents)
.false. ;singlepointx
.false. ;var_mutation true allows mutation
500 ;kcheck # of gen before 1/5 rule ck
0.05 ;xmutation_rate how much mutation
1.0 ;xmutation_amount % of variables muta
2 ;ngoals
46 ;no_para
'rnos/rbd 1' 0.6 0.4 ;xmax xmin
'lnos/dbd 2' 3.0 1.5 ;xmax xmin
'kfuel 3' 6.1 6.0 ;xmax xmin
'rpvar 4' 0.5 0.4 ;xmax xmin
'rivar 5' 0.6 0.5 ;xmax xmin
'nsp 6' 9.1 9.0 ;xmax xmin
'fvar 7' 0.1 0.07 ;xmax xmin
'eps 8' 0.9 0.8 ;xmax xmin
'ptang 9' 10.1 10.0 ;xmax xmin
'fnl 10' 0.99 0.88 ;xmax xmin
'dth/Db 11' .30 .28 ;xmax xmin
'Lb1/Db 12' 14.1 10.0 ;xmax xmin
'dbody1 13' .8 .4 ;xmax xmin
'b2t/DB 14' 1.4 1.2 ;xmax xmin
'crt/DB 15' 1.1 0.9 ;xmax xmin
'trt 16' 0.99 0.96 ;xmax xmin
'tleswp 17' 40.0 2.0 ;xmax xmin
'xTEt/Lb 18' 1.00 0.98 ;xmax xmin
'kfuel 19' 6.1 6.0 ;xmax xmin
'rpvar 20' 0.6 0.4 ;xmax xmin
'rivar 21' 0.6 0.5 ;xmax xmin
'nsp 22' 9.1 9.0 ;xmax xmin
'fvar 23' 0.1 0.07 ;xmax xmin
'eps 24' 0.9 0.8 ;xmax xmin
'ptang 25' 10.1 10.0 ;xmax xmin
'fnl 26' 0.99 0.88 ;xmax xmin
'Dth/Db 27' .32 .31 ;xmax xmin
'Lb2/Db 28' 10.0 7.0 ;xmax xmin
'dbody2 29' 0.9 0.60 ;xmax xmin
'b2t/DB 30' 1.4 1.2 ;xmax xmin
'crt/DB 31' 1.1 0.9 ;xmax xmin
'trt 32' 0.99 0.96 ;xmax xmin
'tLeswp 33' 40.0 2.0 ;xmax xmin
'xTEt/Lb 34' 1.00 0.98 ;xmax xmin
'tsep2 35' 2.6 1.6 ;xmax xmin
'APdly1 36' 4001.0 4000.0 ;xmax xmin
'APtc1 37' .7 .4 ;xmax xmin
'APdmp1 38' .9 0.6 ;xmax xmin
'cohz1 39' 60.0 50.0 ;xmax xmin
98
'pngain1 40' 6.0 3.0 ;xmax xmin
'APdly1 41' 4001.0 4000.0 ;xmax xmin
'APtc2 42' .7 .4 ;xmax xmin
'APdmp2 43' .9 0.6 ;xmax xmin
'cohz2 44' 60.0 50.0 ;xmax xmin
'pngain2 45' 6.0 3.0 ;xmax xmin
'thet0 46' 86.0 45.0 ;xmax xmin
1 ;freq
3 ;no members
10000 ;no generations
99
APPENDIX E: Two Stage Solid Binary GA Input File
. .false. ; micro
.false. ; pareto
.false. ; steady_state
.false. ; maximize
.true. ; elitist
.true. ; creep
.false. ; uniform
.false. ; restart
.true. ; remove_dup
.false. ; niche
.false. ; phenotype
0.04 ; niche diversity percentile goal
67742 ; iseed
0.9 ; pcross
0.002 ; pmutation
0.05 ; pcreep
2 ; ngoals
1.0,1.0 ; xgls(j)
1. ; domst
2550 ; convrg_chk (end of group2)
46 ; no_para
'rnos/rbd 1' 0.6 0.4 0.1 .false. ;xmax xmin resolution niche_par
'lnos/dbd 2' 3.0 1.5 0.1 .false. ;xmax xmin resolution niche_par
'kfuel 3' 6.1 6.0 0.1 .false. ;xmax xmin resolution niche_par
'rpvar 4' 0.5 0.4 0.1 .false. ;xmax xmin resolution niche_par
'rivar 5' 0.6 0.5 0.1 .false. ;xmax xmin resolution niche_par
'nsp 6' 9.1 9.0 0.1 .false. ;xmax xmin resolution niche_par
'fvar 7' 0.1 0.07 0.01 .false. ;xmax xmin resolution niche_par
'eps 8' 0.9 0.8 0.01 .false. ;xmax xmin resolution niche_par
'ptang 9' 14.1 10.0 0.1 .false. ;xmax xmin resolution niche_par
'fnl 10' 0.99 0.88 0.01 .false. ;xmax xmin resolution niche_par
'dth/Db 11' .30 .28 0.01 .false. ;xmax xmin resolution niche_par
'Lb1/Db 12' 10.1 10.0 .1 .false. ;xmax xmin resolution niche_par
'dbody1 13' .8 .4 .01 .false. ;xmax xmin resolution niche_par
'b2t/DB 14' 1.4 1.2 0.1 .false. ;xmax xmin resolution niche_par
'crt/DB 15' 1.1 0.9 0.1 .false. ;xmax xmin resolution niche_par
'trt 16' 0.99 0.96 0.01 .false. ;xmax xmin resolution niche_par
'tleswp 17' 40.0 2.0 2.0 .false. ;xmax xmin resolution niche_par
'xTEt/Lb 18' 1.00 0.98 0.01 .false. ;xmax xmin resolution niche_par
'kfuel 19' 6.1 6.0 0.1 .false. ;xmax xmin resolution niche_par
'rpvar 20' 0.6 0.4 0.1 .false. ;xmax xmin resolution niche_par
'rivar 21' 0.6 0.5 0.1 .false. ;xmax xmin resolution niche_par
'nsp 22' 9.1 9.0 0.1 .false. ;xmax xmin resolution niche_par
'fvar 23' 0.1 0.07 0.01 .false. ;xmax xmin resolution niche_par
'eps 24' 0.9 0.8 0.01 .false. ;xmax,xmin,resolution,niche_par
'ptang 25' 10.1 10.0 .1 .false. ;xmax xmin resolution niche_par
'fnl 26' 0.99 0.88 0.01 .false. ;xmax xmin resolution niche_par
'Dth/Db 27' .32 .31 0.01 .false. ;xmax xmin resolution niche_par
'Lb2/Db 28' 10.0 7.0 .5 .false. ;xmax xmin resolution niche_par
100
'dbody2 29' 0.9 0.6 .01 .false. ;xmax xmin resolution niche_par
'b2t/DB 30' 1.4 1.2 0.1 .false. ;xmax xmin resolution niche_par
'crt/DB 31' 1.1 0.9 0.1 .false. ;xmax xmin resolution niche_par
'trt 32' 0.99 0.96 0.01 .false. ;xmax xmin resolution niche_par
'tLeswp 33' 40.0 2.0 2.0 .false. ;xmax xmin resolution niche_par
'xTEt/Lb 34' 1.00 0.98 0.01 .false. ;xmax xmin resolution niche_par
'tsep2 35' 2.6 1.6 0.1 .false. ;xmax xmin resolution niche_par
'APdly1 36' 4001.0 4000.0 1.0 .false. ;xmax xmin-resolution-niche_par
'APtc1 37' .7 .4 .1 .false. ;xmax xmin resolution niche_par
'APdmp1 38' .9 0.6 0.01 .false. ;xmax xmin resolution niche_par
'cohz1 39' 60.0 50.0 1.0 .false. ;xmax xmin resolution niche_par
'pngain1 40' 6.0 3.0 0.5 .false. ;xmax xmin resolution niche_par
'APdly1 41' 4001.0 4000.0 1.0 .false. ;xmax xmin-resolution-niche_par
'APtc2 42' .7 .4 .1 .false. ;xmax xmin resolution niche_par
'APdmp2 43' .9 0.6 0.01 .false. ;xmax xmin resolution niche_par
'cohz2 44' 60.0 50.0 1.0 .false. ;xmax xmin resolution niche_par
'pngain2 45' 6.0 3.0 0.5 .false. ;xmax xmin resolution niche_par
'thet0 46' 86.0 45.0 1.0 .false. ;xmax xmin resolution niche_par
1 ;freq
100 ;no members
100 ;no generations
101
APPENDIX F: Single Stage Liquid Real GA Input File
.true. ;steady_state ONLY 1 GA TYPE TRUE
.false. ;population check true writes popul
.false. ;uniform x (50% parent1 and parent2
.true. ;Blend x (blend of parents)
.false. ;singlepointx
.false. ;var_mutation true allows mutation
500 ;kcheck # of gen before 1/5 rule ck
0.05 ;xmutation_rate how much mutation
1.0 ;xmutation_amount % of variables muta
1 ;ngoals
26 ;no_para
'dbody 1' , 6.6 , 5.0 ;xmax,xmin
'kprop 2' , 4.1 , 4.0 ;xmax,xmin
'eqr 3' , .7 , .6 ;xmax,xmin
'po 4' , 2800. , 2000. ;xmax,xmin
'dnosDB 5' , 1.0 , .5 ;xmax,xmin
'blnosDB 6' , 2.0 , 1.00 ;xmax,xmin
'dstarDB 7' , .16 , .08 ;xmax,xmin
'eps 8' , 30. , 5. ;xmax,xmin
'fnl 9' , 0.9 , 0.6 ;xmax,xmin
'tb 10' , 150.0 , 70.00 ;xmax,xmin
'crwDB 11' , .04 , .02 ;xmax,xmin
'trw 12' , 0.92 , 0.89 ;xmax,xmin
'b2wDB 13' , 0.05 , 0.02 ;xmax,xmin
'angLE1 14' , 5.0 , 1.00 ;xmax,xmin
'xLEwTL 15' , 0.50 , 0.10 ;xmax,xmin
'crtDB 16' , 1.10 , 1.00 ;xmax,xmin
'trt 17' , 0.99 , 0.50 ;xmax,xmin
'b2ftDB 18' , 1.20 , 1.00 ;xmax,xmin
'angLE2 19' , 44.0 , 0.00 ;xmax,xmin
'xTEtTL 20' , 1.00 , 0.95 ;xmax,xmin
'Apdly 21' , 5000.0 , 4999.0 ;xmax,xmin
'tau 22' , 0.80 , 0.10 ;xmax,xmin
'zeta 23' , 0.99 , 0.50 ;xmax,xmin
'Cohz 24' , 60.00 , 40.0 ;xmax,xmin
'pronvg 25' , 7.0 , 3.0 ;xmax,xmin
'theta0 26' , 88.0 , 76.0 ;xmax,xmin
1 ; ifreq
3 ; mempops
10000 ; maxgen
102
APPENDIX G: Single Stage Liquid Binary GA Input File
.false. ; micro
.false. ; pareto
.false. ; steady_state
.false. ; maximize
.true. ; elitist
.true. ; creep
.false. ; uniform
.false. ; restart
.true. ; remove_dup
.true. ; niche
.true. ; phenotype
0.5 ; niche diversity percentile goal
61732 ; iseed
0.9 ; pcross
0.002 ; pmutation
0.05 ; pcreep
1 ; ngoals
1.0 ; xgls(j)
2550 ; convrg_chk (end of group2)
26 ; no_para
'dbody 1' , 6.6 , 5.0 , 0.1 , .false. ;xmax,xmin,resolution,niche_par
'kprop 2' , 4.1 , 4.0 , 0.1 , .false. ;xmax,xmin,resolution,niche_par
'eqr 3' , .7 , .6 , 0.1 , .false. ;xmax,xmin,resolution,niche_par
'po 4' , 2800. , 2000. , 10.0 , .true. ;xmax,xmin,resolution,niche_par
'dnosDB 5' , 1.0 , .5 , .1 , .false. ;xmax,xmin,resolution,niche_par
'blnosDB 6' , 2.0 , 1.00 , .1 , .false. ;xmax,xmin,resolution,niche_par
'dstarDB 7' , .16 , .08 , 0.01 , .false. ;xmax,xmin,resolution,niche_par
'eps 8' , 30. , 5. , 0.2 , .false. ;xmax,xmin,resolution,niche_par
'fnl 9' , 0.9 , 0.6 , 0.05 , .false. ;xmax,xmin,resolution,niche_par
'tb 10' , 150.0 , 70.00 , 1.0 , .false. ;xmax,xmin,resolution,niche_par
'crwDB 11' , .04 , .02 , 0.01 , .false. ;xmax,xmin,resolution,niche_par
'trw 12' , 0.92 , 0.89 , 0.01 , .false. ;xmax,xmin,resolution,niche_par
'b2wDB 13' , 0.05 , 0.02 , 0.01 , .false. ;xmax,xmin,resolution,niche_par
'angLE1 14' , 5.0 , 1.00 , 1.00 , .false. ;xmax,xmin,resolution,niche_par
'xLEwTL 15' , 0.50 , 0.10 , 0.01 , .false. ;xmax,xmin,resolution,niche_par
'crtDB 16' , 1.10 , 1.00 , 0.10 , .false. ;xmax,xmin,resolution,niche_par
'trt 17' , 0.99 , 0.50 , 0.01 , .false. ;xmax,xmin,resolution,niche_par
'b2ftDB 18' , 1.20 , 1.00 , 0.10 , .false. ;xmax,xmin,resolution,niche_par
'angLE2 19' , 44.0 , 0.00 , 2.00 , .false. ;xmax,xmin,resolution,niche_par
'xTEtTL 20' , 1.00 , 0.95 , 0.01 , .false. ;xmax,xmin,resolution,niche_par
'Apdly 21' , 5000.0 , 4999.0 , 1.0 , .false. ;xmax,xmin,resolution,niche_par
'tau 22' , 0.80 , 0.10 , 0.01 , .false. ;xmax,xmin,resolution,niche_par
'zeta 23' , 0.99 , 0.50 , 0.01 , .false. ;xmax,xmin,resolution,niche_par
'Cohz 24' , 60.00 , 40.0 , 1.00 , .false. ;xmax-xmin-resolution-niche_par
'pronvg 25' , 7.0 , 3.0 , 0.20 , .false. ;xmax,xmin,resolution,niche_par
'theta0 26' , 88.0 , 76.0 , 1.00 , .false. ;xmax,xmin,resolution,niche_par
1 ; ifreq
100 ; mempops
100 ; maxgen