You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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).
Copy file name to clipboardExpand all lines: paper/paper.bib
+18-1Lines changed: 18 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -156,4 +156,21 @@ @misc{nlopt
156
156
url = {http://github.com/stevengj/nlopt},
157
157
version = {2.10.0},
158
158
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},
Copy file name to clipboardExpand all lines: paper/paper.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,13 +26,13 @@ bibliography: paper.bib
26
26
27
27
# Summary
28
28
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.
30
30
31
31
# Statement of need
32
32
33
33
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.
34
34
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.
36
36
37
37
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.
38
38
@@ -45,17 +45,17 @@ $$
45
45
$$
46
46
47
47
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].
49
49
50
50

51
51
52
52
# Library features
53
53
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.
55
55
56
56
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].
57
57
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.
59
59
60
60
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.
0 commit comments