-
Notifications
You must be signed in to change notification settings - Fork 5
Enhancing the Jaya R Package for Efficient Optimization
The [Jaya](https://cran.r-project.org/package=Jaya) R package implements the Jaya optimization algorithm, a gradient-free, population-based method suitable for solving both single-objective and multi-objective optimization problems. Jaya stands out for its simplicity and effectiveness, as it requires no hyperparameter tuning. Although the current version (1.0.3) offers robust foundational features, opportunities remain to enhance its computational efficiency, expand usability, and improve its integration with the broader R ecosystem.
This GSoC project proposes to significantly upgrade the [Jaya](https://cran.r-project.org/package=Jaya) package by optimizing existing algorithms, enhancing parallel computation capabilities, improving compatibility with widely-used R packages, and strengthening overall usability and maintainability.
The Jaya algorithm, introduced by Rao (2016), has demonstrated effectiveness in diverse optimization contexts. The [Jaya](https://cran.r-project.org/package=Jaya) R package, created by Neeraj Bokde, implements the core features detailed in Rao's work, including adaptive population adjustment and Pareto-based multi-objective optimization.
The package has seen positive adoption in academia and industry, but additional improvements in performance, modularity, and usability are necessary to support advanced research applications and integration into broader optimization workflows.
The following enhancements will be implemented in the [Jaya](https://cran.r-project.org/package=Jaya) package:
- Optimize performance-critical loops and operations using vectorized functions from
data.tableor base R. - Refactor key internal functions to significantly reduce computational overhead.
- Extend parallel computing capabilities using the
futureandfurrrpackages to support cross-platform, scalable parallelization. - Improve efficiency for large-scale optimization problems.
- Provide seamless integration with optimization and data analysis packages such as
tidyverse,data.table, and visualization tools such asggplot2for intuitive interpretation of optimization results. - Enhance interoperability with packages such as
mlr3andcaretfor improved usage in hyperparameter tuning tasks.
- Implement comprehensive unit testing using
testthatand monitor test coverage usingcovr. - Establish continuous integration workflows via GitHub Actions to maintain software quality and reliability.
- Introduce intuitive function aliases and a streamlined interface for easier adoption by new users.
- Enhance input validation and error handling with clear, actionable messages.
- Enrich documentation with detailed examples and workflows, clearly documented using
roxygen2. - Develop vignettes and interactive tutorials demonstrating real-world optimization scenarios.
These enhancements will significantly improve the computational performance, usability, and user adoption of the Jaya package. The updated version will facilitate integration into modern optimization and machine learning workflows, thus benefiting researchers, industry practitioners, and educators. Comprehensive documentation and robust unit testing will ensure the long-term sustainability and ease of community contributions.
Evaluating Mentor:
Neeraj Dhanraj Bokde, Senior Researcher at Technology Innovation Institute, Abu Dhabi, and creator of the Jaya package. Neeraj holds a Ph.D. in Data Science, with extensive experience in R package development, optimization algorithms, and GSoC mentorship. [[email protected]](mailto:[email protected]), https://www.neerajbokde.in/
Aditya Gupta, Researcher at the University of Agder, Norway. Aditya has substantial experience in optimization, data-driven modeling, and algorithmic development. [[email protected]](mailto:[email protected])
Students should complete at least one test before contacting mentors:
- Easy: Install and demonstrate usage of the current Jaya package for optimizing a simple optimization problem. Provide documentation in RMarkdown.
- Medium: Propose a specific feature or algorithm improvement for inclusion in the package, clearly justifying its value.
- Hard: Implement a basic prototype of proposed new functionality, including associated tests and a minimal vignette. Ensure the package builds successfully with no Error/Warning/Note via [win-builder](https://win-builder.r-project.org/).
Students should submit their test results below:
| Contributor Name | GitHub Profile | Test Results |
|---|---|---|