AN IMPROVED ITERATIVE METHOD FOR SOLVING GENERAL SYSTEM OF EQUATIONS VIA GENE...
ABOU-NAOUM_AMANE_ROUGUI_Article
1. 1
Abstract— This paper briefly presents the concept of genetic
algorithms (GAs) which are evolutionary meta-heuristics popular
in many domains. It starts with an introduction of the natural
evolution process that was the inspiration behind these
algorithms. Then it describes how this kind of algorithms is
implemented. After that, we present the application of GAs on
different domains such as transportation problems and
convolutional decoders. Finally we discuss the benefits of parallel
computing for GAs.
Index Terms—Genetic algorithms, evolution process, natural
selection, transportation problem, mathematical model, crossover,
mutation, turbo-codes, GPU programming, data mining,
I. INTRODUCTION
Genetic evolution consists in the change in the inherited
characteristics of a living being over successive generations. It
is the main key to the survivability of this being because it
permits it to adapt to its environment. Throughout the ages,
while a specie is genetically evolving, the process of natural
selection allows the survival of the fittest [1]. This complex
and amazing system was the source of inspiration behind
Genetic Algorithms. They are a family of computational
models that imitate the evolution and natural selection
process.
We can describe genetic evolution as it exists in nature in a
minimalistic way as follows:
If you take a population of our ancestors living in the wild
10000 years ago, it is made of three types of individuals (the
good, the average and the bad). The individuals that are most
likely to survive while growing up and the ones who are most
likely to copulate are the good ones.
Consequently, from this generation to the generation that
comes right after, a selection process occurs.
In the reproduction process, the genotype of the progeny is
composed of a combination of the chromosomes of the
parents. But we must not forget that there are also several
genetic processes that appear among which:
● Mutation: a permanent change in the DNA sequence
that makes up a gene.
● Crossover: the exchange of a segment of DNA
between two homologous chromosomes.
The new-born population resulting from the reproduction
inherits from the characteristics of the previous generation and
present at the same time individuals with entirely new
characteristics.
In sum, natural selection only keeps the best individuals while
eliminating the ones that have inconvenient characteristics,
then genetic operators create new characteristics to the
population.
More specifically, GAs are population-based metaheuristics
with a search strategy that has a learning component. In fact,
metaheuristics are methods that provide a “good” solution
(approximation) to a problem that cannot be solved in an exact
way by using conventional methods in an acceptable
resolution time [3]. A good solution means a solution that is as
close as possible to the optimum one. Metaheuristics in
general, and more specifically GAs, have been applied to
solve timetabling, scheduling, global optimization, and many
other engineering problems [2].
We will explain how GAs are implemented in section II,
then we will discuss the use of GAs to solve transportation
problems by minimizing the total transportation cost, then a
GA based convolutional decoder is presented in section IV
and finally we will explain how the use of parallel computing
can improve the performance of GAs in section V.
II. IMPLEMENTATION OF GAS
Genetic algorithms are evolutionary algorithms i.e. they
mimic nature by running on a population that evolves until
finding a good solution.
This evolution starts with initializing the population [2]. An
intuitive way to do this is by using a random sample of
solutions so as to increase diversity.
The next step is to represent these solutions in a way that
allows the algorithm to run. As far as the problem to be solved
is concerned, this choice may be more or less important and
difficult.
In Fig 1, the evaluation of the current population solutions
goes through the calculation of the fitness metric witch assigns
a metric to every one of them considering at the same time the
value of the objective function (the function to be optimized )
and the constraints. The choice of this metric is another
important issue of this kind of algorithms. At the end of this
step a termination condition is checked. If this condition is not
satisfied, a new population is generated using three genetic
operators namely selection, crossover and mutation [2].
Application of Genetic Algorithms
Anthony Abou Naoum, Othmane Amane and Yasser Rougui
2. 2
1 0 1 1 1 0 0 1 0 0
0 0 1 0 0 1 0 1 0 1
1 0 1 1 0 1 0 1 0 0
0 0 1 0 1 0 0 1 0 1
Parents
Children
Crossover
Fig 1: Genetic Algorithms mechanism [21]
a) Selection
Selection is how the breeding stock of a population is chosen.
This means that the best individuals according to the fitness
function are preferred and allowed to pass to the next
generation. The fitness function can be either an objective
function or a subjective judgment.
b) Crossover
Two individuals from the breeding stock exchange portions of
the information they carry, so as to create two new
individuals. This operator is likely to create better individuals
each generation.
Fig 2: Illustration of the crossover
c) Mutation
In order to maintain diversity within the population and avoid
early convergence, some of the new individuals have one or
some of their bits changed, with a low probability (defined by
the user).
The change occurring here could be of many different types:
Flip Bit, Boundary, Non-Uniform, Uniform, and Gaussian.
1 0 1 1 1 0 0 1 0 0
1 0 1 1 0 0 0 1 0 0
Fig 3: Illustration of the mutation
III. THE BALANCED TRANSPORTATION PROBLEM
A. Nature of the problem
The transportation problem [4] took this name because it
initially arose in the context of determining optimal shipping
patterns. However, we can use the same mathematical model
for many problems that have nothing to do with transportation.
Therefore, these problems can be solved by the same solution
procedures.
B. Prototype of a transportation problem
To illustrate a typical transportation problem, we suppose
that homogeneous goods have to be transported from m
factories to n warehouses. Factory i (i = 1, 2, …., n) produces
ai units and warehouse j (j = 1, 2, …., m) requires bj units.
The cost of shipping from factory i to warehouse j obtained by
multiplying the amount of goods shipped (xij) by the cost of
unit transport between i and j (cij).
The solution of the problem is a shipping pattern that
minimizes the total transportation cost.
C. Mathematical Model
We call a balanced transportation problem a problem where
the total demand is equal to the total supply [4]:
(1)
We have to find xij (i = 1, 2, …., n; j = 1, 2, …., m) in order to
minimize
(2)
3. 3
Subject to restrictions:
For j = 1, 2, …, m
(3)
For i = 1, 2, …, n
(4)
xij >= 0
D. Solution Methods
There are several solution methods for transportation
problems. The Vogel’s Approximation Method (VAM) [5] and
the least cost method (LCM) [6] are two easily-implemented
ways to solve small to mid-sized linear programming
problems.
However, when the dimensions of the problem are very
high, which means the quantity of data that needs to be treated
is immense, or the problem is non-linear or has a fixed-
charge[7], conventional solution methods do not work.
Therefore, meta-heuristics such as GAs are the appropriate
solution ways.
E. Solving using a GA
1. GA parameters
To be able to solve this problem using a GA you have to
adapt the mathematical model to the mechanism used and set
the several parameters [8] in the way that optimizes the solution
search:
Encoding: each individual is represented by a matrix
(m x n) that shows the delivery schema of goods
between the m sources to the n destinations. Each
element of the matrix is a non-negative integer that
represents the quantity of goods delivered between a
sender and a receiver.
Initial population: we suppose that the chose initial
population size is k which is a strictly positive
integer. Each individual is represented by a two-
dimensional matrix (m x n), this is why, in order to
initialize this population we have to create k
individuals, resulting in a three dimensional matrix
(m x n x k) that represents our population.
Where the first two dimensions represent each
individual and the third represents the set of
individuals (ranging from individual 1 to k).
Fitness function: the fitness of each individual in the
population is measure by calculating the total
transportation cost of this individual :
Crossover: crossover is done by 2 parents (individuals)
and leads to an offspring of 2 individuals and
choosing a random column A. The values in column
A of the first child come from the father (column A)
while the values of the same column of the second
child come from the mother.
Even though the values of the other columns of the
first child should be coming from the mother and
those of the second child from the father, these values
are modified in a way that satisfies the constraints of
the problem. [8]
Mutation [7]: mutation is conducted on a random
individual by changing one or more values in the
matrix that represents him. The probability of
mutation is very small and changing the value of xij
in the matrix means we have to modify values in the
matrix to satisfy the constraints on the row (eq. 4)
and on the column (eq. 3). In order to have a
minimum change on the individual we have to
change 3 other values which are xaj, xjb, and xab where
‘a’ is a randomly chosen column and ‘b’ is a
randomly chosen row. The model of the matrix after
mutation becomes :
… . … . …
… . … . …
… xij … xaj …
… . … . …
… . … . …
… xjb … xab …
… . … . …
… . … . …
2. The evolutionary process:
The evolutionary process [8] is described as follows:
Parents are chosen randomly for crossover to create offspring.
After the crossover, mutation occurs on one or more
individuals. Finally, because we have a fixed population size k
the selection process occurs by calculating the fitness (the total
transportation cost) for all individuals (parents, offspring,
mutants). This allows all the individuals to compete by
comparing their total cost of transportation and choosing the k
individuals that have the lowest total cost to go on to the next
generation.
3. Example:
In this example, we set the population size k to 100,
crossover probability to 0.1 and mutation probability to 10-4.
We also set the number of cycles to 500 which means after
500 generations the best individual of the population is chosen
as the solution and his total cost is compared with the results
of the other methods (VAM and the least cost method).
Representation of the problem:
20 18 22 25 170
15 25 30 15 200
45 30 40 35 180
130 160 120 140
Table 1: Cost matrix [8]
4. 4
The numbers in bold represent the cost of transportation, the
numbers in the 4th
row represent the demand and the numbers
in the 5th
column represent the supply. We can see that the
total supply is equal to the total demand (550) which means
this is a balanced transportation problem.
After running the algorithm (programmed on Matlab
v7.13.0.564) [8] 100 times, the program was checked for the
best results. The solution found had a total cost of 12596. The
resolution by VAM leads to a total cost of 12200 and the
result obtained with the least cost method is 12950.
62 20 83 2
59 0 6 13
9 140 31 7
Table 2: GA results [8]
0 160 10 0
130 0 0 70
0 0 110 70
Table 3: least cost method results [8]
70 0 100 0
60 0 0 140
0 160 20 0
Table 4: VAM results [8]
4. Result analysis:
The example above shows that FOR A SMALL PROBLEM, GAs
are capable of having ACCEPTABLE solutions. The result of the
GA is better than that of the least cost method but worse than
that of the VAM. But we should not forget that the
implementation of a GA is much more expensive in time and
in materials than the other two solutions. The latter solve the
problem in a number of iterations of THE ORDER OF THE
PROBLEM SIZE (n * k), whereas the genetic method, with each
generation, constructs a set of potential solutions to the
problem [8]. However, GAs hold promise of being useful in
problems with larger dimensions [7], non-linear and fixed-
charge problems where the standard transportation methods
cannot be used [8], and other optimization problems [7].
In fact, for a nonlinear transportation problem, the solution
found by the GA is only 0.2% different than the optimum
found by Gams (a commercial system) [7].
IV. A GENETIC ALGORITHM BASED
CONVOLUTIONAL DECODER
This section's aim is to use genetic algorithms so as to build
a new decoder for channel coding. We also compare this
algorithm with the few attempts from the literature that
achieve the same goal.
Channel coding is used to protect data from the errors
introduced while transmitting information through a channel.
One of its strategies is forward error correction which consists
of adding extra bits (parity bits) to the information message
and thereby giving the receiver more chances to correct the
errors in the received message.
The channel coding process can be described as follows:
given a sequence of information bits, a set of redundancy bits
are added then the whole message is sent. The channel output
can be written m + n where n is the noise sequence. Getting
this noisy message, the receiver should evaluate the original
message m. In practice two ways are used to encode the
original message: Block codes and convolutional codes.
The convolutional codes were introduced by P. Elias at [9].
They are very popular due to their good performances and the
simplicity of their decoding process. In practice, they are
mostly decoded using Viterbi algorithm [10] and MAP decoder
[11]. Convolutional codes are used today in different standards
such as 802.11 and 802.16, they are also used as component
codes for turbo codes [12].
Recently, optimization methods and artificial intelligence
algorithms were introduced to decode this type of codes ([13]
for example). In this section, we use Genetic algorithms to
implement ML decoding of recursive systematic convolutional
codes. Related works were lead to introduce these algorithms
in turbo codes as in [14] or to decode product block codes like
[15] and most of them show good performances. In [15], it was
shown that genetic algorithms based decoder outperforms the
Viterbi decoder, especially for high SNRs. In this paper, we
describe an efficient decoding algorithm for codes with large
memory size and small block length.
The initial population is generated from the received
sequence by making a hard decision on both the information
bits part and the parity bits part. Let (x) be the received
sequence, the first individual is made by applying a hard
decision (nearest value) on the information bits, the second is
the message corresponding to the demodulation of the first
parity part and so on. The rest of the individuals of the initial
population are generated by adding random error patterns to
these first individuals.
The selection operator used in our algorithm is the
tournament selection. It has been shown in [16] that this
selection operator has better or equivalent convergence and
computational complexity proprieties than any other selection
operator known in the literature. The selection procedure is
performed as follows: For every individual a random other one
is chosen and the one who has the best fitness is kept in the
mating pool (the fitness of a solution being its distance from
the received sequence). Every solution has two, one or no
copies in the mating pool.
5. 5
To create new solutions, the decoder randomly choose two
individuals from the mating pool and crossover them. The
goal here is to get a new individual which has better (or at
least the same) likelihood as its parents. Therefore, a greedy
algorithm is used during the crossover. Actually, if the parents
have the same bit in a given position the child inherits this bit,
else the child's bit it chosen so as to minimize the distance
from the received sequence (taking into consideration the
corresponding parities as well). Moreover, between the parents
and the child only the one who has the best fitness is kept in
the new population.
Finally, to cover the biggest part of the search space, the
algorithm adds random correction patterns (sparse information
vectors where the frequency of ones depends on the variance
of the noise in the channel and the the statistical distribution of
the error patterns of the encoder) to the new individuals. This
mutation operator is used in a rate Pm.
The following table shows the computational and the
memory complexity of the algorithm:
Computational
complexity
Memory
complexity
Initial
population
generating
O(Ni*n) O(Ni*n)
Fitness
calculation
O(Ni*Ng*n) O(Ni)
Selection
operator
O(Ni*Ng) O(Ni)
Crossover O(Ni*Ng*n) O(n)
mutation O(Ni*Ng*Pm) O(1)
Table 5: Computational and memory complexity of the algorithm
In the previous table, Ng is the number of generations, Ni
the number of individuals and n the number and n the length
of the message.
For convolutional codes with large memory size, the search
space remains the same while, for well-designed codes, the
minimum distance between two code words becomes much
bigger. Classical decoding algorithms cannot take advantage
of this, for their computational complexity exponentially rises
with the memory size of the encoder. As our algorithm does
not depend on this parameter, we use good convolutional
codes with large free distance and big memory size.
In [17] a convolutional codes decoder based on genetic
algorithms is described but even if it shows better
performances than the Viterbi decoder it has quadratic
computational complexity which makes it worse than the
Viterbi decoder (Fig 4) in most practical situations. The other
drawback of that decoder comes from its incapability of
improving its performances for decoders with larger memory
size. The algorithm introduced in this paper is less elitist
which make it able to discover solutions that are further from
the received sequence, it also has linear complexity which
makes it more practical.
Fig 4: Performances of GAD versus Viterbi
For the moment, we were not able to run the decoder
simulations but more work is being carried out to make
performances plots and to choose good parameters.
Further work will consist of using parallel concatenated
convolutional codes (PCCCs) and a multi-objective
evolutionary algorithm such as NSGA II for decoding. The
use of puncturing patterns should be studied as well.
In this section, a genetic algorithm solution for ML
decoding was introduced. This solution seems to be interesting
either because of its linear complexity or its independence
from the memory size of the encoder.
IV. PARALLEL COMPUTING, MACHINE LEARNING, AND
GENETIC ALGORITHMS
1. Context
The huge computation abilities available now are changing the
way scientific experiments and studies are done. The data
generated and used is increasing exponentially in both volume
and complexity. This section explains how Genetic
Algorithms can be used with parallel computing [11] to achieve
highly performant and scalable calculations. It concerns the
design and the implementation of a multi-purpose genetic
algorithm with the General Purpose Processing in Graphics
Processing Units (GPGPU) using CUDA architecture
(Developed by NVIDIA [18]).
The model shown here is inspired by the Machine Learning
(ML) Supervised Paradigm, which is appropriate to deal with
both regression and classification problems when the data sets
involved are so-called massive.
As explained earlier, GAs are inspired by Darwin’s evolution
law, which means that parallelism is an intrinsic property of its
learning rule and how it processes data patterns. Furthermore,
the parallel computing paradigm allows an optimal exploit of
the training data set, permitting a strong optimization in
processing performances.
6. 6
2. The GAME model
a) Definition
The category of supervised ML models and techniques that
follows the Darwin’s evolution law is called evolutionary.
GAME (Genetic Algorithm Model Experiment) [19] is a
genetic algorithm designed to perform supervised
optimizations involving regression and classification features,
scalable to manage Massive Data Sets, and is based on the
usual genetic operators explained in former sections.
b) Game Model Mathematics
Given a generic dataset with N features and a target t, let pat a
generic pattern of the dataset 1( ,..., , )Npat f f t , and let
( )g x a generic real function.
The next generation of the feature if can be represented with
a polynomial sequence of degree d as:
0 1( ) ( ) ... ( )d
i i d iG f a a g f a g f
Hence the next generation of the k-th pattern ( )kpat with
N features may be represented by
0
1 1 1
( ) ( ) ( )
N N N
i
k i i j
i i j
Out pat G f a a g f
The target kt is used to evaluate the approximation error
( ( ))²k k kE t Out pat
c) The Genetic Algorithm
We define the GA as following:
The array 0( ,..., )Ma a defines M genes of the genetic
chromosome and initially generated random and
normalized between -1 and 1).
All the chromosomes have the same size.
The expression of the error calculation gives the
standard error to evaluate the fitness level of the
chromosomes.
The population (genome) is composed by a number of
chromosomes imposed from the choice of the
function ( )g x of the polynomial sequence.
3. Experiment on Globular Cluster
a) The problem
A Globular Cluster (GC) is a spherical collection of stars that
orbits a galactic core as a satellite [23]. The study of GCs
populations in external galaxies requires wide-field, multi-
brand photometry and high resolution data. However, the use
of single-band photometry available through space facilities,
costs less and still can yield to very complete datasets using
Machine Learning algorithms.
The idea here is to build a genetic algorithm able to perform
supervised classification and regression duties, related to high-
complexity parameter space where the background analytic
function is known only for a limited number of input-target
couples, representing known valid example of a physical
phenomenon, here the GCs. To do so, the input patterns are
combined in a polynomial expansion whose coefficients are
the chromosomes genes. The objective is then to find the best
chromosome that makes the polynomial expansion able to
approximate the right solution to input pattern
classification/regression. The fitness function used is the
complement of the approximation error. [20]
b) Parallelization of the Algorithm
This process present several long execution time issues:
The polytrigo function is used at each iteration to
obtain the output for each input dataset and for the
error calculation;
The information about the fitness function must be
pack-propaged to evolve the genetic population.
These two issues make the training use case take much more
execution time than the test and validation phases. It is
therefore the one that needs to be optimized.
Generating the random chromosomes and the calculation of
the fitness function will be parallelized by executing them on
the GPU since we need to perform the same instruction
simultaneously on as much as data as possible.
The CUDA architecture strength comes from its ad hoc
software development methodology called APOD for (Assess,
Parallelize, Optimize, and Deploy) (NVIDIA Corp. 2011).
APOD 4 steps cycle aims at quickly identify the algorithm
tasks that can take the most benefits from the GPU
acceleration, and gets the closest to the theoretical highest
speedup achievable, according to Gustafson laws.
c) Results :
After performing a series of tests, with a GPU-parallelized, a
CPU-serial, and a CPU-optimized version of the algorithm,
the results are the same. Slight differences in terms of least
significant digit are due to the randomness of genetic
algorithms.
In terms of execution time, as expected, the two CPU-based
implementations appear to be similar, a large difference is
observed with the GPU implementation, all with the same
polynomial degree, as shown in the figure 5.
7. 7
Fig.5 Comparison among the GAME implementations with the polynomial
degree =8 [19]
As shown in the figure 6, the speedup is also increased
proportionally with the increase of the polynomial degree. The
GPU implementation outperforms the CPU performance by a
factor of 8x to 200x in the serial case and in a range from 6x to
125x in the optimized case, leading to an intensive and highly
scalable use of the algorithm impossible with a CPU [19].
Fig.6 Speedup comparison among GAME CPU implementations against the
GPU version. [19]
The results above show that the GA performance have been
tremendously increased by the parallelization using GPGPU
technologies on NVIDIA CUDA architecture. This means that
the parallel computing paradigm can speed up the execution of
these algorithms, and consequently allow us to get further to
the optimal solution.
V. CONCLUSION
As illustrated in this article, Genetic Algorithms may be
applied to many domains. They can solve optimization
problems as long as they are represented (encoded) in the right
way. That makes them an important domain of research within
Mathematical Optimization. Still, being general
metaheuristics, GAs cannot compete with algorithms
specialized in solving certain problems. Sometimes
conventional methods fail (or take a long time) to solve a
problem for several reasons (big dimensions of the problem,
non-linearity…) GAs help find a solution as close as possible
from the exact one in a short time. The main problem is that
we cannot know exactly how close we are unless we have the
optimal solution.
Because GAs are inherently parallel, their performance can
be improved. The parallel computing paradigm has shown
very strong results with highly efficient processing of massive
datasets. Apart from the example in astrophysics treated in this
article, further research could be made to investigate further
optimization in terms of processing time in other fields of
application like those presented. This could include the use of
newer versions of hardware and software developed, or
moving the formation of the population matrix and its
evolution to the GPU.
REFERENCES
[1]D.J. Futuyma, "Evolution, Science, and Society: Evolutionary Biology
and the National Research Agenda", 1999
[2]M. Mitchell, An Introduction to Genetic Algorithms, Cambridge, MA:
MIT Press, 1996
[3]J. Teghem, Recherche Opérationnelle, Tome 1 Méthodes d’optimisation,
ellipses, 2012
[4]F.S. Hillier, G.J. Lieberman, “The Transportation Problem” in
Introduction to OPERATIONS RESEARCH, Holden-day inc.,1970
[5]Utpal Kanti Das , Md. Ashraful Babu, Aminur Rahman Khan, Md. Abu
Helal, Dr. Md. Sharif Uddin, “Logical Development Of Vogel’s
Approximation Method (LD-VAM): An Approach To Find Basic Feasible
Solution Of Transportation Problem,” February, 2014
[6]University of Surrey, Operations research course, Chapter 7,
“Transportation Problems”, consulted on 07/12/2014, link:
http://personal.maths.surrey.ac.uk/st/J.F/chapter7.pdf
[7]G.A. Vignaux, Z. Michalewicz, “A Genetic Algorithm for the Linear
transportation Problem”, March/April 1991
[8]N. Thu Huyền, L. Sỹ Ước,R.B. Alday, “Genetic Algorithm for Solving
Balanced Transportation Problem” , September, 2013
[9] P. Elias . Coding for noisy channels. IRE Conv. Rec. 1955
[10] Viterbi, A.J., Error bounds for convolutional codes and an
asymptotically optimum decoding algorithm. IEEE Trans. Information
Theory, 1967. 13(2): p. 260-269.
[11]L. Bahl, J. Cocke, F. Jelinek, and J. Raviv, “Optimal decoding of linear
codes for minimizing symbol error rate,” IEEE Trans. Inform. Theory, vol.
20, pp. 284-287, Mar. 1974.
[12]C. Berrou, A. Glavieux, and P. Thitimajshima, “Near Shannon limit
error-correcting coding and decoding: Turbo-codes,” in Proc. ICC ’ 93,
Geneva Switzerland, pp. 1064-1070, May 1993
[13] Y. S. Han, C. R. P. Hartmann, and C.-C. Chen, ”Efficient maximum-
likelihood soft-decision decoding of linear block codes using algorithm
A*”, Technical Report SU-CIS-91-42, Syracuse University, Syracuse, NY
13244 December 1991
[14]L. Hebbes, R. Malyan, A. Lenaghan, "Genetic Algorithms for Turbo
Codes", IEEE EUROCON 2005, November, Belgrade, 2005
[15]M. Belkasmi, H. Berbia, F. El Bouanani, “Iterative decoding of product
block codes based on genetic algorithms”, SCC 2008, 14-16 January 2008,
Ulm Germany
[16]D. E. Goldberg and K. Deb “A comparaison of selection shchemes”
used in genetic algorithms. In Foudations of Genetic Algorithms 1 (FOGA -
1), 1991, pp. 69-93.
[17]H. Berbia, M. Belkasmi. F. Elbouanani, F. Ayoub, Proceedings of
International Conference on Computer and Communication Engineering,
2008. ICCCE 2008, Kuala Lumpur, pp 667 – 671, 13-15 May 2008.
[18]Nvidia, C. U. D. A. (2007). Compute unified device architecture
programming guide.
[19]Cavuoti, S.; Garofalo, M.; Brescia, M.; Pescape', A.; Longo, G.; Ventre,
G., 2012, Genetic Algorithm Modeling with GPU Parallel Computing
8. 8
Technology, 22nd WIRN, Italian Workshop on Neural Networks, Vietri sul
Mare, Salerno, Italy, May 17-19
[20]Cavuoti, S.; Garofalo, M.; Brescia, M.; Paolillo, M; Pescape', A.;
Longo, G.; Ventre, G., 2014, Astrophysical data mining with GPU. A case
study: genetic classification of globular clusters, New Astronomy, Vol. 26,
pp. 12-22, Elsevier
[21]D. Brusilovsky, H. Ahary, Application of genetic algorithm to piece-
wise linear approximation of response curves, July 2011.
[22]Y. S. Han, C. R. P. Hartmann, and C.-C. Chen, ”Efficient maximum-
likelihood soft-decision decoding of linear block codes using algorithm
A*”, Technical Report SU-CIS-91-42, Syracuse University, Syracuse, NY
13244 December 1991
[23] Zepf, S. E. (10.1993). "Globular cluster systems formed in galaxy
mergers". Monthly notices of the Royal Astronomical Society (0035-
8711), 264 (3), p. 611