# # = Simulated Annealing # === Library # # == Module and classes
- # * GSL
- # * Siman
-
(Module)
# * Params (Class) # * Efunc (Class) # * Step (Class) # * Metric (Class) # * Print (Class) # # == Siman
Module # === Singleton method # — # * GSL::Siman.solve(rng, x0_p, efunc, stepper, metric, printer, params) # # This performs a simulated annealing search through a given space. # The space is specified by providing the functions efunc
and metric
. # The simulated annealing steps are generated using the random number generator # rng
and the function stepper
. The starting configuration of the # system should be given by a Vector
object x0_p
. #
# The parameter params
controls the run by providing the temperature # schedule and other tunable parameters to the algorithm. # # On exit the best result achieved during the search is placed in x0_p
. # If the annealing process has been successful this should be a good approximation # to the optimal point in the space. # # If the function printer
is not nil
, a debugging log will be printed # to stdout with the following columns: # number_of_iterations temperature x x-(x0_p) efunc(x) # and the output of printer
itself. If printer
is nil
# then no information is printed. # # == Example # # #!/usr/bin/env ruby # require(“gsl”) # include GSL::Siman # # N_TRIES = 200 # ITERS_FIXED_T = 10 # STEP_SIZE = 10 # K = 1.0 # T_INITIAL = 0.002 # MU_T = 1.005 # T_MIN = 2.0e-6 # # params = Siman::Params.alloc(N_TRIES, ITERS_FIXED_T, STEP_SIZE, K, T_INITIAL, # MU_T, T_MIN) # # efunc = Efunc.alloc { |vx| # x = vx # s = (x - 1.0) # Math::exp(-s*s)*Math::sin(8*x) # } # # metric = Metric.alloc { |vx, vy| # (x - y).abs # } # # step = Step.alloc { |rng, vx, step_size| # r = rng.uniform # old_x = vx # a = r * 2 * step_size - step_size + old_x # vx = a # } # # simanprint = Print.alloc { |vx| # printf(“%12g”, vx) # } # # x = Vector.alloc() # Rng.env_setup() # rng = Rng.alloc() # # #Siman::solve(rng, x, efunc, step, metric, simanprint, params) # Siman::solve(rng, x, efunc, step, metric, nil, params) # p x # # prev # next # # Reference index # top #