| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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 ImpressionsWith 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.
FeaturesWith 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:
ExampleSince 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!
ConclusionGenetic 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.
Submitted: 21/04/2000 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
All content copyright © 1998-2007, Generation5 unless otherwise noted.
- Privacy Policy - Legal - Terms of Use -