针对特殊约束条件下的优化问题,有着不同类别适应不同条件的求解算法。包括梯度法、求解线性等式约束问题的投影梯度法、适用于含有等式约束规划和含有不等式规划的拉格朗日乘子法、针对不等式约束的KKT条件法、罚函数法等。

等式约束问题

设目标函数为f(x),约束条件为hk(x)h_k(x),形如

minf(x)s.t.hk(x)=0k=1,2,⋯k

min \quad f(x) \\ s.t. \quad h_k(x)=0 \quad k=1,2,\cdots k
则解决方法是消元法或者拉格朗日法。消元法不再多说,拉格朗日法这里在提一下,因为后面提到的KKT条件是对拉格朗日乘子法的一种泛化。

L(x,λ)=f(x)+∑k=1lλkhk(x)

L(x,\lambda)=f(x)+\sum_{k=1}^{l}\lambda_kh_k(x)
其中 λkλ_k是各个约束条件的待定系数。
然后解偏导方程组:

∂F∂xi=0∂F∂λk=0⋯

\frac{\partial F }{\partial x_i}=0 \quad \frac{\partial F }{\partial \lambda_k}=0 \\ \cdots

至于为什么这么做可以求解最优化?维基百科上给出了一个比较好的直观解释。

举个二维最优化的例子:

minf(x,y)s.t.g(x,y)=c

min f(x,y) \\s.t. g(x,y) = c

这里画出z=f(x,y)z=f(x,y)的等高线:

绿线标出的是约束g(x,y)=cg(x,y)=c的点的轨迹。蓝线是f(x,y)f(x,y)的等高线。箭头表示斜率,和等高线的法线平行。从梯度的方向上来看,显然有d1>d2d1>d2。
绿色的线是约束,也就是说,只要正好落在这条绿线上的点才可能是满足要求的点。如果没有这条约束,f(x,y)f(x,y)的最小值应该会落在最小那圈等高线内部的某一点上。
而现在加上了约束,最小值点应该在哪里呢?显然应该是在f(x,y)的等高线正好和约束线相切的位置,因为如果只是相交意味着肯定还存在其它的等高线在该条等高线的内部或者外部,使得新的等高线与目标函数的交点的值更大或者更小,只有到等高线与目标函数的曲线相切的时候,可能取得最优值。

如果我们对约束也求梯度∇g(x,y)∇g(x,y),则其梯度如图中绿色箭头所示。很容易看出来,要想让目标函数f(x,y)f(x,y)的等高线和约束相切,则他们切点的梯度一定在一条直线上。
即:∇f(x,y)=λ(∇g(x,y)−C)∇f(x,y)=λ(∇g(x,y)-C)
其中λ可以是任何非0实数。

一旦求出λ\lambda的值,将其带入下式,易求在无约束极值和极值所对应的点。

F(x,y)=f(x,y)+λ(g(x,y)−c)

F(x,y)=f(x,y)+\lambda(g(x,y)-c)

这就是拉格朗日函数的由来。

不等式约束问题

考虑一般形式的优化问题:

Minf(x)s.t.h(x)=0g(x)≥0

Min\quad f(x) \\ s.t. \quad h(x)=0 \\ \quad g(x) \geq 0

由上式,对于一个不等式约束gj(x)⩽0g_j(x)\leqslant 0,如果在x∗x^*处gj(x)=0g_j(x)= 0,那么称该不等式约束是x∗x^*处的起作用约束;如果在x∗x^*处gj(x)≥0g_j(x)\geq 0,那么称该约束是处的不起作用约束。
按惯例,把等式约束hi(x)=0h_i(x)=0当作总是起作用的约束。

由此,定义不等式约束下的拉格朗日函数L,则L表达式为:

L(X,λ,μ)=f(X)+∑j==1pλjhj(X)+∑k=1qμkgk(X)

L(X,\lambda,\mu)=f(X)+\sum_{j==1}^{p}\lambda_jh_j(X)+\sum_{k=1}^{q}\mu_kg_k(X)

其中f(x)是原目标函数,hj(x)h_j(x)是第j个等式约束条件,λjλ_j是对应的约束系数,gkg_k是不等式约束,μk\mu_k是对应的约束系数。

常用的方法是KKT条件,同样地,把所有的不等式约束、等式约束和目标函数全部写为一个式子,简化为L(a,b,x)=f(x)+a∗g(x)+b∗h(x)L(a, b, x)= f(x) + a*g(x)+b*h(x)

KKT条件是说最优值必须满足以下条件:

1)∂L∂xi=0\frac{\partial L }{\partial x_i}=0对x求导为零;

2)h(x) =0;

3)a*g(x) = 0;

求取这些等式之后就能得到候选最优值。其中第三个式子非常有趣,因为g(x)<=0,如果要满足这个等式,必须a=0或者g(x)=0g(x)=0. 这是SVM的很多重要性质的来源,如支持向量的概念。

