And, because "Darwin" was already taken by some other project that has nothing to do with evolution.
Dawkins is a simple and fast C++ template library for creating problem-solving programs that can search a many-dimensional problem space for solutions of increasing quality. Dawkins creates a user-define number of randomized solutions and evaluates the quality of each. A specified number of winners are kept, and randomly "bred" together to create new candidates. These new candidates enter the gene pool with their parents, are evaluated for their own quality, and selected or culled. The process repeats as many times as desired, with only the best parameter sets survivng and combining to form each new generation.
The cross-breeding method is implementation-specific, ensuring that parameters are combined in sensible ways to only produce valid combined genes. Additionally, a random-mutation rate can be specified, to help ensure all areas of the solution space are adequately explored. Mutation rate can automatically decline over time, to allow rapid excursions in the beginning and more precise fine-tuning of parameters as the overall gene pool quality improves. Dawkins is suited for solving problems with multiple parameters, where the parameters act combinatorially and non-linearly to affect the solution quality. Simple problems with few parameters or linear/progressive interaction of parameters can be solved without Dawkins by simple brute-force methods or a binary search. When minor modifications of a single parameter might affect the outcome in variable direction or magnitude based on the state of one or more other parameters, simple search techniques fall short. These are the problems Dawkins is designed to solve. Any problem where the solution quality can be evaluated as a continuous numerical value are potential candidates. Problems that can only be evaluated in terms of pass/fail are not good candidates, because there is no way to quantitatively evaluate the relative merits of non-success solutions in order to select which ones should be cross-bred in search of a successful solution. Dawkins can be quickly combined with a user-supplied data structure, evaluation function and cross-breeding function to rapidly assemble an automated problem-solver. The Dawkins library is implemented as a C++ template library using modern C++ techniques, design patterns and features for easiest integration. Dawkins is compact and elegant code, complete but not bloated, and very fast. Dawkins includes a demo program, in source form, to solve a simple two-parameter problem (ballistic trajectory) where the parameters interact non-linearly to affect the solution quality.
Dawkins is written and tested under Microsoft Visual C++ 2003. Dawkins is written in 100% standard, portable C++ and is supplied in source form, so it should be usable on any platform with a modern standards-compliant C++ compiler. Dawkins can make difficult and non-intuitive problems tractable and easy. Dawkins was used to develop the innovative nine-parameter color remixing algorithm used in AlphaPixel's ground-breaking PixelSense 742.
Future:
Dawkins can be modified to execute the solution quality evaluation function on many concurrent threads and processors, allowing for scaling to very large and time-consuming problems. Contact our licensing department to arrange for this extension if your application requires it.
Purchase:
Dawkins costs only USD $499 per site, for any number of developers or uses. Contact our licensing department to order.
- Initial public release.