How to find a better neighbor in simulated annealing?

2 次查看(过去 30 天)
I am using SA to minimize delay of each job. However, I use random solution in each iteration, so it may lead some move to different part of the solution space.
In each iteration, I generate random solution by controlling for-loop step. step is changing in each iteration and for each job i. So, I get a new solution as random generated one.
step = randi([lowerbound, upperbound],1);
for i = 20 : -step : 0
delay_save = i;
end
I tried to generate neighbor solution for 1 job in each iteration. I made it as changing delay_saving between lower and upper bound for random selected job, and I leave the algorithm free to goes down or up. But, the algorithm, due to constraints, choose the going down, mostly. Then the solution goes worse, so I left generating neighbor. Manipulating is a choice but the algorithm is approaching to the more greedy one, that is not an wished approach.
However, if go with random solution in each iteration, it lost their SA meaning.
Is there any idea for both I will generate random solution in each iteration and the algorithm does not make giant jump from best feasible solution (bfs) to different part of the solution space? or Is there any idea to generate better neighbor? What are the neighbor techniques?

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Simulated Annealing 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by