The best and most reliable way to look for resources relating to CGP is to carry
out ... Zdenek Vasicek and Lukas Sekanina have developed a set of tools for ...
Appendix A
Resources for Cartesian Genetic Programming
A.1 General Advice The best and most reliable way to look for resources relating to CGP is to carry out internet searches using the names of well-known researchers who use CGP. Many of the authors of chapters in this book are just such people. Their web sites may change, but they will always be traceable somewhere on the internet! The first place to look is at the web sites associated with their institutions (listed at the beginning of this book).
A.2 Web Sites There is a web site on CGP at http://www.cartesiangp.co.uk This contains links to many researchers who have used CGP. From these, you can obtain many of the publications on CGP.
A.3 Tutorial Material Julian Miller and Simon Harding have given a tutorial on CGP over the last few years at the Genetic and Evolutionary Computation Conferences (and sometimes at other conferences too). The tutorials are freely available from Julian Miller’s publications page https://sites.google.com/site/julianfrancismiller/publications
J.F. Miller (ed.), Cartesian Genetic Programming, Natural Computing Series, DOI 10.1007/978-3-642-17310-3, © Springer-Verlag Berlin Heidelberg 2011
337
338
A Resources for CGP
A.4 Software Software for CGP has been made available by various researchers.
A.4.1 CGP in C Julian Miller has a C program implementation of CGP that is currently available from https://sites.google.com/site/julianfrancismiller/professional There is a collection of C programs there that can be compiled into programs that can handle three kinds of data with CGP, namely Boolean, integer and floatingpoint. Configuration files are included that will allow the user to run experiments on evolving Boolean circuits, mathematical expressions (Koza symbolic regression problems) and predicting prime numbers. Documentation is included about how to run the experiments and set parameters, etc. The C programs are well documented with instructions about how to adapt the programs for your particular application. Zdenek Vasicek and Lukas Sekanina have developed a set of tools for Cartesian Genetic Programming (CGP) containing an input data reading module, CGP implementation and a CGP chromosome viewer (cgpviewer). Cgpviewer enables to display the CGP chromosome, simulate it and convert it to various output file formats (VHDL, bmp). http://www.fit.vutbr.cz/research/view product.php.en?id=61¬itle=1
A.4.2 CGP in Java David Oranchak has implemented CGP in Java. Documentation is available at http://oranchak.com/cgp/doc/ Java software is available at http://oranchak.com/cgp/contrib-cgp-18.zip He has implemented CGP using two representations. One is integer-based (i.e. the classic CGP described in Chap. 2), and the other is a real-numbered representation, which is mentioned in the same chapter in Sect. 2.6.2. His program can be run on the following example problems: 1. Symbolic regression.
A.4 Software
339
2. Classification: a. iris data set; b. breast cancer. 3. Various parity problems. There are also example runs of the program listed.
A.4.3 CGP in MATLAB Jordan Pollack has kindly made available a MATLAB implementation of CGP that can handle symbolic regression problems. This is available at https://sites.google.com/site/julianfrancismiller/publications
A.4.4 Evolutionary Art with Laurence Ashmore’s CGP Program (in Java) Laurence Ashmore has written an evolutionary art system using CGP. It is available from his web site http://www.emoware.org/evolutionary art.asp
Index
Accelerator, 243 adaptation, 125, 165 hardware, 125 adaptive median filter, 184, 185, 187, 192–194 adaptive representation through learning, 36 ADF, see automatically defined functions ageing, 73, 162 Alzheimer’s disease, 326 cube drawing, 327 NINCDS–ADRDA criteria, 327 arity, 18 ARL, see adaptive representation through learning artificial neural network, 164, 165 autoconstructive evolution, 10 automatically defined functions, 6, 36, 70 bank of filters, 181, 187–189, 192, 193 benchmarks, 50, 132 digital-circuits, 132 embedded Cartesian genetic programming, 50 modular Cartesian genetic programming, 82 multi-chromosome Cartesian genetic programming, 91 multi-chromosome embedded Cartesian genetic programming, 91 multi-chromosome evolutionary strategy, 96 block size, 166 brain learning in, 255 breast cancer, 309 CAD, 310 genetic recombination method, 316 region of interest (ROI), 311 statistical features, 312 BZIP2, 165, 173
cache, 165, 218, 221 cancer, 309 masses, 310 microcalcifications, 310 Cartesian genetic programming, 17–20 alleles, 19 art example, 22 calculating fitness, 28 columns, 18 connection gene, 18 cyclic, 33 decoding, 24 algorithm for, 26 developmental network, 258 digital-circuits example, 20 feed-forward, 18 finding nodes used, 25 function gene, 18 genetic redundancy, 31 graph topology, 18 implicit context representation, 321 implicit reuse, 19 levels-back, 18 mathematical equations example, 20 mutation, 28 neutral drift, 31, 152 neutrality, 31, 152 evolutionary art, 298 no bloat, 14 1 + λ evolutionary algorithm, 30 origins of, 17 output gene, 18 parameter choice, 31 phenotype, 17 program inputs, 18 program outputs, 18 recombination, 29, 299
J.F. Miller (ed.), Cartesian Genetic Programming, Natural Computing Series, DOI 10.1007/978-3-642-17310-3, © Springer-Verlag Berlin Heidelberg 2011
341
342 mammography, 316 rows, 18 software, 338 tutorials, 337 category classifier, 159 category detection module, 159 CC, see category classifier CDM, see category detection module CGP developmental network, 258 grid, 259 health, 260 neighbourhood, 259 resistance, 260 state-factor, 260 weight, 260 chromosome, 220, 222, 223 classification, see pattern matching, 239 two spirals, 239 classifier architecture, 159 CMOS, 145, 148 combinational circuit, 225, 226 cone, 72 configuration memory, 217, 218 confusion matrices, 317 convex graph, 72 creative evolutionary systems, 293 creativity, 294 cross-validation, 164, 312, 325 leave-one-out, 164, 312 crossover, 2, 29, 76, 126, 222 cone-based, 76 merging, 2 subgraph active–active node, 12 decision tree, 164, 165 digital-adder, 60, 85 ECGP, see embedded Cartesian genetic programming edge detection, 181, 182, 186, 189, 191, 196, 201, 212 electromyography, 74, 75, 159, 160, 164 elitism, 3, 209 embedded Cartesian genetic programming, 36, 159, 162 evolutionary strategy, 49 genotype operators, 41 module operators, 47 modules, 38 representation, 37 embedded system, 218, 229 EMG, see electromyography energy, 168 even-parity, 55, 82
Index EvoCache, 165 evolutionary algorithm, 4 evolutionary art, 293 Ashmore and Miller, 296 AARON, 295 automatic fitness function, 294 biomorphs, 296 CGP function set, 298 recombination, 299 contextual focus, 301 Darwin portrait, 303 fitness function, 300 HSV, 298 Latham, William, 296 loss of diversity, 297 Machado, Penousal, 296 reflection phase, 297 resemblance patriarchs, 302 RGB, 298 Rooke, Steve, 296 Sims, Karl, 296 strange uncles, 302 Todd, Stephen, 296 evolutionary computation, 1 origins of, 1 Turing, Alan, 1 evolutionary strategy, 30, 164, 168 multi-chromosome, 90 origins of, 1 evolvable hardware, 125, 159, 166 execution time, 168 fault, reconfiguration after, 217 feature extraction, 161 field-programmable gate array, 141, 181, 185, 193, 194, 196, 218, 219, 221, 226, 228 filter, 144 finite-inpulse-response, 144 linear, 182 nonlinear, 182, 184 fitness, 28, 127, 131, 152, 163, 169 in travelling salesman problem, 2 of a CGP genotype, 28 fitness value, 187, 198, 200, 208–210, 220–222, 224–226 FPGA, see field-programmable gate array functional unit row, 159 FUR, see functional unit row genetic algorithms, 1 genetic programming, 4 Backus–Naur form, 8 bloat, 14
Index grammar-based, 8 grammatical evolution, 8 BNF example, 8 genotype example, 9 genotype–phenotype mapping, 9 graph-based, 11 linear, 6 genotype–phenotype mapping, 7 in C, 7 machine code, 7 origins of, 4 parallel distributed, 11 crossover, 12 mutation, 12 PushGP, 10 genotype, 17, 127, 148–150, 162, 198 genotype–phenotype mapping, 17 GP, see genetic programming GPU, 197, 198, 200, 231 graphics processing unit, see GPU hardware acceleration for CGP, 231 CUDA, 233 graphics processing units, 231 MIMD, 234 parallel processor, 231 SIMD, 234 hashing function, 166 ICE architecture, see increased complexity evolution architecture image classification, 181, 205, 208 image filter, 181, 182, 186–188, 191, 194, 196, 206, 220, 223, 228, 229 image preprocessing, 181 image processing, 181, 240 image recognition, 182, 205 image segmentation, 182 implicit context representation, 321 binding sites, 322 enzyme model, 321 impulse burst noise, 183–185, 188, 194, 195 impulse noise, 183, 184, 188, 189 increased complexity evolution architecture, 159 indirect encoding, 255 internal reconfiguration, 218, 220 intrinsic, 141, 146 evaluation, 219 parameter fluctuations, 146 variability, 148 JPEG, 165, 173
343 k-th nearest neighbour, 164, 165 kernel, 181, 182, 184–189, 196, 206, 209, 240 lawnmower problem, 66 linear quantization, 162 LISP, 5 S expression, 5 logic synthesis, 126 look-up table, 167, 217, 218 LUT, see look-up table MA, see module acquisition mammogram, 309 multi-chromosome CGP, 314 mapping, 101 genotype–phenotype, 101, 148, 149 MC-CGP, see multi-chromosome Cartesian genetic programming MC-ECGP, see multi-chromosome embedded Cartesian genetic programming MCGP, see modular Cartesian genetic programming MCM, see multiple-constant multiplier, 144 median filter, 184, 185, 191, 193, 194, 196 medical applications, 309 medical image, 181, 205 miss-rate, 168 modular Cartesian genetic programming, 78 representation, 78 modularity, 35 compartmentalization, 35 reuse, functional, 35 reuse, structural, 35 module acquisition, 36 module creation, 70 age-based, 70 compress, 41 cone-based, 70 module destruction expand, 41 moments, 205, 207–209, 212 MOVES, 168 moving average, 161 multi-chromosome, 88, 162 multi-chromosome Cartesian genetic programming, 88 mammography, 314 representation, 88 multi-chromosome embedded Cartesian genetic programming, 88 representation, 88 multi-chromosome evolutionary strategy, 90 multi-objective fitness, 131 multiple-constant multiplier, 143
344
Index
multiplexer, 137, 217, 220, 223 multiplier, 31, 75, 128, 129, 131, 132, 134, 138, 139, 143 mutation, 3, 28, 31, 126, 127, 134, 142, 155, 164, 168, 187–189, 194, 198, 222 in genetic programming, 6
reconfigurable, 166 reconfigurable chip, 217, 218 reconvergent path, 72 redundancy, 127 RMS, see root mean squared root mean squared, 161
nearest neighbour, 164 netlist, 151 neutrality, 127 NGSpice, 148 NN, see nearest neighbour NSGA-II, 131, 148, 152
salt-and-pepper noise, 183, 185, 187, 188, 192–194 scalability, 125, 143 in genetic programming, 6 seeding, 129 self-modification, 101 self-modifying Cartesian genetic programming, 101 general solutions, 102 genotype–phenotype mapping, 101 relative addresses, 107 self-modification, 101 time-dependency, 101 set associative, 166 sliding window, 182, 206 SMCGP, see self-modifying Cartesian genetic programming SPICE, 151 stack-based languages, 10 support vector machines, 164, 165 symbolic regression, 63, 223, 225, 228, 238
1 + λ evolutionary algorithm, 30, 49 parallel simulation, 128, 225, 226 parameter fluctuation, 148 Pareto front, 131, 152 parity, 75 Parkinson’s disease, 319 akinesia, 319 artefact, 323, 325 bradykinesia, 319 figure copying, 319 hypokinesia, 319 patient drawing, 319 tremor, 319 pattern matching, 159 phenotype, 17, 148, 149, 225, 226 PLA, see programmable logic array polymorphic circuit, 136, 138, 140 portrait painting, 293 power consumption, 217 PowerPC processor, 218, 220–222, 228 programmable logic array, 159 receiver operating characteristic (ROC), 312 recombination, 2 in genetic programming, 6
three-bit multiplier, 31, 129 tournament selection, 198 transistor, 132, 148, 149 travelling salesman problem, 2 truth table, 126–128, 220, 225 TSP, see travelling salesman problem virtual reconfigurable circuit, 220–223, 225–229 VRC, see virtual reconfigurable circuit