12.01.2015 Views

Evolutionary Computation : A Unified Approach

Evolutionary Computation : A Unified Approach

Evolutionary Computation : A Unified Approach

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

5.5. EA-BASED AUTOMATED PROGRAMMING 109<br />

• ML-EAs can be used effectively for other kinds of ML problems, particularly “sequential<br />

decision problems” like navigation and game playing that involve a coordinated<br />

series of decisions extending over time (Smith, 1983; Grefenstette et al., 1990).<br />

• Most ML problems of interest involve significant amounts of computation time. Hence,<br />

ML approaches that lend themselves to parallel implementations are desirable.<br />

5.5 EA-Based Automated Programming<br />

The dream of automating the frequently tedious job of computer programming has been<br />

with us since the early days of computer science and artificial intelligence. It should come as<br />

no surprise that this was also on the minds of the early pioneers of evolutionary computation.<br />

As noted in chapter 2, in the early 1960s Fogel and his colleagues were motivated by the goal<br />

of producing intelligent artificial agents, not by hand-crafting them, but by evolving them.<br />

As a starting point they chose to use finite-state machines (FSMs) as their programming<br />

language and called their techniques for evolving FSMs “<strong>Evolutionary</strong> Programming” (Fogel<br />

et al., 1966).<br />

Similarly, we find in Holland’s early writing a description of his “broadcast language”,<br />

a parallel programming language designed to facilitate manipulation by GAs and modeled<br />

loosely on gene-level mechanisms of protein production (Holland, 1975).<br />

Since then there has been considerable interest in evolving programs expressed in a wide<br />

variety of languages, including rule-based systems (Smith, 1983; De Jong, 1987), artificial<br />

neural networks (Harp et al., 1989; de Garis, 1990), Lisp code (Fujiki and Dickinson, 1987;<br />

Koza, 1992), and even assembly language (Cramer, 1985; Ray, 1994). In each case the<br />

ability to do so effectively depends critically on two important issues: 1) how a PROG-<br />

EA represents and manipulates programs, and 2) how to assess the fitness of a candidate<br />

program. These issues are explored in more detail in the following sections.<br />

5.5.1 Representing Programs<br />

The simplest and most straightforward approach to representing programs is in terms of a<br />

fixed set of parameters. That is, we have a particular class of programs in mind that vary<br />

only with respect to their parameter settings, and we want to find the particular program<br />

instance whose execution behavior is optimal with respect to some objective criteria (such<br />

as execution speed, correctness of the output, etc.). The advantage to such an approach is<br />

that it immediately places us on the familiar terrain of parameter optimization, and we can<br />

use a variety of the techniques discussed earlier in this chapter to evolve programs.<br />

It is tempting at first glance to dismiss this approach as trivial and not at all representative<br />

of what is usually meant by automatic programming. But it is important to note that,<br />

although the kinds of structural changes that can be made is quite limited, even modest<br />

changes in parameters can result in significant behavioral changes during program execution.<br />

Samuel’s checker-playing program (Samuel, 1959) is a striking example of this. And,<br />

one can view the unified EA model developed in the previous chapter as a parameterized<br />

description of a class of algorithms that exhibit a wide range of behaviors.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!