内点法

文字理解

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

数学定义

对于下面的不等式约束的优化问题:
\[\min f(x), x \in R^n\]
\[s.t \quad g_{i}(x) \leq0, i=1,2,...,m\]
利用内点法进行求解时,构造惩罚函数的一般表达式为
\[\varphi (X, r)=f(X)-r\sum_{i=1}^{m}\frac{1}{g_{i}(X)}\]
或者
\[\varphi (X, r)=f(X)-r\sum_{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)}\|\leq\epsilon_{1}=10^{-5}-10^{-7}\]或者\[\|\frac{\varphi (X^{*} ,r^{(k)})-\varphi (X^{*}, r^{(k-1)})}{\varphi (X^{*}, r^{(k-1)})}\|\leq\epsilon_{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 -r\ln(x_1 + x_2 -8)\)
  2. 用解析法求内惩罚函数的极小值

\[\nabla\varphi(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}]\]

\(\nabla \varphi(X, r) = 0\)得:\(\begin{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} = 0\end{align}\)

解得:

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

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

\(\because g(X^*_1(r)) > 0\)

\(\therefore\) 舍去\(X^*_1(r)\)

\(\because \varphi(X, r)\)为凸函数

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

  1. 求最优解

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

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

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

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

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

转载于:https://www.cnblogs.com/theonegis/p/7684847.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内点法是一种用于在可行域内进行优化的方法。它最初由Karmarkar于1984年提出,它具有多项式计算复杂性,相比于单纯形法,在求解大规模线性规划问题时计算速度更快50倍以上。内点法的基本思想是希望优化迭代过程始终在可行域内进行,因此初始点应取在可行域内,并在可行域的边界设置“障碍”使迭代点都为可行域的内点。 内点法的一个困难在于寻找初始可行点比较困难,为此跟踪中心轨迹内点法做了改进,只要求在寻优过程中松弛变量和拉格朗日乘子满足简单的大于零或小于零的条件,可代替原来必须在可行域求解的要求,使计算过程大为简化。 在Matlab中,可以使用neidianfa.m和mnfh.m文件来实现内点法的求解。neidianfa.m文件是内点法的主要代码,其中定义了最大迭代次数、实参数等参数,并调用了dampnm算法程序来求解无约束子问题。通过迭代过程不断更新参数以求得最优解。 mnfh.m文件则定义了增广拉格朗日函数,用于计算增广拉格朗日函数的值。它根据给定的目标函数、约束函数和拉格朗日乘子等参数,通过计算相应的数值来得到增广拉格朗日函数的值。 因此,要使用内点法求解问题,可以根据给定的目标函数、约束函数和初始点等参数,调用neidianfa.m文件来进行计算,并根据迭代过程中得到的结果来获取最优解。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [内点法matlab](https://blog.csdn.net/qq_45252062/article/details/117128478)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [内点法最优潮流matlab程序](https://blog.csdn.net/weixin_47365903/article/details/123423656)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值