4 #include <gsl/gsl_siman.h>
6 /* set up parameters for this simulated annealing run */
8 /* how many points do we try before stepping */
11 /* how many iterations for each T? */
12 #define ITERS_FIXED_T 1000
14 /* max step size in random walk */
17 /* Boltzmann constant */
20 /* initial temperature */
21 #define T_INITIAL 0.008
23 /* damping factor for temperature */
27 gsl_siman_params_t params
28 = {N_TRIES, ITERS_FIXED_T, STEP_SIZE,
29 K, T_INITIAL, MU_T, T_MIN};
31 /* now some functions to test in one dimension */
34 double x = * ((double *) xp);
36 return exp(-pow((x-1.0),2.0))*sin(8*x);
39 double M1(void *xp, void *yp)
41 double x = *((double *) xp);
42 double y = *((double *) yp);
47 void S1(const gsl_rng * r, void *xp, double step_size)
49 double old_x = *((double *) xp);
52 double u = gsl_rng_uniform(r);
53 new_x = u * 2 * step_size - step_size + old_x;
55 memcpy(xp, &new_x, sizeof(new_x));
60 printf ("%12g", *((double *) xp));
64 main(int argc, char *argv[])
66 const gsl_rng_type * T;
69 double x_initial = 15.5;
76 gsl_siman_solve(r, &x_initial, E1, S1, M1, P1,
78 sizeof(double), params);