44,055 research outputs found
New operators for non-functional genetic improvement
Genetic improvement uses automated search to find improved versions of existing software. Typically software is modified using either delete, copy or replace operations at the level of source code, its abstract syntax tree, binary or assembly representaion. Impressive improvements have been achieved through this approach, yet research in the use of other search operators is largely unexplored. We propose several ways for devising new search operators for improvement of non-functional properties using a genetic improvement apporach
Multi-Objective Improvement of Android Applications
Non-functional properties, such as runtime or memory use, are important to
mobile app users and developers, as they affect user experience. Previous work
on automated improvement of non-functional properties in mobile apps failed to
address the inherent trade-offs between such properties. We propose a practical
approach and the first open-source tool, GIDroid (2023), for multi-objective
automated improvement of Android apps. In particular, we use Genetic
improvement, a search-based technique that navigates the space of software
variants to find improved software. We use a simulation-based testing framework
to greatly improve the speed of search. GIDroid contains three state-of-the-art
multi-objective algorithms, and two new mutation operators, which cache the
results of method calls. Genetic improvement relies on testing to validate
patches. Previous work showed that tests in open-source Android applications
are scarce. We thus wrote tests for 21 versions of 7 Android apps, creating a
new benchmark for performance improvements. We used GIDroid to improve versions
of mobile apps where developers had previously found improvements to runtime,
memory, and bandwidth use. Our technique automatically re-discovers 64% of
existing improvements. We then applied our approach to current versions of
software in which there were no known improvements. We were able to improve
execution time by up to 35%, and memory use by up to 33% in these apps.Comment: 32 pages, 8 Figure
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
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
Searching for Globally Optimal Functional Forms for Inter-Atomic Potentials Using Parallel Tempering and Genetic Programming
We develop a Genetic Programming-based methodology that enables discovery of
novel functional forms for classical inter-atomic force-fields, used in
molecular dynamics simulations. Unlike previous efforts in the field, that fit
only the parameters to the fixed functional forms, we instead use a novel
algorithm to search the space of many possible functional forms. While a
follow-on practical procedure will use experimental and {\it ab inito} data to
find an optimal functional form for a forcefield, we first validate the
approach using a manufactured solution. This validation has the advantage of a
well-defined metric of success. We manufactured a training set of atomic
coordinate data with an associated set of global energies using the well-known
Lennard-Jones inter-atomic potential. We performed an automatic functional form
fitting procedure starting with a population of random functions, using a
genetic programming functional formulation, and a parallel tempering
Metropolis-based optimization algorithm. Our massively-parallel method
independently discovered the Lennard-Jones function after searching for several
hours on 100 processors and covering a miniscule portion of the configuration
space. We find that the method is suitable for unsupervised discovery of
functional forms for inter-atomic potentials/force-fields. We also find that
our parallel tempering Metropolis-based approach significantly improves the
optimization convergence time, and takes good advantage of the parallel cluster
architecture
Genetic Programming for Smart Phone Personalisation
Personalisation in smart phones requires adaptability to dynamic context
based on user mobility, application usage and sensor inputs. Current
personalisation approaches, which rely on static logic that is developed a
priori, do not provide sufficient adaptability to dynamic and unexpected
context. This paper proposes genetic programming (GP), which can evolve program
logic in realtime, as an online learning method to deal with the highly dynamic
context in smart phone personalisation. We introduce the concept of
collaborative smart phone personalisation through the GP Island Model, in order
to exploit shared context among co-located phone users and reduce convergence
time. We implement these concepts on real smartphones to demonstrate the
capability of personalisation through GP and to explore the benefits of the
Island Model. Our empirical evaluations on two example applications confirm
that the Island Model can reduce convergence time by up to two-thirds over
standalone GP personalisation.Comment: 43 pages, 11 figure
Dynamical transitions in the evolution of learning algorithms by selection
We study the evolution of artificial learning systems by means of selection.
Genetic programming is used to generate a sequence of populations of algorithms
which can be used by neural networks for supervised learning of a rule that
generates examples. In opposition to concentrating on final results, which
would be the natural aim while designing good learning algorithms, we study the
evolution process and pay particular attention to the temporal order of
appearance of functional structures responsible for the improvements in the
learning process, as measured by the generalization capabilities of the
resulting algorithms. The effect of such appearances can be described as
dynamical phase transitions. The concepts of phenotypic and genotypic
entropies, which serve to describe the distribution of fitness in the
population and the distribution of symbols respectively, are used to monitor
the dynamics. In different runs the phase transitions might be present or not,
with the system finding out good solutions, or staying in poor regions of
algorithm space. Whenever phase transitions occur, the sequence of appearances
are the same. We identify combinations of variables and operators which are
useful in measuring experience or performance in rule extraction and can thus
implement useful annealing of the learning schedule.Comment: 11 pages, 11 figures, 2 table
Organismic Supercategories and Qualitative Dynamics of Systems
The representation of biological systems by means of organismic supercategories, developed in previous papers, is further discussed. The different approaches to relational biology, developed by Rashevsky, Rosen and by Baianu and Marinescu, are compared with Qualitative Dynamics of Systems which was initiated by Henri Poincaré (1881). On the basis of this comparison some concrete results concerning dynamics of genetic system, development, fertilization, regeneration, analogies, and oncogenesis are derived
- …