151,194 research outputs found
Evolutionary improvement of programs
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
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
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
Recommended from our members
A design framework for enabling sustainability in the clothing sector
This article discusses general strategies to enable environmental sustainability within the clothing sector, providing a framework for decision makers involved in the development of programs and policies for this sector. It initially revises the environmental impact of the clothing system and determines its key environmental sustainability priorities. The framework involves five evolutionary strategies for enabling sustainable consumption and production: 1) environmental improvement of flows throughout the supply chain; 2) environmental redesign of existing clothes; 3) design of new clothes intrinsically more sustainable; 4) design of cloth-service systems and 5) promoting life styles towards sufficient consumption. The practical implications of each strategy is analysed based on correspondent ex-post-facto case studies identified in Brazil, using data collected through literature review and desktop research
Multi-objective improvement of software using co-evolution and smart seeding
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
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
Java projects from DaCapo benchmark, popular projects and 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 () of the projects. The median improvement across
the best solutions is , , 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 \%, and for
memory, runtime, and CPU; ARTEMIS improves xalan's memory consumption by
\%. \emph{Every} client of these projects will benefit from these
performance improvements.Comment: 11 page
- …