The intelligence of machines and the branch of computer science which aims to create it

Artificial Intelligence Journal

Subscribe to Artificial Intelligence Journal: eMailAlertsEmail Alerts newslettersWeekly Newsletters
Get Artificial Intelligence Journal: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


Artificial Intelligence Authors: Jason Steinbach, Yeshim Deniz, Liz McMillan, Pat Romanski, Zakia Bouachraoui

Related Topics: Artificial Intelligence Journal

Artificial Intelligence: Article

Timing the Market with Distributed Genetics - Part 2

Picking the best stocks for investing a fixed amount of money

At the end of my previous article (DNDJ, Vol. 6, issue 4), I explained the theory behind the two major technologies to be used in timing the market. On the one hand, we are dealing with distributed computing - a process whereby large computationally intensive tasks can be broken up and shared among multiple computers in order to be processed in a shorter amount of time. On the other hand, genetic programming gives us a mechanism for solving the most complicated of problems by "evolving" a solution through the random creation of multiple candidate solutions and the gradual selection of the ones that look most promising.

In this article - the second of this two-part series - we are going to dive into the code behind our solution. First, we'll look at the genetic programming implementation - and see how the artificial intelligence principles that govern this approach can be most readily applied to picking the best stocks in which to invest a fixed amount of money. We'll see what kinds of data these algorithms will require to make their decisions, and we'll see how to evaluate the potential solutions after they've made their decisions.

In the second half of this article we'll turn our attention to the "grid-ification" of our genetic programming solution. A key concern with any such operation is the proper decomposition of a software application into the client application that is intended to run on a single centralized system, and the pieces that are intended to be distributed among multiple machines to perform the actual work of the solution. We'll take a look at the way our solution is constructed, as well as some key challenges that had to be overcome in its creation.

The Genetic Algorithm
The essential framework for the genetic portion of our solution was provided by Brian Connolly in his article "Survival of the Fittest: Natural Selection with Windows Forms". In this article, Brian shows how .NET's Codegen facilities - a set of classes that allow .NET applications to generate new .NET code at runtime - can be leveraged to produce automated "ants" that can, over the course of multiple generations, become increasingly good at gathering pieces of food dropped on a theoretical grid.

Since you can read all about the basics of genetic programming with .NET in this article, we won't go into much more depth about this technology here. There are also three classes provided in this article that we were able to use without modification (see Table 1).

More Stories By Derek Ferguson

Derek Ferguson, founding editor and editor-in-chief of .Net Developer's Journal, is a noted technology expert and former Microsoft MVP.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.