改进搜索算法框架学习笔记

发布时间 2024-01-02 20:52:22作者: 小学生2021

用途:主要用来解决不能写出解析解的、但有可微目标函数、约束条件的问题求解。

步骤:

  1. 获得初始解
  2. 基于初始解获得当前位置的梯度——找改进迭代方向
    1. 邻域内目标函数变化约等于步长*(梯度与实际改变向量的内积)。如沿梯度方向改变则约等于步长*梯度的二范数。梯度点乘改变向量可用于判断改变是增大还是缩小目标函数。
  3. 验证当前改进方向是否违反约束——找可行改进迭代方向
    1. 对任意线性约束ax>=b,需要a(x+\delta x) >=b,等价于 a点乘改变向量 >= 0。<=和=线性约束用类似方式推导。——改进方向是否违反约束
      1. 求改变向量在约束平面上的投影:先写出平面法向量,再求在法向量上的投影,再减去法向量投影
    2. 如果改变向量垂直于约束平面,迭代结束。否则取改变向量在约束平面的投影(可能有2个),取能优化目标函数的投影作为改变向量。
  4. 目标函数改变量 = (f(x+k*dx) - f(x),只有k是未知数了,求一阶导=0找到若干k的取值,验证这些取值的函数值,最大的就是k应该的取值,即步长。——找最优步长,让目标函数改进最多的步长是最优步长。