All Projects → yyxhdy → arja

yyxhdy / arja

Licence: MIT license
Multi-Objective GP for Automated Repair of Java

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to arja

opt4j
Modular Java framework for meta-heuristic optimization
Stars: ✭ 25 (-19.35%)
Mutual labels:  genetic-algorithm, multi-objective-optimization
multi objective optimization matlab
MATLAB Tool for Multi-Objective Optimization
Stars: ✭ 23 (-25.81%)
Mutual labels:  genetic-algorithm, multi-objective-optimization
Pac-Man
Evolutionary Pac-Man bots using Grammatical Evolution and Multi-objective Optimization. Cool GUI included (Undergraduate Thesis)
Stars: ✭ 50 (+61.29%)
Mutual labels:  genetic-programming, multi-objective-optimization
GeneticAlgorithmForFeatureSelection
Search the best feature subset for you classification mode
Stars: ✭ 82 (+164.52%)
Mutual labels:  genetic-algorithm, genetic-programming
tiny gp
Tiny Genetic Programming in Python
Stars: ✭ 58 (+87.1%)
Mutual labels:  genetic-algorithm, genetic-programming
wargames
two soldiers shooting at each other, controlled by a neural network with a genetic algorithm.
Stars: ✭ 22 (-29.03%)
Mutual labels:  genetic-algorithm, genetic-programming
geneal
A genetic algorithm implementation in python
Stars: ✭ 47 (+51.61%)
Mutual labels:  genetic-algorithm, genetic-programming
moses
MOSES Machine Learning: Meta-Optimizing Semantic Evolutionary Search. See also AS-MOSES https://github.com/opencog/asmoses but kept to guaranty backward compatibility.
Stars: ✭ 127 (+309.68%)
Mutual labels:  genetic-algorithm, genetic-programming
binlex
A Binary Genetic Traits Lexer Framework
Stars: ✭ 303 (+877.42%)
Mutual labels:  genetic-algorithm, genetic-programming
programming-note
Lecture notes on Computer Science, Web Development, and System Design
Stars: ✭ 199 (+541.94%)
Mutual labels:  software-engineering
hamilton
A scalable general purpose micro-framework for defining dataflows. You can use it to create dataframes, numpy matrices, python objects, ML models, etc.
Stars: ✭ 612 (+1874.19%)
Mutual labels:  software-engineering
GARI
GARI (Genetic Algorithm for Reproducing Images) reproduces a single image using Genetic Algorithm (GA) by evolving pixel values.
Stars: ✭ 41 (+32.26%)
Mutual labels:  genetic-algorithm
VRPTW-ga
Vehicle Routing Problem with Time Windows - Genetic Algorithm solution with Python
Stars: ✭ 40 (+29.03%)
Mutual labels:  genetic-algorithm
cs-sakaryauniversity
Sakarya Üniversitesi'nde okuduğum süre boyunca karşıma çıkan tüm ödevler, ders notları ve çıkmış sınav soruları (All the assignments, lecture notes and exams)
Stars: ✭ 133 (+329.03%)
Mutual labels:  software-engineering
design-patterns-explained
Explanation for most of the well-known design patterns with examples and figures.
Stars: ✭ 18 (-41.94%)
Mutual labels:  software-engineering
engineering-management
A list of resources about Software Engineering Management
Stars: ✭ 31 (+0%)
Mutual labels:  software-engineering
Metaheuristics.jl
High-performance metaheuristics for optimization coded purely in Julia.
Stars: ✭ 144 (+364.52%)
Mutual labels:  multi-objective-optimization
geneticalgorithm2
Supported highly optimized and flexible genetic algorithm package for python
Stars: ✭ 36 (+16.13%)
Mutual labels:  genetic-algorithm
plur
PLUR (Programming-Language Understanding and Repair) is a collection of source code datasets suitable for graph-based machine learning. We provide scripts for downloading, processing, and loading the datasets. This is done by offering a unified API and data structures for all datasets.
Stars: ✭ 67 (+116.13%)
Mutual labels:  software-engineering
ga-openai-gym
Usage of genetic algorithms to train a neural network in multiple OpenAI gym environments.
Stars: ✭ 24 (-22.58%)
Mutual labels:  genetic-algorithm

ARJA

