Skip to content

Commit be91fb5

Browse files
committed
Update paper with new reference and feature clarifications
Added a new reference for scatter search metaheuristics (Laguna2005) to the bibliography and cited it in the manuscript. Clarified the description of diversification and intensification strategies, improved explanations of Rust's parallelism, and specified the lack of open-source OQNLP implementations. Enhanced the discussion of library features and updated language for accuracy and clarity. This was based on Jonas Pleyer's comment in openjournals/joss-reviews#9234 (comment).
1 parent 389dda2 commit be91fb5

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

paper/paper.bib

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,21 @@ @misc{nlopt
156156
url = {http://github.com/stevengj/nlopt},
157157
version = {2.10.0},
158158
year = {2007}
159-
}
159+
}
160+
161+
@article{Laguna2005,
162+
abstract = {Scatter search is an evolutionary method that, unlike genetic algorithms, operates on a small set of solutions and makes only limited use of randomization as a proxy for diversification when searching for a globally optimal solution. The scatter search framework is flexible, allowing the development of alternative implementations with varying degrees of sophistication. In this paper, we test the merit of several scatter search designs in the context of global optimization of multimodal functions. We compare these designs among themselves and choose one to compare against a well-known genetic algorithm that has been specifically developed for this class of problems. The testing is performed on a set of benchmark multimodal functions with known global minima.},
163+
author = {Laguna, Manuel and Mart{í}, Rafael},
164+
day = {01},
165+
doi = {10.1007/s10898-004-1936-z},
166+
issn = {1573-2916},
167+
journal = {Journal of Global Optimization},
168+
month = {Oct},
169+
number = {2},
170+
pages = {235-255},
171+
title = {Experimental Testing of Advanced Scatter Search Designs for Global Optimization of Multimodal Functions},
172+
url = {https://doi.org/10.1007/s10898-004-1936-z},
173+
volume = {33},
174+
year = {2005}
175+
}
176+

paper/paper.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ bibliography: paper.bib
2626

2727
# Summary
2828

29-
`GlobalSearch-rs` is an open-source global optimization library written in Rust that implements a multistart optimization strategy. It is based on the `OptQuest/NLP (OQNLP)` algorithm, combining scatter search metaheuristics with local nonlinear programming (NLP) solvers. The software is designed to solve nonlinear global optimization problems by leveraging efficient parallel computing and Rust's memory safety guarantees. Additionally, `GlobalSearch-rs` provides Python bindings, allowing seamless integration with Python-based workflows, making it a versatile tool for working in scientific computing and data-driven optimization tasks. This library provides an alternative to proprietary solutions like MATLAB's `GlobalSearch`, offering a high-performance, open-source alternative accessible to the scientific and engineering communities.
29+
`GlobalSearch-rs` is an open-source global optimization library written in Rust that implements a multistart optimization strategy. It is based on the `OptQuest/NLP (OQNLP)` algorithm, combining scatter search metaheuristics with local nonlinear programming (NLP) solvers. The software is designed to solve nonlinear global optimization problems by leveraging Rust's built-in guarantees for safe and efficient parallel computing. Additionally, `GlobalSearch-rs` provides Python bindings, allowing seamless integration with Python-based workflows, making it a versatile tool for working in scientific computing and data-driven optimization tasks. This library provides an alternative to proprietary solutions like MATLAB's `GlobalSearch`, offering a high-performance, open-source alternative accessible to the scientific and engineering communities.
3030

3131
# Statement of need
3232

3333
Global optimization is a fundamental problem in engineering, physics, and applied mathematics, where objective functions often exhibit multiple local minima. The existing `OQNLP` algorithm [@ugray] effectively balances exploration (broad exploration of the search space) and exploitation (local refinement of promising regions) by employing a multi-start strategy with scatter search and local optimization.
3434

35-
Building on these algorithmic advances, practical software implementations have become essential for researchers and engineers. MATLAB’s `GlobalSearch`, for example, has been widely adopted, with applications ranging from airfoil design optimization [@airfoil] to kinetic mechanism analysis of polyurethane decomposition [@kinetics]. However, despite its popularity, to the best of our knowledge, no actively maintained open-source alternative currently exists. The only open-source implementation, `MEIGO` [@meigo], is still written in MATLAB, a proprietary language, limiting accessibility.
35+
Building on these algorithmic advances, practical software implementations have become essential for researchers and engineers. MATLAB’s `GlobalSearch`, for example, has been widely adopted, with applications ranging from airfoil design optimization [@airfoil] to kinetic mechanism analysis of polyurethane decomposition [@kinetics]. However, despite its popularity, to the best of our knowledge, no actively maintained open-source alternative that implements the `OQNLP` algorithm currently exists. The only open-source implementation, `MEIGO` [@meigo], is still written in MATLAB, a proprietary language, limiting accessibility.
3636

3737
Several high-quality open-source optimization libraries are available, such as `NLopt` [@nlopt] and `pagmo2` [@Biscani2020], both of which provide Rust and Python bindings. These libraries offer a broad collection of local and global optimization algorithms. However, neither of them provides an implementation of the `OQNLP` algorithm specifically.
3838

@@ -45,17 +45,17 @@ $$
4545
$$
4646

4747
Developed in Rust—a free and open-source programming language—it combines accessibility with performance, ensuring that researchers are not limited by proprietary ecosystems.
48-
Rust's ownership model and concurrency features enable safe and efficient execution, making the library suitable for high-performance computing applications, a suitability further supported by recent work demonstrating Rust's advantages in high-performance computing [@eth-rust].
48+
Rust's ownership model and concurrency features enable safe and efficient execution, making the library suitable for high-performance computing applications, a claim further supported by recent work demonstrating Rust's advantages in high-performance computing [@eth-rust].
4949

5050
![`GlobalSearch-rs` (right) and `PyGlobalSearch` (left) logos.\label{fig:logos}](./figures/logos.png)
5151

5252
# Library features
5353

54-
`GlobalSearch-rs` implements scatter search metaheuristics, which balances diversification and intensification strategies to navigate complex objective landscapes. By leveraging these techniques, the algorithm improves the exploration of global minima while refining promising candidate solutions through local search. However, as with other stochastic global optimization algorithms, `GlobalSearch-rs` cannot guarantee that the best solution found is the true global minimum. Instead, it aims to identify high-quality solutions with high probability. Users can increase confidence by performing multiple independent runs or using different random seeds.
54+
`GlobalSearch-rs` implements scatter search metaheuristics, which balances diversification (generation of a collection of diverse trial solutions) and intensification (deeper search around promising areas using) strategies to navigate complex objective landscapes [@Laguna2005]. By leveraging these techniques, the algorithm increases the probability of locating the true global minimum compared to simple local search methods, which can easily become trapped in local optima. However, as with other stochastic global optimization algorithms, `GlobalSearch-rs` cannot guarantee that the best solution found is the true global minimum. Instead, it aims to identify high-quality solutions with high probability. Users can increase confidence by performing multiple independent runs or using different random seeds.
5555

5656
The library integrates with both the `cobyla` [@cobyla] and `argmin` [@argmin] crates. These Rust-based optimization libraries provide a range of local NLP solvers. Supported methods include COBYLA, LBFGS, Nelder-Mead, Steepest Descent, Newton-Conjugate-Gradient and Trust Region solvers, ensuring flexibility in handling different types of objective functions [@drones7080487].
5757

58-
Parallel execution is a core feature of `GlobalSearch-rs`, utilizing the `Rayon` library to distribute computation across multiple threads. This has the potential to enhance computational efficiency, enabling users to tackle large-scale optimization problems with improved performance compared to single-threaded alternatives. To further support long-running tasks, the library provides checkpointing capabilities, allowing users to save and resume optimization states without restarting from scratch.
58+
Parallel execution is a core feature of `GlobalSearch-rs`, utilizing the `Rayon` library to distribute computation across multiple threads. This has the potential of significant reductions in elapsed (wall-clock) time by distributing computations across threads, enabling users to tackle large-scale optimization problems with improved completion time compared to single-threaded alternatives. To further support long-running tasks, the library provides checkpointing capabilities, allowing users to save and resume optimization states without restarting from scratch.
5959

6060
As an open-source and cross-platform library, `GlobalSearch-rs` is designed to be accessible to researchers and engineers from various fields. The Python bindings, created using `PyO3` and `maturin`, enable users to leverage its capabilities within Python-based numerical and data science environments (e.g., `NumPy` [@numpy], `JAX` [@jax]), making it a practical choice for interdisciplinary research and engineering applications.
6161

0 commit comments

Comments
 (0)