This function searches for global minimum of a very complex nonlinear objective function with a very large number of optima.
1 
par 
Vector. Initial values for the components to be optimized. Default is 
fn 
A function to be minimized, with first argument the vector of parameters over which minimization is to take place. It should return a scalar result. 
lower 
Vector with length of 
upper 
Vector with length of 
... 
allows the user to pass additional arguments to the function 
control 
The argument is a list that can be used to control the behavior of the algorithm:

The default values of the control components are set for a complex optimization problem.
For usual optimization problem with medium complexity, GenSA can find a reasonable solution quickly so
the user is recommended to let GenSA stop earlier by setting threshold.stop
if threshold.stop
is the expected
function value, or by setting max.time
if the user just want to run GenSA for max.time
seconds, or
by setting max.call
if the user just want to run GenSA within max.call
function calls. Please refer to the examples
below. For very complex optimization problems, the user is recommended to increase maxit
and temp
.
The returned value is a list with the following fields:
Numeric. The value of fn
corresponding to par
.
Vector. The best set of parameters found.
A matrix which contains the history of the algorithm. (By columns: Step number, temperature, current objective function value, current minimal objective function value).
Integer. Total number of calls of the objective function.
Yang Xiang, Sylvain Gubian, Brian Suomela, Julia Hoeng, PMP SA.
Xiang Y, Gubian S, Suomela B, Hoeng (2012). "Generalized Simulated Annealing for Efficient Global Optimization: the GenSA Package for R". The R Journal, Forthcoming. http://journal.rproject.org/.
Tsallis C (1988). "Possible generalization of BoltzmannGibbs statistics." Journal of Statistical Physics, 52, 479–487.
Tsallis C, Stariolo DA (1996). "Generalized Simulated Annealing." Physica A, 233, 395–406.
Xiang Y, Sun DY, Fan W, Gong XG (1997). "Generalized Simulated Annealing Algorithm and Its Application to the Thomson Model." Physics Letters A, 233, 216–220.
Xiang Y, Gong XG (2000a). "Efficiency of Generalized Simulated Annealing." PHYSICAL REVIEW E, 62, 4473.
Xiang Y, Sun DY, Gong XG (2000). "Generalized Simulated Annealing Studies on Structures and Properties of Nin (n=255) Clusters." Journal of Physical Chemistry A, 104, 2746–2751.
optim
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36  library(GenSA)
# Try Rastrgin function (The objective function value for global minimum
# is 0 with all components of par are 0.)
Rastrigin < function(x) {
sum(x^2  10 * cos(2 * pi * x)) + 10 * length(x)
}
# Perform the search on a 30 dimensions rastrigin function. Rastrigin
# function with dimension 30 is known as the most
# difficult optimization problem according to "Yao X, Liu Y, Lin G (1999).
# \Evolutionary Programming Made Faster."
# IEEE Transactions on Evolutionary Computation, 3(2), 82102.
# GenSA will stop after finding the targeted function value 0 with
# absolute tolerance 1e13
set.seed(1234) # The user can use any seed.
dimension < 30
global.min < 0
tol < 1e13
lower < rep(5.12, dimension)
upper < rep(5.12, dimension)
out < GenSA(lower = lower, upper = upper, fn = Rastrigin,
control=list(threshold.stop=global.min+tol,verbose=TRUE))
out[c("value","par","counts")]
# GenSA will stop after running for about 2 seconds
# Note: The time for solving this problem by GenSA may vary
# depending on the computer used.
set.seed(1234) # The user can use any seed.
dimension < 30
global.min < 0
tol < 1e13
lower < rep(5.12, dimension)
upper < rep(5.12, dimension)
out < GenSA(lower = lower, upper = upper, fn = Rastrigin,
control=list(max.time=2))
out[c("value","par","counts")]

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
Please suggest features or report bugs with the GitHub issue tracker.
All documentation is copyright its authors; we didn't write any of that.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.