• 内点法


    文字理解

    内点法属于约束优化算法。约束优化算法的基本思想是:通过引入效用函数的方法将约束优化问题转换成无约束问题,再利用优化迭代过程不断地更新效用函数,以使得算法收敛。
    内点法(罚函数法的一种)的主要思想是:在可行域的边界筑起一道很高的“围墙”,当迭代点靠近边界时,目标函数徒然增大,以示惩罚,阻止迭代点穿越边界,这样就可以将最优解“档”在可行域之内了。

    数学定义

    对于下面的不等式约束的优化问题:

    [min f(x), x in R^n ]

    [s.t quad g_{i}(x) leq0, i=1,2,...,m ]

    利用内点法进行求解时,构造惩罚函数的一般表达式为

    [varphi (X, r)=f(X)-rsum_{i=1}^{m}frac{1}{g_{i}(X)} ]

    或者

    [varphi (X, r)=f(X)-rsum_{i=1}^{m}{ln[-g_{i}(X)]} ]

    算法步骤

    1. 取初始惩罚因子(r^{(0)}>0),允许误差(epsilon>0)
    2. 在可行域(D)内选取初始点(X^{(0)}),令(k=1)
    3. 构造惩罚函数(varphi (X, r^{(k)})),从(X^{(k-1)})点出发用无约束优化方法求惩罚函数(varphi (X, r^{(k)}))的极值点((X^{*}, r^{(k)}))
    4. 检查迭代终止准则:如果满足$$|X^{} r{(k)}-X{} r{(k-1)}|leqepsilon_{1}=10{-5}-10^{-7}$$或者$$|frac{varphi (X^{} ,r^{(k)})-varphi (X^{}, r^{(k-1)})}{varphi (X^{*}, r{(k-1)})}|leqepsilon_{2}=10{-3}-10^{-4}$$则停止迭代计算,并以((X^{*}, r^{(k)}))作为原目标函数(f(X))的约束最优解,否则转入下一步;
    5. (r^{(k+1)}=cr^{(k)})(X^{(0)}=X^{*}r^{(k)})(k=k+1),转向步骤3。递减系数(c=0.1-0.5),通常取0.1。

    内点惩罚函数法特点及其应用

    • 惩罚函数定义于可行域内,序列迭代点在可行域内不断趋于约束边界上的最优点(这就是称为内点法的原因)
    • 只适合求解具有不等式约束的优化问题

    内点法求解案例

    用内点法求下面约束优化问题的最优解,取迭代初始(X^0 = [0, 0]^{mathrm{T}}),惩罚因子的初始值(r^0 = 1),收敛终止条件(|X^k - X^{k-1}| leq varepsilon)(varepsilon = 0.01)

    [min f(X) = x_1^2 + x_1^2 - x_1x_2 - 10x_1 - 4x_2 + 60 ]

    [mathrm{s.t.}; g(X) = x_1 + x_2 -8 leq 0 ]

    1. 构造内惩罚函数:(varphi(X, r) = x_1^2 + x_1^2 - x_1x_2 - 10x_1 - 4x_2 + 60 -rln(x_1 + x_2 -8))
    2. 用解析法求内惩罚函数的极小值

    [ ablavarphi(X, r) = [2x_1 - x_2 - 10 - frac{r}{x_1 + x_2 - 8} quad 2x_2 - x_1 - 4 - frac{r}{x_1 + x_2 - 8}] ]

    ( abla varphi(X, r) = 0)得:(egin{align}2x_1 - x_2 - 10 - frac{r}{x_1 + x_2 - 8} = 0 \ 2x_2 - x_1 - 4 - frac{r}{x_1 + x_2 - 8} = 0end{align})

    解得:

    (X^*_1(r) = egin{bmatrix}frac{13 + sqrt{9+2r}}{2} & frac{9 + sqrt{9+2r}}{2}end{bmatrix}^{mathrm{T}})

    (X^*_2(r) = egin{bmatrix}frac{13 - sqrt{9+2r}}{2} & frac{9 - sqrt{9+2r}}{2}end{bmatrix}^{mathrm{T}})

    (ecause g(X^*_1(r)) > 0)

    ( herefore) 舍去(X^*_1(r))

    (ecause varphi(X, r))为凸函数

    ( herefore) 无约束优化问题的最优解为(X^*(r) = X^*_2(r) = egin{bmatrix}frac{13 - sqrt{9+2r}}{2} & frac{9 - sqrt{9+2r}}{2}end{bmatrix}^{mathrm{T}})

    1. 求最优解

    (r^0 = 1)时,(X^*(r^0) = egin{pmatrix}4.8417 & 2.8417end{pmatrix}^{mathrm{T}})(|X^*(r^0) - X^0| = 5.6140 > varepsilon)

    (r^1 = 0.1)时,(X^*(r^1) = egin{pmatrix}4.9834 & 2.9834end{pmatrix}^{mathrm{T}})(|X^*(r^1) - X^*(r^0)| = 0.2004 > varepsilon)

    (r^2 = 0.01)时,(X^*(r^2) = egin{pmatrix}4.9983 & 2.9983end{pmatrix}^{mathrm{T}})(|X^*(r^2) - X^*(r^1)| = 0.0211 > varepsilon)

    (r^3 = 0.01)时,(X^*(r^3) = egin{pmatrix}4.9998 & 2.9998end{pmatrix}^{mathrm{T}})(|X^*(r^3) - X^*(r^2)| = 0.0021 < varepsilon)

    (X^*(r^3))为最优解

  • 相关阅读:
    阐述:SIP协议是什么
    【SIP协议】学习初学笔记
    【协议学习】SIP基本场景分析
    电话的前世今生
    深入浅出SIP协议
    QVariant类及QVariant与自定义数据类型转换的方法
    Qt中如何根据类名来实例化对象
    模板的全特化与偏特化
    为什么c++中,有时可以用类名直接访问非静态成员函数?
    C++引用详解
  • 原文地址:https://www.cnblogs.com/theonegis/p/7684847.html
Copyright © 2020-2023  润新知