What is difference between stochastic hill climbing and random-restart hill climbing?
Stochastic hill climbing: meaning that we won't always take the step in with respect to the direction of the gradient (the step that maximize/minimize the goal function), the algo won't choose the best step with probability of 1, but with prob less than 1, other times it will choose random direction, so it sometimes can take a step in the opposite direction to avoid local minima and maximize exploration
Random Restart hill climbing: also a method to avoid local minima, the algo will always take the best step (based on the gradient direction and such) but will do a couple (a lot) iteration of this algo runs, each iteration will start at a random point on the plane, so it can find other hill tops
both method can be combined for best performance