JavaPermutationTools
Overview
JavaPermutationTools (JPT) is a Java library for representing and generating permutations and sequences, as well as performing computation on permutations and sequences. This includes implementations of a variety of permutation distance metrics as well as distance metrics on sequences (i.e., Strings, arrays, and other ordered data types).
The JPT source code repository is hosted on GitHub; and is licensed under the GNU General Public License Version 3 (GPLv3). The API documentation is found on this site. The library is regularly published to Maven Central, from which it is easily imported into software projects using Maven and other commonly used build tools.
Additionally, there is a GitHub repository of example programs that show basic usage of the JPT library, as well as replication programs that reproduce results found in published papers.
The JPT library originated as part of the research of Vincent A. Cicirello.
How to Cite
If you use JPT in your research, please cite the following article which describes the library:
- Vincent A. Cicirello. JavaPermutationTools: A Java Library of Permutation Distance Metrics. Journal of Open Source Software, 3(31):950, November 2018. [PDF] [BIB] [DOI]
Importing from Maven Central
To import JPT from the Maven Central repository (if your build tool is Maven), add the following to the dependencies section of your “pom.xml” (for other build tools, see the tool's documentation for the equivalent):
<dependency>
<groupId>org.cicirello</groupId>
<artifactId>jpt</artifactId>
<version>x.y.z</version>
</dependency>
Just replace x.y.z
with your desired version of the library.
Java Modules
The library provides a Java module, org.cicirello.jpt. To use in your project, add the following to your module-info.java:
module your.module.name.here {
requires org.cicirello.jpt;
}
This module includes the org.cicirello.permutations and org.cicirello.sequences packages as well as their subpackages. See the API documentation for details.
Beginning with version 3.0.0, randomization and other math utilities, and some generic utilities, have been moved to a pair of new libraries ρμ and org.cicirello.core, which are now dependencies of JavaPermutationTools. Your dependency manager (see previous section) will handle downloading these for you.
To ease the transition of users of the library who may have been relying on those utilities, we have configured the module-info.java for the org.cicirello.jpt module to require these transitively so that your application should only need to require org.cicirello.jpt to access the functionality of those new modules.
Semantic Versioning
The JPT uses Semantic Versioning with version numbers of the form: MAJOR.MINOR.PATCH, where differences in MAJOR correspond to incompatible API changes, differences in MINOR correspond to introduction of backwards compatible new functionality, and PATCH corresponds to backwards compatible bug fixes.
Development Process
To maintain a high quality library, our development process utilizes the following:- Test Coverage: We require unit tests for all functionality. We generate JaCoCo test coverage reports on all push and pull-request events to the source code repository. Although we don't have a strict minimum coverage for acceptance, coverage is quite often at or near 100%. Current coverage is reported in the readme of the GitHub repository (updated automatically).
- Regression Testing: All new and existing tests are executed as part of all pull requests, and all must pass for acceptance.
- Static Analysis: We use multiple static analysis tools to scan for potential vulnerabilities, error prone code, and other potential code improvements. At the present time, this includes running:
Dependent Libraries
The following libraries depend upon JavaPermutationTools:
Related Publications
The following papers, many of which are related to fitness landscape analysis, have either used this library, or contributed to it in some way, such as papers about algorithms that are included in the library.
- Vincent A. Cicirello. A Survey and Analysis of Evolutionary Operators for Permutations. In Proceedings of the 15th International Joint Conference on Computational Intelligence, pages 288-299. November 2023. doi:10.5220/0012204900003595. [PDF] [BIB] [DOI] [CODE]
- Vincent A. Cicirello. On Fitness Landscape Analysis of Permutation Problems: From Distance Metrics to Mutation Operator Selection. Mobile Networks and Applications, 28(2): 507-517, April 2023. doi:10.1007/s11036-022-02060-z. [PDF] [BIB] [DOI] [PUB] [arXiv] [CODE]
- Vincent A. Cicirello. Cycle Mutation: Evolving Permutations via Cycle Induction. Applied Sciences, 12(11), Article 5506, June 2022. doi:10.3390/app12115506. [PDF] [BIB] [DOI] [arXiv]
- Vincent A. Cicirello. Kendall Tau Sequence Distance: Extending Kendall Tau from Ranks to Sequences. Industrial Networks and Intelligent Systems, 7(23), e1, April 2020. [PDF] [BIB] [DOI]
- Vincent A. Cicirello. Kendall Tau Sequence Distance: Extending Kendall Tau from Ranks to Sequences. arXiv preprint arXiv:1905.02752 [cs.DM], May 2019. [PDF] [BIB] [arXiv]
- Vincent A. Cicirello. Classification of Permutation Distance Metrics for Fitness Landscape Analysis. In Proceedings of the 11th International Conference on Bio-inspired Information and Communications Technologies. ICST, March 2019. [PDF] [BIB]
- Vincent A. Cicirello. The Permutation in a Haystack Problem and the Calculus of Search Landscapes. IEEE Transactions on Evolutionary Computation, 20(3):434-446, June 2016. [PDF] [BIB] [DOI]
- Vincent A. Cicirello. On the Effects of Window-Limits on the Distance Profiles of Permutation Neighborhood Operators. In Proceedings of the 8th International Conference on Bio-inspired Information and Communications Technologies, pages 28-35. ICST, December 2014. [PDF] [BIB] [PUB]
- Vincent A. Cicirello and Robert Cernera. Profiling the Distance Characteristics of Mutation Operators for Permutation-Based Genetic Algorithms. In Proceedings of the Twenty-Sixth International Florida Artificial Intelligence Research Society Conference, pages 46-51. AAAI Press, May 2013. [PDF] [BIB] [PUB]