org.cicirello

Code and experiment data from the paper: "Cycle Mutation: Evolving Permutations via Cycle Induction"

https://github.com/cicirello/cycle-mutation-experiments

Science Score: 57.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 5 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.1%) to scientific vocabulary

Keywords

cycle-mutation evolutionary-algorithms evolutionary-computation fitness-landscape-analysis genetic-algorithms largest-common-subgraph mutation permutation-distance permutation-mutation permutations qap quadratic-assignment-problem traveling-salesperson tsp

Keywords from Contributors

randomization mesh metaheuristic sequences scheduling interactive
Last synced: 4 months ago · JSON representation ·

Repository

Code and experiment data from the paper: "Cycle Mutation: Evolving Permutations via Cycle Induction"

Basic Info
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 1
Topics
cycle-mutation evolutionary-algorithms evolutionary-computation fitness-landscape-analysis genetic-algorithms largest-common-subgraph mutation permutation-distance permutation-mutation permutations qap quadratic-assignment-problem traveling-salesperson tsp
Created almost 4 years ago · Last pushed 5 months ago
Metadata Files
Readme License Citation

README.md

cycle-mutation-experiments

Copyright © 2022 Vincent A. Cicirello

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

Vincent A. Cicirello. 2022. Cycle Mutation: Evolving Permutations via Cycle Induction, Applied Sciences, 12(11), Article 5506 (June 2022). doi:10.3390/app12115506

| Related Publication | DOI | | :--- | :--- | | 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: * Chips-n-Salsa * JavaPermutationTools * ρμ * org.cicirello.core

Requirements to Build and Run the Experiments

To build and run the experiments on your own machine, you will need the following: * JDK 11: I used OpenJDK 11, 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 versions of Chips-n-Salsa (release 4.7.0), JavaPermutationTools (release 3.1.1), and ρμ (release 1.2.0) that were used in the experiments. * Python 3: The repository contains Python programs that were used to compute summary statistics, and to generate graphs for the figures of the paper. If you want to run the Python programs, you will need Python 3. I specifically used Python 3.9.6. You also need
matplotlib installed. * 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 directory. You can build the experiment programs in one of the following ways.

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

shell mvn clean package

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

shell make build

This produces a jar file containing several Java programs for running different parts of the experiments and analysis. The jar also contains all dependencies, including Chips-n-Salsa, JavaPermutationTools, and ρμ. If you are unfamiliar with the usual structure of the directories of a Java project built with Maven, the .class files, the .jar file, etc will be found in a target directory that is created by the build process.

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:

shell 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:

shell 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.

This will run each of the experiment programs in sequence, with the results piped to text files in the /data directory. Note that this directory already contains the output from my runs, so if you execute this command, you will overwrite the data that was used in the paper. Some parts of this will not change, but certain parts, due to randomization may not be exactly the same, although should be statistically consistent.

There are also several other targets in the Makefile if you wish to run only some of the experiments from the paper. See the Makefile for details.

One of the other make targets will execute the program that computes the fitness distance correlation (FDC) results for the three small instances of the different problems. To tun the FDC program, execute the following:

shell make fdc

Analyzing the Experimental Data

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

shell 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 in that directory, as well as output a few txt files with summary statistics into that directory. This make command will also take care of installing any required Python packages if you don't already have them installed, such as matplotlib.

To convert the eps versions of the figures to pdf, then after running the above analysis, run the following (this assumes that you have epstopdf installed):

shell make epstopdf

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, JavaPermutationTools, and ρμ libraries are licensed under the GNU General Public License 3.0.

Owner

  • Name: Vincent A. Cicirello
  • Login: cicirello
  • Kind: user
  • Location: Galloway, NJ
  • Company: Stockton University

Vincent A. Cicirello is a researcher in AI, evolutionary computation, and swarm intelligence.

Citation (CITATION.cff)

cff-version: "1.2.0"
message: "If you use this software, please cite it using these metadata."
authors: 
- family-names: "Cicirello"
  given-names: "Vincent A"
  orcid: "https://orcid.org/0000-0003-1072-8559"
title: "cycle-mutation-experiments"
license: "GPL-3.0-or-later"
url: "https://github.com/cicirello/cycle-mutation-experiments"
preferred-citation:
  type: article
  authors:
  - family-names: "Cicirello"
    given-names: "Vincent A"
    orcid: "https://orcid.org/0000-0003-1072-8559"
  doi: "10.3390/app12115506"
  journal: "Applied Sciences"
  title: "Cycle Mutation: Evolving Permutations via Cycle Induction"
  issue: 11
  volume: 12
  year: 2022
  month: 6

GitHub Events

Total
  • Delete event: 2
  • Pull request review event: 1
  • Pull request event: 2
  • Create event: 1
Last Year
  • Delete event: 2
  • Pull request review event: 1
  • Pull request event: 2
  • Create event: 1

Committers

Last synced: 11 months ago

All Time
  • Total Commits: 203
  • Total Committers: 2
  • Avg Commits per committer: 101.5
  • Development Distribution Score (DDS): 0.089
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Vincent A. Cicirello c****o 185
dependabot[bot] 4****] 18

Issues and Pull Requests

Last synced: 5 months ago

All Time
  • Total issues: 1
  • Total pull requests: 42
  • Average time to close issues: 2 days
  • Average time to close pull requests: 4 days
  • Total issue authors: 1
  • Total pull request authors: 2
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.21
  • Merged pull requests: 33
  • Bot issues: 0
  • Bot pull requests: 27
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • cicirello (1)
Pull Request Authors
  • dependabot[bot] (28)
  • cicirello (15)
Top Labels
Issue Labels
bug (1)
Pull Request Labels
dependencies (28) java (23) github_actions (3) ci-cd (1)

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 1
repo1.maven.org: org.cicirello:cycle-mutation-experiments

This package contains Java programs for reproducing the experiments, and analysis of experimental data, from the following article: Vincent A. Cicirello. 2022. Cycle Mutation: Evolving Permutations via Cycle Induction. Applied Sciences, 12, 11, Article 5506 (June 2022). https://doi.org/10.3390/app12115506. Also available at: https://www.cicirello.org/publications/applsci-12-05506.pdf

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 32.0%
Forks count: 39.8%
Average: 40.7%
Stargazers count: 42.3%
Dependent packages count: 48.9%
Last synced: 5 months ago

Dependencies

pom.xml maven
  • org.cicirello:chips-n-salsa 4.7.0
  • org.cicirello:core 1.1.0
  • org.cicirello:jpt 3.1.1
  • org.cicirello:rho-mu 1.2.0
  • junit:junit 4.13.2 test
.github/workflows/maven-publish.yml actions
  • actions/checkout v4 composite
  • actions/setup-java v3 composite