1,035 research outputs found
A Survey on Software Testing Techniques using Genetic Algorithm
The overall aim of the software industry is to ensure delivery of high
quality software to the end user. To ensure high quality software, it is
required to test software. Testing ensures that software meets user
specifications and requirements. However, the field of software testing has a
number of underlying issues like effective generation of test cases,
prioritisation of test cases etc which need to be tackled. These issues demand
on effort, time and cost of the testing. Different techniques and methodologies
have been proposed for taking care of these issues. Use of evolutionary
algorithms for automatic test generation has been an area of interest for many
researchers. Genetic Algorithm (GA) is one such form of evolutionary
algorithms. In this research paper, we present a survey of GA approach for
addressing the various issues encountered during software testing.Comment: 13 Page
Competent Program Evolution, Doctoral Dissertation, December 2006
Heuristic optimization methods are adaptive when they sample problem solutions based on knowledge of the search space gathered from past sampling. Recently, competent evolutionary optimization methods have been developed that adapt via probabilistic modeling of the search space. However, their effectiveness requires the existence of a compact problem decomposition in terms of prespecified solution parameters. How can we use these techniques to effectively and reliably solve program learning problems, given that program spaces will rarely have compact decompositions? One method is to manually build a problem-specific representation that is more tractable than the general space. But can this process be automated? My thesis is that the properties of programs and program spaces can be leveraged as inductive bias to reduce the burden of manual representation-building, leading to competent program evolution. The central contributions of this dissertation are a synthesis of the requirements for competent program evolution, and the design of a procedure, meta-optimizing semantic evolutionary search (MOSES), that meets these requirements. In support of my thesis, experimental results are provided to analyze and verify the effectiveness of MOSES, demonstrating scalability and real-world applicability
Lamarck's Revenge: Inheritance of Learned Traits Can Make Robot Evolution Better
Evolutionary robot systems offer two principal advantages: an advanced way of
developing robots through evolutionary optimization and a special research
platform to conduct what-if experiments regarding questions about evolution.
Our study sits at the intersection of these. We investigate the question ``What
if the 18th-century biologist Lamarck was not completely wrong and individual
traits learned during a lifetime could be passed on to offspring through
inheritance?'' We research this issue through simulations with an evolutionary
robot framework where morphologies (bodies) and controllers (brains) of robots
are evolvable and robots also can improve their controllers through learning
during their lifetime. Within this framework, we compare a Lamarckian system,
where learned bits of the brain are inheritable, with a Darwinian system, where
they are not. Analyzing simulations based on these systems, we obtain new
insights about Lamarckian evolution dynamics and the interaction between
evolution and learning. Specifically, we show that Lamarckism amplifies the
emergence of `morphological intelligence', the ability of a given robot body to
acquire a good brain by learning, and identify the source of this success:
`newborn' robots have a higher fitness because their inherited brains match
their bodies better than those in a Darwinian system.Comment: preprint-nature scientific report. arXiv admin note: text overlap
with arXiv:2303.1259
Recommended from our members
The application of software visualization technology to evolutionary computation: a case study in Genetic Algorithms
Evolutionary computation is an area within the field of artificial intelligence that is founded upon the principles of biological evolution. Evolution can be defined as the process of gradual development. Evolutionary algorithms are typically applied as a generic problem solving method, searching a problem space in order to locate good solutions. These solutions are found through an iterative evolutionary search that progresses by means of gradual developments.
In the majority of cases of evolutionary computation the user is not aware of their algorithm's search behaviour. This causes two problems. First, the user has no way of assuring the quality of any solutions found other than to compare the solutions found by the algorithm with any available benchmark solutions or to re-run the algorithm and check if the results can be repeated or improved upon. Second, because the user is unaware of the algorithm's behaviour they have no way of identifying the contribution of the different components of the algorithm and therefore, no direct way of analyzing the algorithm's design and assigning credit to good algorithm components, or locating and improving ineffective algorithm components.
The artificial intelligence and engineering communities have been slow to accept evolutionary computation as a robust problem-solving method because, unlike cased-based systems, rule-based systems or belief networks, they are unable to follow the algorithm's reasoning when locating a set of solutions in the problem space. During an evolutionary algorithm's execution the user may be able to see the results of the search but the search process itself like is a "black box" to the user. It is the search behaviour of evolutionary algorithms that needs to be understood by the user, in order for evolutionary computation to become more accepted within these communities.
The aim of software visualization is to help people understand and use computer software. Software visualization technology has been applied successfully to illustrate a variety of heuristic search algorithms, programming languages and data structures. This thesis adopts software visualization as an approach for illustrating the search behaviour of evolutionary algorithms.
Genetic Algorithms ("GAs") are used here as a specific case study to illustrate how software visualization may be applied to evolutionary computation. A set of visualization requirements are derived from the findings of a GA user study. A number of search space visualization techniques are examined for illustrating the search behaviour of a GA. "Henson," an extendable framework for developing visualization tools for genetic algorithms is presented. Finally, the application of the Henson framework is illustrated by the development of "Gonzo," a visualization tool designed to enable GA users to explore their algorithm's search behaviour.
The contributions made in this thesis extend into the areas of software visualization, evolutionary computation and the psychology of programming. The GA user study presented here is the first and only known study of the working practices of GA users. The search space visualization techniques proposed here have never been applied in this domain before, and the resulting interactive visualizations provide the GA user with a previously unavailable insight into their algorithm's operation
Genetic Improvement of Software: From Program Landscapes to the Automatic Improvement of a Live System
In today’s technology driven society, software is becoming increasingly important in more
areas of our lives. The domain of software extends beyond the obvious domain of computers,
tablets, and mobile phones. Smart devices and the internet-of-things have inspired the integra-
tion of digital and computational technology into objects that some of us would never have
guessed could be possible or even necessary. Fridges and freezers connected to social media
sites, a toaster activated with a mobile phone, physical buttons for shopping, and verbally
asking smart speakers to order a meal to be delivered. This is the world we live in and it is an
exciting time for software engineers and computer scientists. The sheer volume of code that is
currently in use has long since outgrown beyond the point of any hope for proper manual
maintenance. The rate of which mobile application stores such as Google’s and Apple’s have
expanded is astounding.
The research presented here aims to shed a light on an emerging field of research, called
Genetic Improvement ( GI ) of software. It is a methodology to change program code to improve
existing software. This thesis details a framework for GI that is then applied to explore fitness
landscape of bug fixing Python software, reduce execution time in a C ++ program, and
integrated into a live system.
We show that software is generally not fragile and although fitness landscapes for GI are
flat they are not impossible to search in. This conclusion applies equally to bug fixing in small
programs as well as execution time improvements. The framework’s application is shown to
be transportable between programming languages with minimal effort. Additionally, it can be
easily integrated into a system that runs a live web service.
The work within this thesis was funded by EPSRC grant EP/J017515/1 through the DAASE
project
Language Model Crossover: Variation through Few-Shot Prompting
This paper pursues the insight that language models naturally enable an
intelligent variation operator similar in spirit to evolutionary crossover. In
particular, language models of sufficient scale demonstrate in-context
learning, i.e. they can learn from associations between a small number of input
patterns to generate outputs incorporating such associations (also called
few-shot prompting). This ability can be leveraged to form a simple but
powerful variation operator, i.e. to prompt a language model with a few
text-based genotypes (such as code, plain-text sentences, or equations), and to
parse its corresponding output as those genotypes' offspring. The promise of
such language model crossover (which is simple to implement and can leverage
many different open-source language models) is that it enables a simple
mechanism to evolve semantically-rich text representations (with few
domain-specific tweaks), and naturally benefits from current progress in
language models. Experiments in this paper highlight the versatility of
language-model crossover, through evolving binary bit-strings, sentences,
equations, text-to-image prompts, and Python code. The conclusion is that
language model crossover is a promising method for evolving genomes
representable as text
GAFit : a computational tool kit for parameterizations of potential energy surfaces
The potential energy surface of a molecular system governs many of its chemical properties,
and particularly, the dynamics, that is, the spatial evolution of nuclei with time.
Most of the chemical dynamics simulations performed nowadays involve integration of the
classical equations of motion, calculating the forces on atoms at each step either directly
by electronic structure calculations (i.e., “on-the-fly” or direct dynamics) or from analytical
PES (Potential Energy Surfaces). In principle, the direct dynamics approach may be the
preferred option for simulations of reactive systems that include a small number of atoms,
because one avoids the construction of the analytical surface.
The use of analytical PES, however, has a clear advantage in terms of CPU-time costs,
being mandatory in molecular dynamics simulations of systems composed by thousands of
atoms. Even for small-size systems, the use of an analytical surface may be a convenient
choice. If it is developed with care, it may be almost as accurate as the exact surface
corresponding to the electronic structure method used as a reference for its construction.
The development of analytical PES may be facilitated by using optimization methods,
and many research groups have been using them for their particular purposes. However,
to our knowledge, there is not a general code that allows users to parametrize analytical
surfaces in a relatively easy way. The aim of the present work was to write a suite of
programs to assist users in developing analytical surfaces. This suite of programs is called
GAFit.
GAFit is a package of programs initially developed to facilitate fittings of intermolecular
potentials and reparametrizations of semiempirical Hamiltonians. However, it can be easily
adjusted for other purposes in which fittings of a series of parameters are needed. The core
of the package is the genetic algorithm developed by Marques and co-workers (Marques,
J M C; Prudente, F V; Pereira F B; Almeida M M; Maniero A M and Fellows C E. “A new
genetic algorithm to be used in the direct fit of potential energy curves to ab initio and
spectroscopic data”. In: Journal of Physics B: Atomic, Molecular and Optical Physics 41.8
(2008),p. 085103.).
The functionality of the package was extended separating the core itself from the fitting
targets. Now, users can choose, upon their programming skills, from introducing their
custom potentials directly into code, use an easy pre-coded potential template to do so, or
for those with no programming knowledge at all, use an analytical expression or the most
used potentials coded just ready to use. A complete set of tools were added to the package
to facilitate the creation and configuration of input files.
In addition, an external interface was developed to interact with external programs.
Using this interface the tools needed to use GAFit to parametrize the MOPAC program
were developed. A further MOPAC enhanced interface permits running parallel copies of
MOPAC to speed up calculations and face up some problems encountered during the first
stage development
Genetic algorithms using Galib
GAlib is a C++ library of genetic algorithm objects that was recently developed at the Massachusetts Institute of Technology. This thesis is to demonstrate its functionality and versatility for implementing haploid tripartite genetic algorithms; We first built a test bed in which GAlib could be used. To achieve this, we used GAlib to solve the Traveling Salesman Problem and implemented two-opt and simulated annealing for compariSon We then examined the use of genetic algorithms for finding loop invariants. We used GAlib successfully to build a model but results remain inconclusive; In our main thrust we applied genetic algorithms to train and develop neural networks. To develop neural network architectures we used two different methods of representing neural networks: connection matrices and graph-generation grammars. We were able to demonstrate that genetic algorithms are an effective tool for training networks as well as for finding network architectures
Neutral Networks of Real-World Programs and their Application to Automated Software Evolution
The existing software development ecosystem is the product of evolutionary forces, and consequently real-world software is amenable to improvement through automated evolutionary techniques. This dissertation presents empirical evidence that software is inherently robust to small randomized program transformations, or \u27mutations. Simple and general mutation operations are demonstrated that can be applied to software source code, compiled assembler code, or directly to binary executables. These mutations often generate variants of working programs that differ significantly from the original, yet remain fully functional. Applying successive mutations to the same software program uncovers large \u27neutral networks\u27 of fully functional variants of real-world software projects. These properties of \u27mutational robustness\u27 and the corresponding \u27neutral networks\u27 have been studied extensively in biology and are believed to be related to the capacity for unsupervised evolution and adaptation. As in biological systems, mutational robustness and neutral networks in software systems enable automated evolution. The dissertation presents several applications that leverage software neutral networks to automate common software development and maintenance tasks. Neutral networks are explored to generate diverse implementations of software for improving runtime security and for proactively repairing latent bugs. Next, a technique is introduced for automatically repairing bugs in the assembler and executables compiled from off-the-shelf software. As demonstration, a proprietary executable is manipulated to patch security vulnerabilities without access to source code or any aid from the software vendor. Finally, software neutral networks are leveraged to optimize complex nonfunctional runtime properties. This optimization technique is used to reduce the energy consumption of the popular PARSEC benchmark applications by 20% as compared to the best available public domain compiler optimizations. The applications presented herein apply evolutionary computation techniques to existing software using common software engineering tools. By enabling evolutionary techniques within the existing software development toolchain, this work is more likely to be of practical benefit to the developers and maintainers of real-world software systems
- …