数值优化(Numerical Optimization)学习系列-惩罚和增广拉格朗日方法(Augmented Lagrangian Methods)
2015-12-27 18:56
381 查看
概述
求解带约束的最优化问题,一类很重要的方法就是将约束添加到目标函数中,从而转换为一系列子问题进行求解,最终逼近最优解。关键问题是如何将约束进行转换。本节主要介绍1. 二次惩罚方法
2. 非平滑惩罚方法
3. 增广拉格朗日方法
二次惩罚方法
动机
带约束问题如果转换为目标函数加上一个对约束的惩罚项,则问题转换为一个无约束问题。转换后的问题可以通过惩罚项的系数进行控制,一个比较常见的惩罚函数就是二次惩罚。
等式约束的最优化问题
等式约束问题可以表示为min f(x)s.t ci(x)=0,i∈Emin \ f(x) s.t \ c_i(x)=0,\; i \in \mathcal E添加一个二次惩罚项,则有Q(x;μ)=f(x)+μ2∑i∈Ec2i(x)Q(x;\mu)=f(x) + \frac \mu 2\sum_{i \in \mathcal E}c_i^2(x)其中μ\mu是惩罚参数,直观上只要增加惩罚参数的值就可以逼近原始问题的最优解。在实际中,对于某个惩罚参数μ\mu只要几步无约束最优化问题,不需要寻找最优解。
一般化约束最优化问题
一般化约束最优化问题表示为minf(x)s.tci(x)=0 i∈E ci(x)≥0 i∈Imin f(x) \\ s.t \; c_i(x)=0 \ i \in \mathcal E \\ \ \ \ \ \ c_i(x) \ge 0 \ i \in \mathcal I添加惩罚项系数结果为Q(x;μ)=f(x)+μ2∑i∈Ec2i(x)+μ2∑i∈I([ci(x)]−)2Q(x;\mu)=f(x) + \frac \mu 2\sum_{i \in \mathcal E}c_i^2(x)+\frac \mu 2\sum_{i \in \mathcal I}([c_i(x)]^-)^2其中ci(x)−c_i(x)^-表示当该值大于0时,结果为0,否则为−ci(x)-c_i(x)二次惩罚项通用框架
1.参数μ\mu的选择可以根据无约束问题的优化难度进行确定,如果很容易优化则可以μk+1=μk\mu_{k+1}=\mu_k,否则可以选择μk+1=μk\mu_{k+1}=\mu_k
2. 定理:如果转换后的问题Q(x;μk)Q(x;\mu_k)每一步都计算最优解,并且当μk→∞\mu_k \to \infty时能够接近原始问题的最优解。
非平滑惩罚函数
有些惩罚函数是精确的,即惩罚项参数μ\mu达到一定值时转换后的问题的最优解就是原始问题的最优解,其中l1惩罚项就是精确的,表示如下ϕ1(x;μ)=f(x)+μ∑i∈E|ci(x)|+μ∑i∈E|ci(x)|−\phi_1(x;\mu)=f(x)+\mu \sum_{i \in \mathcal E}|c_i(x)|+\mu \sum_{i \in \mathcal E}|c_i(x)|^-通用求解框架
增广拉格朗日方法
动机
增广拉格朗日方法在拉格朗日方法的基础上添加了二次惩罚项,从而使得转换后的问题能够更容易求解,不至于因条件数变大不好求。则转换后的问题为L(x,λ;μ)=f(x)−∑i∈Eλici(x)+μ2∑i∈Eci(x)2\mathcal L(x,\lambda;\mu)=f(x)-\sum_{i \in \mathcal E}\lambda_i c_i(x)+\frac \mu 2 \sum_{i \in \mathcal E}c_i(x)^2在第K步迭代过程中,固定惩罚项参数μ\mu和λk\lambda^k,此时优化x,根据最优化条件有∇xL=∇f(x)−∑i∈E(λki−μkci(x))∇ci(x)=0\nabla_x\mathcal L=\nabla f(x)-\sum_{i \in \mathcal E}(\lambda^k_i-\mu_kc_i(x))\nabla c_i(x)=0
对比最优性条件,应该有∇f(x∗)=0;λ∗=λki−μkci(x)\nabla f(x^*)=0;\lambda^*=\lambda^k_i-\mu_kc_i(x),从而很自然的可以将λk+1=λki−μkci(x)\lambda^{k+1}=\lambda^k_i-\mu_kc_i(x)
等式约束通用框架
实际应用
在实际中,增广拉格朗日方法可以很有效的处理边界约束和线性约束最优化问题。总结
了解通过将约束转换为惩罚项添加到目标函数上的方法,了解增广拉格朗日方法的动机。相关文章推荐
- centOS下卸载samba
- 数值优化(Numerical Optimization)学习系列-线性规划(Linear Programming)
- Shell的详细解释
- 数值优化(Numerical Optimization)学习系列-最小二乘问题(Least-Squares)
- 数值优化(Numerical Optimization)学习系列-非线性方程(Nonlinear Equation)
- 学习shell脚本之前要掌握的知识
- 数值优化(Numerical Optimization)学习系列-无梯度优化(Derivative-Free Optimization)
- 数值优化(Numerical Optimization)学习系列-计算导数(Calculating Derivatives)
- Linux 用户&文件权限
- 数值优化(Numerical Optimization)学习系列-拟牛顿方法(Quasi-Newton)
- 数值优化(Numerical Optimization)学习系列-共轭梯度方法(Conjugate Gradient)
- Ubuntu Apache 部署 Django
- 数值优化(Numerical Optimization)学习系列-信赖域方法
- 数值优化(Numerical Optimization)学习系列-线搜索方法(LineSearch)
- 数值优化(Numerical Optimization)学习系列-概述
- Apache 集成subversion
- LINUX启动运行的脚本
- Linux下mysql安装笔记
- centos提示bash: service: command not found
- linux jexus 服务 设置开机启动