ARJA is a new genetic programming (GP) based program repair approach for Java. ARJA is mainly characterized by a novel patch representation for GP, multi-objective search, test filtering procedure, type matching and several strategies to reduce the search space. This tool provides the implementation of ARJA along with three previous notable repair approaches (i.e., GenProg, RSRepair and Kali).

If you use ARJA for academic purpose, please include the following citation:

Yuan Yuan and Wolfgang Banzhaf. 2018. ARJA: Automated repair of Java programs via multi-objective genetic programming. IEEE Transactions on Software Engineering (2018). https://doi.org/10.1109/TSE.2018.2874648

Requirements

  1. Java JDK 1.7
  2. Mac OS X or Linux

How to Run

Set Up

First, clone ARJA to the local computer:

$ git clone https://github.com/yyxhdy/arja

There are four subdirectories in the root directory of the tool.

  1. ../arja/src : the source code of the tool
  2. ../arja/bin : the compiled classes of the tool
  3. ../arja/lib : the dependences of the tool (including a number of .jar files)
  4. ../arja/external : the external project

Minimum Usage

Enter into the root directory of the tool:

$ cd arja

Confirm that the current version of Java is JDK 1.7 and use the following command to run:

$ java -cp lib/*:bin us.msu.cse.repair.Main Arja -DsrcJavaDir path_to_directory_of_src_buggy \
                                                 -DbinJavaDir path_to_directory_of_binary_source_buggy \
                                                 -DbinTestDir path_to_directory_of_binary_test_buggy \
                                                 -Ddependences paths_to_dependences_buggy 

"Arja" means that the repair approach ARJA is run. Alternatively, "GenProg", "RSRepair" and "Kali" can be used. Moreover, at least four parameters related with the buggy program are required.

  1. -DsrcJavaDir :  the path to the root directory of the source code
  2. -DbinJavaDir :  the path to the root directory of all the compiled classes of source code
  3. -DbinTestDir : the path to the root directory of all the compiled classes of test code
  4. -Ddependences : the paths to the dependences (jar files). If more than one, separated by ":"

In the above command, "path_to_directory_of_src_buggy" etc should be replaced with the actual absolute paths (the tool currently only supports absolute paths). All the test-suite adequate patches found by the approach are saved in the directory arja/patches_$id$ by default. $id$ is a randomly generated string containing four characters.

Advanced Usage

The tool provides the other parameters to configure the repair approaches. The following command can be used to list all the parameters (including the description) available for each repair approach.

$ java -cp lib/*:bin us.msu.cse.repair.Main -listParameters

The following is an example to use more than four parameters:

$ java -cp lib/*:bin us.msu.cse.repair.Main Arja -DsrcJavaDir path_to_directory_of_src_buggy \
                                                 -DbinJavaDir path_to_directory_of_binary_source_buggy \
                                                 -DbinTestDir path_to_directory_of_binary_test_buggy \
                                                 -Ddependences paths_to_dependences_buggy \
                                                 -DpopulationSize value_of_population_size \
                                                 -DgzoltarDataDir path_to_directory_of_Gzoltar_output \

In this command, the parameter -DpopulationSize sets the population size of ARJA to "value_of_population_size"; the parameter -DgzoltarDataDir specifies the path to the root directory of the Gzoltar 1.6.2 output (see http://www.gzoltar.com/command-line.html).

How to Build

The users can also compile the tool themselves. First, enter into the root directory of the tool and clean the original binaries:

$ cd arja
$ rm -r bin

Then, compile the source code of the tool, and the compiled classes are saved in the directory "bin":

$ mkdir bin
$ javac -cp lib/*: -d bin $(find src -name '*.java')

Similarly, the external project is compiled as follows:

$ cd external
$ rm -r bin
$ mkdir bin
$ javac -cp lib/*: -d bin $(find src -name '*.java')

Evaluation

Our implemented approaches in this tool, including ARJA, GenProg, RSRepair and Kali, have been evaluated on 224 bugs in Defects4J (https://github.com/rjust/defects4j).

The test-suite adequate patches generated by these repair approaches are available at http://github.com/yyxhdy/defects4j-patches

We manually evaluate the correctness of the patches generated by ARJA. The detailed analysis of the patch correctness is available at https://github.com/yyxhdy/arja-supplemental

Contact

For questions and feedback, please contact [email protected]

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].