Giter VIP home page Giter VIP logo

cicirello / permutation-crossover-landscape-analysis Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 1.02 MB

Experiments for paper: A Survey and Analysis of Evolutionary Operators for Permutations

Home Page: https://www.cicirello.org/publications/cicirello2023ecta.html

License: GNU General Public License v3.0

Makefile 6.04% Java 84.86% Python 9.10%
crossover crossover-operators fitness-landscape-analysis mutation mutation-operators permutations

permutation-crossover-landscape-analysis's Introduction

permutation-crossover-landscape-analysis

Copyright © 2023 Vincent A. Cicirello

This repository contains code to reproduce the experiments, and analysis of experimental data, from the following paper:

Vincent A. Cicirello. 2023. A Survey and Analysis of Evolutionary Operators for Permutations. In Proceedings of the 15th International Joint Conference on Computational Intelligence, pages 288-299. doi:10.5220/0012204900003595.

Related Publication doi:10.5220/0012204900003595
License GitHub
Packages and Releases Maven Central GitHub release (latest by date)

Dependencies

The experiments depend upon the following libraries, and in some cases this research has also contributed to these libraries:

Requirements to Build and Run the Experiments

To build and run the experiments on your own machine, you will need the following:

  • JDK 17: I used OpenJDK 17, but other distributions should be fine.
  • Apache Maven: In the root of the repository, there is a pom.xml for building the Java programs for the experiments. Using this pom.xml, Maven will take care of downloading the exact version of Chips-n-Salsa (release 6.4.0) and its dependencies that were used in the experiments.
  • Python 3: The repository contains Python programs that were used to process the raw data for the paper. If you want to run the Python programs, you will need Python 3.
  • Make: The repository contains a Makefile to simplify running the build, running the experiment's Java programs, and running the Python program to analyze the data. If you are familiar with using the Maven build tool, and running Python programs, then you can just run these directly, although the Makefile may be useful to see the specific commands needed.

Building the Java Programs (Option 1)

The source code of the Java programs implementing the experiments is in the src/main/java directory. You can build the experiment programs in one of the following ways.

Using Maven: Execute the following from the root of the repository.

mvn clean package

Using Make: Or, you can execute the following from the root of the repository.

make build

Downloading a prebuilt jar (Option 2)

As an alternative to building the jar (see above), you can choose to instead download a prebuilt jar of the experiments from the Maven Central repository. The Makefile contains a target that will do this for you, provided that you have curl installed on your system. To download the jar of the precompiled code of the experiments, run the following from the root of the repository:

make download

The jar that it downloads contains the compiled code of the experiments as well as all dependencies within a single jar file.

Running the Experiments

If you just want to inspect the data from my runs, then you can find that output in the /data directory. If you instead want to run the experiments yourself, you must first either follow the build instructions or download a prebuilt jar (see above sections). Once the jar of the experiments is either built or downloaded, you can then run the experiments with the following executed at the root of the repository:

make experiments

If you don't want to overwrite my original data files, then first change the variable pathToDataFiles in the Makefile before running the above command.

Analyzing the Experimental Data

To run the Python program that I used to process the raw data,
and generate the figures for the paper, you need Python 3 installed. The source code of the Python programs is found in the src/main/python directory. To run the analysis, execute the following at the root of the repository:

make analysis

If you don't want to overwrite my original data files, and figures, then change the variable pathToDataFiles in the Makefile before running the above command.

This will analyze the data from the /data directory. It will also generate the figures, etc in that directory. This make command will also take care of installing any required Python packages if you don't already have them installed.

Other Files in the Repository

There are a few other files, potentially of interest, in the repository, which include:

  • system-stats.txt: This file contains details of the system I used to run the experiments, such as operating system, processor specs, Java JDK and VM. It is in the /data directory.

License

The code to replicate the experiments from the paper, as well as the Chips-n-Salsa library is licensed under the GNU General Public License 3.0.

permutation-crossover-landscape-analysis's People

Contributors

cicirello avatar dependabot[bot] avatar

Watchers

 avatar

permutation-crossover-landscape-analysis's Issues

Document content, structure, etc of the repository in the README

Summary

Write the README for the repository, documenting the following:

  • Paper title, etc for the ECTA 2023 paper
  • How to build, etc
  • Dependencies, etc
  • All other relevant details for the experiments contained in the repository.
  • Switch repository from private to public.

Publish jar of experiment code to Maven Central

Summary

Publish jar of experiment code to Maven Central, including:

  • Configuring repository for publishing to Maven Central and GitHub Packages
  • Adding workflow files for publishing artifacts
  • Well.... publishing the jar to Maven Central
  • Publishing jar to GitHub Packages
  • Updating README with download instructions from Maven Central
  • Adding Maven Central status badges to README

Update README with full citation once article published

Summary

Once the article is published in the conference proceedings, update the README with the citation, including any currently missing details, the doi, etc. This includes:

  • Adding citation to README.
  • Adding citation in source code comments.
  • Adding citation to pom.xml.
  • Adding citation file to repo.
  • Adding DOI badge to README.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.