Portions of a generic genetic-algorithms library

From CSSEMediaWiki
(Difference between revisions)
Jump to: navigation, search
 
(144 intermediate revisions by one user not shown)
Line 1: Line 1:
==Introduction==
+
#REDIRECT [[GenA: A Genetic Algorithms Framework]]
Over the last few months I have become interested in problems associated with the modeling of non-linear systems. This interest has lead me to look into artificial neural networks, and how they can be trained using genetic algorithms. For those with an interest in this area, development environments like [http://en.wikipedia.org/wiki/MATLAB Matlab] provide an ideal platform for quick implementation and testing. However, at deployment time, a Matlab script is of little use to clients with a limited budget, or to developers targeting some embedded platforms.
+
 
+
... to be continued ...
+
 
+
 
+
 
+
What is the motivation here? Off-line training of neural networks via genetic algorithms to model non-linear systems in a low cost environment.
+
 
+
==Theoretical Background==
+
Some Basic theory on genetic algorithms (perhaps some background on artificial neural networks, and artificial neural network training?)
+
 
+
==Requirements==
+
What should a generic genetic-algorithms library do, and why? How might this change?
+
 
+
==Examples of Genetic-Algorithms Libraries==
+
Describe the Matlab GA libraries, and how they are used. What other examples are there?
+
 
+
==A First Attempt==
+
This is the starting point - something I put together around 6 months ago.
+
 
+
My first working attempt at a generic genetic-algorithms library is shown in Fig. 1. This section will dissect and critique portions of the initial library design.
+
 
+
[[image:gaFirstAttempt.jpg|thumb|800px|centre|'''Figure 1: A [[UML 2.1]] [[Class diagram|class diagram]] representing my first working attempt at a generic genetic-algorithms library''']]
+
 
+
===Creating New Candidates===
+
On initialisation of the algorithm, a set of initial Candidates are required. The creation of this initial generation of Candidates is the responsibility of the user of the library. (less use of the word initial here would be nice :))
+
 
+
In the first attempt, a modified [[Factory|Factory pattern]] was used here, this was taken from a [http://msdn.microsoft.com/en-us/library/ms954600.aspx Microsoft Patterns and Practices article by Doug Purdy]. An abstract factory class is provided by the library, the user is expected to provide a concrete candidate factory class.
+
 
+
===Selection of the Fittest===
+
Once a generation of Candidates has been established, the....
+
 
+
Fitness calculations are known about by
+
*the GeneticAlgorithms class
+
*the Generation class
+
*the Candidate class
+
 
+
===Creating New Candidates via Reproduction===
+
In the throws of the algorithm, new candidates are generated via reproduction. The parent Candidates should be randomly selected from the fittest candidates in the most recent generation. Reproduction, also known as crossover, is performed using one of many possible crossover algorithms. The same reproduction strategy is usually applied to the entire generation in any one iteration. And is often kept constant throughout the algorithm life-cycle.
+
+
===Mutating Candidates===
+
Before progressing onto the next generation of Candidate, some mutation of the Candidates takes place. The manner and rate of mutate is defined by the user.
+
 
+
==A New Design==
+
 
+
===Core Class Structure===
+
 
+
[[image:gaCoreClassStructure.jpg|thumb|800px|centre|'''Figure 2: A [[UML 2.1]] [[Class diagram|class diagram]] representing an attempt to redesign the generic genetic-algorithms library''']]
+
 
+
===Communications===
+
 
+
[[image:gaCommunications.jpg|thumb|800px|centre|'''Figure 3: A [[UML 2.1]] [[Communication diagram|communication diagram]] representing an attempt to redesign the generic genetic-algorithms library''']]
+
 
+
==References==
+
#{{Note|1}} http://www.mathworks.com/access/helpdesk/help/toolbox/gads/
+
 
+
==See Also==
+

Latest revision as of 07:51, 11 October 2008

  1. REDIRECT GenA: A Genetic Algorithms Framework
Personal tools