KKT的推导:

首先不加证明的给出对偶问题结论:

Minω,bMaxbL(ω,b,α)=MaxbMinω,bL(ω,b,α)

\underset{\omega,b}{Min}\underset{b}{Max}L(\omega,b,\alpha)=\underset{b}{Max}\underset{\omega,b}{Min}L(\omega,b,\alpha)

参考资料:
[1].Edwin K.P.Chong and Stanisslaw H.Zak 最优化导论(第四版)
[2].http://blog.csdn.net/xianlingmao/article/details/7919597

等式约束与不等式约束问题相关推荐

  1. UA SIE545 优化理论基础3 Fritz-John与Kuhn-Tucker理论总结 带等式约束与不等式约束的极值问题

    UA SIE545 优化理论基础3 Fritz-John与Kuhn-Tucker理论总结 带等式约束与不等式约束的极值问题 对于函数f:X→Yf:X \to Yf:X→Y,我们希望XXX是一个凸的度量 ...

  2. 等式约束和不等式约束下的KKT条件求法

    一.写在前面 本篇内容主要写非线性规划等式约束和不等式约束下的KKT条件,主要通过举例说明. 二.等式约束下的KKT条件 1. 题目描述 考虑等式约束的最小二乘问题 minimizexTxsubjec ...

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

    最后介绍同时有等式约束和不等式约束的SQP解法.这里面的解法比之前的稍微复杂一点,用到了line search method以及BFGS下降.使用line search是为了增加搜索的鲁棒性,确保在任 ...

  4. matlab 遗传算法 等式约束,关于MATLAB遗传算法工具箱不等式约束

    过去很久了,之前写论文的经验分享一下. 写毕业论文的时候需要用到遗传算法,网上查了很多资料,由于没时间认真去学算法的内部结构,最后还是选择了MATLAB自带的遗传算法工具箱(MATLAB2017-GA ...

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

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

  6. 不等式约束问题-KKT条件 (1)

    允许不等式约束的KKT条件(卡罗需-库恩-塔克条件,Karush-Kuhn-Tucker Conditions,有时称为一阶必要条件)是对只允许等式约束的拉格朗日乘数法的推广. 定义一个优化问题如下, ...

  7. 最优控制理论 五、极大值原理→控制不等式约束

    庞特里亚金提出的"极大值原理"(Pontryagin Maximum Principle,PMP)是最优控制理论的三大基石之一.与哈密尔顿函数法的异同是,两者都旨在解决非线性常微分 ...

  8. 不等式约束二次规划——有效集法

    不等式约束二次规划--有效集法 预备知识:有效不等式约束是等式约束 总体思路 如何寻找有效集 1.x0∗=x0,λ≥0x_0^*=x_0,λ≥0x0∗​=x0​,λ≥0 2.x0∗=x0,λj≤0x_ ...

  9. 数值最优化-有效集法求解含有不等式约束的二次规划问题

    参考链接:(78条消息) 有效集法介绍(Active Set Method)_dymodi的博客-CSDN博客_有效集法 唯一参考书:数值最优化(numerical optimization) 不等式 ...

最新文章

  1. html 视频兼容苹果,video苹果兼容flash播放
  2. JVMTOP JVM 监视工具
  3. Unable to simultaneously satisfy constraints.
  4. 20189222 《网络攻防实践》第二周作业
  5. oracle中的(+)
  6. python turtle画五边形_python画一朵玫瑰给你
  7. 深入理解java虚拟机JVM(上)
  8. 阿里云构建千万级别架构演变之路
  9. 务必了解的跨境电商ERP独立部署!
  10. 安卓java代码写控件_安卓自定义流程进度图控件实例代码
  11. 操作键盘事件源码解析(常用的鼠标事件、 键盘事件对象之keyCode属性)
  12. hdu2647(拓扑排序)
  13. STK11.2 计算卫星A关于卫星B的相对位置 (三维和二维)
  14. 从菜鸟到架构师(六)
  15. 大气幼儿园html模板,幼儿园儿童HTML主题
  16. 【Linux】创建新用户 sudo配置,添加信任
  17. 方舟服务器显示等待发布,《明日方舟》开服既炸服的这波操作《方舟生存进化》永远也学不会...
  18. 分子动力学模型的发展由来
  19. Android项目120项
  20. 换电脑了大量数据如何迁移?

热门文章

  1. 用python做名片_Linux下python制作名片示例
  2. pytorch PythonAPI torch.....................
  3. Android vivo手机无法调试安装Apk的解决办法
  4. Android短视频SDK
  5. 设计模式-代理模式 C#版本
  6. Datawhale 1月leetcode
  7. 《宝塔面板教程5》:如何上传网站程序安装自己的网站
  8. 实验三 基本表的定义、删除与修改
  9. 使用Python实现滚动的广告屏幕
  10. SDUT A-生化危机