IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> MSA(Method of Successive Algorithm)算法逻辑及实例 -> 正文阅读

[数据结构与算法]MSA(Method of Successive Algorithm)算法逻辑及实例

文章目录

前言

一、MSA算法是什么?

二、求解优化问题

1.典型优化问题

?2.求解步骤

三、简单案例

总结


前言

????????在城市交通网络配流问题的求解中,MSA(Method of Successive Algorithm)算法作为Frank Wolf算法的变种有非常重要的作用。本文主要介绍了MSA的算法逻辑,最后使用excel来计算一个简单的例子。对上述工作的理解,可以帮助大家将MSA算法转化为matlab代码或者python代码。


一、MSA算法是什么?

????????MSA(Method of Successive Algorithm)算法,也叫做连续平均算法,主要思想是将迭代过程中一系列的辅助点进行平均,其中每一个迭代点都是通过求解辅助规划问题得来的 ,而辅助规划问题又是基于前面迭代过程中的辅助。

? ? ? ? 与Frank Wolf 算法相比,这种方法的优点是在每次迭代的过程中,不需要通过求解线性搜索问题而得到的迭代步长,而迭代步长是预先确定的,因此MSA算法简单,但是由于缺乏在迭代过程中的调整,该算法在大型路网中收敛速度较慢。

二、求解优化问题

1.典型优化问题

minf(x)\\ s.t. Ax=b\\ x \geqslant 0

其中,Am\times n的矩阵,秩为mbm维的列向量,f(x)是连续可微函数,可行域记为:

D=\left \{ x|Ax = b,x\geq 0 \right \}

PS:

交通分配中常用得到的多项logit模型,可以把出行成本和流量分配的概率结合起来:

?2.求解步骤

? ? ? ? 假定在任意点x,目标函数的负梯度即\triangledown f(x)为迭代方向,通过求解下面的线性规划问题可以得到从点x{}'出发的最优可行下降方向

?min\triangledown f({x}')\\ s.t. Ax=b\\ x \geqslant 0

????????上面这个线性规划问题就是辅助规划问题,通过求解此问题得到原问题的?辅助变量y?。

????????其中,决策变量的x的辅助变量y,之间的迭代关系是:

x^{n+1}=x^{n}+\frac{1}{n}(y^{n}-x^{n})

? ? ? ? 当前后两次决策变量的x?的值小于设定误差,则迭代结束。

????????备注:交通流量分配的常见logit分配模型,原理就是在出行者选择出行成本低的路径的概率更大,体现在数学形式上就是:

P_{k}^{r,s}=\frac{exp(-\theta*C_{k}^{r,s})}{\sum_{j}exp(-\theta*C_{j}^{r,s})}

其中,P_{k}^{r,s}代表在r到s之间的第k条路径被选择的概率。

三、简单案例

此案例参考:B站用户: 小魔仙的babala(https://link.zhihu.com/?target=https%3A//www.bilibili.com/video/BV1TK411n77H

案例:给定初始条件,c_{1}^{0}= 5, c_{2}^{0}= 5,\theta =0.5,总流量为10。下图代表的是两条路径的出行成本

,求解最后两条路径的均衡流量。

迭代过程如下:

 path flowpath probpath cost?logit probpath flow
第一次迭代path15.000.511.000.11921.19
path25.000.57.000.88088.81
      
 path flowpath probpath cost?logit probpath flow
第二次迭代path11.190.1192029223.380.976159.76
path28.810.88079707810.810.023850.24
      
 path flowpath probpath cost?logit probpath flow
第三次迭代path15.480.54767790611.950.062080.62
path24.520.4523220946.520.937929.38
      
 path flowpath probpath cost?logit probpath flow
第四次迭代path13.860.3858133388.720.428694.29
path26.140.6141866628.140.571315.71
      
 path flowpath probpath cost?logit probpath flow
第五次迭代path13.970.3965323728.930.389843.90
path26.030.6034676288.030.610166.10
      
 path flowpath probpath cost?logit probpath flow
第六次迭代path13.950.3951938618.900.394633.95
path26.050.6048061398.050.605376.05
      
 path flowpath probpath cost?logit probpath flow
第七次迭代path13.950.395099228.900.394973.95
path26.050.604900788.050.605036.05

我们看到第6次迭代和第7次迭代之后,两条路径的流量已经趋于稳定,因此我们认为达到了UE状态。


总结

? ? ? ? MSA算法是交通流分配问题中的常见算法,在论文中也常见,掌握它的计算逻辑,能够更好的理解MSA算法的python和matlab代码,也是帮助我自己理解:)

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 11:03:35  更:2022-07-03 11:05:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:42:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码