At the forefront of Artificial Intelligence
  Home Articles Reviews Interviews JDK Glossary Features Discussion Search
Home » Reviews » Software » Genetic Algorithms

NeuroDimensions Genetic Server

Many companies are now realizing how successfully genetic algorithms can be applied to search-related problems. From prediction to optimization, GAs have been shown to apply (adapt?) to the task at hand. What many companies cannot do is afford to employ AI programmers, or to invest in the necessary training. What they need is an flexible solution that requires little hands-on knowledge of genetic algorithms.

This is where NeuroDimensions steps in. ND's Genetic Server is a DLL that provides all the necessary implementation required for applying genetic algorithms to a range of fields. The DLL is accessed via ActiveX, making it widely accessible - most easily by Visual Basic, but any ActiveX-compatible development package.

First Impressions

With Genetic Server there is nothing to really look at. The installation folder that is created has a shortcut to an example program, the help file and readme text file. The sample program consists of three examples that show the fundamental aspects of Genetic Server. If I had to fault GS, I would pick the samples section. Despite the samples being effective and having all the source code included, they are very static. They all consist of the same dialog template - two edit boxes and a grid control that shows the initial best and final best chromosomes, and the grid control outlines 4 traits of the algorithm. In my opinion, at least one more complicated (or at least not simple) example should be there to show not just the bare minimum of GS's power, but its full potential.

Features

With my limited experience with NeuroDimensions, I find one thing consistent with their products - incredible documentation. The documentation for Genetic Server was good enough to enable me (a non-VB programmer) to create a diophantine equation solver (like the GA Example) in Microsoft Excel with no trouble.

In terms of implementation features, here is a snippet from the help file that describes exactly what it can do:

Genetic AlgorithmsSelection OperatorsCrossover Operators
GenerationalRoulette (Fitness or Rank)One Point
Steady-StateTournamentTwo Point
Top PercentUniform
BestArithmetic
RandomHeuristic

Mutation OperatorsTermination MethodsData Types
Flip BitGeneration NumberBinary
BoundaryEvolution TimeInteger
Non-UniformFitness ThresholdFloat
UniformFitness Convergence
GaussianPopulation Convergence
Gene Convergence

Example

Since there are no screenshots to show you the package, the best way to see the power of Genetic Server is to see an example. As I mentioned before, I created a diophantine equation solver using Genetic Server in under an hour - and I don't program VB! Here are snippets that show you the ease at which the code can be set up.
    ' . . . 
    ' Set up variables
    A = Worksheets("GSExample").Cells(6, 2).Value
    B = Worksheets("GSExample").Cells(6, 3).Value
    C = Worksheets("GSExample").Cells(6, 4).Value
    D = Worksheets("GSExample").Cells(6, 5).Value
    E = Worksheets("GSExample").Cells(6, 6).Value

    Set ga = New GenerationalGA
    
    ' Gene Definitions (min, max, initial)
    ga.addIntegerGeneDefinition -20, 20, 0
    ga.addIntegerGeneDefinition -20, 20, 0
    ga.addIntegerGeneDefinition -20, 20, 0
    ga.addIntegerGeneDefinition -20, 20, 0

    ' Specify whether to minimize or maximize the objective function
    ga.objectiveType = otMinimize

    ' Set genetic algorithm parameters to user-specified values
    ga.maxNumberOfGenerations = 250
    ga.populationSize = 25
    ga.mutationProbability = 0.005
    ga.crossoverProbability = 0.95

    ' Run the genetic algorithm
    ga.computeStatisticsEvery = 1
    ga.evolve
    ga.writeStatisticsToFile "c:\windows\desktop\dio.txt"
    
    ' Retrieve and display the best overall result
    Dim i As Integer
    Dim result As String
    result = ""
    For i = 0 To ga.bestChromosome.numberOfGenes - 1
        Worksheets("GSExample").Cells(8 + i, 3).Value = 
		ga.bestChromosome.genes(i).Value
    Next i

    Set ga = Nothing
    
End Sub

' The fitness function
Private Sub ga_objectiveFunction(fitness As Single, pause As Boolean, 
                                 chromosome As GENETICSERVERLib.IChromosome)
    Dim result As Integer
    result = 0
    
    result = A * chromosome.genes(0).Value + B * chromosome.genes(1).Value +
             C * chromosome.genes(2).Value + D * chromosome.genes(3).Value
    
    fitness = Abs(E - result)
End Sub
Here is a screenshot of Excel after this code has found a solution to a + 2b + 3c + 4d = 70. Indeed, check the solution that the algorithm found, 6+2(-6)+3(8)+4(13) = 70!

It is probably worth noting that all the statistics that the genetic algorithm generates (max, min, avg fitness, and the standard deviation for a specified generation step) are saved to c:\windows\desktop\dio.txt. This is in tab-separated columns, which makes it very easy to look at, but also to import into Excel and create spreadsheets and graphs of the GA performance.

Conclusion

Genetic Server has excellent features, documentation and functionality. Although the package lacks any complicated examples, its ease-of-use makes the simple to create working and evolving applications in no time.

No cover available 8.3
Price:$495
Liked:ND documentation, range of features, ease of integration.
Disliked:Lack of frilly examples.
Website:http://www.nd.com/

Submitted: 21/04/2000

 Article Toolbar
Print
BibTeX entry

Search

Latest News
- Generation5 10-year Anniversary (03/09/2008)
- New Generation5 Design! (09/04/2007)
- Happy New Year 2007 (02/01/2007)
- Where has Generation5 Gone?! (04/11/2005)
- NeuroEvolving Robotic Operatives (NERO) (25/06/2005)

What's New?
- Back-propagation using the Generation5 JDK (07/04/2008)
- Hough Transforms (02/01/2008)
- Kohonen-based Image Analysis using the Generation5 JDK (11/12/2007)
- Modelling Bacterium using the JDK (19/03/2007)
- Modelling Bacterium using the JDK (19/03/2007)


All content copyright © 1998-2007, Generation5 unless otherwise noted.
- Privacy Policy - Legal - Terms of Use -