本文主要讲述使用MindOpt工具优化交通调度的数学规划问题。
视频讲解👈👈👈👈👈👈👈👈👈
一、案例场景
交通调度是指对交通资源进行合理的调度和管理,以实现交通系统的高效的运行和流量控制。如何安排调度来帮助提高交通运输的效率、降低成本?一般考虑以下几个因素:
一是网络约束,考虑交通网络中道路的容量、速度限制、道路拥挤等情况。
二是车辆约束,考虑车辆的数量、类型、最大载重量,最大速度等限制条件。
三是车辆路径约束,考虑车辆的行驶路径。
四是车辆容量约束,考虑车辆的容量限制。
五是人员排班,人员安排的一个约束,考虑人员的工作时间、休息时间等条件。
最后是成本约束,在优化调度方案时尽可能降低成本的同时,还要满足一些其他的约束条件。
二、数学规划
交通调度问题也可使用数学规划的方法解决。
数学规划是一种数据优化方法,主要是寻找变量的取值在特定的约束情况下,使决策目标得到一个最大或者最小的决策。数学规划最常见的有线性规划以及整数规划,还有非线性规划。使用数学规划的方法,首先是需确定问题的目标、约束以及变量的取值范围,建立数学模型,然后将数学模型转化为代码进行求解,最后得出的结果就是最优决策。在求解过程中会使用到优化求解器工具,可以帮助计算大规模数学规划问题。
三、网络流问题
交通调度问题在数学规划中属于网络流问题,是指一类基于网络模型的流量分配问题,目标是在网络中分配资源,使网络的流量满足一定的限制条件,并且使某些目标函数最小或者最大化。
网络流问题通常涉及到一个相图,图中的每个节点表示一个资源,每条边表示资源之间的关系,边上有一个容值表示该边上最多可以流动的资源数量。流量从原节点开始流出,经过一系列的中间节点,最终到达这个被节点,在这个过程中需遵守一定的流量守恒和容量限制条件。具体而言,网络流问题可以分为最大流和最小格的两类。最大流问题是寻找在网络中从源节点到会节点的最大流量。交通调度问题就是寻找最大流量。而最小格问题是寻找一组格,将网络划分为两个部分,并通过这些歌的容量之和最小化。如在下图中分配流量使每条边的流量不会超过它的容量约束,同时达到路径长度最小或花费最小等目标函数的优化问题。
四、问题描述
每个站点都有若干条进站道路与出站道路,道路旁的数字表示单位时间内此路所能承载的最大车辆数。如何分配车辆使单位时间从a站点出发,最后到达g站点的车辆是最多?
这个例题主要考虑以下两点因素:
一是通道限制,就是上图中,从a站点到b站点通道限制车辆数是50。
二是流量守恒,就是从a站点发出车辆到b站点的车辆数需要等于b站点驶离车驶离的车辆数。
五、代码解析
在案例中,我们对这个问题进行数学建模和代码转化,用到MindOpt云上建模求解平台(一个页面版的线上开发环境,可在线的开发调试代码)、以及达摩院研发的建模语言MindOpt APL,与学公式非常贴近。
工具:
- MindOpt Studio 云建模平台,在线开发调试,免下载
- MindOpt APL(MAPL)建模语言编程,代数建模语言,语法与数学公式相近
- MindOpt优化求解器:帮我们求解大规模数据的数学规划问题。
声明集合、参数
Station
: 这个集合定义了包含所有交通网络中的交叉口或重要节点,如主要的十字路口、环岛或交通枢纽。在其他场景的应用中,这可能代表物流网络中的仓库、工厂或配送中心;在计算机网络中,它可以代表服务器或路由器。Middle
: 这个集合是Station
的子集,代表交通网络中除入口和出口外的其他交叉口,它们是流量通过但不产生也不消耗流量的节点。Roads
: 这个集合定义了所有可能的边或道路,即连接两个节点的路径。在不同的应用场景中,这可以是物理的道路、网络连接或物流通道。
entr
: 定义了交通网络的入口点,即源节点。在物流网络中,这可能是货物的起始仓库;在网络流问题中,这是流量的源头。lb
: 流量的下限,可能是因为某些道路有最小通行需求,例如公交车道或紧急车道,需要保证一定的通行能力。ub
: 流量的上限,定义了每条道路可以承载的最大流量。这可能是由于道路容量、管道直径、带宽限制等因素决定的。
声明变量
x[<i,j> in Roads]
: 这个变量表示从节点 i
到节点 j
的交通流量,也是从a站点开往b站点的车辆数。每个变量 x[<i,j>]
都有流量的上下限 (lb
和 ub
),这反映了道路的实际通行能力。例如,一条道路不能承载超过其物理容量的流量,也不能低于某个最小安全流量。
声明目标
Total
: 这个目标函数旨在最大化从入口点entr
到网络中其他节点的总流量。
Roads是定义的每条通道的集合,enter是定义的起点,也就是a站点。j站点就是路线集合中的抵达站点,也就是从起点出发到达每一个抵达点的车辆数总和需要最大化。
声明约束
Balance
: 这个约束条件确保对于网络中的每一个中间节点k
,流入节点k
的总流量等于流出节点k
的总流量。
首先是循环的中间站点K,middle是我们中间站点的集合,也就是从一个出发站点开往一个抵达站点,即从a站点开往b站点=从b站点开往d站点、e站点,要遵循能量守恒的条件
结果解析
最后得出的决策目标是最大的流量是130,a站点抵达b站点的车辆数是50,然后b站点抵达d站点的车辆数是30,到e站点是20,也就是a站点开往b站点的车辆数与从b站点驶离的车辆数相等,符合约束条件。
六、内容回顾
本期主要讲述的是网络流最大化问题——交通调度。满足流量守恒的约束,最大化车辆通行数量。
求解问题使用的工具,是使用的是阿里巴巴达摩院的MindOpt,可以在opt.aliyun.com平台上编写代码,编程代码的语言MAPL。
获取源代码