The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
The Jaya
package provides a gradient-free optimization
algorithm that can solve single-objective and multi-objective
optimization problems. This vignette demonstrates how to use the
Jaya
package for optimization tasks.
To solve a single-objective optimization problem using
jaya
, define an objective function and specify the bounds
of the variables.
# Define the sphere function
sphere_function <- function(x) sum(x^2)
# Set optimization parameters
lower_bounds <- c(-5, -5, -5)
upper_bounds <- c(5, 5, 5)
# Run optimization
single_result <- jaya(
fun = sphere_function,
lower = lower_bounds,
upper = upper_bounds,
popSize = 20,
maxiter = 50,
n_var = length(lower_bounds),
opt = "minimize"
)
# Summary of results
summary(single_result)
#> Jaya Algorithm
#> Population Size = 20
#> Number of iterations = 50
#> Number of variables = 3
#>
#> Objective: minimize
#> Objective Function:
#> [[1]]
#> function (x)
#> sum(x^2)
#> <bytecode: 0x0000010c48162888>
#>
#>
#> Limits:
#> x1 = [-5, 5]
#> x2 = [-5, 5]
#> x3 = [-5, 5]
#>
#> Best Result:
#> Best.x1 Best.x2 Best.x3 Best.f.x.
#> Best -0.0001646166 0.0001403169 -7.613403e-05 5.258384e-08
# Plot the best value over iterations
plot(single_result)
To solve a multi-objective optimization problem, provide a list of objectives and specify the bounds of the variables.
# Define multiple objectives
objective1 <- function(x) sum(x^2)
objective2 <- function(x) sum((x - 2)^2)
# Combine objectives
objectives <- list(objective1, objective2)
# Run optimization
multi_result <- jaya_multi(
objectives = objectives,
lower = lower_bounds,
upper = upper_bounds,
popSize = 30,
maxiter = 100,
n_var = length(lower_bounds)
)
# Summary of results
summary(multi_result)
#> Length Class Mode
#> Pareto_Front 5 data.frame list
#> Solutions 5 data.frame list
# Pairwise plots for multi-objective Pareto front
plot_jaya_multi_pairwise(multi_result)
To stop optimization early if the improvement falls below a
threshold, use the early_stopping
parameter:
early_stopping_result <- jaya(
fun = sphere_function,
lower = lower_bounds,
upper = upper_bounds,
popSize = 20,
maxiter = 50,
n_var = length(lower_bounds),
early_stopping = TRUE,
tolerance = 1e-6,
patience = 5
)
summary(early_stopping_result)
#> Jaya Algorithm
#> Population Size = 20
#> Number of iterations = 50
#> Number of variables = 3
#>
#> Objective: minimize
#> Objective Function:
#> [[1]]
#> function (x)
#> sum(x^2)
#> <bytecode: 0x0000010c48162888>
#>
#>
#> Limits:
#> x1 = [-5, 5]
#> x2 = [-5, 5]
#> x3 = [-5, 5]
#>
#> Best Result:
#> Best.x1 Best.x2 Best.x3 Best.f.x.
#> Best -0.0002190876 0.0005351352 0.0004002594 4.945766e-07
The Jaya
package offers a versatile and easy-to-use
optimization framework for a variety of problems. Customize the
algorithm parameters to fit your specific needs and leverage its
advanced features for improved performance.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.