• 最优化学习4


    根据已学习内容,解决现在遇到的问题

    1.这是一个凸优化问题吗:

    https://blog.csdn.net/xmu_jupiter/article/details/47400411

    经过一轮推导,对于变量为传感器位置,x,y,z。并不是凸函数

    2.需要多少个等式对应多少个未知数

    至少达到变量数,越多越好

    3.如果使用LM方法,怎么加入约束条件

    涉及到的约束: 

    手臂长度约束,不等式,20=<l1,l2<=30

    传感器位置约束,不等式,-4<=x,y,z<4

    面朝向约束,不等式,0<=theta<=6.28

    https://www.cnblogs.com/punkcure/p/7825735.html

    介绍了拉格朗日对偶问题,将不等式约束加入目标函数,生成一个性质类似的新目标函数。但是这种解决方法,和前面学的牛顿法等迭代求解方法好像并不能结合。

    新的目标函数,其导数在可行解范围内还是一样的,一旦迭代过程里跳出了可行域,那就不知道怎么办了。跳出可行域,身边都是无穷大,导数

    https://blog.csdn.net/qq_41679006/article/details/81198411

    外罚点函数法:把不等式或者等式的平方项加入目标函数。

    内罚点函数法:把基于不等式的分式加入目标函数,构成搜索过程里的壁垒,即搜索不会进入不可行域。

    加入惩罚函数对原先搜索过程的影响:网上资料就是没有展示一点,对这个新的目标函数进行无约束优化求解的过程。

    因为在可行域内,算法相当于不变。例如外点法,当我们使用梯度下降也就是导数来进行迭代的时候,

    噢,我分别用外点法和内点法做了一组数据模拟,用的梯度下降,虽然我还不太清楚收敛条件,但是算法确实是收敛路上的,而且内点法的壁垒作用很明显。

    也就是,增加的罚函数的导数,确实影响了搜索过程,

    在搜索方向上,步长的话,一维步长搜索,确定了搜索方向D后,以步长为变量进行一次搜索。

    https://blog.csdn.net/ice110956/article/details/17631765

      这里介绍了一个罚函数法的迭代版,惩罚因子也可以根据每次达到的精度进行迭代,感觉意义不大

    目标函数:

    /////////$f(x,y,z) = sum(sqrt{(x-a)^2 + (y-b)^2 + (z-c)^2} - D)^2$

    目标函数:

    $r_i(x,y,z) = sqrt{(x-a)^2 + (y-b)^2 + (z-c)^2} - D$

    $f(x,y,z) = sum r_i^2      $

    $s.t.  -4=< x <= 4, -4=<y<=4, -4<=z<=4$

    加入内点法后,罚函数:

    $P(x,y,z) = (frac{1}{x-4})^2 + (frac{1}{x+4})^2 + (frac{1}{y-4})^2 + (frac{1}{y+4})^2 + (frac{1}{z-4})^2 + (frac{1}{z+4})^2$

    $F(x,y,z) = f(x,y,z) + P(x,y,z)$

    初始预测点:x0 = 1, y0 =1, z0 = 1.

    LM算法公式:

    $a = [x,y,z]^T$

    g =  J^T  [ r_1, r_2,..... frac{1}{x-4},....frac{1}{z+4}]

    $x = x_0 - (J^TJ + mu I)^{-1}g(x,z,y)$

    $J_{ij} =  frac{partial F_i}{partial a_j}$

    $mu$的初值选取:和$J^TJ$矩阵元素个数有关??$mu_0 = au * max(J^TJ_{ii}^0)$  $mu$等于$ au$乘以$J^TJ$也就是海森阵近似阵,该矩阵主对角线元素中最大的一个。。。$ au$的取值还没资料,网上代码有给e-10的。

    $mu$的控制公式,$ ho = frac{F(x) - F(x+h)}{L(0) - L(h)}$   $ L(0) - L(h) = -h^TJ^Tf - frac{1}{2}h^TJ^TJh$  

      $if ho > 0$   $mu = mu * max{frac{1}{3},1 - (2 ho - 1)^3}$   $else$  $mu = mu * 2$

    收敛条件:

    对于LM法:

    1.g过小
    2.x的变化过小
    3.达到最大迭代次数

    milestone!!!!

    理论部分就这样了,下面matlab的函数测一遍,,自己写一个再测一遍

  • 相关阅读:
    工作问题随笔记录追加Filter过滤器踩坑记录
    vant使用dialog弹框遇到的小问题记录
    文件转换对应文件格式参数值
    总结pycharm运行代码只显示Process finished with exit code 0的解决办法
    DBA技术分享(二)MYSQL常用查询Columns和Views
    【学习总结】Git小结 (Mac版)
    【问题解决方案】MAC HBuilder X内置浏览器插件安装失败
    记一次 int 值溢出,引发的逻辑性错误
    Access 字段类型:【备注】 使用 getString() 读取字段内容是错误的!!!
    压缩算法原理
  • 原文地址:https://www.cnblogs.com/zherlock/p/10241445.html
Copyright © 2020-2023  润新知