Frank-Wolfe和梯度投影方法MATLAB实现
Frank-Wolfe法方法
1. 适用求解问题
Frank和Wolfe于1956年提出求解非线性规划带有线性约束问题的一种算法。
研究非线性问题:
minf(x)s.t.Ax=b,x≥0\begin{aligned} min \quad &f(x) \\ s.t. \quad &Ax=b, \\ &x\ge0 \end{aligned} mins.t.f(x)Ax=b,x≥0
其中A是m×nm \times nm×n , 秩为mmm, bbb是mmm纬列向量,f(x)f(x)f(x)是连续可微函数。
Frank-wolfe算法的基本思想是:在每次迭代过程中,将目标函数f(x)f(x)f(x)线性化,通过解线性规划求得下降可行方向,进而沿此方向在可行域内作一维搜索。
2. 求解步骤
求解步骤参考陈宝林老师的《最优化理论与算法》一书,具体步骤如下:
3. 求解示例
测试问题:
minf(x)=x12+x22−x1×x2−2×x1+3×x2s.t.x1+x2+x3=3;x1+5x2+x4=6;x1,x2,x3,x4≥0\begin{aligned} min \quad &f(x)=x_1^2+x_2^2-x_1 \times x_2 -2\times x_1 + 3 \times x_2 \\ s.t. \quad &x_1+x_2+x_3=3; \\ & x_1 + 5x_2 + x_4=6; \\ & x_1,x_2,x_3,x_4 \ge0 \end{aligned} mins.t.f(x)=x12+x22−x1×x2−2×x1+3×x2x1+x2+x3=3;x1+5x2+x4=6;x1,x2,x3,x4≥0
设定初始解x=(2,0,1,4)Tx={(2,0,1,4)}^{T}x=(2,0,1,4)T,迭代过程图如下:
经过两次迭代找到最优解(K-T点)为(1,0,2,5)T{(1,0,2,5)}^{T}(1,0,2,5)T,由于计算误差的存在,更改初始解往往fw方法往往不容易收敛,例如将初始解更改为x=(0.5,1,0.5,0.5)Tx={(0.5,1,0.5,0.5)}^{T}x=(0.5,1,0.5,0.5)T,迭代过程图如下:
下面要介绍的梯度投影法没有这个问题。
梯度投影法
1. 适用求解问题
考虑问题
minf(x)s.t.Ax≥b,Ex=e\begin{aligned} min \quad &f(x) \\ s.t. \quad &Ax \ge b, \\ &Ex=e \end{aligned} mins.t.f(x)Ax≥b,Ex=e
其中f(x)f(x)f(x)是可微函数,AAA为m×nm\times nm×n矩阵,EEE为l×nl\times nl×n矩阵;
梯度投影法的基本思想:从可行点出发,沿可行方向搜索,当迭代出发点再可行域内部时,沿负梯度方向搜索,当迭代出发点再某些约束的边界上时,将该点处的负梯度投影到MMM的零空间,MMM是起约束或作用约束的梯度为行构造成的矩阵。同样,梯度投影也可以找到K-T点。
2. 求解步骤
3. 求解示例
测试问题:
minf(x)=2×x12+2×x22−2×x1×x2−4×x1−6×x2s.t.−x1−x2≥−2;−x1−5x2≥−5;x1,x2≥0\begin{aligned} min \quad &f(x)=2\times x_1^2 + 2\times x_2^2 - 2 \times x_1 \times x_2 - 4\times x_1 - 6 \times x_2 \\ s.t. \quad &-x_1-x_2 \ge -2; \\ & -x_1 - 5x_2 \ge -5; \\ & x_1,x_2 \ge0 \end{aligned} mins.t.f(x)=2×x12+2×x22−2×x1×x2−4×x1−6×x2−x1−x2≥−2;−x1−5x2≥−5;x1,x2≥0
设定初始解x=(0,0)Tx={(0,0)}^{T}x=(0,0)T,找到最优解为(1.129,0.77419)T{(1.129,0.77419)}^{T}(1.129,0.77419)T。迭代过程图如下:
详细代码地址
github链接
Frank-Wolfe和梯度投影方法MATLAB实现相关推荐
- 梯度投影算法 matlab,梯度投影法及其Matlab实现
梯度投影法及其Matlab实现(论文9200字) 摘要:最优化理论作为应用数学的一个重要分支,广泛的应用于生活中.梯度投影法作为一种最优化方法,是解决带约束最优化问题的重要手段之一.本文主要研究了梯度 ...
- matlab中fminunc函数使用方法,[分享]无约束非线性规划函数\fminunc函数使用方法(MATLAB)...
[分享]无约束非线性规划函数\fminunc函数使用方法(MATLAB) 无约束非线性规划函数\fminunc函数使用方法(MATLAB) %用于求解无约束非线性规划的函数有:fminsearch和f ...
- 7.边缘检测:2D运算——Canny的不同结果、单个2D边缘检测滤波器、实现边缘3种方法Matlab实战_3
目录 Canny的不同结果 单个2D边缘检测滤波器 实现边缘3种方法Matlab实战 第一种 图像差异 第二种 Canny边缘检测器 第三种 高斯拉普拉斯变换 Canny的不同结果 右边的图像是左边的 ...
- 【ISAR成像定标方法(2)—平动目标ISAR成像的运动补偿方法MATLAB仿真】
目录 前提介绍 运动补偿技术研究 包络对齐方法 相位补偿方法 运动补偿仿真实验与分析 结语 前提介绍 本章内容简介:分析了相邻互相关法和积累互相关法两种包络对齐方法,分析了多普勒中心跟踪法(又称积累恒 ...
- 【ISAR成像定标方法(3)—基于SGP4模型的空间目标定标方法MATLAB仿真】
目录 前提介绍 基于SGP4模型的转速估计 基于SGP4模型的空间目标定标仿真实验 结语 前提介绍 本章内容简介:本文研究了使用双行轨道报和SGP4模型估计空间LEO目标位置信息,并根据几何关系推测目 ...
- 直接法 matlab,解线性方程组直接方法matlab用法.doc
解线性方程组直接方法matlab用法 在这章中我们要学习线性方程组的直接法,特别是适合用数学软件在计算机上求解的方法. 2.1 方程组的逆矩阵解法及其MATLAB程序 2.1.3 线性方程组有解的判定 ...
- 独家 | 神经网络的对抗性攻击:快速梯度符号方法的探索(附链接)
作者:Patrycja Jenkner 翻译:陈之炎 校对:欧阳锦 本文约2300字,建议阅读8分钟 本文将尝试一种非常流行的攻击:快速梯度符号方法,来证明神经网络的安全漏洞. 标签:对抗性攻击,神经 ...
- 2021-04-09 随机模拟—蒙特卡洛方法 Matlab代码实现
随机模拟-蒙特卡洛方法 Matlab代码实现 蒙特卡洛方法 蒙特卡洛方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出 ...
- 蒙特卡洛梯度估计方法(MCGE)简述
动机 机器学习中最常见的优化算法是基于梯度的优化方法,当目标函数是一个类似如下结构的随机函数 F(θ) 时: 优化该类目标函数,最核心的计算问题是对随机函数 F(θ) 的梯度进行估计,即: 随机函数梯 ...
- boost::gil模块沿 x 轴计算梯度的方法的示例
boost::gil模块沿 x 轴计算梯度的方法的示例 实现功能 C++实现代码 实现功能 boost::gil模块沿 x 轴计算梯度的方法的示例 C++实现代码 #include <boost ...
最新文章
- tomcat启动前端项目
- JAVA框架Struts2 结果页配置
- 洛谷 2921 记忆化搜索 tarjan 基环外向树
- 浏览器了解(四)javascript解析
- while(条件) 语句;语句 容易理解错的一点
- SQL Server创建数据库
- Chrome历史版本下载地址
- 2019年下半年软件设计师下午真题试题(案例分析)及答案
- 读书笔记-------修炼之道互联网产品从设计到运营
- grub4dos挂载iso linux,GRUB4DOS加载ISO启动光盘完美解决方案
- oracle碎片产生原因,oracle碎片小结
- git系列之-放弃修改
- waves服务器系统盘,Waves Soundgrid服务器(DIY)
- 农村姑娘误加了一个博士群,结果...
- 服务器显示未知主机如何解决办法,mc服务器时候说我未知主机
- linux千兆网卡接百兆交换机,千兆交换机可以接百兆网线吗?
- SPSS是什么?SPSS软件的功能有哪些?
- 使用apt-get时可能报错:E: Could not perform immediate configuration on already unpacked 'mountall'.解决方法
- 苹果微信多开_苹果手机微信双开,微信多开有哪些可以推荐的?
- (八)活动目录:域控DC和DNS分离搭建过程