这个算法很反人类,迭代过程相当复杂,最优化老师说:“明确地告诉你要考的。”
  起作用集方法适用于消元法Lagrange方法无法处理的不等式约束二次规化问题。其主要思想是:以已知点为可行点,只考虑将该点的起作用约束,最小化 f ( x ) f(x) f(x),得到新的可行点后重复以上做法。

一、起作用集法适用情形

  适用于具有不等式约束的二次规划问题 m i n f ( x ) = 1 2 x T H x + c T x s . t . A x ⩾ b min \ \ \ f(x)=\frac{1}{2}x^THx+c^Tx \\ s.t. \ \ \ Ax\geqslant b min   f(x)=21​xTHx+cTxs.t.   Ax⩾b

二、起作用集法求解步骤

  由于步骤太过繁琐,算法总是跳来跳去,所以在这里我只放上了我自己对于算法的分步与理解。算法可以分为一个初始+三个域,三个域分别为:解 δ \delta δ域、求 α ^ k \widehat\alpha_{k} α k​ 域、算L乘子 λ \lambda λ域。

(1)初始化:初始可行点 x ( 1 ) x^{(1)} x(1),作用约束集 I ( 1 ) I^{(1)} I(1),置 k = 1 k=1 k=1;
(2)解增量 δ \delta δ:这时构建增量求解问题: m i n 1 2 δ T H δ + ▽ f ( x ( k ) ) T δ s . t . a i δ = 0 , i ∈ I ( k ) min \ \ \ \frac{1}{2}\delta^TH\delta+\triangledown f(x^{(k)})^T\delta \\ s.t. \ \ \ a^{i}\delta= 0, i \in I^{(k)} min   21​δTHδ+▽f(x(k))Tδs.t.   aiδ=0,i∈I(k)  得到最优解 δ ( k ) \delta^{(k)} δ(k)。此时进行第一次分流分析

若 δ ( k ) = 0 \delta^{(k)}=0 δ(k)=0,则说明 x ( k ) x^{(k)} x(k)无法再继续变动,则跳到第4步计算L乘子,判断最优解;
若 δ ( k ) ≠ 0 \delta^{(k)}\neq 0 δ(k)​=0,需要对 x ( k ) x^{(k)} x(k)进行变动,则跳到第3步,求解步长。

(3)求步长 α ^ k \widehat\alpha_{k} α k​
  上一步求解出了增量 δ \delta δ,这一步将增量视为移动方向 d d d,即 d ( k ) = δ ( k ) d^{(k)}=\delta^{(k)} d(k)=δ(k)。变动过程为: x ( k + 1 ) = x ( k ) + α ^ k d ( k ) x^{(k+1)}=x^{(k)}+\widehat\alpha_{k}d^{(k)} x(k+1)=x(k)+α k​d(k)  步长的选取首先要保证新点是一个可行点,不能违背 x ( k ) x^{(k)} x(k)的非作用下标集中约束,即: a i ( x ( k ) + α ^ k d ( k ) ) ⩾ b i , i ∉ I ( k ) a^i(x^{(k)}+\widehat\alpha_{k}d^{(k)}) \geqslant b_i \ \ \ , \ \ \ i \notin I_{(k)} ai(x(k)+α k​d(k))⩾bi​   ,   i∈/​I(k)​  在特定情况下左侧孤立 α ^ k \widehat\alpha_{k} α k​: i f a i d ( k ) < 0 : α ^ k = b i − a i x ( k ) a i d ( k ) \mathbf{if} \ \ \ a^i d^{(k)}<0\ \ :\ \ \ \widehat\alpha_{k}=\frac{b_i-a^ix^{(k)}}{a^id^{(k)}} if   aid(k)<0  :   α k​=aid(k)bi​−aix(k)​  考察所有非作用约束集对应的约束式,可以求出多个 α ^ k \widehat\alpha_{k} α k​,进而对其求最小。同时还要注意,最终 α ^ k \widehat\alpha_{k} α k​的取值还要跟1进行比较: α k = m i n ( 1 , α ^ k ) \alpha_{k}=min{(1,\widehat\alpha_{k})} αk​=min(1,α k​)  得到步长,此时进行第二次分流分析:(这一步无论结果如何都要更新 x ( k ) x^{(k)} x(k),只是一个回去,一个继续)

若 α k < 1 \alpha_{k}<1 αk​<1,原来非作用约束集中有一个约束式变为作用约束,小数步长直接更新 x ( k + 1 ) x^{(k+1)} x(k+1)(算法中唯一更新x的地方),返回步骤2,重新计算增量 δ \delta δ;
若 α k = 1 \alpha_{k}=1 αk​=1,此时的变动不会触动任何非作用约束,1步长直接更新 x ( k + 1 ) x^{(k+1)} x(k+1)(算法中唯一更新x的地方),跳到第4步计算L乘子,判断最优解。

(4)计算L乘子 λ \lambda λ
  这一步是算法的出口,通过Lagrange方法最后给出的公式计算乘子 λ \lambda λ: λ = R g k = ( A H − 1 A T ) − 1 A H − 1 g k \lambda=Rg_k=(AH^{-1}A^T)^{-1}AH^{-1}g_k λ=Rgk​=(AH−1AT)−1AH−1gk​  其中 g k = ▽ f ( x ( k ) ) g_k=\triangledown f(x^{(k)}) gk​=▽f(x(k)),是当前迭代点的梯度。
得到每个作用约束对应的乘子之后,进行第三次分流分析

