内点法[通俗易懂]

内点法[通俗易懂]内点法属于约束优化算法。约束优化算法的基本思想是:通过引入效用函数的方法将约束优化问题转换成无约束问题,再利用优化迭代过程不断地更新效用函数,以使得算法收敛。内点法(罚函数法的一种)的主要思想是:

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

文字理解

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

数学定义

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

\[\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://javaforall.net/167972.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Self-Host c#学习笔记之Application.DoEvents应用 不用IIS也能執行ASP.NET Web API

    Self-Host c#学习笔记之Application.DoEvents应用 不用IIS也能執行ASP.NET Web APISelf-Host c#学习笔记之Application.DoEvents应用 不用IIS也能執行ASP.NET Web API

    2022年4月20日
    85
  • 高并发解决方案相关面试题

    高并发解决方案相关面试题什么是DNS解析域名DNS域名解析就是讲域名转化为不需要显示端口(二级域名的端口一般为80)的IP地址,域名解析的一般先去本地环境的host文件读取配置,解析成对应的IP地址,根据IP地址访问对应的服务器。若host文件未配置,则会去网络运营商获取对应的IP地址和域名.什么是NginxNginx是一个高级的轻量级的web服…

    2022年5月22日
    33
  • 制作QQ微信支付宝三合一收款码

    制作QQ微信支付宝三合一收款码

    2021年11月5日
    62
  • ubuntu安装python3(源码安装方法)

    ubuntu安装python3(源码安装方法)Ubuntu安装Python3(第0步)建议配置阿里镜像https://developer.aliyun.com/mirror/ubuntu一、安装相关依赖apt-getupdate&&apt-getupgradeapt-getinstall-ybuild-essentialcheckinstalllibreadline-gplv2-devlibncursesw5-devlibssl-devlibsqlite3-devtk-devlibgdbm-devl

    2022年6月23日
    32
  • Git ssh 配置及使用

    Git ssh 配置及使用前言:前几天在写博客手把手教你用Hexo+github搭建自己博客的时候,经常需要用到一些git操作,截了好多图,于是就想干脆整理成一系列的git教程,总结如下Git下载及配置环境变量Git命令行教程及实例教程Gitssh配置及使用gitssh配置多个账户Gitconfig使用说明Git配置别名——让命令变得更简单闲聊这篇教程是在电脑

    2022年6月24日
    37
  • 史上最详细的kali安装教程[通俗易懂]

    史上最详细的kali安装教程[通俗易懂]一、下载系统镜像文件首先下载系统镜像,进入kali官网,在Downloads中选择DownloadKaliLinux,如下图所示。2.根据电脑配置选择合适的版本,在这里我选择的是64位版本,点击HTTP下载镜像文件,或者torrent下载可使用迅雷。kali版本介绍:第一类是常规的32和64位版本;第二类简化版如:kalilinuxlight;第三类桌面环境如:mate、k…

    2022年6月11日
    81

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号