Open Source Evolutionary Computation with Chips-n-Salsa

Vincent A. Cicirello
DOI: https://doi.org/10.5220/0013040600003837
2024-12-03
Abstract:When it was first introduced, the Chips-n-Salsa Java library provided stochastic local search and related algorithms, with a focus on self-adaptation and parallel execution. For the past four years, we expanded its scope to include evolutionary computation. This paper concerns the evolutionary algorithms that Chips-n-Salsa now provides, which includes multiple evolutionary models, common problem representations, a wide range of mutation and crossover operators, and a variety of benchmark problems. Well-defined Java interfaces enable easily integrating custom representations and evolutionary operators, as well as defining optimization problems. Chips-n-Salsa's evolutionary algorithms include implementations with adaptive mutation and crossover rates, as well as both sequential and parallel execution. Source code is maintained on GitHub, and immutable artifacts are regularly published to the Maven Central Repository to enable easily importing into projects for reproducible builds. Effective development processes such as test-driven development, as well as a variety of static analysis tools help ensure code quality.
Neural and Evolutionary Computing,Mathematical Software
What problem does this paper attempt to address?
The problem that this paper attempts to solve is to provide a comprehensive, open - source evolutionary computing framework to support researchers and practitioners in conducting efficient research and application of evolutionary algorithms (EAs). Specifically, the paper mainly addresses the following aspects: 1. **Expanding the Functionality of Chips - n - Salsa**: - **Introducing Evolutionary Computation**: Initially, the Chips - n - Salsa library was mainly used for random local search and other related algorithms, but did not include evolutionary computation. The paper describes how its functionality has been expanded over the past four years to support multiple evolutionary models. - **Diverse Evolutionary Models**: It provides multiple evolutionary models, including the classic generational EA, steady - state EA, (μ + λ)-EA, etc., as well as a special EA that only uses the mutation operation. 2. **Supporting Multiple Representations**: - **Built - in Representations**: It supports multiple common representations such as bit vectors, integer vectors, real - number vectors, and permutations, and provides rich mutation and crossover operators for each representation. - **Custom Representations**: Through Java generic types and implementing specific interfaces (such as `Copyable`, `MutationOperator`, `CrossoverOperator`), users can easily define custom representations and their corresponding evolutionary operations. 3. **Adaptivity and Parallelism**: - **Adaptive Evolutionary Algorithms**: It implements adaptive EAs, in which the crossover rate and mutation rate, as part of each individual, evolve through Gaussian mutation during the search process. - **Parallel Execution**: All meta - heuristic algorithms implement a parallel architecture, supporting multi - thread acceleration, especially on multi - core systems. 4. **Benchmark Problems**: - **Common Benchmark Problems**: These include the Ackley function, TSP (Traveling Salesman Problem), the knapsack problem, the maximum common subgraph, the quadratic assignment problem, etc. These benchmark problems are helpful for evaluating and comparing the performance of different evolutionary algorithms. 5. **High - Quality Development Practices**: - **Test - Driven Development**: It adopts unit tests, regression tests, and code - coverage analysis to ensure code quality. - **Static Analysis Tools**: It integrates multiple static analysis tools (such as CodeQL, SpotBugs, etc.) to automatically detect potential errors. - **Continuous Integration/Deployment**: It utilizes GitHub Actions to implement CI/CD (Continuous Integration/Continuous Deployment), ensuring that each commit can be automatically built and tested. 6. **Reproducible Research**: - **Immutable Software Artifacts**: Each version of the library is released to the Maven Central Repository to ensure the reproducibility of experiments. In future experiments, exactly the same components as the original version can be used. In summary, this paper aims to provide a powerful and flexible open - source framework for evolutionary computing research and application through the Chips - n - Salsa library, covering various features from classic evolutionary models to adaptive and parallel execution, and ensuring code quality and research reproducibility through strict development practices.