Proceedings of the First On-line Workshop on Soft Computing, August 1996 (revised version). Some Steps Towards a Form of Parallel Distributed Genetic Programming Riccardo Poli School of Computer Science The University of Birmingham Birmingham B15 2TT, UK R.Poli@cs.bham.ac.uk —Genetic Programming is a method of program discovery con- sisting of a special kind of genetic algorithm capable of operating on non- linear chromosomes (parse trees) representing programs and an interpreter which can run the programs being optimised. This paper describes PDGP (Parallel Distributed Genetic Programming), a new form of genetic pro- gramming which is suitable for the development of fine-grained parallel programs. PDGP is based on a graph-like representation for parallel pro- grams which is manipulated by crossover and mutation operators which guarantee the syntactic correctness of the offspring. The paper describes these operators and reports some preliminary results obtained with this paradigm. I. I NTRODUCTION Genetic Programming (GP) is an extension of Genetic Algo- rithms (GAs) in which the structures that make up the popu- lation to be optimised are not fixed-length character strings that encode possible solutions to a problem, but programs that, when executed, are the candidate solutions to the problem [11; 12]. Programs are expressed in GP as parse trees, rather than as lines of code. For example, the simple expression max(x * y,3+x*y) would be represented as shown in Figure 1. The basic search algorithm used in GP is a classical GA with mutation and crossover specifically designed to handle parse trees. The set of possible internal (non-leaf) nodes used in GP parse trees is called function set, . All functions of have arity (the number of arguments) greater than one. The set of terminal (leaf) nodes in the parse trees is called terminal set . Table 1 shows some typical functions and terminals used in GP. This form of GP has been applied successfully to a large num- ber of difficult problems like automated design, pattern recogni- tion, robot control, symbolic regression, music generation, im- age compression, image analysis, etc. [11; 12; 9; 10; 1; 17]. When appropriate terminals, functions and/or interpreters are defined, standard GP can go beyond the production of sequential tree-like programs. For example using cellular encoding GP can x y * + max 3 * y x Fig. 1. Parse-tree representation of the expression max(x * y, 3 + x * y). be used to develop (grow) structures, like neural nets [5; 6] or electronic circuits [14; 13], which can be thought of as perform- ing some form of parallel computation. Also, in conjunction with an interpreter implementing a parallel virtual-machine, GP can be used to develop certain kinds of parallel programs [3] or to translate sequential programs into parallel ones [19]. (The development of parallel programs should not be confused with the parallel implementations of GP, which are essentially meth- ods of speeding-up the genetic search of standard tree-like pro- grams [2; 4; 16; 8; 18]. These methods are usually based on the use of multiple processors, each one handling a separate popula- tion, a subset of fitness evaluations or a subset of fitness cases.) This paper describes PDGP (Parallel Distributed Genetic Pro- gramming), a new form of genetic programming which is suit- able for the development of fine-grained or medium-grained par- allel programs. PDGP is based on a graph-like representation for parallel programs and genetic operators which guarantee the syntactic correctness of the offspring. In the following sections the representation and operators used in PDGP are described and some preliminary results obtained with this paradigm are reported. II. REPRESENTATION Taking inspiration from the parallel distributed processing performed in neural nets, we represent fine-grained parallel pro- grams as graphs with labelled nodes and oriented links. The nodes are the functions and terminals used in the program while the links determine which arguments are used by each function- node when it is next evaluated. Figure 2 shows an example of Functions Kind Examples Arithmetic +, *, / Mathematical sin, cos, exp Boolean AND, OR, NOT Conditional IF-THEN-ELSE, IFLTE Looping FOR, REPEAT Terminals Kind Examples Variables x, y Constant values 3, 0.45 0-arity functions rand, go left Random constants random Table 1. Typical functions and terminals used in genetic programming.