Code covered by the BSD License

### Highlights from Simulated Annealing Optimization

4.0
4.0 | 1 rating Rate this file 56 Downloads (last 30 days) File Size: 2.8 KB File ID: #33109

# Simulated Annealing Optimization

### Héctor Corte (view profile)

This program performs simulated annealing otimization on functions of R^n in R.

File Information
Description

Simulated annealing is an optimization algorithm that skips local minimun. It uses a variation of Metropolis algorithm to perform the search of the minimun. It is recomendable to use it before another minimun search algorithm to track the global minimun instead of a local ones.

Usage: [x0,f0]sim_anl(f,x0,l,u,Mmax,TolFun)

INPUTS:
f = a function handle
x0 = a ninitial guess for the minimun
l = a lower bound for minimun
u = a upper bound for minimun
Mmax = maximun number of temperatures
TolFun = tolerancia de la función

OUTPUTS:
x0 = candidate to global minimun founded
f0 = value of function on x0

Example:

The six-hump camelback function:

camel= @(x)(4-2.1*x(1).^2+x(1).^4/3).*x(1).^2+x(1).*x(2)+4*(x(2).^2-1).*x(2).^2;

has a doble minimun at f(-0.0898,0.7126) = f(0.0898,-0.7126) = -1.0316

this code works with it as follows:

[x0,f0]=sim_anl(camel,[0,0],[-10,-10],[10,10],400)

and we get:
x0=[-0.0897 0.7126]

Acknowledgements

General Simulated Annealing Algorithm inspired this file.

MATLAB release MATLAB 7.10 (R2010a)
06 Mar 2014 sara

### sara (view profile)

21 Jun 2013 Héctor Corte

### Héctor Corte (view profile)

It can be done, but the output of your function is also a 2x2 matrix. There is no maximum defined for that object. You need to define another function which goes from 2x2 matrices into real numbers and decides which matrix represents the maximum (i.e. that function could be something like the sum of all the elements of your matrix).

Comment only
21 Jun 2013 Liaquat Ali

### Liaquat Ali (view profile)

Dear

can your code be applied to work on the finding the maximum point when 2X2 matrix variable is involved.
for example

f = A.*B;

where A = 2X2 matrix with some values and B = 2X2 variable matrix like B = [x1 x2;3 x4]

Comment only
15 Jan 2012 Héctor Corte

### Héctor Corte (view profile)

I've been checking it out again, and the answer is yes, they are basically the same algorithm. The algorithm is in my third reference: [3] Won Y. Yang, Wenwu Cao, Tae-Sang Chung, John Morris, "Applied Numerical Methods Using MATLAB", John Whiley & Sons, 2005.
One difference between my script and Vandekerckhove's one is that mine always test 500 points for each temperature while his can change temperature if a maximun number of succes points if found. I have a version of mine with that feature but I have the code inside a training algorithm for neural networks.

Comment only
13 Jan 2012 Constantino Hevia

### Constantino Hevia (view profile)

Thank you Hector for your submission.

Is there any difference between your algorithm and Joachim Vandekerckhove's besides the bounds in the variables?

Comment only