PLEASE USE THIS FILE ONLY IF YOU HAVE A GOOD GENERAL IDEA ABOUT YOUR OPTIMIZATION PROBLEM OTHERWISE THIS MAY NOT HELP YOUR PROBLEM.
This code customizes simulated annealing into an integer/discrete (can be adjusted) optimization. Hence, it relies on MATLAB's simulated annealing algorithm. Please make sure you have the appropriate toolboxes.
Please read the comments within the "SAIntegerOptim" very carefully. This is the code that you need to run.
You may want to adjust the other files too.
This submission demonstrates how to turn the MATLAB's "simulannealbnd" into an integer/discrete optimizer with an example. The example has some special condition!!!
There are a few advantages to this, however your optimization problem may not benefit from this advantages. That is why you need to know the optimization problem really good.
Perhaps some of the fundamental things/conditions to consider before using this demonstration:
1- You know that the global minimum of the objective function is exactly at some integer/discrete location of the solution space (This is the case for this demonstration, where global minimum is at [0,0]).
2- You can sacrifice decimal accuracy of solution space for speed so you can run the SA a few times to make sure it is not stopped at some local minima (this was the case with my project which led to this code, as I was working on image pixels that are obviously integers).
3- Acquiring a quick and close initial seed helps your optimization.
If you need one of the above then this may help you.
PLEASE BE AWARE YOU STILL NEED TO TAILOR THE CODE ACCORDING TO YOUR OPTIMIZATION PROBLEM (that only you know about). I tried to simplify things in the code as much as could.
Salaheddin Hosseinzadeh (2021). Integer/Discrete Optimization with Simulated Annealing (https://www.mathworks.com/matlabcentral/fileexchange/72539-integer-discrete-optimization-with-simulated-annealing), MATLAB Central File Exchange. Retrieved .
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!