二次规划_2_——起作用集方法
这个算法很反人类,迭代过程相当复杂,最优化老师说:“明确地告诉你要考的。”
起作用集方法适用于消元法和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)=21xTHx+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)+α kd(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)+α kd(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_——起作用集方法相关推荐
- MPB:南农韦中组-铁载体对根际细菌互作效应的介导作用研究方法
为进一步提高<微生物组实验手册>稿件质量,本项目新增大众评审环节.文章在通过同行评审后,采用公众号推送方式分享全文,任何人均可在线提交修改意见.公众号格式显示略有问题,建议电脑端点击文末阅 ...
- CSS - 解决placeholder不起作用的方法
CSS - 解决placeholder不起作用的方法 参考文章: (1)CSS - 解决placeholder不起作用的方法 (2)https://www.cnblogs.com/500m/p/115 ...
- php取结果集,php获取数据库结果集方法(推荐)
PHP经常要访问数据库提前数据库里面的数据,那么该怎么样去提前数据呢? 提取数据库代码如下: include("conn.php");//数据库连接 $sql="sele ...
- Entity Framework默认值字段不起作用解决方法
Entity Framework默认值字段不起作用解决方法 参考文章: (1)Entity Framework默认值字段不起作用解决方法 (2)https://www.cnblogs.com/fox- ...
- level set 介绍4(水平集方法)
2.5 水平集方法 在2.4中的时候,我们已经知道曲线演化主要涉及到两个几何参数,一个是曲线的曲率,一个是曲线的方向矢量,而这两个参数的计算一并不是一件容易的事情,怎么有效的更方便处理曲线的几何参数的 ...
- Windows配置环境变量的作用和方法
Windows配置环境变量的作用和方法 一.什么是环境变量 二.为什么要配置环境变量 三.JDK的下载和安装 四.如何配置Java环境变量 Win7如何设置环境变量 Win10如何设置环境变量 一.什 ...
- jquery validation engine ajax验证,jquery.validationEngine 验证 AJAX 不起作用解决方法
当前位置:我的异常网» Ajax » jquery.validationEngine 验证 AJAX 不起作用解决方 jquery.validationEngine 验证 AJAX 不起作用解决方法 ...
- 卷积神经网络结合水平集方法
水平集方法用于深度卷积网络 水平集简介 CNN结合Level Set 疑惑 水平集简介 水平集(Level Set)方法是用于图像分割非常受欢迎的方法,其通过比目标维度高一维的水平集函数(LSF)的零 ...
- 水平集方法的一个基本框架
水平集方法框架 水平集方法是现代图像处理中很重要的一个方法,为了说清楚这个东西,我们先介绍几个基本的概念. 零水平集 对于一个函数 ϕ(x⃗):Rn→R\phi(\vec x):{\mathbf{R} ...
- 水平集方法引入主动轮廓模型算法中的两种方法
水平集方法引入主动轮廓模型算法中的两种方法 1.传统的基于主动轮廓模型和水平集理论的方法 2.变分水平集方法 在讲解水平集理论在主动轮廓模型中的应用前,我们先用流程图说明一下常见的处理主动轮廓模型的流 ...
最新文章
- Nginx在windows下常用命令
- 一文看懂NB-IoT!
- Java CopyOnWriteArrayList
- Base64实现图片的编码和解码
- 计算机编程导论python程序设计答案-学堂在线_计算机科学与Python编程导论_作业课后答案...
- Matlab生成m序列
- NLP之WordCloud:基于jieba+matplotlib库对一段文本生成词云图~~情人节最好的礼物(给你一张过去的词云图,看看那时我们的爱情)
- 【字符集UTF8】处理Toad显示乱码及Windows XP下无法插入“某些汉字”问题
- vs 2019 社区版许可证过期_Switch版《最终幻想12:黄道时代》对比PS4版 就没差
- PHP中文乱码解决办法
- uni-app微信小程序获取手机号;微信小程序获取手机号,获取到后需要进行解密;微信小程序获取手机号失败 Error:该appId没有权限
- linux以下哪个属于块设备,1222.在大多数Linux发行版本中,以下哪个属于块设备( )...
- 鲲鹏迁移第一批吃螃蟹的人,践行技术国际化
- hadoop yarn 获取日志_Hadoop YARN日志查看方式
- c语言的程序的基本示例
- boost::asio 阻塞卡顿问题
- 关键词云图,实现搜索功能
- 两个鸡蛋,100层楼,找出摔碎鸡蛋的最低楼层,所用的摔鸡蛋次数最少
- Linux的简单命令 who echo cal clear date
- linux聊天python_Python socket C/S结构的聊天室应用