Please note that the recommended version of Scilab is 2024.1.0. This page might be outdated.
See the recommended documentation of this function
temp_law_csa
The classical temperature decrease law
Calling Sequence
T_out = temp_law_csa(T_in,step_mean,step_var,temp_stage,n,param)
Arguments
- T_in
the temperature at the current stage
- step_mean
the mean value of the objective function computed during the current stage
- step_var
the variance value of the objective function computed during the current stage
- temp_stage
the index of the current temperature stage
- n
the dimension of the decision variable (the x in f(x))
- param
not used for this temperature law
- T_out
the temperature for the temperature stage to come
Description
This function implements the classical annealing temperature schedule (the one for which the convergence of the simulated annealing has been proven).
Examples
function y=rastrigin(x) y = x(1)^2+x(2)^2-cos(12*x(1))-cos(18*x(2)); endfunction x0 = [-1, -1]; Proba_start = 0.8; It_intern = 1000; It_extern = 30; It_Pre = 100; printf('SA: the CSA algorithm\n'); T0 = compute_initial_temp(x0, rastrigin, Proba_start, It_Pre, neigh_func_default); printf('Initial temperatore T0 = %f\n', T0); [x_opt, f_opt, sa_mean_list, sa_var_list, temp_list] = optim_sa(x0, rastrigin, It_extern, It_intern, T0, Log = %T, temp_law_csa, neigh_func_csa); printf('optimal solution:\n'); disp(x_opt); printf('value of the objective function = %f\n', f_opt); scf(); subplot(2,1,1); xtitle('Classical simulated annealing','Iteration','Mean / Variance'); t = 1:length(sa_mean_list); plot(t,sa_mean_list,'r',t,sa_var_list,'g'); legend(['Mean','Variance']); subplot(2,1,2); xtitle('Temperature evolution','Iteration','Temperature'); plot(t,temp_list,'k-');
See Also
Authors
- collette
Yann COLLETTE (ycollet@freesurf.fr)
<< optim_sa | Arrefecimento Simulado | temp_law_default >> |