Enhancing the Jaya R Package for Efficient Optimization - rstats-gsoc/gsoc2025 GitHub Wiki

Background

The 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 package by optimizing existing algorithms, enhancing parallel computation capabilities, improving compatibility with widely-used R packages, and strengthening overall usability and maintainability.

Related Work

The Jaya algorithm, introduced by Rao (2016), has demonstrated effectiveness in diverse optimization contexts. The 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.

Details of the Coding Project

The following enhancements will be implemented in the Jaya package:

1. Algorithmic Efficiency Improvements:

  • Optimize performance-critical loops and operations using vectorized functions from data.table or base R.
  • Refactor key internal functions to significantly reduce computational overhead.

2. Enhanced Parallel Computation:

  • Extend parallel computing capabilities using the future and furrr packages to support cross-platform, scalable parallelization.
  • Improve efficiency for large-scale optimization problems.

3. Expanded Compatibility with Popular R Ecosystem:

  • Provide seamless integration with optimization and data analysis packages such as tidyverse, data.table, and visualization tools such as ggplot2 for intuitive interpretation of optimization results.
  • Enhance interoperability with packages such as mlr3 and caret for improved usage in hyperparameter tuning tasks.

4. Robust Unit Testing and Continuous Integration:

  • Implement comprehensive unit testing using testthat and monitor test coverage using covr.
  • Establish continuous integration workflows via GitHub Actions to maintain software quality and reliability.

5. User-Friendly API Improvements:

  • Introduce intuitive function aliases and a streamlined interface for easier adoption by new users.
  • Enhance input validation and error handling with clear, actionable messages.

6. Comprehensive Documentation and Tutorials:

  • Enrich documentation with detailed examples and workflows, clearly documented using roxygen2.
  • Develop vignettes and interactive tutorials demonstrating real-world optimization scenarios.

Expected Impact

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.

Mentors

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], https://www.neerajbokde.in/

Varun Tiwari, Senior Researcher at the DEWA R&D Center, Dubai. Varun has substantial experience in optimization, data-driven modeling, and algorithmic development. [email protected]

Tests for Students

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.

Test Solutions

Students should submit their test results below:

Contributor Name GitHub Profile Test Results
Vaibhav Manihar Github Test Results
Priyanshu Tiwari Github Easy & Medium Tasks, Hard Task (Package Implementation)
Afraaz Ali GITHUB EASY TEST