核心概述

基于邻域改进的局部搜索方法,在不使用导数的前提下反复移动到更优邻居直至无改进,用于黑箱或组合优化并可配重启/扰动增强全局性。

原文引述

Description: Local search that iteratively moves to an improving neighbor until no improvement exists. Works without derivatives; supports first/best-improvement, stochastic variants, restarts, and perturbations. Time: Proportional to (iterations × neighborhood size); problem-dependent Status: tested ——摘自本节点现有英文注释

展开阐述

  • 定义与背景

    • 爬山算法(Hill Climbing)以邻域结构驱动的局部优化;常作为启发式框架处理连续/离散目标。
  • 接口/字段与输入输出语义(据仓库约定)

    • hillClimb(x0, neigh, f, budget, strategy) → x_best
      • x0 初始解;neigh(x) 生成/采样邻域;f(x) 目标(统一最小化);budget 为评估/迭代上限;strategy ∈ {best_improvement, first_improvement, stochastic}。
    • randomRestartHC(restarts, …):多次重启取最好。
    • withPerturbation(kick_strength):停滞时对解施加扰动后继续。
    • 输出:返回当前搜索到的局部最优解 x_best 及其目标值(按实现可选)。
  • 核心流程与关键要点

    1. 初始化 x ← x0,评估 f(x)。
    2. 构造邻域 N(x):枚举或随机采样若干 y∈N(x)。
    3. 策略选择:
      • best-improvement:取 argmin f(y);若改善则接受,否则停止。
      • first-improvement:顺序扫描遇更优即接受,减少评估。
      • stochastic:按概率接受(纯爬山通常仅接受改进)。
    4. 达到预算或无改进则结束;可重启或扰动后继续。
  • 数值稳定性/精度与边界

    • 平台与局部最优:适度随机化与扰动有助跳出平台。
    • 邻域大小与采样:评估昂贵时优先采样而非枚举。
    • 约束处理:连续域用投影/惩罚守约;步长可自适应缩小以细化搜索。
  • 复杂度与常见变体

    • 复杂度 ~ O(T·|N|·C_eval);first-improvement 常较省评估。
    • 变体:随机重启、多邻域(VNS)、禁忌(Tabu)、与模拟退火(SA,邻近技术)。
  • 与相邻技术的取舍

关联节点