25 research outputs found

    A Field Guide to Genetic Programming

    Get PDF
    xiv, 233 p. : il. ; 23 cm.Libro ElectrónicoA Field Guide to Genetic Programming (ISBN 978-1-4092-0073-4) is an introduction to genetic programming (GP). GP is a systematic, domain-independent method for getting computers to solve problems automatically starting from a high-level statement of what needs to be done. Using ideas from natural evolution, GP starts from an ooze of random computer programs, and progressively refines them through processes of mutation and sexual recombination, until solutions emerge. All this without the user having to know or specify the form or structure of solutions in advance. GP has generated a plethora of human-competitive results and applications, including novel scientific discoveries and patentable inventions. The authorsIntroduction -- Representation, initialisation and operators in Tree-based GP -- Getting ready to run genetic programming -- Example genetic programming run -- Alternative initialisations and operators in Tree-based GP -- Modular, grammatical and developmental Tree-based GP -- Linear and graph genetic programming -- Probalistic genetic programming -- Multi-objective genetic programming -- Fast and distributed genetic programming -- GP theory and its applications -- Applications -- Troubleshooting GP -- Conclusions.Contents xi 1 Introduction 1.1 Genetic Programming in a Nutshell 1.2 Getting Started 1.3 Prerequisites 1.4 Overview of this Field Guide I Basics 2 Representation, Initialisation and GP 2.1 Representation 2.2 Initialising the Population 2.3 Selection 2.4 Recombination and Mutation Operators in Tree-based 3 Getting Ready to Run Genetic Programming 19 3.1 Step 1: Terminal Set 19 3.2 Step 2: Function Set 20 3.2.1 Closure 21 3.2.2 Sufficiency 23 3.2.3 Evolving Structures other than Programs 23 3.3 Step 3: Fitness Function 24 3.4 Step 4: GP Parameters 26 3.5 Step 5: Termination and solution designation 27 4 Example Genetic Programming Run 4.1 Preparatory Steps 29 4.2 Step-by-Step Sample Run 31 4.2.1 Initialisation 31 4.2.2 Fitness Evaluation Selection, Crossover and Mutation Termination and Solution Designation Advanced Genetic Programming 5 Alternative Initialisations and Operators in 5.1 Constructing the Initial Population 5.1.1 Uniform Initialisation 5.1.2 Initialisation may Affect Bloat 5.1.3 Seeding 5.2 GP Mutation 5.2.1 Is Mutation Necessary? 5.2.2 Mutation Cookbook 5.3 GP Crossover 5.4 Other Techniques 32 5.5 Tree-based GP 39 6 Modular, Grammatical and Developmental Tree-based GP 47 6.1 Evolving Modular and Hierarchical Structures 47 6.1.1 Automatically Defined Functions 48 6.1.2 Program Architecture and Architecture-Altering 50 6.2 Constraining Structures 51 6.2.1 Enforcing Particular Structures 52 6.2.2 Strongly Typed GP 52 6.2.3 Grammar-based Constraints 53 6.2.4 Constraints and Bias 55 6.3 Developmental Genetic Programming 57 6.4 Strongly Typed Autoconstructive GP with PushGP 59 7 Linear and Graph Genetic Programming 61 7.1 Linear Genetic Programming 61 7.1.1 Motivations 61 7.1.2 Linear GP Representations 62 7.1.3 Linear GP Operators 64 7.2 Graph-Based Genetic Programming 65 7.2.1 Parallel Distributed GP (PDGP) 65 7.2.2 PADO 67 7.2.3 Cartesian GP 67 7.2.4 Evolving Parallel Programs using Indirect Encodings 68 8 Probabilistic Genetic Programming 8.1 Estimation of Distribution Algorithms 69 8.2 Pure EDA GP 71 8.3 Mixing Grammars and Probabilities 74 9 Multi-objective Genetic Programming 75 9.1 Combining Multiple Objectives into a Scalar Fitness Function 75 9.2 Keeping the Objectives Separate 76 9.2.1 Multi-objective Bloat and Complexity Control 77 9.2.2 Other Objectives 78 9.2.3 Non-Pareto Criteria 80 9.3 Multiple Objectives via Dynamic and Staged Fitness Functions 80 9.4 Multi-objective Optimisation via Operator Bias 81 10 Fast and Distributed Genetic Programming 83 10.1 Reducing Fitness Evaluations/Increasing their Effectiveness 83 10.2 Reducing Cost of Fitness with Caches 86 10.3 Parallel and Distributed GP are Not Equivalent 88 10.4 Running GP on Parallel Hardware 89 10.4.1 Master–slave GP 89 10.4.2 GP Running on GPUs 90 10.4.3 GP on FPGAs 92 10.4.4 Sub-machine-code GP 93 10.5 Geographically Distributed GP 93 11 GP Theory and its Applications 97 11.1 Mathematical Models 98 11.2 Search Spaces 99 11.3 Bloat 101 11.3.1 Bloat in Theory 101 11.3.2 Bloat Control in Practice 104 III Practical Genetic Programming 12 Applications 12.1 Where GP has Done Well 12.2 Curve Fitting, Data Modelling and Symbolic Regression 12.3 Human Competitive Results – the Humies 12.4 Image and Signal Processing 12.5 Financial Trading, Time Series, and Economic Modelling 12.6 Industrial Process Control 12.7 Medicine, Biology and Bioinformatics 12.8 GP to Create Searchers and Solvers – Hyper-heuristics xiii 12.9 Entertainment and Computer Games 127 12.10The Arts 127 12.11Compression 128 13 Troubleshooting GP 13.1 Is there a Bug in the Code? 13.2 Can you Trust your Results? 13.3 There are No Silver Bullets 13.4 Small Changes can have Big Effects 13.5 Big Changes can have No Effect 13.6 Study your Populations 13.7 Encourage Diversity 13.8 Embrace Approximation 13.9 Control Bloat 13.10 Checkpoint Results 13.11 Report Well 13.12 Convince your Customers 14 Conclusions Tricks of the Trade A Resources A.1 Key Books A.2 Key Journals A.3 Key International Meetings A.4 GP Implementations A.5 On-Line Resources 145 B TinyGP 151 B.1 Overview of TinyGP 151 B.2 Input Data Files for TinyGP 153 B.3 Source Code 154 B.4 Compiling and Running TinyGP 162 Bibliography 167 Inde

    Field Guide to Genetic Programming

    Get PDF

    Genetic improvement of GPU software

    Get PDF
    We survey genetic improvement (GI) of general purpose computing on graphics cards. We summarise several experiments which demonstrate four themes. Experiments with the gzip program show that genetic programming can automatically port sequential C code to parallel code. Experiments with the StereoCamera program show that GI can upgrade legacy parallel code for new hardware and software. Experiments with NiftyReg and BarraCUDA show that GI can make substantial improvements to current parallel CUDA applications. Finally, experiments with the pknotsRG program show that with semi-automated approaches, enormous speed ups can sometimes be had by growing and grafting new code with genetic programming in combination with human input

    Artificial evolution with Binary Decision Diagrams: a study in evolvability in neutral spaces

    Get PDF
    This thesis develops a new approach to evolving Binary Decision Diagrams, and uses it to study evolvability issues. For reasons that are not yet fully understood, current approaches to artificial evolution fail to exhibit the evolvability so readily exhibited in nature. To be able to apply evolvability to artificial evolution the field must first understand and characterise it; this will then lead to systems which are much more capable than they are currently. An experimental approach is taken. Carefully crafted, controlled experiments elucidate the mechanisms and properties that facilitate evolvability, focusing on the roles and interplay between neutrality, modularity, gradualism, robustness and diversity. Evolvability is found to emerge under gradual evolution as a biased distribution of functionality within the genotype-phenotype map, which serves to direct phenotypic variation. Neutrality facilitates fitness-conserving exploration, completely alleviating local optima. Population diversity, in conjunction with neutrality, is shown to facilitate the evolution of evolvability. The search is robust, scalable, and insensitive to the absence of initial diversity. The thesis concludes that gradual evolution in a search space that is free of local optima by way of neutrality can be a viable alternative to problematic evolution on multi-modal landscapes

    Evolutionary algorithms for practical sensor fault tolerant control

    Get PDF
    The Shaky Hand is a multi-input, multi-output laboratory demonstrator which is modelled on a village fete game. In the original, the aim is to guide, by hand, a wire loop along a wire which has been bent to form a meandering track, 'without touching the loop to the wire. In the original game, touching the hand-held loop against the wire track sets off a loud warning bell and the player loses. The thesis presents the research work associated with the quest for practical solutions to a generic problem: the correct operation of a fallible system. The work covers three distinct areas: modelling of the demonstrator, design and construction of a physical system, and evoiution of algorithms for control of the demonstrator in practice in the presence of sensor faults, using Cartesian Genetic Programming (CGP). The third area forms the core of the thesis. The key challenges in creating the virtual environment to train for generic sensor fault tolerant algorithms are considered and addressed. The evolved algorithms are analysed and then verified using the demonstrator in practice. The practical results showed that sensor fault tolerant control was successfully achieved

    Desarrollo automatizado de sistemas teleo-reactivos a partir de objetivos: un enfoque basado en componentes y dirigido por modelos

    Get PDF
    [SPA] Esta tesis doctoral se presenta bajo la modalidad de compendio de publicaciones. Está formada por un total de cuatro artículos publicados en revistas del segundo cuartil del Journal Citation Reports. El artículo “A systematic literature review of the Teleo-Reactive paradigm” ofrece una completa revisión sistemática de la literatura existente sobre el paradigma Teleo-Reactivo desde su presentación por el profesor Nils Nilsson en el año 1994. Su papel en esta tesis es el de servir de estado del arte de dicho paradigma, ofreciendo una buena perspectiva de la evolución de los sistemas Teleo-Reactivos desde su formulación hasta el presente. Para poder desarrollar sistemas Teleo-Reactivos a partir de objetivos, surgió la necesidad de especificar los requisitos de estos sistemas usando el lenguaje más apropiado. Ese es uno de los objetivos principales del artículo “A controlled experiment to evaluate the understandability of KAOS and i* for modeling Teleo-Reactive systems”. Como resultado de dicho trabajo se decidió utilizar i* dado que el experimento realizado mostró que las especificaciones realizadas con dicho lenguaje resultaban ligeramente más comprensibles que las realizadas con KAOS. Aunque i* resultaba más comprensible a la hora de especificar requisitos para sistemas Teleo-Reactivos, también presentaba ciertas debilidades. Estas debilidades han sido descritas detalladamente en el artículo “A family of experiments to evaluate the understandability of TRiStar and i* for modeling Teleo-Reactive systems”, en el que además se propone una extensión al lenguaje que permite superarlas. La extensión propuesta se denomina TRiStar y fue inicialmente presentada en [Morales15]. TRiStar ha demostrado superar los problemas de comprensibilidad identificados en i* en el modelado de sistemas Teleo-Reactivos mediante una familia de experimentos realizada con estudiantes de últimos cursos de grado y con desarrolladores software experimentados, cuyos resultados se exponen exhaustivamente en el artículo mencionado. En él se describe, además, un mecanismo que permite obtener mediante transformación de modelos el programa Teleo-Reactivo equivalente a un diagrama TRiStar dado. TRiStar permite, por lo tanto, partiendo de los objetivos de un sistema Teleo-Reactivo obtener un diagrama que especifique su comportamiento. Ese diagrama puede ser transformado en un programa Teleo-Reactivo equivalente. Y siguiendo las transformaciones descritas en “From Teleo-Reactive specifications to architectural components: a model-driven approach” se puede obtener a partir del programa Teleo-Reactivo el modelo de componentes y la máquina de estados que describe el comportamiento de cada uno de esos componentes. Con estos elementos y usando un framework como el descrito en [Iborra09] se cerraría el proceso de desarrollo del sistema Teleo-Reactivo. Como resultado de las investigaciones realizadas en el transcurso de esta tesis, y aunque no forma parte del compendio, hay un quinto artículo [Sánchez16] que está en segunda revisión en el Journal of Systems and Software en el que se estudian las posibilidades de introducir requisitos de tiempo real cuando se sigue el enfoque Teleo-Reactivo desde el modelado a la implementación de un sistema. Tras realizar un estudio del tipo de restricciones temporales que se pueden imponer desde el punto de vista Teleo-Reactivo, se considera la posibilidad de utilizar TeleoR [Clark14] para incorporar dichas restricciones y se proponene una serie de extensiones a TRiStar para permitir representar requisitos temporales. Estas extensiones dan lugar a lo que hemos llamado TRiStar+. [ENG] This doctoral dissertation has been presented in the form of thesis by publication. It is comprised of four articles indexed in the second quartile of the Journal Citation Reports. The article “A systematic literature review of the Teleo-Reactive paradigm” offers a complete systematic review of the existing literature on the Teleo-Reactive paradigm since Prof. Nils Nilsson presented it in 1994. It plays the role of state of the art of that paradigm, showing a perspective of the evolution of Teleo-Reactive systems from their formulation to present time. In order to develop Teleo-Reactive systems starting from its goals, there is the need of specifying the requirements of these systems using the most adequate language. That is one of the main objectives of the article “A controlled experiment to evaluate the understandability of KAOS and i* for modeling Teleo-Reactive systems”. As a result, we decided to use i* because the experiment showed that i* specifications where slightly more understandable than those made using KAOS. Although i* was more understandable when specifying requirements for Teleo-Reactive systems, the experiment also showed some shortcomings. These shortcomings have been deeply described in the article “A family of experiments to evaluate the understandability of TRiStar and i* for modeling Teleo-Reactive systems”. In this article, an extension to i* is proposed in order to overcome the identified limitations. The proposed extension is named TRiStar and was initially presented at [Morales15]. TRiStar has shown to be more understandable than i* when modeling Teleo-Reactive systems through a family of experiments done with last year students and experienced software developers, whose results are described in the aforementioned article. In that article, a mechanism to obtain a Teleo-Reactive program starting from a TRiStar diagram is also described. Therefore, TRiStar allows obtaining a diagram which specifies the behavior of a Teleo-Reactive system starting from its goals. That diagram can be transformed into an equivalent Teleo-Reactive program. Then, following the transformations described in “From Teleo-Reactive specifications to architectural components: a model-driven approach”, a component model and the state machine describing the behavior of each of those components can be obtained. With these elements and using a framework as that described in [Iborra09], the development process of the Teleo-Reactive system would be finished. As a result of the research carried out during this dissertation there is another article, which is not comprised in the compilation, in second revision at the Journal of Systems and Software [Sánchez16]. In that article, after making a study of the type of timing constraints from the TR perspective, we consider the possibility of using TeleoR [Clark14] for incorporating such constraints. Some extensions on TRiStar notation are proposed to represent temporal requirements. Those extensions have been named TRiStar+.[ENG] This doctoral dissertation has been presented in the form of thesis by publication. It is comprised of four articles indexed in the second quartile of the Journal Citation Reports. The article “A systematic literature review of the Teleo-Reactive paradigm” offers a complete systematic review of the existing literature on the Teleo-Reactive paradigm since Prof. Nils Nilsson presented it in 1994. It plays the role of state of the art of that paradigm, showing a perspective of the evolution of Teleo-Reactive systems from their formulation to present time. In order to develop Teleo-Reactive systems starting from its goals, there is the need of specifying the requirements of these systems using the most adequate language. That is one of the main objectives of the article “A controlled experiment to evaluate the understandability of KAOS and i* for modeling Teleo-Reactive systems”. As a result, we decided to use i* because the experiment showed that i* specifications where slightly more understandable than those made using KAOS. Although i* was more understandable when specifying requirements for Teleo-Reactive systems, the experiment also showed some shortcomings. These shortcomings have been deeply described in the article “A family of experiments to evaluate the understandability of TRiStar and i* for modeling Teleo-Reactive systems”. In this article, an extension to i* is proposed in order to overcome the identified limitations. The proposed extension is named TRiStar and was initially presented at [Morales15]. TRiStar has shown to be more understandable than i* when modeling Teleo-Reactive systems through a family of experiments done with last year students and experienced software developers, whose results are described in the aforementioned article. In that article, a mechanism to obtain a Teleo-Reactive program starting from a TRiStar diagram is also described. Therefore, TRiStar allows obtaining a diagram which specifies the behavior of a Teleo-Reactive system starting from its goals. That diagram can be transformed into an equivalent Teleo-Reactive program. Then, following the transformations described in “From Teleo-Reactive specifications to architectural components: a model-driven approach”, a component model and the state machine describing the behavior of each of those components can be obtained. With these elements and using a framework as that described in [Iborra09], the development process of the Teleo-Reactive system would be finished. As a result of the research carried out during this dissertation there is another article, which is not comprised in the compilation, in second revision at the Journal of Systems and Software [Sánchez16]. In that article, after making a study of the type of timing constraints from the TR perspective, we consider the possibility of using TeleoR [Clark14] for incorporating such constraints. Some extensions on TRiStar notation are proposed to represent temporal requirements. Those extensions have been named TRiStar+.Universidad Politécnica de CartagenaPrograma Oficial de Doctorado en Tecnologías de la Información y Comunicacione

    In situ Distributed Genetic Programming: An Online Learning Framework for Resource Constrained Networked Devices

    Get PDF
    This research presents In situ Distributed Genetic Programming (IDGP) as a framework for distributively evolving logic while attempting to maintain acceptable average performance on highly resource-constrained embedded networked devices. The framework is motivated by the proliferation of devices employing microcontrollers with communications capability and the absence of online learning approaches that can evolve programs for them. Swarm robotics, Internet of Things (IoT) devices including smart phones, and arguably the most constrained of the embedded systems, Wireless Sensor Networks (WSN) motes, all possess the capabilities necessary for the distributed evolution of logic - specifically the abilities of sensing, computing, actuation and communications. Genetic programming (GP) is a mechanism that can evolve logic for these devices using their “native” logic representation (i.e. programs) and so technically GP could evolve any behaviour that can be coded on the device. IDGP is designed, implemented, demonstrated and analysed as a framework for evolving logic via genetic programming on highly resource-constrained networked devices in real-world environments while achieving acceptable average performance. Designed with highly resource-constrained devices in mind, IDGP provides a guide for those wishing to implement genetic programming on such systems. Furthermore, an implementation on mote class devices is demonstrated to evolve logic for a time-varying sense-compute-act problem and another problem requiring the evolution of primitive communications. Distributed evolution of logic is also achieved by employing the Island Model architecture, and a comparison of individual and distributed evolution (with the same and slightly different goals) presented. This demonstrates the advantage of leveraging the fact that such devices often reside within networks of devices experiencing similar conditions. Since GP is a population-based metaheuristic which relies on the diversity of the population to achieve learning, many, if not most, programs within the population exhibit poor performance. As such, the average observed performance (pool fitness) of the population using the standard GP learning mechanism is unlikely to be acceptable for online learning scenarios. This is suspected to be the reason why no previous attempts have been made to deploy standard GP as an online learning approach. Nonetheless, the benefits of GP for evolving logic on such devices are compelling and motivated the design of a novel satisficing heuristic called Fitness Importance (FI). FI is population-based heuristic used to bias the evaluation of candidate solutions such that an “acceptable” average fitness (AAF) is achieved while also achieving ongoing, though diminished, learning capacity. This trade off motivated further investigation into whether dynamically adjusting the average performance in response to AAF would be superior to a constant, balanced, performing-learning approach. Dynamic and constant strategies were compared on a simple problem where the AAF target was changed during evolution, revealing that dynamically tracking the AAF target can yield a higher success rate in meeting the AAF. The combination of IDGP and FI offers a novel approach for achieving online learning with GP on highly resource-constrained embedded systems. Furthermore, it simultaneously considers the acceptable average performance of the system which may change during the operational lifetime. This approach could be applied to swarm and cooperative robot systems, WSN motes or IoT devices allowing them to cooperatively learn and adapt their logic locally to meet dynamic performance requirements

    A genetic programming hyper-heuristic approach to automated packing

    Get PDF
    This thesis presents a programme of research which investigated a genetic programming hyper-heuristic methodology to automate the heuristic design process for one, two and three dimensional packing problems. Traditionally, heuristic search methodologies operate on a space of potential solutions to a problem. In contrast, a hyper-heuristic is a heuristic which searches a space of heuristics, rather than a solution space directly. The majority of hyper-heuristic research papers, so far, have involved selecting a heuristic, or sequence of heuristics, from a set pre-defined by the practitioner. Less well studied are hyper-heuristics which can create new heuristics, from a set of potential components. This thesis presents a genetic programming hyper-heuristic which makes it possible to automatically generate heuristics for a wide variety of packing problems. The genetic programming algorithm creates heuristics by intelligently combining components. The evolved heuristics are shown to be highly competitive with human created heuristics. The methodology is first applied to one dimensional bin packing, where the evolved heuristics are analysed to determine their quality, specialisation, robustness, and scalability. Importantly, it is shown that these heuristics are able to be reused on unseen problems. The methodology is then applied to the two dimensional packing problem to determine if automatic heuristic generation is possible for this domain. The three dimensional bin packing and knapsack problems are then addressed. It is shown that the genetic programming hyper-heuristic methodology can evolve human competitive heuristics, for the one, two, and three dimensional cases of both of these problems. No change of parameters or code is required between runs. This represents the first packing algorithm in the literature able to claim human competitive results in such a wide variety of packing domains

    Evolutionary Algorithms in Engineering Design Optimization

    Get PDF
    Evolutionary algorithms (EAs) are population-based global optimizers, which, due to their characteristics, have allowed us to solve, in a straightforward way, many real world optimization problems in the last three decades, particularly in engineering fields. Their main advantages are the following: they do not require any requisite to the objective/fitness evaluation function (continuity, derivability, convexity, etc.); they are not limited by the appearance of discrete and/or mixed variables or by the requirement of uncertainty quantification in the search. Moreover, they can deal with more than one objective function simultaneously through the use of evolutionary multi-objective optimization algorithms. This set of advantages, and the continuously increased computing capability of modern computers, has enhanced their application in research and industry. From the application point of view, in this Special Issue, all engineering fields are welcomed, such as aerospace and aeronautical, biomedical, civil, chemical and materials science, electronic and telecommunications, energy and electrical, manufacturing, logistics and transportation, mechanical, naval architecture, reliability, robotics, structural, etc. Within the EA field, the integration of innovative and improvement aspects in the algorithms for solving real world engineering design problems, in the abovementioned application fields, are welcomed and encouraged, such as the following: parallel EAs, surrogate modelling, hybridization with other optimization techniques, multi-objective and many-objective optimization, etc
    corecore