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×x2​x1​+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实现相关推荐

  1. 梯度投影算法 matlab,梯度投影法及其Matlab实现

    梯度投影法及其Matlab实现(论文9200字) 摘要:最优化理论作为应用数学的一个重要分支,广泛的应用于生活中.梯度投影法作为一种最优化方法,是解决带约束最优化问题的重要手段之一.本文主要研究了梯度 ...

  2. matlab中fminunc函数使用方法,[分享]无约束非线性规划函数\fminunc函数使用方法(MATLAB)...

    [分享]无约束非线性规划函数\fminunc函数使用方法(MATLAB) 无约束非线性规划函数\fminunc函数使用方法(MATLAB) %用于求解无约束非线性规划的函数有:fminsearch和f ...

  3. 7.边缘检测:2D运算——Canny的不同结果、单个2D边缘检测滤波器、实现边缘3种方法Matlab实战_3

    目录 Canny的不同结果 单个2D边缘检测滤波器 实现边缘3种方法Matlab实战 第一种 图像差异 第二种 Canny边缘检测器 第三种 高斯拉普拉斯变换 Canny的不同结果 右边的图像是左边的 ...

  4. 【ISAR成像定标方法(2)—平动目标ISAR成像的运动补偿方法MATLAB仿真】

    目录 前提介绍 运动补偿技术研究 包络对齐方法 相位补偿方法 运动补偿仿真实验与分析 结语 前提介绍 本章内容简介:分析了相邻互相关法和积累互相关法两种包络对齐方法,分析了多普勒中心跟踪法(又称积累恒 ...

  5. 【ISAR成像定标方法(3)—基于SGP4模型的空间目标定标方法MATLAB仿真】

    目录 前提介绍 基于SGP4模型的转速估计 基于SGP4模型的空间目标定标仿真实验 结语 前提介绍 本章内容简介:本文研究了使用双行轨道报和SGP4模型估计空间LEO目标位置信息,并根据几何关系推测目 ...

  6. 直接法 matlab,解线性方程组直接方法matlab用法.doc

    解线性方程组直接方法matlab用法 在这章中我们要学习线性方程组的直接法,特别是适合用数学软件在计算机上求解的方法. 2.1 方程组的逆矩阵解法及其MATLAB程序 2.1.3 线性方程组有解的判定 ...

  7. 独家 | 神经网络的对抗性攻击:快速梯度符号方法的探索(附链接)

    作者:Patrycja Jenkner 翻译:陈之炎 校对:欧阳锦 本文约2300字,建议阅读8分钟 本文将尝试一种非常流行的攻击:快速梯度符号方法,来证明神经网络的安全漏洞. 标签:对抗性攻击,神经 ...

  8. 2021-04-09 随机模拟—蒙特卡洛方法 Matlab代码实现

    随机模拟-蒙特卡洛方法 Matlab代码实现 蒙特卡洛方法 蒙特卡洛方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出 ...

  9. 蒙特卡洛梯度估计方法(MCGE)简述

    动机 机器学习中最常见的优化算法是基于梯度的优化方法,当目标函数是一个类似如下结构的随机函数 F(θ) 时: 优化该类目标函数,最核心的计算问题是对随机函数 F(θ) 的梯度进行估计,即: 随机函数梯 ...

  10. boost::gil模块沿 x 轴计算梯度的方法的示例

    boost::gil模块沿 x 轴计算梯度的方法的示例 实现功能 C++实现代码 实现功能 boost::gil模块沿 x 轴计算梯度的方法的示例 C++实现代码 #include <boost ...

最新文章

  1. tomcat启动前端项目
  2. JAVA框架Struts2 结果页配置
  3. 洛谷 2921 记忆化搜索 tarjan 基环外向树
  4. 浏览器了解(四)javascript解析
  5. while(条件) 语句;语句 容易理解错的一点
  6. SQL Server创建数据库
  7. Chrome历史版本下载地址
  8. 2019年下半年软件设计师下午真题试题(案例分析)及答案
  9. 读书笔记-------修炼之道互联网产品从设计到运营
  10. grub4dos挂载iso linux,GRUB4DOS加载ISO启动光盘完美解决方案
  11. oracle碎片产生原因,oracle碎片小结
  12. git系列之-放弃修改
  13. waves服务器系统盘,Waves Soundgrid服务器(DIY)
  14. 农村姑娘误加了一个博士群,结果...
  15. 服务器显示未知主机如何解决办法,mc服务器时候说我未知主机
  16. linux千兆网卡接百兆交换机,千兆交换机可以接百兆网线吗?
  17. SPSS是什么?SPSS软件的功能有哪些?
  18. 使用apt-get时可能报错:E: Could not perform immediate configuration on already unpacked 'mountall'.解决方法
  19. 苹果微信多开_苹果手机微信双开,微信多开有哪些可以推荐的?
  20. (八)活动目录:域控DC和DNS分离搭建过程

热门文章

  1. Redis:字符串MSET、MSETNX、MGET命令介绍
  2. ASP.NET MVC中的下拉框数据查询
  3. 5面阿里,终获offer(Java后端)
  4. html中多一条黑线,Word页面中上下各有一条黑线怎样去掉?
  5. 关于杭州电子科技大学毕业论文格式设置
  6. MySQL全文索引短单词或数字不生效的问题
  7. vscode 初始化HTML结构
  8. H3C_利用策略路由实现出口双线路负载(选路)的部署
  9. android 文件保存到应用和sd卡中
  10. 零基础学C/C++40——鸡兔同笼