151,194 research outputs found

    Evolutionary improvement of programs

    Get PDF
    Most applications of genetic programming (GP) involve the creation of an entirely new function, program or expression to solve a specific problem. In this paper, we propose a new approach that applies GP to improve existing software by optimizing its non-functional properties such as execution time, memory usage, or power consumption. In general, satisfying non-functional requirements is a difficult task and often achieved in part by optimizing compilers. However, modern compilers are in general not always able to produce semantically equivalent alternatives that optimize non-functional properties, even if such alternatives are known to exist: this is usually due to the limited local nature of such optimizations. In this paper, we discuss how best to combine and extend the existing evolutionary methods of GP, multiobjective optimization, and coevolution in order to improve existing software. Given as input the implementation of a function, we attempt to evolve a semantically equivalent version, in this case optimized to reduce execution time subject to a given probability distribution of inputs. We demonstrate that our framework is able to produce non-obvious optimizations that compilers are not yet able to generate on eight example functions. We employ a coevolved population of test cases to encourage the preservation of the function's semantics. We exploit the original program both through seeding of the population in order to focus the search, and as an oracle for testing purposes. As well as discussing the issues that arise when attempting to improve software, we employ rigorous experimental method to provide interesting and practical insights to suggest how to address these issues

    Evolutionary Advantages of Inter-Subjectivity and Self-Consciousness through Improvements of Action Programs

    Get PDF
    Evolutionary advantages of consciousness and intersubjectivity are part of current philosophical debates on the nature of consciousness.\ud Both are linked and intersubjectivity is sometimes considered as a form of consciousness [1]. Regarding the evolution of consciousness, studies tend to focus on phenomenal consciousness [2].\ud We would like here to bring the focus on self-consciousness and continue the build up of a corresponding evolutionary scenario. We also propose to introduce a possible evolutionary link between self-consciousness and phenomenal\ud consciousness.\ud Our starting point is the evolutionary scenario based on the evolution of intersubjectivity that goes thru the identification with conspecifics at pre-human primate time frame [3, 4, 5]. The scenario considers that such identification with conspecifics brought the non self-conscious auto-representation carried by our prehuman\ud primate ancestors to merge with the representations of conspecifics. The latter transferred to the auto-representation the characteristics of an entity existing in\ud the environment, and by this way introduced some first elements of self-consciousness for our pre-human ancestors. In addition, an anxiety increase coming from the identification with suffering or endangered conspecifics produced an evolutionary engine based on anxiety limitation. We want here to complement this evolutionary approach by introducing the improvement of action programs as a contributor to the evolutionary advantages of intersubjectivity and self-consciousness.\ud We look at the possibility for a subject to improve the action programs that conspecifics implement. The performance of identification with conspecifics allows the subject to consider that errors made by conspecifics are\ud potentially her own errors, and consequently allows the subject to correct the errors of conspecifics for her own benefit. We describe the process of non successful action\ud identification from the perspective of an observer and present the synergetic action program improvements with their contribution to the evolution of intersubjectivity and\ud self-consciousness. We add this contribution to the existing evolutionary scenario on self-consciousness and introduce a possible evolutionary link between self-consciousness and phenomenal consciousness. We use for that the relation existing between phenomenal consciousness and pre-reflexive self-consciousness [6] and propose to link the latter to the proposed evolutionary nature of self-consciousness.\ud We finish by summarizing the points addressed and by introducing some possible continuations.\u

    Genetic Algorithm for Program Synthesis

    Full text link
    A deductive program synthesis tool takes a specification as input and derives a program that satisfies the specification. The drawback of this approach is that search spaces for such correct programs tend to be enormous, making it difficult to derive correct programs within a realistic timeout. To speed up such program derivation, we improve the search strategy of a deductive program synthesis tool, SuSLik, using evolutionary computation. Our cross-validation shows that the improvement brought by evolutionary computation generalises to unforeseen problems

    Multi-objective improvement of software using co-evolution and smart seeding

    Get PDF
    Optimising non-functional properties of software is an important part of the implementation process. One such property is execution time, and compilers target a reduction in execution time using a variety of optimisation techniques. Compiler optimisation is not always able to produce semantically equivalent alternatives that improve execution times, even if such alternatives are known to exist. Often, this is due to the local nature of such optimisations. In this paper we present a novel framework for optimising existing software using a hybrid of evolutionary optimisation techniques. Given as input the implementation of a program or function, we use Genetic Programming to evolve a new semantically equivalent version, optimised to reduce execution time subject to a given probability distribution of inputs. We employ a co-evolved population of test cases to encourage the preservation of the program’s semantics, and exploit the original program through seeding of the population in order to focus the search. We carry out experiments to identify the important factors in maximising efficiency gains. Although in this work we have optimised execution time, other non-functional criteria could be optimised in a similar manner

    Darwinian Data Structure Selection

    Get PDF
    Data structure selection and tuning is laborious but can vastly improve an application's performance and memory footprint. Some data structures share a common interface and enjoy multiple implementations. We call them Darwinian Data Structures (DDS), since we can subject their implementations to survival of the fittest. We introduce ARTEMIS a multi-objective, cloud-based search-based optimisation framework that automatically finds optimal, tuned DDS modulo a test suite, then changes an application to use that DDS. ARTEMIS achieves substantial performance improvements for \emph{every} project in 55 Java projects from DaCapo benchmark, 88 popular projects and 3030 uniformly sampled projects from GitHub. For execution time, CPU usage, and memory consumption, ARTEMIS finds at least one solution that improves \emph{all} measures for 86%86\% (37/4337/43) of the projects. The median improvement across the best solutions is 4.8%4.8\%, 10.1%10.1\%, 5.1%5.1\% for runtime, memory and CPU usage. These aggregate results understate ARTEMIS's potential impact. Some of the benchmarks it improves are libraries or utility functions. Two examples are gson, a ubiquitous Java serialization framework, and xalan, Apache's XML transformation tool. ARTEMIS improves gson by 16.516.5\%, 1%1\% and 2.2%2.2\% for memory, runtime, and CPU; ARTEMIS improves xalan's memory consumption by 23.523.5\%. \emph{Every} client of these projects will benefit from these performance improvements.Comment: 11 page
    corecore