The Clever Algorithms project is an effort to describe a large number of algorithmic techniques from the the field of Artificial Intelligence in a complete, consistent, and centralized manner such that they are accessible, usable, and understandable.
The Clever Algorithms project is currently hosted online at http://www.CleverAlgorithms.com
This is a repository for the Clever Algorithms: Nature-Inspired Programming Recipes project for hosting, versioning, and collaboration, used during the development of the content for deliverables (website and book), as well as for the ongoing maintenance of the outcomes from the project.
Like Clever Algorithms and want to support the project and more books in the series?
- Spread the word (blog, facebook, twitter, etc).
- Buy the paperback, the author will receive a few dollars.
- Gift a book to the author from his Amazon Wish List (thanks guys, my wish list is shrinking fast!)
- Contribute corrections, translations, ports, etc (see details below)
Jason Brownlee, Clever Algorithms: Nature-Inspired Programming Recipes, Lulu, January 2011
A large number of standalone technical reports were written during the development of the content for the book. The book is the primary source now, but if you really really want to see these now outdated technical reports: click here and scroll down to see a human readable listing.
- Algorithms : The executable source code used in all algorithm descriptions. Each algorithm is in a separate file, and files are organized by algorithm taxonomic kingdom used in the book structure, specifically: stochastic, physical, evolutionary, probabilistic, swarm, and immune.
- Algorithm Selection Script : A ruby script to apply the data driven optimization algorithm selection methodology. Measures the popularity of a list of algorithms against a range of search engines, calculates a score and produces algorithm statistics and rankings. The script was prepared for the Data-Driven Optimization Algorithm Selection technical report. Also see the tag for the tech report version
- Programming Language Selection Script : A ruby script to evaluate the popularity of a list of programming languages for their use in implementing a typical optimization algorithm. Popularity is measured against a range of search engines and the results are summarized. The script was prepared for the Programming Language Selection for Optimization Algorithms technical report.
- Programming Language Comparison Scripts : A set of scripts that implement the genetic algorithm in four different dynamic languages (Python, Perl, Ruby, and Lua), as well as a ruby script for analyzing the implementations. The scripts were prepared for the Programming Language Selection for Optimization Algorithms technical report.
- Clever Algorithms Paper Search : An aggregate search using Google’s ‘custom search’ service. Searches across the whole internet, biased towards google scholar, google books, IEEE explore, springer link, ACM digital library, and scirus. Useful for searching for all useful sources for a given technique name.
This project is partitioned into five efforts:
- book/ : The content and structure for the publishable book. The book is prepared using the LaTex type setting system.
- deprecated/ : A collection of the work product produced during the past attempts at completing the clever algorithms project (previously called the algorithm atlas and inspired algorithms).
- src/ : Complete source code for the examples provided in the book as well as programs prepared during the development of the content for the book. Algorithm examples are provided in the Ruby programming language.
- web/ : Scripts for generating HTML and eBook (experimental ePub) versions of the book’s content.
- workspace/ : A workspace for content development such as notes and technical reports that facilitates exploration and investigation independent of the book content. Content developed in the workspace may provide the basis for the book or may be directly migrated into the book. Notes are in plain text, technical reports are prepared using the LaTex type setting system and organized into sub-directories.
Found a typo in some content or a bug in the source code? Are you an expert in a given area and know some facts that could improve an algorithm description for all? Do you want to get that warm feeling from contributing to an open source project? Do you want to see your name as an acknowledgment in print?
Two pillars of this effort are i) that the best domain experts are people outside of the project, and ii) that this work is subjected to continuous improvement.
Please help to make this work less wrong!
You may want to:
- Email the author: [email protected]
- or, Message the author though the github website: (signup and login to github, go to http://github.com/jbrownlee and click “Message”)
- or, Fork the CleverAlgorithms project on github, make changes, and request a pull into the main project (again, you must signup and login to github and follow the github documentation for forking, contributing, and making a pull request).
© Copyright 2011 Jason Brownlee. Some Rights Reserved.
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 Australia License.
Why would I release all of the work product from this project under a permissive license? Because I agree with Tim O’Reilly that “obscurity is a far greater threat to authors and creative artists than piracy”. It is more important to me that the outcomes of this project are read and used than be treated as a revenue generating commodity.