若 λ < 0 \lambda<0 λ<0,挑选出最小的 λ \lambda λ,在起作用约束集 I I I中去掉下标,返回步骤2计算增量 δ \delta δ。
若 λ ⩾ 0 \lambda\geqslant0 λ⩾0,当前解 x ( k ) x_{(k)} x(k)​是最优解。

三、注

  这个方法思想简单,但是每一块的计算都很精密,过程很繁琐。考试的时候一定要把思路写清楚。

二次规划_2_——起作用集方法相关推荐

  1. MPB:南农韦中组-​铁载体对根际细菌互作效应的介导作用研究方法

    为进一步提高<微生物组实验手册>稿件质量,本项目新增大众评审环节.文章在通过同行评审后,采用公众号推送方式分享全文,任何人均可在线提交修改意见.公众号格式显示略有问题,建议电脑端点击文末阅 ...

  2. CSS - 解决placeholder不起作用的方法

    CSS - 解决placeholder不起作用的方法 参考文章: (1)CSS - 解决placeholder不起作用的方法 (2)https://www.cnblogs.com/500m/p/115 ...

  3. php取结果集,php获取数据库结果集方法(推荐)

    PHP经常要访问数据库提前数据库里面的数据,那么该怎么样去提前数据呢? 提取数据库代码如下: include("conn.php");//数据库连接 $sql="sele ...

  4. Entity Framework默认值字段不起作用解决方法

    Entity Framework默认值字段不起作用解决方法 参考文章: (1)Entity Framework默认值字段不起作用解决方法 (2)https://www.cnblogs.com/fox- ...

  5. level set 介绍4(水平集方法)

    2.5 水平集方法 在2.4中的时候,我们已经知道曲线演化主要涉及到两个几何参数,一个是曲线的曲率,一个是曲线的方向矢量,而这两个参数的计算一并不是一件容易的事情,怎么有效的更方便处理曲线的几何参数的 ...

  6. Windows配置环境变量的作用和方法

    Windows配置环境变量的作用和方法 一.什么是环境变量 二.为什么要配置环境变量 三.JDK的下载和安装 四.如何配置Java环境变量 Win7如何设置环境变量 Win10如何设置环境变量 一.什 ...

  7. jquery validation engine ajax验证,jquery.validationEngine 验证 AJAX 不起作用解决方法

    当前位置:我的异常网» Ajax » jquery.validationEngine 验证 AJAX 不起作用解决方 jquery.validationEngine 验证 AJAX 不起作用解决方法 ...

  8. 卷积神经网络结合水平集方法

    水平集方法用于深度卷积网络 水平集简介 CNN结合Level Set 疑惑 水平集简介 水平集(Level Set)方法是用于图像分割非常受欢迎的方法,其通过比目标维度高一维的水平集函数(LSF)的零 ...

  9. 水平集方法的一个基本框架

    水平集方法框架 水平集方法是现代图像处理中很重要的一个方法,为了说清楚这个东西,我们先介绍几个基本的概念. 零水平集 对于一个函数 ϕ(x⃗):Rn→R\phi(\vec x):{\mathbf{R} ...

  10. 水平集方法引入主动轮廓模型算法中的两种方法

    水平集方法引入主动轮廓模型算法中的两种方法 1.传统的基于主动轮廓模型和水平集理论的方法 2.变分水平集方法 在讲解水平集理论在主动轮廓模型中的应用前,我们先用流程图说明一下常见的处理主动轮廓模型的流 ...

最新文章

  1. Nginx在windows下常用命令
  2. 一文看懂NB-IoT!
  3. Java CopyOnWriteArrayList
  4. Base64实现图片的编码和解码
  5. 计算机编程导论python程序设计答案-学堂在线_计算机科学与Python编程导论_作业课后答案...
  6. Matlab生成m序列
  7. NLP之WordCloud:基于jieba+matplotlib库对一段文本生成词云图~~情人节最好的礼物(给你一张过去的词云图,看看那时我们的爱情)
  8. 【字符集UTF8】处理Toad显示乱码及Windows XP下无法插入“某些汉字”问题
  9. vs 2019 社区版许可证过期_Switch版《最终幻想12:黄道时代》对比PS4版 就没差
  10. PHP中文乱码解决办法
  11. uni-app微信小程序获取手机号;微信小程序获取手机号,获取到后需要进行解密;微信小程序获取手机号失败 Error:该appId没有权限
  12. linux以下哪个属于块设备,1222.在大多数Linux发行版本中,以下哪个属于块设备( )...
  13. 鲲鹏迁移第一批吃螃蟹的人,践行技术国际化
  14. hadoop yarn 获取日志_Hadoop YARN日志查看方式
  15. c语言的程序的基本示例
  16. boost::asio 阻塞卡顿问题
  17. 关键词云图,实现搜索功能
  18. 两个鸡蛋,100层楼,找出摔碎鸡蛋的最低楼层,所用的摔鸡蛋次数最少
  19. Linux的简单命令 who echo cal clear date
  20. linux聊天python_Python socket C/S结构的聊天室应用

热门文章

  1. 二进制 IEEE单精度浮点数转化为十进制浮点数
  2. 考研政治 | 自用笔记记录
  3. 北京分众无线CEO徐茂栋:比别人快走一步
  4. 集合之ArrayList
  5. ViT 论文逐段精读——B站up:跟李沐学AI讲解笔记
  6. neovim安装coc缺失bash-language-server
  7. HTTP_Web服务器基础原理详解
  8. c语言程序c00000fd,win10易升错误代码0xc00000fd解决方法
  9. Java全栈和Java后端,HR的话扎心了
  10. 中国载人飞船给我们带来的四大自信