Skip to content

Local Search

1. 邻域

\(D\) 是问题的定义域。映射 \(N\) s.t.

$$ \begin{align} N: ~ S \in D \rightarrow N(S) \in 2^D \end{align} $$ 即把定义域中的某个元素 S 映射到定义域的幂集(子集的集合)中的某个元素(i.e. 映射到定义域的某个子集,包含一些定义域中的元素)。

aka. 从一种状态,“变异”出其它几种邻近的状态。

2. 算法

  • 随机选择一个初始的可能解 \(x_0 \in D, x_b = x_0\) ,计算邻域 \(P=N(x_b)\)
  • 若不满足结束条件:
    • 选择子集 \(P' \subset P\)\(x_n\)\(P'\) 中的最优解;
    • 若找到了更优的,i.e. \(f(x_n) < f(x_b)\) ,则 \(x_b = x_n, P = N(x_b)\) ;判断是否满足结束条件;
    • 否则 \(P = P - P'\) ,从剩下的中选取子集 \(P' \subset P\) ,迭代。

3. 问题

局部最优问题:可以设一定的概率不选指标函数最好的点。

步长问题:变步长。

起始点问题:随机生成一些初始点,从每个初始点出发搜索找到各自的最优解,最后全局取最优。


Last update: June 4, 2021
Authors: Co1lin