org.cicirello

Experiments with simulated annealing and an optimized version of the modified lam adaptive annealing schedule

https://github.com/cicirello/modified-lam-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 4 DOI reference(s) in README
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.0%) to scientific vocabulary

Keywords

adaptive-annealing experiments modified-lam optimization simulated-annealing

Keywords from Contributors

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

Repository

Experiments with simulated annealing and an optimized version of the modified lam adaptive annealing schedule

Basic Info
Statistics
  • Stars: 3
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 1
Topics
adaptive-annealing experiments modified-lam optimization simulated-annealing
Created over 5 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

modified-lam-experiments

Copyright © 2020 Vincent A. Cicirello

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

Vincent A. Cicirello. 2020. Optimizing the Modified Lam Annealing Schedule. Industrial Networks and Intelligent Systems, 7(25), Article e1 (December 2020). https://doi.org/10.4108/eai.16-12-2020.167653.

| Related Publication: | DOI | | :--- | :--- | | Source Info: | GitHub | | Packages and Releases: | Maven Central GitHub release (latest by date) |

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 you should be fine with Oracle's JDK as well. Technically, there is nothing in the code that strictly requires Java 11, so you should be able to build and run with JDK 8 or later. However, the Maven pom.xml provided in the repository assumes Java 11. Also, if you want to recreate the experiments in as similar an environment as used in the reported results, then you should use Java 11. * 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 the Chips-n-Salsa library that was used in the experiments (release 2.2.0), as well as Chips-n-Salsa's dependencies. Additionally, there is a file pom-get-from-central.xml, which is an alternate Maven pom file that I provided if you would prefer to download and use a prebuilt jar file of the experiments from Maven Central, rather than building locally on your own machine. * Python 3: The repository contains a Python program that was used to compute summary statistics, as well as statistical significance tests. If you want to run this Python program, you will need Python 3. I specifically used Python 3.8.2. You also need scipy installed to run this Python program. * Make: The repository also 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 Experiment's Java Programs

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: * Execute mvn compile at the root of the repository. * Or, execute make or make build at the root of the repository (which simply executes a mvn compile).

This produces 5 Java programs for running different parts of the experiments. If you are unfamiliar with the usual structure of the directories of a Java project built with Maven, the .class files, etc will be found in a target directory that is created by the build process.

Downloading a Prebuilt Jar of the Experiment's Java Programs

For convenience, a prebuilt jar file of the experiment's Java programs is available in the Maven Central Repository. I have provided an alternate to the Maven pom.xml file, pom-get-from-central.xml, which can be used to download the prebuilt jar. Use it in one of the following ways: * Execute mvn -f pom-get-from-central.xml clean dependency:copy-dependencies at the root of the repository. * Or, execute make download at the root of the repository (which does the above).

This will download a jar file containing the compiled experiment programs, as well as the jar files of the appropriate versions of the Chips-n-Salsa library, and its dependencies, all of which will be in the target directory.

Running the Experiments

Once you have either successfully executed the build or downloaded the jars from Maven Central, you can then run the experiments. If you built the experiment programs locally on your machine, then run the experiments by executing make experiments at the root of the repository. If you instead downloaded the prebuilt jar, then run the experiments by executing make experimentsCentral. In either case, this will run each of the experiment programs in sequence, with the results piped to text files in the root of the project. The output from my runs are found in the /data directory.

The experiments produce 5 text files with data: * anneal.txt: This has data comparing the two versions of the annealing schedule independent from Simulated Annealing. * onemax.txt: This has results from a comparison on the OneMax problem. * boundmax.txt: This has results from a comparison on the BoundMax problem. * haystack.txt: This has results from a comparison on the Permutation in a Haystack problem. * roots.txt: This has results from a comparison on a Polynomial Root Finding problem.

You can find these 5 files from my runs of the experiments in the /data directory.

Analyzing the Experimental Data

To run the Python program that I used to generate summary statistics and run significance tests, you need Python 3 installed. The source code of this Python program is found in the src/analysis directory, and consists of a single Python file experimentstats.py. To run that Python program, execute make analysis in the root of the project. This assumes that you have run the experiments above, and that the output of the experiments is in the root of the project. If you want to simply run it against the result of my runs, then change the variable pathToDataFiles = "data/" in the Makefile. Executing the Makefile in this way will also take care of installing scipy if you don't already have it installed, and will pass the appropriate command line parameters to the Python program for each of the data files.

The output of this analysis program is piped to a file stats.txt in the root of the project. This file from my run of the experiments is found in the /data directory.

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. * graphs.xlsx: An Excel spreadsheet used to generate the graphs of the paper. It is also in the /data directory. * /data/figures directory: This is probably of less interest to someone other than me. It contains the figures of the paper in eps format, along with some intermediate formats.

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 the article in preferred-citation."
authors: 
- family-names: "Cicirello"
  given-names: "Vincent A"
  orcid: "https://orcid.org/0000-0003-1072-8559"
title: "modified-lam-experiments"
license: "GPL-3.0-or-later"
url: "https://github.com/cicirello/modified-lam-experiments"
preferred-citation:
  type: article
  authors:
  - family-names: "Cicirello"
    given-names: "Vincent A"
    orcid: "https://orcid.org/0000-0003-1072-8559"
  doi: "10.4108/eai.16-12-2020.167653"
  journal: "Industrial Networks and Intelligent Systems"
  title: "Optimizing the Modified Lam Annealing Schedule"
  issue: 25
  volume: 7
  year: 2020
  month: 12

GitHub Events

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

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 67
  • Total Committers: 2
  • Avg Commits per committer: 33.5
  • Development Distribution Score (DDS): 0.06
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 63
dependabot[bot] 4****] 4

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 0
  • Total pull requests: 7
  • Average time to close issues: N/A
  • Average time to close pull requests: about 1 hour
  • Total issue authors: 0
  • Total pull request authors: 2
  • Average comments per issue: 0
  • Average comments per pull request: 0.29
  • Merged pull requests: 5
  • Bot issues: 0
  • Bot pull requests: 6
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
Pull Request Authors
  • dependabot[bot] (6)
  • cicirello (1)
Top Labels
Issue Labels
Pull Request Labels
dependencies (6) ci-cd (1) github_actions (1)

Packages

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

This package contains Java programs for reproducing the experiments, and analysis of experimental data, from the following journal article: Vincent A. Cicirello. 2020. Optimizing the Modified Lam Annealing Schedule. Industrial Networks and Intelligent Systems, 7(25), Article e1 (December 2020). https://doi.org/10.4108/eai.16-12-2020.167653. The full text of this article is also available at: https://www.cicirello.org/publications/eai.16-12-2020.167653.pdf.

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 32.0%
Stargazers count: 37.7%
Average: 39.6%
Forks count: 39.8%
Dependent packages count: 48.9%
Last synced: 6 months ago

Dependencies

pom.xml maven
  • org.cicirello:chips-n-salsa 2.2.0
.github/workflows/maven-publish.yml actions
  • actions/checkout v4 composite
  • actions/setup-java v3 composite