爬山算法:
爬山算法是一种简单的贪心搜索算法,在算法迭代的过程中,会从当前解的临近空间中随机选取下一个点,如果比当前结果好则会选取这个点作为新的最优解,否则再次进行选取。因为不是遍历得到的最优解,而是通过启发选择部分节点,从而达到提高效率的目的,爬山算法的实现很简单,其主要缺点是在迭代过程中会陷入局部最优解,并无法跳出,不是全局搜索算法,因此搜索不到全局最优解。
算法基本原理如下:
S<--选取一个初始解S作为可行解
while
R = S+rand()
if f(R)> f(S)
S = R
end
end
本文将从一个简单的二元函数入手,用Matlab实现爬山算法(Hill climbing)求解函数极值。需要注意的是,爬山算法作为一种启发式算法,在实际情况中使用的时候求解的问题会是抽象函数,不会像是本文给出的这种已知的目标函数,本文只是从一个二元函数作为例子,方便大家了解算法的基本结构。
在Matlab中绘制简单三维图像: