数值最优化-有效集法求解含有不等式约束的二次规划问题
参考链接:(78条消息) 有效集法介绍(Active Set Method)_dymodi的博客-CSDN博客_有效集法
唯一参考书:数值最优化(numerical optimization)
不等式约束的二次规划问题的最一般表述如下所示:
并给出KKT条件(一阶必要条件)的一种表述:
我们还可以给出KKT条件的另一种表述:
其实也就是在KKT的证明中:我们从这两个等式(12.51和12.52)推导出的KKT条件:
将第二种KKT表述应用在QP问题上,可以得出相应的结果为:
这里对函数求导的地方手算一下就明白了。
下面引入很重要的一条定理:满足KKT条件的解在G为半正定的情况下就是全局最优解:
接下来就是介绍对于凸QP问题的primal有效集方法,先给出算法的全部框架,这里引用了来自dymodi博客的有效集方法算法流程图:这里的流程图存在一个问题是:右下角的判断框应该改成:,修改的原因自己可以斟酌斟酌。
我们对流程图进行高度的概括,将这个流程图分为上下左右来理解:分别是:
- 上:判断p;
- 下:计算p;
- 左:删除约束;
- 右:迭代与增加约束;
算法收敛性:(这里来自dymodi博客的最后一段)书中的定理16.6给出了算法的收敛性,即:只要每次沿着前进,那么目标函数值沿这个方向是一定会减少的,因此(博客中还说因此:“算法的迭代可以在有限次数内终止”,我觉得这个结论不太充分,但是先这么认为)算法的收敛应与怎么增加和删除约束无关。因而上面流程图的左右两侧的什么时候增加、删除约束只是一种策略,用来帮助我们实现算法的快速收敛。因此,在阅读下面算法的具体细节时,只要时刻牢记算法收敛性的主干条件(沿着,函数减小),就会帮助我们理解很多遇到的小问题。
算法背景:每次迭代时引入迭代点和工作集,代表第k次迭代中的坐标点和当前考虑的有效集。注意此时的迭代点一定是在工作集下的可行点,即满足KKT条件16.37b。
第一步:判断是否为在工作集下的最优解。
第二步:如果不是,则求出一个在工作集下的最优解:
这时,如果令就会有:
并且满足约束条件:
由于的大小与无关,因此求关于的最优化问题,等价为求的最优化问题:
因此,第二步其实是求出这个。
第三步:这里我们假设等式约束的优化问题的解已经求出,并且不是零向量:
我们可以发现,,也就是说对任何,总可以满足约束16.39b。并且,我们希望这个迭代可以正常进行下去:
对于内的有效约束,等式16.40一定会被满足,但是对于的约束(有效或者not有效约束都有可能),则不一定成立。因此为使全部约束被满足,则需要:
化简后为:
书中提到:为了最大化降低,我们希望的到满足全部上述条件的最大的:
但是为什么越大,就能更大化的降低目标函数,暂时还不确定。一种可能的想法是:从向量的角度来说,越大,的新迭代点距离原来的迭代点越远,因此貌似可以更快地收敛。但只要沿着,目标函数就会减小,我们暂且把这个取最大的也当作一种策略。
当选出后,根据值的不同,对应着不同的物理意义和操作:
- 首先,从的定义式就可以看出,它是非负的。
如果,我们理解为这次迭代没有受到约束;
如果,这意味着这次迭代的被当前工作集之外的约束 阻挡,因此我们将这个约束添加进来,构成新的工作集;
如果,(从定义式可以看出)这时的的定义式的分子为零,那么此时的情况是,在原来的迭代点上,所对应的约束 是工作集之外的迭代点的有效约束。因此,我们也要将这个约束添加进来。
第四步,(和第三步相反)直到我们找到了某个是当前工作集下的最优解,也就是这时解出的为零,有下面的等式成立:
接下来,我们检查工作集中所有的的约束所对应的,如果全部非负,那么根据上面提到的定理16.4,此时的就是全局最优解。
但如果存在负的,则在工作集里去掉这个约束。
继续迭代,直到结束。
数值最优化-有效集法求解含有不等式约束的二次规划问题相关推荐
- 等式约束与不等式约束问题
针对特殊约束条件下的优化问题,有着不同类别适应不同条件的求解算法.包括梯度法.求解线性等式约束问题的投影梯度法.适用于含有等式约束规划和含有不等式规划的拉格朗日乘子法.针对不等式约束的KKT条件法.罚 ...
- 不等式约束二次规划——有效集法
不等式约束二次规划--有效集法 预备知识:有效不等式约束是等式约束 总体思路 如何寻找有效集 1.x0∗=x0,λ≥0x_0^*=x_0,λ≥0x0∗=x0,λ≥0 2.x0∗=x0,λj≤0x_ ...
- 数值最优化—无约束问题信赖域算法
目录 一.参考 二.线性搜索与信赖域算法区别 三.信赖域算法 四.信赖域子问题的求解 1. 精确求解方法 2. 折线方法(Dogleg Method 狗腿法) 一.参考 <数值最优化算法与理论& ...
- 有效集法介绍(Active Set Method)
单纯性法(Simplex Method)是"线性规划之父"George Dantzig 最著名的成果,也是求解线性规划最有力的算法之一.而这一算法在求解二次规划(Quadratic ...
- 数值最优化-KKT条件(一阶必要条件)证明总结
笔记:约束优化问题一阶最优性条件(KKT条件) - 知乎 (zhihu.com) 最优化理论与方法-第八讲-约束优化(一):KKT条件_哔哩哔哩_bilibili 参考链接:如上 唯一参考书:数值最优 ...
- comsol两相流之水平集法
两相流是流体力学中一类包含物质两相状态的流动问题,可分为固液.液气.气固.液液(两种不均混液体).两相流问题非常复杂,通常情况下,多相流体系总是由若干种连续介质或一种连续介质和若干种不连续介质组成,在 ...
- 使用傅里叶变换(包括差分傅里叶和傅里叶谱方法)及切比雪夫谱方法(配点)法求解PDE
傅里叶变换及切比雪夫谱方法(配点)法求解PDE 以下的内容介绍的是傅里叶谱方法求解PDE.切比雪夫谱方法求解PDE(这里指的是配点法)以及一种先进行差分离散,再对离散系统的每个变量使用离散傅里叶级数展 ...
- 回溯法求解N皇后问题(Java实现)
回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并以此慢慢地扩大问题规模,迭代地逼近最终问题的解.这种迭代类似于穷举并且是试探性的,因为当目前的可 ...
- 辗转相除法(欧几里得算法)求解最大公约数、最小公倍数
辗转相除法(欧几里得算法)求解最大公约数.最小公倍数 通常来说,求解两个数的最大公约数和最小公倍数是常见的算法问题,我们正常人最先想到的肯定是穷举法,通过while循环或者for循环,不断改变循环数, ...
最新文章
- 充分发挥bpl包的作用
- c 语言epc编码如何解开,EPC编码结构
- 软考中级——软件工程基础概念总结
- .NET开发框架(二)-框架功能简述
- python distplot 图_Python可视化23 |seaborn.distplot公司单变量分布图(直方图|核密度图),23seaborndistplot...
- Codeforces Round #686 (Div. 3) F. Array Partition 二分 + 线段树
- [Leetcode][程序员面试金典][面试题17.13][JAVA][恢复空格][动态规划][Trie][字符串哈希]
- mysql数据应用从入门_MYSQL数据库应用从入门到精通----读书笔记
- 面试中的 10 大排序算法总结
- 一个简单51c语言程序,求一个 89C51 简易计算器的c语言程序 只要加减乘除就行!...
- 2021年中国穿戴式科技市场趋势报告、技术动态创新及2027年市场预测
- 数字图像处理实践(一)
- ajax 循环php数组,jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
- Frida Hook 常用函数、java 层 hook、so 层 hook、RPC、群控
- linux mysql端口被占用解决方法_3306端口被占用导致MySQL无法启动
- 软件测试人员能力模型
- word中图片为嵌入式格式时显示不全_毕设时,在word中插入图片时,图片的格式改为嵌入式后图片藏于文字下方怎么办?...
- 如何用美剧真正提升你的英语水平————转自厦大口译的博客
- 后羿采集器怎么导出数据_怎么安装后羿采集器?后羿网页数据采集器安装教程...
- TensorRT教程18:使用DLA(深学习加速器)
热门文章
- 为微信公众号添加自动回复机器人
- python|211129
- python 网络摄像头 检测行为_python,opencv:在网络摄像头上检测到对象的持续时间...
- 刺激战场模拟器过检测的被封号了怎么办?电脑控制手机玩游戏了解一下
- AMD Radeon 显卡设置无法打开(闪退)
- 工程经济学(单利计算与复利计算)
- python朋友圈数据分析_第7天|16天搞定Python数据分析,盗墓笔记重现
- SQL中的符号^,!,意思
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(8月22日~8月28日)...
- “我爱背单词”beta版发布与使用说明