Information Technology Reference
In-Depth Information
good solutions. We will see, however, that these patterns are not as clear cut
as the patterns discovered with the help of user defined functions as the
system is highly inventive and extremely flexible. Indeed, the system can
discover a large variety of building blocks that it then uses to build extremely
interesting modular solutions.
So, in this study, we will continue to work with the Boolean system of
ANDs, ORs, and NOTs and, therefore, we are going to use these functions
both in the ADFs and in the main programs, that is, F = F H = {A, O, N}. The
set of terminals used in the genes encoding the ADFs consists obviously of
the independent variables (two for the odd-2-parity function; three for the
odd-3-parity; and four for the odd-4-parity function); for the homeotic genes,
the terminal set consists obviously of the ADFs encoded in the conventional
genes (just two, in all the experiments) and will be represented by “0” and
“1”, thus giving T H = {0, 1}. The fitness function is based on the number of
hits and will be evaluated by equation (3.8). The complete list of the param-
eters used per run, together with the performance obtained in each experi-
ment, is shown in Table 6.3.
And as you can see in Table 6.3, the use of ADFs results in a considerable
increase in performance for the odd-3 and odd-4-parity functions (compare
Tables 4.14 and 6.3). This is the telltale mark that there is indeed some regu-
larity in the organization of these functions that the system is successfully
exploring to build modular solutions. Let's then analyze some of the perfect
solutions (three, in total) designed in these experiments to see what kind of
modules are discovered and reused by the main programs.
The structures of three perfect solutions to the odd-3-parity function are
shown in Figure 6.10 and, as you can see, the system has no problems in
creating a wide variety of building blocks (ADFs) and then combine them in
different ways, calling each of them as many times as necessary in the main
program. For instance, in (a), the system created an extremely simple build-
ing block (ADF 0 ) encoding a one-argument function that returns the value of
the argument c and a more elaborated one (ADF 1 ) involving the arguments a
and b . Then, in the main program, these building blocks are each called twice
and combined in different ways through the use of different linkers, forming
a perfect solution. It's worth noticing that the pattern discovered here matches
exactly the one discovered with UDFs (see Figure 4.9 in chapter 4). In (b), a
small module (ADF 0 ) involving arguments b and c , and a larger one (ADF 1 )
involving the three arguments to the odd-3-parity function, are combined in
the main program through different linkers to design a perfect solution. Note,
Search WWH ::




Custom Search