精华内容
下载资源
问答
  • 车场多车型车辆路径问题的改进遗传算法,车辆路径问题(Vehicle routing problem,VRP)由Dantzing和Ramser于1959年首次提出,它是指对一系列发货点(或收货点),组织适当的行车路线,满足客户的需求,并在一定的约束条件下...
  • 本程序用于求解多车型多目标下的车辆路线问题,程序中考虑了两种车型,建立的目标函数是车辆总运营成本最小,考虑的约束有容量约束、最大行驶距离约束和时间窗约束,采用的优化算法是遗传算法,程序内部有详细的注释...
  • 本程序用于求解多车型多目标下的车辆路线问题,程序中考虑了两种车型,建立的目标函数是车辆总运营成本最小,考虑的约束有容量约束、最大行驶距离约束和时间窗约束,采用的优化算法是遗传算法,程序内部有详细的注释...
  • 本程序用于求解多车型多目标下的车辆路线问题,程序中考虑了两种车型,建立的目标函数是车辆总运营成本最小,考虑的约束有容量约束、最大行驶距离约束和时间窗约束,采用的优化算法是遗传算法,程序内部有详细的注释...
  • 次部分充电的多车型纯电动车辆路径问题及求解方法研究,陈鹏,朱宁,研究次部分充电的多车型纯电动车辆路径问题及求解方法.针对次部分充电的多车型纯电动车辆路径问题,考虑时间窗约束和纯电动车�
  • 车场多车型最快完成车辆路径问题的变异蚁群算法
  • 论文研究-基于城市道路限行的能源多车型车辆路径优化.pdf, 针对日益严峻的城市汽车尾气污染问题和日趋严格的城市限行措施,本文首次将城市分区域、分车型等限行因素...
  • 论文研究-多车型电动汽车车辆路径问题的分支定价算法研究.pdf, 随着环境意识的日益提升和电动汽车的逐渐普及,考虑到物流企业中不同类型的电动汽车的电池最大容量、电池...
  • 研究顾客具有多种需求,分别需要由不同类型车辆提供服务,且...将经典的单一需求车辆路径问题推广到多种需求的情形,建立带约束的需求车辆路径问题的数学模型并设计求解模型的有效算法,为解决实际问题提供了决策依据.
  • 为降低成本,减少温室气体排放,提出碳交易环境下固定车辆数的多车型车辆配送路径优化问题.考虑碳交易市场机制对运输企业收益成本的影响,建立具有固定车辆数多车型车辆低碳路径混合整数规划模型.针对问题性质,设计禁忌...
  • 本文考虑了客户优先级等约束条件下的项运输成本,具有更大的普遍性和实用价值。问 题具体描述如下:m个车场(兼配送中心)共有H 辆可调用的车辆车辆分为若干种不同型号,以载 重量区分;由于各客户点之问的路况...
  • 车场多车型车辆调度问题优化是物流配送中的典型NP难解问题,针对传统的粒子群算法存在收敛速度慢,易早熟收敛等问题,提出了一种改进的粒子群优化算法。该算法对种群中的粒子采用一定的概率进行柯西变异,使算法...
  • 基于混合算法的车型混载最低油耗车辆调度 ,蔡芸,程志文,为了实现低碳运输和扩展多车型车辆路径问题求解方法,针对单车场有固定车辆数的车型低油耗车辆路径问题,建立了以最小化车辆油
  • 车辆路径问题(VRP)初探

    万次阅读 2018-09-12 15:18:17
    车辆路径问题(VRP)是运筹学里重要的研究问题之一。VRP关注有一个供货商与K个销售点的路径规划的情况,可以简述为:给定一个或个中心(中心车库)一个车辆集合和一个顾客集合,车辆和顾客各有自己的属性,每辆车...

    什么是 VRP

    车辆路径问题(VRP)是运筹学里重要的研究问题之一。VRP关注有一个供货商与K个销售点的路径规划的情况,可以简述为:给定一个或多个中心(中心车库)一个车辆集合和一个顾客集合,车辆和顾客各有自己的属性,每辆车都有容量,所载的货物不能超过它的容量。
    VRP的图例如下所示:
    VRP调度示例

    问题属性与常见问题

    车辆路径问题的特性比较复杂,总的来说包含四个方面的属性:
    (1)地址特性包括:车场数目、需求类型、作业要求。
    (2)车辆特性包括:车辆数量、载重量约束、可运载品种约束、运行路线约束、工作时间约束。
    (3)问题的其他特性。
    (4)目标函数可能是总成本极小化,或者极小化最大作业成本,或者最大化准时作业。

    常见问题有以下几类:
    (1)旅行商问题
    (2)带容量约束的车辆路线问题
    (3)带时间窗的车辆路线问题
    (4)收集和分发问题
    (5)多车型车辆路线问题
    (6)优先约束车辆路线问题
    (7)相容性约束车辆路线问题
    (8)随机需求车辆路线问题

    解决方案

    (1)数学解析法
    (2)人机交互法
    (3)先分组再排路线法
    (4)先排路线再分组法
    (5)节省或插入法
    (6)改善或交换法
    (7)数学规划近似法
    (8)启发式算法

    展开全文
  • 车辆路径问题与相关算法总结

    万次阅读 多人点赞 2017-11-09 10:39:07
    最近在学习车辆路径优化问题,这个问题虽然很普遍,但是没有一篇文章能够让我对问题有个全面的了解,尤其是解决方法,需要查阅很论文才能整理全,经过一段时间的整理,把一些要点给写了下来。

    车辆路径优化是解决物流中运输环节效率问题的方案和方法。最近在学习车辆路径优化问题,这个问题虽然很普遍,但是没有一篇文章能够让我对问题有个全面的了解,尤其是解决方法,需要查阅很多论文才能整理全,经过一段时间的整理,把一些要点给写了下来。

    车辆路径问题存在很长时间了,经过多代人的研究,目前在算法上已经比较成熟。但是由于各种限制,我国在物流领域还没有大规模的应用,这可能跟我国的信息化水平有关;首先因为算法对数据要求比较高,目前我国还有很多物流企业处在信息化的初级阶段,数据的及时性和有效性还不能很好的保证。因为篇幅有限本文只是做一个抛砖引玉,简要介绍下车辆路径问题的主要解决思路,文中的算法只做简要说明,有兴趣的朋友可以深入研究。

    问题描述

    车辆路径问题(Vehicle Routing Problem, VRP), 车辆路线问题最早是由Dantzig和Ramser于1959年首次提出,它是指一定数量的客户,各自有不同数量的货物需求,配送中心向客户提供货物,由一个车队负责分送货物,组织适当的行车路线,目标是使得客户的需求得到满足,并能在一定的约束下,达到诸如路程最短、成本最小、耗费时间最少等目的。
    VRP属于组合优化问题,在有限个可行解集合中找出最优解,这类问题称为组合优化问题,是指在离散的、有限的数学结构上,求满足给定约束条件的目标函数最优值(最大值或最小值)的问题,也称离散优化问题,该类问题都与顺序有关。
    车辆路径问题作为运筹学和组合优化领域的热点问题,与现实生活息息相关。是运筹学、管理学、计算机应用、组合数学、图论等学科的组合优化问题。

    问题模型

    VRP在算法层面可以抽象为有向图、无向图、连通图、网络图等图类问题的求解。物流中的运输路线图中每个点代表着城市、集货点、仓库等,点与点间的连线代表两个城市间的路线(公路、铁路、航空、水运),显然这只是一个示意图,而不是真实的交通图,但它能清楚的反应各个节点之间的联通关系。有向图说明道路是非对称的,是单向的,无向图代表道路是双向的。

    VRP属于NP问题,Nondeterministic Polynomial即非决定性多项式算法能够解决的问题;解决这类问题的方法有很多,主要的是启发式算法。
    按照判定问题的复杂性对最优化问题进行分类。问题复杂性的形式定义可用图灵机(Turing Machine)计算模型给出。如果一个问题有解它的多项式时间DTM(确定型图灵机)程序,则称该问题属于P类。P类问题表示多项式算法所能解决的判定问题类。如果一个问题有解它的多项式时间NTM(非确定型图灵机)程序,则称该问题属于NP类。NP类问题是指可在多项式时间内检测的问题类,至今尚未找到多项式时间算法。
    对于一个NP类问题,并不要求它的每个实例都能用某个算法在多项式的时间内得到回答,只要求,如果x是问题的答案为“是”的实例,在存在对x的一个简短(即起长度以x的长度的多项式为界)证明,使得能在多项式时间内检验这个证明的真实性。

    基本问题

    VRP问题是一个组合优化问题,可以分解为各种不同的基本问题进行求解,对基本问题的了解有助于了解VRP问题的求解过程。主要有如下几种问题类型:

    最小生成树

    最小生成树问题是运筹学、图论的基本问题之一,它可以直接或间接的用来设计运输网络,在处理复杂问题是常常起着重要的作用。

    定义:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。

    如果图T是图G的一个生成子图,而且又是一棵树,则称树T是图G的一个生成树,显然,图的生成树不唯一。一棵生成树上所有树枝上权的总和,称为这个这个生成树的权。具有最小权的生成树成为最小生成树,简称最小树。

    解决方法:

    • 丢表发(破圈法):在连通无向图G中,任取一个圈,将该圈中权最大的一条边(如有两条或两条以上这样的彼边,可任取其一)去掉;在余下的圈中重复这一步骤,直到不含圈为止,就得到了最小树。

    • 加边法(避圈法):对含有n个点的连通无向图G,从其所有边中选出一条权最小的边,并把它纳入树中;在余下的未选边中,再选出一条权最小且与已选入树中的边不构成圈的边,将其纳入树中;如此重复,直到树中含有n-1条边为止,这就构成了最小树。

    最短路问题

    最短路问题可以直接用来解决许多生产实际问题,例如管道铺设、线路安排、厂区布局、设备更新等。另外,诸如运价最小、运行时间最短、最可靠路等问题,都可能转化为最短路问题加以解决。

    最短路问题(short-path problem)是网络理论解决的典型问题之一,可用来解决管路铺设、线路安装、厂区布局和设备更新等实际问题。基本内容是:若网络中的每条边都有一个数值(长度、成本、时间等),则找出两节点(通常是源节点和阱节点)之间总权和最小的路径就是最短路问题。

    问题分类

    • 指定点间的最短路问题:又分为所有有向边的权大于零的情形和具有负权的最短路问题
    • 任意点对间的最短路问题

    问题求解

    • 优化矩阵算法
    • Floyd算法
    最大流问题

    在日常生活和工程技术以及科学管理中,经常会遇到一些问题,需要研究网络的流量,例如供水系统中的水流、交通系统中的车流、金融系统中的现金流、控制系统中的信息流等,即流过网络的物质流、能量流或信息流。在确定的网络中,人们常常需要确定该网络中能通过的最大流量,以判断设备的充分利用程度,这就是最大流问题。

    最大流问题(maximum flow problem),一种组合最优化问题,就是要讨论如何充分利用装置的能力,使得运输的流量最大,以取得最好的效果。求最大流的标号算法最早由福特和福克逊与与1956年提出,20世纪50年代福特(Ford)、(Fulkerson)建立的“网络流理论”,是网络应用的重要组成成分。

    问题求解之标号算法: 从可行流和可增广链关系来看,就可以知道一种寻求最大流的方法:从一个可行流开始,寻求关于这个可行流的可增广链,若存在,则可以经过调整,得到一个新的可行流,其流量比原来的可行流要大,重复这个过程,直到不存在关于该流的可增广链时就得到了最大流。这种算法由Ford 和 Fulkerson于1956年提出,故又称  Ford-Fulkerson标号法。

    最小费用流问题

    网络也可以看作是输送一般货物的运输网络,此时最大流问题仅仅表明运输网络运输货物的能力,但没有考虑运送货物的费用。由于在实际问题中,运送同样流量的货物的运输方案可能有多个,从中寻找一个运输费用最小的方案是一个重要的问题。在网络中实现某一输送任务时,流在网络中的分配不同,所花的代价也不同,如何在完成输送任务的前提下所花的费用最低,这是最小费用流问题。

    最小费用流问题(minimum - costlow pro - blem)一种组合最优化问题.对给定网络D- (V,A,C),在弧集A上定义非负函数6,对a E A, c

    中国邮递员问题

    管梅谷教授与1962年提出,一般定义为邮递员从邮局出发经过他所管辖的街道、巷子完成信件、报纸的投递任务以后返回邮局,要求邮递员经过的各条街道至少一次,如何安排邮递员的行走路线,才能使总路程最短等。

    旅行商问题

    旅行商问题(Traveling Salesman Problem, TSP)是一个典型的NP问题,一般描述为:旅行商从驻地出发,经过所要去的城市至少一次返回原地,应该如何安排起旅行线路,才能使总的旅行距离(时间、费用等)最短。对于现实问题,由于限制条件的增加,TSP可衍生出许许多多相关的问题。

    问题求解:

    线路构造法
    • 节约算法
    • 最邻近法
    • 最小生成树法
    • 几何启发式算法
    • 最近插入法
    • 最节约插入算法
    • 凸集插入算法
    • 非对称距离的TSP构造算法
    线路改进法
    • 2 - 交换
    • 3 - 交换
    • or - 交换
    综合法

    将几种方法联合起来应用

    VRP问题分类

    VRP问题按照不同的约束可以问题如下几类:

    • Basic VRP, 基本VRP
    • CVRP: Capacitated Vehicle Routing Problem, 能力约束的VRP
    • VRPTW: VRP with Time Window, 有时间窗的VRP
    • VehicleRouting Problem with precedence Constraints,优先约束的VRP
    • VRP with Backhauls (Deliveries first), 带回程的VRP(投递优先)
    • VRP with Backhauls (mixed Pickups and Deliveries),带回程的VRP(捡获和送货结合)
    • Multiple Depot VRP, 多仓储的VRP
    • VRP with Heterogeneous Fleet: 多车辆车型VRP
    • VehicleRouting Problem with Compatibility Constraints,相容性约束VRP
    • Open VRP: 开放回路VRP
    • Time Dependent VRP: 基于时序变化的VRP
    • Dynamic VRP: 动态VRP

    精确求解方法

    分枝界限法(Branch and Bound Approach)

    分枝界限法是由三栖学者查理德·卡普(Richard M.Karp)在20世纪60年代发明,成功求解含有65个城市的旅行商问题,创当时的记录。“分枝界限法”把问题的可行解展开如树的分枝,再经由各个分枝中寻找最佳解。

    分枝界限法也能够使用在混合整数规划问题上,其为一种系统化的解法,以一般线性规划之单形法解得最佳解后,将非整数值之决策变量分割成为最接近的两个整数,分列条件,加入原问题中,形成两个子问题(或分枝)分别求解,如此便可求得目标函数值的上限(上界)或下限(下界),从其中寻得最佳解。

    割平面法(Cutting Planes Approach)

    割平面法是1958年由美国学者高莫利(R.E.GoMory)提出的求解全整数规划的一种比较简单的方法。其基本思想和分枝定界法大致相同,即先不考虑变量的取整约束,用单纯形法求解相应的线性规划。如果所得的最优解为整数解,那么它也是原整数规划问题的最优解3如果最优解不是整数解,那么分枝定界法是任取一个取分数值的变量Xk = bk将原整数规划分成两枝,其实质是用两个垂直于坐标轴的平行平面Xk = [bk]和Xk = [bk] + 1将原可行域R分成两个可行域R1和R2,并将两个平行平面之间的不含有整数解的那一部分可行域去掉,以缩小可行域。

    网络流算法(Network Flow Approach)

    图论中的一种理论与方法,研究网络上的一类最优化问题 。1955年 ,T.E.哈里斯在研究铁路最大通量时首先提出在一个给定的网络上寻求两点间最大运输量的问题。1956年,L.R. 福特和 D.R. 富尔克森等人给出了解决这类问题的算法,从而建立了网络流理论。所谓网络或容量网络指的是一个连通的赋权有向图 D= (V、E、C) , 其中V 是该图的顶点集,E是有向边(即弧)集,C是弧上的容量。此外顶点集中包括一个起点和一个终点。网络上的流就是由起点流向终点的可行流,这是定义在网络上的非负函数,它一方面受到容量的限制,另一方面除去起点和终点以外,在所有中途点要求保持流入量和流出量是平衡的。如果把下图看作一个公路网,顶点v1…v6表示6座城镇,每条边上的权数表示两城镇间的公路长度。现在要问 :若从起点v1将物资运送到终点v6去 ,应选择那条路线才能使总运输距离最短?这样一类问题称为最短路问题 。 如果把上图看作一个输油管道网 , v1 表示发送点,v6表示接收点,其他点表示中转站 ,各边的权数表示该段管道的最大输送量。现在要问怎样安排输油线路才能使从v1到v6的总运输量为最大。这样的问题称为最大流问题。

    动态规划算法(Dynamic Programming Approach)

    动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。
    由于动态规划解决的问题多数有重叠子问题这个特点,为减少重复计算,对每一个子问题只解一次,将其不同阶段的不同状态保存在一个二维数组中。

    总的说来,精确性算法基于严格的数学手段,在可以求解的情况下,其解通常要优于人工智能算法。但由于引入严格的数学方法,计算量一般随问题规模的增大呈指数增长,因而无法避开指数爆炸问题,从而使该类算法只能有效求解中小规模的确定性VRP,并且通常这些算法都是针对某一特定问题设计的,适用能力较差,因此在实际中其应用范围很有限。

    启发式算法求解

    启发式算法(heuristic algorithm)是相对于最优化算法提出的,是通过对过去经验的归纳推理以及实验分析来解决问题的方法。用启发式算法解决问题时强调的是“满意”,常常是得到满意解,决策者就认为可以了,而不去追求最优性和探索最优解。所以启发式算法能够比较快的得到满意解,这对解决NP难题来说有个不可估量的作用。

    元启发式算法

    元启发式算法是对启发式算法的改进,增加了随机干扰算法以防止算法进入局部陷阱或早熟。

    C-W节约启发式算法

    节约里程法是用来解决运输车辆数目不确定的问题的最有名的启发式算法。又称节约算法或节约法,可以用并行方式和串行方式来优化行车距离。

    节约里程法核心思想是依次将运输问题中的两个回路合并为一个回路,每次使合并后的总运输距离减小的幅度最大,直到达到一辆车的装载限制时,再进行下一辆车的优化。优化过程分为并行方式和串行方式两种。

    遗传算法

    遗传算法是60年代由美国J.Holland教授和他的学生建立发展的,其思想源于生物遗传学适者生存的自然规律,是一种新兴的自适应随机搜索方法。

    遗传算法的工作原理是从达尔文的进化论中得到灵感和启迪,借鉴自然选择和自然进化的原理,模拟生物在自然界中的进化过程所形成的一种优化求解方法。尽管这种自适应寻优技术可以用来处理复杂的线形、非线性问题,但它的工作原理却十分简单。

    模拟退火

    模拟退火算法(Simulate Anneal,SA)是一种通用概率演算法,用来在一个大的搜寻空间内找寻命题的最优解。模拟退火是由S.Kirkpatrick, C.D.Gelatt和M.P.Vecchi在1983年所发明的。V.Černý在1985年也独立发明此演算法。模拟退火算法是解决TSP问题的有效方法之一。

    模拟退火的出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。模拟退火算法是一种通用的优化算法,其物理退火过程由加温过程、等温过程、冷却过程这三部分组成。

    蚁群算法

    蚁群算法是一种用来寻找优化路径的概率型算法。它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。

    蚁群系统(Ant System或Ant Colony System)是由意大利学者Dorigo、Maniezzo等人于20世纪90年代首先提出来的。他们在研究蚂蚁觅食的过程中,发现单个蚂蚁的行为比较简单,但是蚁群整体却可以体现一些智能的行为。例如蚁群可以在不同的环境下,寻找最短到达食物源的路径。这是因为蚁群内的蚂蚁可以通过某种信息机制实现信息的传递。后又经进一步研究发现,蚂蚁会在其经过的路径上释放一种可以称之为“信息素”的物质,蚁群内的蚂蚁对“信息素”具有感知能力,它们会沿着“信息素”浓度较高路径行走,而每只路过的蚂蚁都会在路上留下“信息素”,这就形成一种类似正反馈的机制,这样经过一段时间后,整个蚁群就会沿着最短路径到达食物源了。

    超启发式算法

    超启发式算法是一种启发式搜索方法,旨在实现自动化,常常与机器学习技术,选择、组合、生成过程,或调整几个简单的启发式算法(或启发式组件)有效地解决计算搜索类问题。研究超启发式的动机之一是建立能够处理一类问题的系统,而不是只解决一个问题。很明显超启发式算法的解决问题的范围更广,跨领域的应用能力更强大。

    可能有多种启发式方法来解决一个问题,每个启发式都有自己的优点和缺点。其思想是通过结合已知启发式算法的强项和补偿算法的弱项来实现算法。在一个典型的超启发式框架中,有一个高层次的方法论和一组低级启发式算法(无论是构造性的还是微扰的启发式方法)。给定一个问题实例,高级方法根据当前的问题状态或搜索阶段选择在任何给定时间点应用哪种低级启发式。

    大规模邻域搜索

    VLSN: Very Large Scale Neighborhood search: 在数学优化中,邻域搜索是一种通过将当前解反复变换为当前解邻域内不同解的方法,试图找到一个组合优化问题的最优解或接近最优解。解的邻域是通过对原始解进行相对简单的修改而得到的一组类似的解。对于一个非常大规模的邻域搜索,邻域是非常大的并且可能是指数大小的。

    展开全文
  • 该资源对某篇论文中的模型进行了复现, 并编写了python代码, 调用gurobi进行求解, 最后画出路径图. 所得结果与论文中用遗传算法求解结果完全一致. 该资源是学习路径规划问题求解和gurobi代码编写的绝佳资料.
  • Open-VRP, 车辆路径问题的开放源代码框架 开放 vrp查看 了解开放vrp或者向下滚动以获得摘要, fork 插件和开始 !概要开放VRP是一个建模和解决 VRP的框架,比如学生。学者。企业和爱好者等问题。 这个框架允许快速...
  • 带时间窗的车场车辆路径问题在基本车辆路径问题的基础上增加了“车场”与“时间窗”两个约束条件,是一个典型的NP难解问题。将粒子群算法应用于带时间窗的车场车辆路径优化问题,构造了一种适用于求解车辆路径...
  • 今天整理了一下以前写过的一个遗传算法求解车辆路径问题的程序(C#写的),发上来和大家分享一下,有误的地方还请各位指点。 1、车辆路径问题:  车辆路径问题可以描述为:在一个存在供求关系的系统中,有若干台...

    今天整理了一下以前写过的一个遗传算法求解车辆路径问题的程序(C#写的),发上来和大家分享一下,有误的地方还请各位指点。

    1、车辆路径问题:

        车辆路径问题可以描述为:在一个存在供求关系的系统中,有若干台车辆、若干个配送中心和客户,要求合理安排车辆的行车路线和出行时间,从而在给定的约束条件下,把客户需求的货物从配送中心送到客户,把客户供应的货物从客户取到配送中心,并使目标函数取得优化。本文以最简单的无时限单向配送车辆路径问题为例。

    1.1、问题描述:

        无时限单向配送车辆路径问题,是指在制定配送路线时不考虑客户对货物送到(或取走)时间要求的纯送货(或纯取货)车辆调度问题。无时限单向配送车辆路径问题可以描述为:从某配送中心用多台配送车辆向多个客户送货,每个客户的位置和需求量一定,每台配送车辆的载重量一定,其一次配送的最大行驶距离一定,要求合理安排车辆配送路线,使目标函数得到优化,并满足以下条件:

    ①每条配送路径上各客户的需求量之和不超过配送车辆的载重量;

    ②每条配送路径的长度不超过配送车辆一次配送的最大行驶距离:

    ③每个客户的需求必须满足,且只能由一台配送车辆送货。

    1.2、问题模型:

         设配送中心有Κ台配送车辆,每台车辆的载重量为Qk,其一次配送的最大行驶距离为Dk,需要向L个客户送货,每个客户的货物需求量为qi,客户i到j的运距为dij,配送中心到各客户的距离为d0j,再设 为第k台车辆配送的客户数(nk=O表示未使用第k台车辆),用集合Rk表示第k条路径,其中的元素Rki表示客户Rki在路径k中的顺序为i(不包括配送中心),令rk0=0表示配送中心,若以配送总里程最短为目标函数,则可建立如下无时限单向配送车辆路径问题的数学模型:

        上述模型中,式(1.1)为目标函数,即要求配送总里程(即各条配送路径的长度之和)最短;式(1.2)保证每条路径上各客户的货物需求量之和不超过配送车辆的载重量;式(1.3)保证每条配送路径的长度不超过配送车辆一次配送的最大行驶距离;式(1.4)表明每条路径上的客户数不超过总客户数;式(1.5)表明每个客户都得到配送服务;式(1.6)表示每条路径的客户的组成;式(1.7)限制每个客户仅能有一台配送车辆送货;式(1.8)表示当第k辆车服务的客户数≥1时,说明该台车参加了配送,则取sign(nk)=1,当第k辆车服务的客户数< 1时,,表示未使用该台车辆,则取sign(nk)=0。

    2、遗传算法:
        遗传算法(Genetic Algorithms )是基于生物进化理论的原理发展起来的一种广为应用的、高效的随机搜索与优化的方法。其主要特点是群体搜索策略和群体中个体之间的信息交换,搜索不依赖于梯度信息。它是在70年代初期由美国密西根( Michigan )大学的霍兰( Holland )教授发展起来的。1975年霍兰教授发表了第一本比较系统论述遗传算法的专著《自然系统与人工系统中的适应性》(《 Adaptationin Natural and Artificial Systems 》)。遗传算法最初被研究的出发点不是为专门解决最优化问题而设计的,它与进化策略、进化规划共同构成了进化算法的主要框架,都是为当时人工智能的发展服务的。迄今为止,遗传算法是进化算法中最广为人知的算法。

    2.1、遗传算法的实施步骤:
        遗传火算法的实施步骤如下(以目标函数求最小为例)。
        第一步:初始化 t←0进化代数计数器;T是最大进化代数;随机生成M个个体作为初始群体P(t);
        第二步:个体评价 计算P(t)中各个个体的适应度;
        第三步:选择运算 将选择算子作用于群体;
        第四步:交叉运算 将交叉算子作用于群体;
        第五步:变异运算 将变异算子作用于群体,并通过以上运算得到下一代群体P(t + 1);
        第六步:终止条件判断  t≦T:t← t+1 转到步骤2;t>T:终止 输出解。

    2.2、遗传算法应用步骤:
        1)确定决策变量及各种约束条件,即个体的表现型X和问题的解空间;
        2)建立优化模型 (目标函数最大OR 最小) 数学描述形式 量化方法;
        3)染色体编码方法;
        4)解码方法;
        5)个体适应度的量化评价方法 F(x)
        6)设计遗传算子;
        7)确定有关运行参数。

    3、遗传算法求解车辆路径问题:

        用遗传算法求解配送车辆路径问题时,确定解的表示和解的评价方法是一项非常关键的基础工作,因为它将直接决定算法实现的难易程度和算法性能的优劣。

    3.1、解的表示:
        客户直接排列的表示方法,这种表示方法是直接产生L个1~L间的互不重复的自然数的排列,该客户排列就构成一个解,并对应一种配送路径方案。按照无时限单向配送车辆优化调度问题的约束条件,可依次将解的元素(客户)划入各台车辆的配送路径中。例如,对于一个用3台车辆向9个客户送货的配送车辆优化调度问题,设某解中的客户排列为412876935,可用如下方法得到其对应的配送路径方案:首先将客户4(解中的第1个客户)作为第1台配送车辆月艮务的第1个客户,然后判断能否满足问题的约束条件,即客户4的需求量是否超过第1台车辆的最大载重量,且路径0-4-0的总长度是否超过第1台车辆一次配送的最大行驶距离,设能够满足,这时可将客户1(解中的第2个客户)作为第1台配送车辆服务的第2个客户,然后判断能否满足问题的约束条件,即客户4和1的需求量之和是否超过第1台配送车辆的最大载重量,且路径0-4-1-0的总长度是否超过第1台车辆一次配送的最大行驶距离,设仍能满足,这时可将客户2(解中的第3个客户)作为第1台配送车辆服务的第3个客户,然后判断能否满足问题的约束条件,设仍能满足,这时可将客户8作为第1台配送车辆服务的第4个客户,设此时不能满足问题的约束条件,这说明客户8不能由第1台配送车辆服务,由此可得第1台车辆的配送路径为0-4-1-2-0;然后,将客户8作为第2台配送车辆服务的第1个客户,若能满足问题的约束条件,则可将客户7作为第2台配送车辆服务的第2个客户,若仍能满足问题的约束条件,则可将客户6作为第2台配送车辆服务的第3个客户,若仍能满足问题的约束条件,则可将客户9作为第2台配送车辆服务的第4个客户,若此时不能满足问题的约束条件,则说明客户9不能由第2台配送车辆服务,由此可得第2台车辆的配送路径为0-8-7-6-0:仍按上述方法可将解中的其他客户也依次加入到其他车辆的配送路径中。采用这种表示方法,也可以得到配送路径数小于车辆总台数的配送路径方案。若某个解中的排在最后的若干个客户不能纳入到车辆的配送路径中,则说明该解为一个不可行解。与前述客户与虚拟配送中心共同排列的表示方法相比,这种解的表示方法占用的计算机存储量较少,表示也较为直观,也容易产生可行解。

    3.2、解的评价:
        用客户直接排列表示方法产生的解所确定的配送路径方案,能够满足每条配送路径上各客户需求量之和不超过配送车辆的最大载重量及每条配送路径的长度不超过车辆一次配送的最大行驶距离的约束条件,但不能保证所有的客户全部都能得到配送服务。对于某个解,若全部客户均能纳入到车辆的配送路径中,则取该配送路径方案的不可行路径数M=0,表示该解为一个可行解;若排在最后的若干个客户不能纳入到车辆的配送路径中,则取该配送路径方案的不可行路径条数M=1,表示该解为一个不可行解,该配送路径方案的目标函数值为Z,并设对每条不可行路径的惩罚权重为Pw,(该权重可根据目标函数的取值范围取一个相对较大的正数),则该解的评价值E可用公式(3.1)计算(E值越小,表示解的质量越高)。这种解的评价方法,体现了用罚函数法处理约束条件的思想。

     3.3、算法策略的确定:
       (1)编码方法:采用客户直接排列的编码方法。
       (2)适应度函数:采用公式(3.2)作为适应度评估函数。即首先对某个个体进行解码操作,得到该个体对应的配送路径方案的不可行路径数M和目标函数值Z,将M和Z代入公式即可计算出该个体的适应度f。

       (3)选择策略:采用最佳个体保存与赌轮选择相结合的选择策略。其具体操作方法为:将每代群体中的N个个体按适应度由大到小排列,排在第一位的个体性能最优,按照最佳个体保存选择策略,将它复制一个直接进入下一代,并排在第一位。下一代群体的另N-1个个体需要根据前代群体的N个个体的适应度,采用赌轮选择法产生。
       (4)交叉算子:采用类OX交叉方法。在实际运算中,交叉操作是以概率 ,发生的。
       (5)变异算子:采用多次对换变异技术。在实际运算中,变异操作是以概率 ,发生的,一旦变异操作发生,则用随机方法产生交换次数J,对所需变异操作的个体的基因进行J次对换(对换基因的位置也是随机产生的)。
       (6)终止准则:采用进化指定代数的终止准则。

    3.4、算法的结构:

    {   输入无时限单向配送车辆路径问题的已知条件:

    输入运行参数,如群体规模N,终止进化代数T,交叉概率Pc,变异概率Pm,

    执行变异操作时的基因换位次数J,对不可行路径的惩罚权重Pw等;

    随机产生初始化群体P(0),当前进化代数t=0;

    计算P(0)中每个个体的适应度;

    while(t<指定进化终止代数T)do

    {   将本代中适应度最高的个体复制一个,直接插入到新群体P(t+1)中;

    根据本代个体的适应度及赌轮选择策略,计算群体内每个个体的选择概率Pi;

    for(k=0;k<N;k=k+2)

    {   根据选择概率Pi从P(t)中选择两个父体;

    r=random[0,1];

    if(r≤交叉概率Pc)对选择的两个个体用类OX法执行交叉操作,并将

    生成的两后代插入到新群体P(t+1)中;

    else

    {  r=random[0,1];

    if(r≤变异概率Pm)对父代个体1执行变异操作,并将变异后的个

    体插入到新群体P(t+1)中;

    else将父代个体1复制一个,直接插入到新群体P(t+1)中;

    r=random[0, 1];

    if(r≤变异概率Pm)对父代个体2执行变异操作,并将变异后的个

    体插入到新群体P(t+1)中;

    else将父代个体2复制一个,直接插入到新群体P(t+1)中;

    }

    }

    计算P(t+1)中每个个体的适应度;

    t=t+1;

    }

    输出计算结果,即最终解所对应的配送路径方案和目标函数值;

    }

    3.5、运行截图:

    附源码下载:遗传算法求解车辆路径问题程序源码(C#版)

    http://blog.csdn.net/wangqiuyun/article/details/7664995

    展开全文
  • VRPTW-ga 带时间窗的车辆路径问题-使用Python的遗传算法解决方案
  • 一、简介 模拟退火算法介绍 3 模拟退火算法的参数 模拟退火是一种优化算法,它本身是不能独立...%输出各种车型的数量 Num_car=car1_num+car2_num; DrawPath(best_route,X); hold off 三、运行结果 四、备注 版本:2014a

    一、简介

    模拟退火算法介绍
    在这里插入图片描述
    3
    在这里插入图片描述
    在这里插入图片描述
    3 模拟退火算法的参数
    模拟退火是一种优化算法,它本身是不能独立存在的,需要有一个应用场合,其中温度就是模拟退火需要优化的参数,如果它应用到了聚类分析中,那么就是说聚类分析中有某个或者某几个参数需要优化,而这个参数,或者参数集就是温度所代表的。它可以是某项指标,某项关联度,某个距离等等。

    二、源代码

    clear all
    close all
    clc
    tic
    %% 基础参数输入
    NIND=100;             %种群大小
    MAXGEN=200;          %遗传代数
    GGAP=0.9;            %代沟
    Pc=0.75;             %交叉概率
    Pm=0.1;             %变异概率
    const=20;            %客户个数
    X=[3.2,14.1;3.8,5.5;15.2,10.9;18.6,12.9;11.9,8.2;10.2,9.5;5.3,9.6;0.6,9.9;6.1,18.0;7.6,19.2
        16.0,15.7;15.3,15.2;1.6,14.7;9.0,9.2;5.4,13.3;7.8,10.0;18.6,7.8;14.5,4.3;15.0,18.7;9.8,5.0;1.4,6.9];   %需求点位置坐标,1号点为出发点
    carload_min=3;                %小型车的载重限制
    demand=[0.8,0.6,0.4,1.4,0.8,0.6,1.9,1.3,1.8,1.5,0.4,1.6,1.1,1.6,1.0,0.8,1.4,1.2,0.4,1.4];           %服务点需求
    D=Distanse(X);
    %% 种群初始化
    Chrom=zeros(NIND,const);
    for i=1:NIND
        Chrom(i,:)=randperm(const);   %种群初始化
    end
    %% 画出随机解的路径图
    [ObjV,route]=PathLength(D,Chrom); %计算路线长度和路径
    preObjV=min(ObjV);                %初始种群的最优个体
    route_initial=routemake(route,1); %第一个个体的路径
    % DrawPath(route_initial,X);
    % hold off
    % pause(0.0001);
    %% 输出随机解的路径和总距离
    disp('初始种群中的一个随机值:')
    OutputPath(route_initial);
    disp(['总成本:',num2str(ObjV(1))]);
    disp('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
    %% 计算目标函数
    %% 优化
    gen=0;
    MinY=inf;
    trace=zeros(MAXGEN,1);
    h=waitbar(0,'程序启动中,请等待...');
    while gen<MAXGEN
        %% 计算适应度
        [ObjV,route]=PathLength(D,Chrom); %计算路线长度
        %line([gen-1,gen],[preObjV,min(ObjV)]);
        %pause(0.0001)
        %preObjV=min(ObjV);
        % 适应度函数计算
        FitnV=Fitness(ObjV);
        % 选择
        SelCh=Select(Chrom,FitnV,GGAP);
        % 交叉操作
        SelCh=Recombin(SelCh,Pc);
        % 变异
        SelCh=Mutate(SelCh,Pm);
        % 逆转操作
        SelCh=Reverse(SelCh,D);
        % 重插入子代的新种群
        Chrom=Reins(Chrom,SelCh,ObjV);
        % 更新迭代次数
        gen=gen+1;
        % 最优解保存
        [minObjV,minInd]=min(ObjV);          %计算最优解
        route_new=routemake(route,minInd);   %最终路径
        if minObjV<MinY
            MinY=minObjV;
            best_route=route_new;
            trace(gen,1)=MinY;
        else
            trace(gen,1)=trace(gen-1,1);
        end
        str=['程序正常运行中,','已迭代',num2str(gen),'次'];
        waitbar(gen/MAXGEN,h,str);
        pause(0.05);
    end
    %% 绘制
    plot(1:gen,trace);
    title('优化过程');
    xlabel('迭代次数');
    ylabel('最优值');
    hold off
    %% 画出最优解的路线图
    [car1_num,car2_num]=car_type(best_route,demand,carload_min);%输出各种车型的数量
    Num_car=car1_num+car2_num;
    DrawPath(best_route,X);
    hold off
    

    三、运行结果

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    四、备注

    版本:2014a

    展开全文
  • 车场多车型多任务的车辆调度优化是城市配送中的典型问题。针对该问题从空驶成本、运输成本和时间成本三个维度构建了一个VRP的数学模型,并采用自适应多态蚁群算法对模型加以求解。通过实例仿真,将仿真优化结果与...
  • 一、简介 模拟退火算法介绍 3 模拟退火算法的参数 模拟退火是一种优化算法,它本身是不能独立...%输出各种车型的数量 Num_car=car1_num+car2_num; DrawPath(best_route,X); hold off 三、运行结果 四、备注 版本:2014a
  • 车辆路径问题VRPTW学习之一【开篇】

    千次阅读 2018-09-05 20:52:54
    为了更好的学习VRP问题,准备将VRP问题的相关算法、算子、策略和技巧进行复现,编写自己的VRP武器库。与此同时,在博客上更新自己的学习进程,也是给自己的督促。除此之外,我将把问题限定在VRPTW中,因为实际问题中...
  • 有时间窗约束的车辆路径规划问题是一种NP-hard问题,这种问题往往采用遗传算法来解决但是传统的遗传算法本身存在的不足将严重影响整个算法的性能本文设计了一种混合遗传算法,并进行了仿真试验试验结果表明,用这种算法...
  • 遗传算法实现 解车辆路径问题(vrp)

    万次阅读 多人点赞 2016-10-30 14:16:30
    问题就是每辆车有一定的容量限制,接的人有一定的重量,然后安排辆车去接使车的行驶路程最短 只实现了容量限制,没有实现车辆的路程限制 客人位置按极坐标排序 初始解生成比较重要,比较简单的就是派一辆...
  • 优点:编、解码操作简单,遗传、交叉便于实现 缺点:长度大 (2)其他编码方法 格雷码、浮点数编码、符号编码、参数编码等 3.2.2 适应度函数 适应度函数要有效反映每一个染色体与问题的最优解染色体之间的差距。...
  • 根据车辆数和车辆路径来计算成本,决定订单分配和打包。 商业化代码,我这就记录一些零碎好了: 关于订单顺序数据格式,我用的列表,以下举例4个订单,这是一辆车的订单,1订单一个订单包,2,3,4订单一个订单包,...
  • 车辆从某一个物流中心出发,完成配送任务后,可以不回到原来出发的物流中心,返回距离最近的物流中心,即开放式车辆路径。当然,根据车辆服务最后一个客户与所有物流中心的距离,如果与原来出发的物流中心是最短距离...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,161
精华内容 464
关键字:

多车型车辆路径问题