目录

  • 1. 概述
  • 2. 基本思想
  • 3. 求解方法
    • 3.1 求解二阶导数矩阵
    • 3.2 二次规划问题的求解

1. 概述

序列二次规划法(SQP,Sequential Quadratic Programming)算法是将复杂的非线性优化问题转换为较简单的二次规划问题来求解的算法。而二次规划问题则是指目标函数为二次函数,约束函数为线性函数的的最优化问题。二次规划问题是最简单的非线性优化问题,有很多成熟的快速求解的方法。

2. 基本思想

序列二次规划的基本思想即是利用泰勒展开将非线性优化问题的目标函数在迭代点处简化为二次函数,同时将约束函数简化为线性函数:

由于只是原问题的近似问题,求得的解并不是原问题的解,只是一个在局部更好的一个解,可以为下一步的迭代提供一个方向,所以我们想求解的其实是一个方向:

将其化为二次规划的标准形式:

3. 求解方法

问题的求解主要分为两个部分,第一个部分为通过求解二阶导数矩阵,将原非线性优化问题转换为多个简单的二次优化问题,第二个部分为对简单的二次优化问题进行求解。

迭代求解的步骤如下所示:

3.1 求解二阶导数矩阵


这里的ΔX指的是决策变量的差值,Δq指的是梯度的差值。

3.2 二次规划问题的求解

根据约束条件的不同,二次规划可分为等式约束二次规划问题和不等式约束二次规划问题。等式约束二次规划问题即只含有等式约束,常见的解法有直接消去法、广义消去法、拉格朗日(Lagrange)法;对于不等式约束二次规划问题,其基本思想是把不等式约束转化为等式约束再求解,常见解法有有效集(active set)方法,有效集方法在每步迭代中把有效约束作为等式约束,然后可以用拉格朗日法求解,重复直到求得最优解。

序列二次规划求解非线性优化问题相关推荐

  1. 二次规划问题(qp)和序列二次规划问题(sqp)的简单理解

    二次规划 二次规划问题(qp)是目标函数为二次函数,约束条件为线性约束的问题,可以简化为初中数学进行表达,即: 已知目标函数为: f ( x ) = x 2 − 2 ∗ x + 1 f(x)=x^2- ...

  2. python—二次规划求解

    python-二次规划求解 一般步骤 引例 SVDD求解 单分类 二分类 代码分析 一般步骤 将一般形式的待求解目标函数化成标准形式. 标准形式如下: { min ⁡ x = 1 2 x T P x ...

  3. matlab非线性优化求解,用MATLAB求解非线性优化问题

    实验十五用MATLAB求解非线性优化问题 一.实验目的: 了解Matlab的优化工具箱,利用Matlab求解非线性优化问题. 二.相关知识 非线性优化包括相当丰富的内容,我们这里就Matlab提供的一 ...

  4. 序列二次规划_最优控制与规划

    (以下内容均来源于 CS 294 Lecture 8) 首先我们假设环境是确定性的,即在某个状态执行某个动作之后,转移到的下一个状态是确定的,不存在任何随机性.而在这种情况下,我们想做的是在环境给了我 ...

  5. 不等式约束的序列二次规划(SQP)

    讲完等式约束的SQP,接下来就是不等式约束的SQP,其实两者的算法是完全没有区别的,唯一的就是因为引入了不等式约束,再推导上面就会去考虑近似KKT条件,从这个角度进行思考.解当前的问题就是解这个问题的 ...

  6. 等式约束的序列二次规划(SQP)

    我们还是以陆吾生的Practical optimization algorithms and engineering applications第15章作为模板进行整理,讲的是真的清楚,对其中比较简洁的 ...

  7. 【洛谷2624】[HNOI2008] 明明的烦恼(Python+利用prufer序列结论求解)

    点此看题面 大致题意: 给你某些点的度数,其余点度数任意,让你求有多少种符合条件的无根树. \(prufer\)序列 一道弱化版的题目:[洛谷2290][HNOI2004] 树的计数. 这同样也是一道 ...

  8. 算法竞赛——给定ATCG的DNA环状序列,求解最小表示字典序(附python代码及时间复杂度解析)

    题目:环状序列表示一般都会有很多种,比如一个环'CCTC',它的表示方法可能会有很多种,比如,CCTC,CTCC,TCCC,CCCT.这几种表示中,找出字典序最小的表示序列.(字符串只由A.T.G.C ...

  9. 【数据结构与算法】之深入解析“最长连续序列”的求解思路与算法示例

    一.题目要求 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度. 请你设计并实现时间复杂度为 O(n) 的算法解决此问题. 示例 1: 输入:nums ...

最新文章

  1. 名图怎么弄云服务器_云服务器购买了宽带的速度怎么测试?
  2. Numpy入门教程:07. 随机抽样
  3. java 矩形颜色_java – 如何在透明颜色的图形中制作一个矩形?
  4. [HTML/CSS]colum-gap属性
  5. 宏的使用 extern
  6. 数据结构源码笔记(C语言):二叉平衡树的相关操作算法
  7. Selenium IDE工具界面剖析
  8. 《Web前端工程师修炼之道(原书第4版)》——我该从哪里开始呢
  9. 【机器学习算法专题(蓄力计划)】十八、机器学习中SVM算法中的硬间隔和软间隔
  10. 持续集成部署Jenkins工作笔记0001---持续集成、持续部署、持续交付的概念
  11. 一题多解 —— $?(命令返回状态)的检验
  12. 【Luogu4921】情侣?给我烧了!(组合计数)
  13. 高淇Struts2.0教程之视频笔记(4)
  14. vector初始化与清空
  15. 2021年年总结:你无法让每个人都满意,甚至是大多数人。
  16. ps4仁王服务器不稳定,仁王运行流畅图文教学 卡顿解决方法指南 怎样运行流畅 流畅运行方法-游侠网...
  17. 马云给员工的超牛演讲
  18. 通过 kubeadm 安装 k8s 1.14.1版本(master 单节点版)
  19. 首都师范 博弈论 3 1 4纯策略纳什均衡
  20. 图像去雨实例(一)之AttentiveGAN

热门文章

  1. es sql实现分页
  2. 浏览器默认最小字体12px
  3. 讲一个老王与客户、供应商的故事
  4. Python中 * 的用途
  5. 4.设备像素、css像素、设备独立像素、dpr、ppi 之间的区别?
  6. 06【群面】(无领导小组)群面基本介绍考察内容流程,群面常见问题解题思路,群面角色分析考官追问
  7. python中time模块中的倒计时_python中的计时器timeit的使用方法
  8. 新版unity toggle组件汉化名字
  9. 怎么把视频拼接在一起?这款操作简单的软件值得拥有
  10. 前端通过序列帧实现动画