{"id":15765441,"url":"https://github.com/cicirello/mone2022-experiments","last_synced_at":"2025-03-31T10:39:05.008Z","repository":{"id":42363791,"uuid":"452007322","full_name":"cicirello/MONE2022-experiments","owner":"cicirello","description":"Code and experiment data from the paper: \"On Fitness Landscape Analysis of Permutation Problems: From Distance Metrics to Mutation Operator Selection\"","archived":false,"fork":false,"pushed_at":"2023-12-01T21:34:07.000Z","size":1060,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-05T12:41:43.886Z","etag":null,"topics":["combinatorial-optimization","evolutionary-algorithm","evolutionary-computation","fitness-distance-correlation","fitness-landscape-analysis","genetic-algorithm","java","mutation","mutation-operators","permutation-distance","permutation-mutation","permutations"],"latest_commit_sha":null,"homepage":"https://www.cicirello.org/publications/cicirello2023mone.html","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cicirello.png","metadata":{"funding":{"github":"cicirello","patreon":null,"open_collective":null,"ko_fi":"cicirello","tidelift":null,"community_bridge":null,"liberapay":"cicirello","issuehunt":null,"otechie":null,"custom":null},"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-25T19:06:27.000Z","updated_at":"2023-11-25T17:04:20.000Z","dependencies_parsed_at":"2023-11-29T20:26:15.962Z","dependency_job_id":"47341f54-e77f-48a9-9fe7-b56cccbae54f","html_url":"https://github.com/cicirello/MONE2022-experiments","commit_stats":{"total_commits":59,"total_committers":2,"mean_commits":29.5,"dds":0.03389830508474578,"last_synced_commit":"c3266f37af6bab4674f12579dd638bd2e3f4bf30"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cicirello%2FMONE2022-experiments","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cicirello%2FMONE2022-experiments/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cicirello%2FMONE2022-experiments/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cicirello%2FMONE2022-experiments/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cicirello","download_url":"https://codeload.github.com/cicirello/MONE2022-experiments/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246457055,"owners_count":20780663,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["combinatorial-optimization","evolutionary-algorithm","evolutionary-computation","fitness-distance-correlation","fitness-landscape-analysis","genetic-algorithm","java","mutation","mutation-operators","permutation-distance","permutation-mutation","permutations"],"created_at":"2024-10-04T12:41:50.192Z","updated_at":"2025-03-31T10:39:04.988Z","avatar_url":"https://github.com/cicirello.png","language":"Java","funding_links":["https://github.com/sponsors/cicirello","https://ko-fi.com/cicirello","https://liberapay.com/cicirello"],"categories":[],"sub_categories":[],"readme":"# MONE2022-experiments\n\nCopyright \u0026copy; 2018-2019, 2022-2023 Vincent A. Cicirello\n\nThis repository contains code to reproduce the experiments, and analysis of \nexperimental data, from the following paper:\n\n\u003e Vincent A. Cicirello. 2023. [On Fitness Landscape Analysis of Permutation Problems: From Distance Metrics to Mutation Operator Selection](https://www.cicirello.org/publications/Cicirello-MONE-2022.pdf). *Mobile Networks and Applications* 28(2): 507-517, April 2023. doi:[10.1007/s11036-022-02060-z](https://doi.org/10.1007/s11036-022-02060-z)\n\nThe above article is an extended version the following earlier conference paper:\n\n\u003e Vincent A. Cicirello. 2019. [Classification of Permutation Distance Metrics for Fitness Landscape Analysis](https://www.cicirello.org/publications/cicirello-bict2019.pdf). In *Proceedings of the 11th International Conference on Bio-inspired Information and Communication Technologies*, pages 81-97. Springer Nature, March 2019. doi:[10.1007/978-3-030-24202-2_7](https://doi.org/10.1007/978-3-030-24202-2_7)\n\n| __Related Publications__ | [![DOI](doi.svg)](https://doi.org/10.1007/s11036-022-02060-z) [![DOI](bict-doi.svg)](https://doi.org/10.1007/978-3-030-24202-2_7) |\n| :--- | :--- |\n| __License__ | [![GitHub](https://img.shields.io/github/license/cicirello/MONE2022-experiments)](LICENSE) | \n| __Packages and Releases__ | [![Maven Central](https://img.shields.io/maven-central/v/org.cicirello/mone-article-experiments.svg?label=Maven%20Central)](https://central.sonatype.com/artifact/org.cicirello/mone-article-experiments/) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/cicirello/MONE2022-experiments?logo=GitHub)](https://github.com/cicirello/MONE2022-experiments/releases) |\n\n## Requirements to Build and Run the Experiments\n\nTo build and run the experiments on your own machine, you will need the following:\n* __JDK 11__: I used OpenJDK 11, but you should be fine with Oracle's \n  JDK as well. \n* __Apache Maven__: In the root of the repository, there is a `pom.xml` \n  for building the Java programs for the experiments. Using this `pom.xml`, \n  Maven will take care of downloading the exact versions of \n  [Chips-n-Salsa](https://chips-n-salsa.cicirello.org/) (release 4.2.1), \n  [JavaPermutationTools](https://jpt.cicirello.org) (release 3.0.0), and\n  [\u0026rho;\u0026mu;](https://rho-mu.cicirello.org) (release 1.1.0)  that were \n  used in the experiments. \n* __Python 3__: The repository contains Python programs that were used to \n  compute summary statistics, and to generate\n  graphs for the figures of the paper. If you want to run the Python programs, \n  you will need Python 3. I specifically used Python 3.9.6. You also need  \n  matplotlib installed.\n* __Make__: The repository contains a Makefile to simplify running the build, \n  running the experiment's Java programs, and running the Python program to \n  analyze the data. If you are familiar with using the Maven build tool, \n  and running Python programs, then you can just run these directly, although \n  the Makefile may be useful to see the specific commands needed.\n\n## Building the Java Programs (Option 1)\n\nThe source code of the Java programs, implementing the experiments\nis in the [src/main](src/main) directory.  You can build the experiment \nprograms in one of the following ways.\n\n__Using Maven__: Execute the following from the root of the\nrepository.\n\n```shell\nmvn clean package\n```\n\n__Using Make__: Or, you can execute the following from the root\nof the repository.\n\n```shell\nmake build\n```\n\nThis produces a jar file containing 6 Java programs for running \ndifferent parts of the experiments and analysis. The jar also contains all\ndependencies, including [Chips-n-Salsa](https://chips-n-salsa.cicirello.org/), \n[JavaPermutationTools](https://jpt.cicirello.org), and \n[\u0026rho;\u0026mu;](https://rho-mu.cicirello.org).\nIf you are unfamiliar with the usual structure of the directories of \na Java project built with Maven, the `.class` files, the `.jar` file, \netc will be found in a `target` directory that is created by the \nbuild process.\n\n## Downloading a prebuilt jar (Option 2)\n\nAs an alternative to building the jar (see above), you can choose to instead\ndownload a prebuilt jar of the experiments from the Maven Central repository.\nThe Makefile contains a target that will do this for you, provided that you have\ncurl installed on your system. To download the jar of the precompiled code of \nthe experiments, run the following from the root of the repository:\n\n```shell\nmake download\n```\n\nThe jar that it downloads contains the compiled code of the experiments as well\nas all dependencies within a single jar file.\n\n## Running the Experiments\n\nIf you just want to inspect the data from my runs, then you can find that output\nin the [/data](data) directory. If you instead want to run the experiments yourself,\nyou must first either follow the build instructions or download a prebuilt jar (see above\nsections). Once the jar of the experiments is either built or downloaded, you can then run \nthe experiments with the following executed at the root of the repository:\n\n```shell\nmake experiments\n```\n\nIf you don't want to overwrite my original data files, then first change the variable\n`pathToDataFiles` in the `Makefile` before running the above command.\n\nThis will run each of the experiment programs in sequence, \nwith the results piped to text files in the [/data](data) directory. Note that\nthis directory already contains the output from my runs, so if you execute this command,\nyou will overwrite the data that was used in the paper. Some parts of this will not\nchange, but certain parts, due to randomization may not be exactly the same, although should\nbe statistically consistent. \n\nThere are also several other targets in the Makefile if you wish to \nrun only some of the experiments from the paper. See the Makefile for\ndetails.\n\n## Analyzing the Experimental Data\n\nTo run the Python program that I used to generate summary statistics,  \nand generate the graphs for the figures from the paper,\nyou need Python 3 installed. The source code of the Python programs is \nfound in the [src/analysis](src/analysis) directory.  To run the analysis\nexecute the following at the root of the repository:\n\n```shell\nmake analysis\n```\n\nIf you don't want to overwrite my original data files, and figures, then change the variable\n`pathToDataFiles` in the `Makefile` before running the above command.\n\nThis will analyze the data from the [/data](data) directory. It will also \ngenerate the figures in that directory, as well as output a few txt files with\nsummary statistics into that directory. This make command will also take\ncare of installing any required Python packages if you don't already have them\ninstalled, such as matplotlib.\n\nTo convert the `eps` versions of the figures to `pdf`, then after running the above\nanalysis, run the following (this assumes that you have epstopdf installed):\n\n```shell\nmake epstopdf\n```\n\n## Running the Principle Component Analysis and Fitness Distance Correlation Examples\n\nThe above Makefile targets only runs and analyzes the experiments that originated with the \npaper for MONE. That paper is an extended version of a conference paper from the\nBICT 2019 conference. A couple sections of the MONE paper originated in that BICT 2019 \npaper, including sections that classified the various distance metrics for permutations\nusing principal component analysis, along with a few examples of fitness distance\ncorrelation. \n\nTo run the code to recreate that, use the following Makefile target:\n\n```shell\nmake bict2019\n```\n\n## Other Files in the Repository\n\nThere are a few other files, potentially of interest, in the repository,\nwhich include:\n* `system-stats.txt`: This file contains details of the system I \n  used to run the experiments, such as operating system, processor \n  specs, Java JDK and VM. It is in the [/data](data) directory.\n\n## License\n\nThe code to replicate the experiments from the paper, as well as the\nChips-n-Salsa, JavaPermutationTools, and \u0026rho;\u0026mu; libraries are licensed \nunder the [GNU General Public License 3.0](https://www.gnu.org/licenses/gpl-3.0.en.html).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcicirello%2Fmone2022-experiments","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcicirello%2Fmone2022-experiments","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcicirello%2Fmone2022-experiments/lists"}