收藏 分享(赏)

乘用车物流运输计划模型及融合启发式的智能算法求解-2015研究生数学建模竞赛二等奖.docx

上传人:dzzj200808 文档编号:2353751 上传时间:2018-09-12 格式:DOCX 页数:32 大小:1.12MB
下载 相关 举报
乘用车物流运输计划模型及融合启发式的智能算法求解-2015研究生数学建模竞赛二等奖.docx_第1页
第1页 / 共32页
乘用车物流运输计划模型及融合启发式的智能算法求解-2015研究生数学建模竞赛二等奖.docx_第2页
第2页 / 共32页
乘用车物流运输计划模型及融合启发式的智能算法求解-2015研究生数学建模竞赛二等奖.docx_第3页
第3页 / 共32页
乘用车物流运输计划模型及融合启发式的智能算法求解-2015研究生数学建模竞赛二等奖.docx_第4页
第4页 / 共32页
乘用车物流运输计划模型及融合启发式的智能算法求解-2015研究生数学建模竞赛二等奖.docx_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、参赛密码 (由组委会填写)全第十一届华为杯全国研究生数学建模竞赛学 校 参赛队号队员姓名- 1 -第十一届华为杯全国研究生数学建模竞赛题 目 乘用车物流运输计划模型及融合启发式的智能算法求解摘 要本文对乘用车物流运输计划问题进行了研究,建立了问题的整数线性规划模型,并利用 CPLEX 求解器实现了模型求解。考虑到问题具有 NP-hard 特性,设计了融合启发式的智能算法来提高求解效率。对问题 1-3,首先将问题归纳为乘用车运输任务的轿运车选择和轿运车的装载两个子问题。建立了通用的整数线性规划模型,该模型通过 CPLEX 求解器可得到问题的最优解。设计了一种融合启发式规则和离散人工蜂群算法的智能

2、算法,分别对两个层面的子问题进行求解。对于轿运车选择这个子问题,通过离散人工蜂群算法进行求解;对于轿运车装载这个子问题,通过两种启发式规则来解决。第一种启发式规则以装箱问题的 FFD 方法为基础,通过加入整车优先机制改进而成;第二种启发式方法基于保证局部最优的思想设计而成,通过建立每种轿运车的装载方案优先级列表,按照优先级顺序依次选择装载组合。最后,对于原题的三个问题,通过 CPLEX 和离散人工蜂群算法均获得了最优解, 1-1 型和 1-2 型轿运车的配比方案依次为(16:2) 、 ( 12:1) 、 (25:5 ) 。同时,对于随机生成的 10 组运输任务,离散人工蜂群算法均获得了和 CP

3、LEX 相同的最优解,验证了算法和启发式规则的有效性和普适性。对问题 4,建立问题的整数线性规划模型,该模型可通过 CPLEX 求解器得到问题的最优解及相应装载方案。设计了一种融合启发式的邻域搜索算法进行求解,其中通过设计的“长途稍货”启发式规则得到初始解,再利用邻域搜索调整不同目的地的 1-1型、1-2 型轿运车配比,对初始解进行局部调整,以提高解的性能。求解方面,CPLEX 和邻域搜索算法均求得了问题的最优解,1-1 型和 1-2 型轿运车的配比方案为(21:4) ,运输距离(成本)为 6404。实验表明,该算法能在较短时间内获得问题的最优解或近优解。对问题 5,设计了一个三层结构的整数线

4、性规划模型,在第一层首先确定针对当前任务所需的最少轿运车数量;第二层以第一层的结果为输入,以最短路径为目标函数,- 2 -将轿运车分给不同的目的地;第三层最终确定轿运车的装载方案。第一层模型已通过CPLEX 解得任务所需的总轿运车数量为 102。同时,通过聚类分析和约束满足的方法,将问题进行简化,尝试设计一个启发式规则进行求解。关键词:乘用车物流 整数线性规划 智能算法 启发式规则- 3 -1. 问题描述整车物流指的是按照客户订单对整车快速配送的全过程。乘用车生产厂家根据全国客户的购车订单,向物流公司下达运输乘用车到全国各地的任务,物流公司则根据下达的任务制定运输计划并配送该批乘用车。本问题中

5、考虑使用三种双层轿运车:上下层各装载 1 列型(1-1 型)、下上层分别装载 1、2 列型(1-2 型)、上下层各装载 2 列型(2-2 型),在一定的约束条件下,对下列五次运输任务制定相应计划,确定所需各类轿运车的数量、每辆轿运车上乘用车的装载方案和具体行车路线,使运输成本最低。五次运输任务如下:1、物流公司要运输车型的乘用车 100 辆及车型的乘用车 68 辆;2、物流公司要运输车型的乘用车 72 辆及车型的乘用车 52 辆;3、物流公司要运输车型的乘用车 156 辆、车型的乘用车 102 辆及车型的乘用车 39 辆;4、物流公司要运输 166 辆车型的乘用车(其中目的地是 A、B、C、D

6、 的分别为 42、50、33、41 辆)和 78 辆车型的乘用车(其中目的地是 A、C 的,分别为31、47 辆),具体路线见图 4,各段长度:OD=160,DC=76,DA=200,DB=120,BE=104,AE=60;5、附件的表 1 给出了物流公司需要运输的乘用车类型(含序号)、尺寸大小、数量和目的地,附件的表 2 给出可以调用的轿运车类型(含序号)、数量和装载区域大小(表里数据是下层装载区域的长和宽, 1-1 型及 2-2 型轿运车上、下层装载区域相同;1-2 型轿运车上、下层装载区域长度相同,但上层比下层宽 0.8 米。此外 2-2 型轿运车因为层高较低,上、下层均不能装载高度超过

7、 1.7 米的乘用车。 2. 模型假设1、题中所给数据可靠无误;2、运输过程不受非可控因素影响;3、轿运车的装载区域和乘用车均简化为长方体,不考虑实际几何形状影响;4、各类型轿运车运输过程中,行驶单位路程的费用认为相同,卸车成本忽略不计;5、轿运车在运输过程中不可折返。3. 问题 1-3 建模与求解本节根据 1-3 的问题特点建立了通用的整数线性规划模型,并通过 CPLEX 线性求解器进行了求解,同时设计了一种融合启发式和离散人工蜂群算法的通用算法进行求解。算法输入为各类乘用车的数量,输出为不同轿运车的使用数量和装载方案(程序见附件)。- 4 -3.1 问题分析题中所给问题是一个复杂的组合优化

8、问题,融合了装箱问题和车辆路径问题两类经典组合优化问题的特点,另在具体装箱之前,还涉及不同规格“箱子”的选择组合。显然,该问题具有 NP-hard 特性1。问题 1-3 只有单一目的地,故只需针对所给任务,确定 1-1 型和 1-2 型轿运车的数量和每辆车具体的装载方案,运输成本主要考虑轿运车使用数量。与此对应,针对问题 1-3 的处理分为两步,第一步进行每个任务(乘用车)的车辆(轿运车)类型选择;第二步对每类轿运车,将通过第一步分给的任务(乘用车)进行装箱(确定装载方案)。基于上述分析,一方面通过整数线性规划方法通过 CPLEX 进行求解,另一方面设计了一种融合启发式和离散人工蜂群算法的方法

9、进行求解。其中通过离散人工蜂群算法进行任务的车辆选择,在解码过程中,设计了两种启发式算法进行装箱,通过结果对比验证启发式的合理性,取较优解作为最终的装载方案。3.2 数学模型根据问题特性,建立了如下的整数线性规划模型:符号: : 1,23需 运 送 的 第 种 乘 用 车 数 量 , iaii=jyjj需 使 用 的 第 种 轿 运 车 数 量 ,: 用 来 控 制 轿 运 车 剩 余 长 度 的 系 数 , 表 示 每 列 的 剩 余 长 度 , 经 测 试 后 取 1模型: 12min y.st10. (1)2123318794.63.54.62.00iiyaaay21233 121 (3

10、)0. 3iiyyyy23946 (4)ya12, 5N公式(1)表示 1-2 型车的使用数量不超过 1-1 型车的 20%;公式(2)表示所装的乘用车总长度不超过轿运车的总长;公式(3)通过调整系数 来控制装载后轿运车的剩余- 5 -长度;公式(4)用来保证型乘用车只能装在 1-1 和 1-2 的下层;公式(5)表示轿运车数量取整。3.3 模型的 CPLEX 求解GAMS/CPLEX 是 GAMS (The General Algebraic Modeling System,通用代数建模系统)的一个求解器。CPLEX 优化器能够快速求解复杂的线性、二次约束和混合整数规划问题。其中对于整数变量

11、的问题,CPLEX 实际是通过内部嵌套的分支定界法进行的求解。针对 3.2 的整数线性规划模型,通过 CPLEX 线性求解器得到了两种轿运车的最优配比方案,确保了模型的正确性(程序见附件)。3.4 融合启发式的离散人工蜂群算法在 3.1 中已指出,本问题具有 NP-hard 特性,故考虑通过智能算法进行求解。结合问题的离散型特点,设计了一种融合启发式的离散人工蜂群算法:通过离散人工蜂群算法进行任务的车辆选择;在解码过程中,设计了两种启发式算法进行装箱,取较优解作为最终的装载方案。3.4.1 人工蜂群算法在任何环境下,蜜群能够以极高的效率从食物源(花朵)中采集花蜜,并且能适应环境的改变。在 20

12、05 年,Karaboga2通过模仿蜜蜂采蜜行为提出了人工蜂群算法(Artificial bee colony algorithm)。在人工蜂群算法中,有三种蜜蜂,雇佣蜂(The employed foragers),观察蜂(The umployed foragers)和探测蜂(The scout bees)。在采蜜过程,蜜蜂首先是以探测蜂的形式存在,随机的搜索食物源,一旦找到了食物源,侦察蜂转化为雇佣蜂,雇佣蜂记录着食物源的信息,主要是位置以及食物的储量和质量,当一次寻找食物源的过程结束的时候,观察蜂和雇佣蜂会交流信息(摇摆舞),然后由观察蜂来根据食物源的优劣去采蜜,如此过程不断循环,蜜蜂高

13、效率的寻找较好的花朵采蜜,如果一个食物源在一定次数(Limit )没有被更新,并且不是最好的食物源,将会被淘汰,雇佣蜂将变为观察蜂或探测蜂,根据其他雇佣蜂或者随机的寻找新的食物源,如此循环。一旦环境发生变化,由于对食物源的评价和筛选机制,蜜蜂能继续快速找到较优的食物源。在人工蜂群算法实现步骤中,首先初始化一定数量的随机解,每一个随机解对应一个雇佣蜂,这个步骤对应于探测蜂变为雇佣蜂的过程,雇佣蜂首先对自己对应的解(食物源)的邻域进行搜索,进行自身优化;然后雇佣蜂把结果返回给蜂巢的观察蜂,观察蜂根据食物源的适应度的评价函数值决策是否进行邻域搜索,搜索则记录下最好的结果,对每一个解的未改进次数进行查

14、看,当一个食物源达到一定时间没有改变的时候,就需要重新设置食物源的位置,在算法中对应重新初始化当前解;循环进行以上步骤。另外,一般来说,人工蜂群算法的雇佣蜂和观察蜂数量是相等的。图 3-1 显示蜂群的策略行为,相应人工蜂群算法算法的主要步骤如下:步骤 1:初始化解。初始时蜂巢中只有探测蜂,探测蜂随机地找到蜜源 A 和 B 然后转换为雇佣蜂并采蜜,经过图中 EF1(Employed forager)或 UF(Unemployed forager)线路回到蜂房卸蜜。卸蜜后雇佣蜂从卸密蜂房回到摇摆舞区,如果自己的蜜源优质,则- 6 -经 EF1 与待机的探测蜂交流蜜源信息,如果自己的蜜源不理想,则经

15、 UF 变为探测蜂或观察蜂等待时机。步骤 2:计算适应度。雇佣蜂获取当前自己所在蜜源的信息,如蜜源收益度,蜜源距蜂巢的位置等,评价蜜源的优劣,其对应解的适应度。步骤 3:雇佣蜂过程。每只雇佣蜂对自己的蜜源附近进行搜索,一旦发现优于当前蜜源的新蜜源,则放弃现有的蜜源去新蜜源采蜜,并再次对新密原进行评价,如果是满意的优质蜜源,则会在蜂房卸蜜后经 EF2 回到自己蜜源继续采蜜。步骤 4:观察蜂过程。蜜源不够优质的雇佣蜂经 EF1 线路,回到蜂房卸蜜,卸蜜后回到摇摆舞区,变为观察蜂等待其他雇佣蜂的信息。在蜂巢的摇摆舞区 A 和 B 中的观察蜂,根据雇佣蜂给出的蜜源信息,经线路 EF1 前往优质蜜源并在

16、附近寻找新蜜源,越优质的蜜源被选中的概率越大,并更容易被进一步探索,这个阶段对应优质解加速搜索的过程。步骤 5:保留历史最优解。优质蜜源会被保留下来反复采集。步骤 6:探测蜂过程。雇佣蜂找到的蜜源不够满意,经过 UF 线路回到蜂房卸蜜,可能按线路 S 随机寻找新蜜源,探测过程能否找到蜜源并不确定,也可能会按线路 R变为观察蜂等待雇佣蜂的信息。算法过程是一旦某只雇佣蜂对应的解的搜索计数大于指定值,将舍去此解,同时重新初始化一个解,继续后续计算。步骤 7:未找到足够好的解则返回步骤 2 继续搜索;否则退出。摇摆舞区 A( D a n c i n g a r e a f o r A )摇摆舞区 B(

17、 D a n c i n g a r e a f o r B )无蜂蜜区 C 无蜂蜜区 D待工蜂 C( P o t e n t i a l F o r a g e r C )待工蜂 D( P o t e n t i a l F o r a g e r D )蜂蜜卸载区 B( U n l o a d i n g n e c t a r f r o m B )蜂蜜卸载区 A( U n l o a d i n g n e c t a r f r o m A )U FE F 1U FE F 1蜜源 B( N e c t a r s o u r c e B )蜜源 A( N e c t a r s o

18、u r c e A )U F E F 1E F 2E F 2E F 1U FE F 1E F 1E F 2E F 2蜂巢( H i v e )SSSRRS图 3-1 蜂群采蜜行为- 7 -3.4.2 基于离散人工蜂群算法的问题求解使用离散人工蜂群算法求解乘用车物流运输问题的优势在于:相较于人工经验方案和混合整数规划法,本方法的效率更高,能在更大的解空间范围内更快求出较优解。参数设置:针对本问题的离散人工蜂群实现过程如下:假定 size 为任务需要运输的乘用车数量和,n 为雇佣蜂的数量,雇佣蜂的数量和观察蜂的数量相同,对应解的数量大小等于观察蜂的数量。初始解生成:在初始化阶段,考虑使用启发式的思

19、想将问题中的一些约束予以实现,以提高初始解的性能,从而提高算法效率。如将 1-2 型车的使用约束(不超过 1-1 的 20%),直接通过相应的随机概率进行体现。适应度函数:在适应度函数上,题目给出了轿运车使用数量总数、两种轿运车的使用配比、行驶里程三级成本目标。问题 1-3 在单目的地情况下不必考虑行驶里程目标,这里将总轿运车使用数量作为适应度函数值,在使用相同轿运车数量的最优解中比较配比方式,进而选择满足第二级目标的方案。优化:算法在求解过程中,对解进行两次优化,第一次在雇佣蜂阶段进行基于交换的邻域搜索;第二次观察蜂阶段进行基于变换的邻域搜索。具体操作上,第一次采取类似遗传算法中交叉算子的交

20、换操作,随机从初始解数字串中选取两个位置,对这两个位置上的数进行交换,重新计算适应度函数,如图 3-2 所示;第二次首先采用轮盘赌的方法,首先将解按照适应度函数值进行排序,再进行变换操作,以提高较优解的优化速度,随机选择数字串中的一个位置,1 变为 2,2 变为 1。对于两种优化方法,设置一个跳出次数,算法若在设定次数内不改进,则进入下一步。ni+4ni+4ni+3ni+2ni+1nini+3ni+2ni+1ni交 换图 3-2 交换操作算法步骤:步骤 1:生成 n 组长度为 size(需运输的乘用车数量和)的数字串,每个数字串位置表示一台需要运输的乘用车,按照 5:1 的概率随机生成数字 1

21、 或者 2(1 表示该乘用车使用 1-1 车装载,2 表示该乘用车使用 1-2 车装载)填充数字串,这 n 条数字串即作为问题的初始解;步骤 2:根据初始解,分别通过两种启发式方法(3.5 中有详细说明)计算需要的最少轿运车数,并以此作为适应度函数,为观察蜂的选择做准备;步骤 3:雇佣蜂阶段,对每一个解进行邻域搜索,邻域搜索如果发现了更好的解,则替换当前解;- 8 -步骤 4:观察蜂阶段,由观察蜂对所有解进行选择,采取轮盘赌选择法,用适应度函数值评价被选中的解,然后对其进行邻域搜索,此步骤是对相对好解的加速搜索过程;步骤 5:保留历史最优解;步骤 6:探测蜂阶段,对所有解的适应度函数值进行分析

22、,对于超过一定次数未更新的雇佣蜂,重新初始化一个解来进行代替。初 始 化 解计 算 解 的 适 应 度 , 记 录 最 优 解基 于 交 叉 的 邻 域 搜 索计 算 解 的 适 应 度 函 数 值根 据 轮 盘 赌 选 择 一 定 数 量 的 解基 于 变 换 的 邻 域 搜 索查 看 雇 佣 蜂 未 更 新 次 数将 一 定 次 数 未 更 新 雇 佣 蜂 转 为侦 查 蜂计 算 解 的 适 应 度 函 数 值是 否 获 得 当前 最 优 解Y是 否 获 得 当前 最 优 解NYN图 3-3 离散人工蜂群算法流程图3.5 两种启发式装箱规则在离散人工蜂群算法的运算过程中,数字串表示的解实际

23、是将不同的乘用车任务分给了不同类型的轿运车。对于不同的轿运车,在分配的任务确定后,接下来需要解决的就是具体的装载方案。针对确定了任务数的装载问题,本文设计了两种启发式方法进行求解,最终装载方案取二者中的最优解。其中,第一种启发式是基于装箱问题 FFD 方法的一种改进;第二种方法是基于保证局部最优的思想。- 9 -3.5.1 基于整车优先的改进 FFD 启发式算法降序首次适应(First Fit Decreasing,FFD )算法是求解装箱问题的一种近似算法。FFD 算法是指:首先按工件大小将工件排队,然后从大的开始装入箱内。不妨设P1P2Pn,当装第 i 个工件 Pi 时,Bk 是下标最小且

24、其中装入的工件的大小总量不超过 1 一 Pi 的箱子,那么 FFD 算法就将 Pi 放入箱子 Bk 中3。本问题中货物(乘用车)的类型较少,使用原始的 FFD 方法进行装箱,当某规格较大的一种货物装完后,若最后一台装该类货物的轿运车还有余量,则必须装规格次大的货物,这台混装的轿运车利用率其实是无法改进的。而在问题 1-3 中,共有 1-1和 1-2 两种大小不同的轿运车,根据乘用车大小的不同,轿运车的装载方案也是多样的,特别是 1-2 车,其利用率的大小直接影响了最后使用的使用车辆数。针对上述情况,本文提出了一种基于整车优先的改进 FFD 启发式算法。与传统的FFD 方法相比,该方法最大的不同

25、在于当物品种类较少时,优先保证每种物品先利用整车进行装载,整车装不下的货物,在最后进行优化混装,这样就很好的提高了混装不同类型物品的箱子的利用率。如图 3-4 所示,共有两种大小不同的轿运车(单排、双排),两种不同的任务(A、B),单排车可以装 3 个 A 或 5 个 B,双排车每排可以装 4 个 A 或 5 个 B。在改进 FFD 方法下,同样的装载任务,使用的总轿运车数比与原始 FFD 减少了一辆。- 10 -AAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB( a ) 原始 F F D ( b ) 改进 F F DAAAAAABBBBBBBBBBABBBB

26、图 3-4 改进 FFD 规则和原始 FFD 规则对比改进 FFD 算法步骤:步骤 1:将所需装载的乘用车按长度大小排序;步骤 2:将乘用车按顺序进行装载,装载时每使用 5 台 1-1 车,则下一台使用 1-2车;步骤 3:在装载同一类型的乘用车时,若最后一台装载该类型的轿运车未能装满,则该轿运车内的原任务不再装载,而改为装载下一较小规格的乘用车;步骤 4:重复步骤 3,直到所有规格的任务均不能凑够一整车;步骤 5:将所有规格的剩余任务进行优化组合,使用最少的轿运车装运;步骤 6:若最后一辆车恰为 1-2 车,且未装满,则对最终的装载方案进行局部调整,尝试减少 1 辆 1-2 车,增加 1 辆

27、 1-1 车,若能完成任务,则更新装载方案,否则原方案即为该算法最终结果。- 11 -3.5.2 基于保证局部最优的启发式算法问题 1-3 中,所需运输的乘用车种类只有三类,轿运车种类只有两类,故不难得到每台轿运车的最优装载方案。基于以上分析,本文设计了一种通过保证局部最优以得到全局较优解的启发式方法。该算法的核心在于建立每种轿运车的装载方案优先级列表(如表 3-1,表 3-2,表3-3),即以最小化装载后的剩余长度为目标,确定每种装载方案的使用优先级。装载时,根据剩余的任务数,优先按照最优方案进行装载,最后方案数量不满足时,再在列表中依次寻找次优方案,直到所有任务装载完毕。这就类似于给各类装

28、载方案确定一个系数,保证最后的和为需要完成的任务数。各轿运车最优方案模型:符号::需要运输的乘用车的数量,ix1,23i:需要的轿运车的上下层长度,jyj其中, ,1924.y模型: 123123min6354.60.()jxxx(6)s.t .jy(7)23.615jx(8)34.jy(9) 12,3xN表 3-1 问题一的装载方案优先级列表长度 长度 长度 数量 数量 效率 优先级24.4 4.71 3.715 0 6 0.91352459 524.4 4.71 3.715 1 5 0.954303279 324.4 4.71 3.715 2 4 0.995081967 124.4 4.7

29、1 3.715 3 2 0.883606557 624.4 4.71 3.715 4 1 0.924385246 41-224.4 4.71 3.715 5 0 0.965163934 2- 12 -19.1 4.71 3.715 0 5 0.972513089 219.1 4.71 3.715 1 3 0.830104712 519.1 4.71 3.715 2 2 0.882198953 419.1 4.71 3.715 3 1 0.934293194 31-119.1 4.71 3.715 4 0 0.986387435 1表 3-2 问题二的装载方案优先级列表长度 长度 长度 数量 数

30、量 效率 优先级24.4 3.715 4.73 0 5 0.969262295 224.4 3.715 4.73 1 4 0.927663934 424.4 3.715 4.73 2 3 0.886065574 624.4 3.715 4.73 3 2 0.844467213 724.4 3.715 4.73 4 2 0.996721311 124.4 3.715 4.73 5 1 0.955122951 31-224.4 3.715 4.73 6 0 0.91352459 519.1 3.715 4.73 0 4 0.990575916 119.1 3.715 4.73 1 3 0.9374

31、34555 319.1 3.715 4.73 2 2 0.884293194 419.1 3.715 4.73 3 1 0.831151832 519.1 3.715 4.73 4 0 0.778010471 61-119.1 3.715 4.73 5 0 0.972513089 2表 3-3 问题三的装载方案优先级列表优先级 下层组合 上层组合1 4 8 5 (0,0,5) (4,8,0)2 10 0 5 (0,0,5) (10,0,0)3 0 12 5 (0,0,5) (0,12,0)4 0 16 2 (0,4,2) (0,12,0)5 6 12 0 (2,4,0) (4,8,0)6 15

32、 0 0 (5,0,0) (10,0,0)1-27 0 18 0 (0,6,0) (0,6,0)1 4 0 4 (0,0,4) (4,0,0)2 0 5 4 (0,0,4) (0,5,0)3 8 0 0 (4,0,0) (4,0,0)4 4 5 0 (4,0,0) (0,5,0)1-15 0 10 0 (0,5,0) (0,5,0)算法步骤:步骤 1:建立每种轿运车的装载方案优先级列表;步骤 2:轿运车使用时,每使用 5 辆 1-1 型车,则下一台使用 1-2 型车;- 13 -步骤 3:针对当前的轿运车类型和剩余乘用车任务数,从优先级列表中选择满足要求的、优先级最高的装载方案进行装载;步骤

33、4:按照步骤 2 的规则,依次选择轿运车进行装载,直到剩余任务在列表中找不到满足条件的组合;步骤 5:将剩余任务按照 3.5.1 的改进 FFD 方法进行装载;步骤 6:若最后一辆车恰为 1-2 车,且未装满,则对最终的装载方案进行局部调整,尝试减少 1 辆 1-2 车,增加 1 辆 1-1 车,若能完成任务,则更新装载方案,否则原方案即为该算法最终结果。3.6 算法运行结果及分析本节中的整数线性规划方法使用 GAMS/CPLEX 来实现,融合启发式的离散人工蜂群算法通过 Visual.C+6.0 实现,程序运行环境同为 CPU 2.27GHz,内存 2 GB 的计算机。图 3-5 问题 3

34、的迭代曲线表 3-4 和表 3-5 分别给出了问题 1-3 和 10 组随机数据的实验结果对比,表中ABC 方法即为离散人工蜂群算法,加粗数据为两种启发式方法中的较优解。表 3-4 问题 1-3 结果对比ABC 乘用车车型 改进 FFD 局部最优启发式CPLEX问题 1-1 1-2 1-1 1-2 1-1 1-2问题1 100 68 0 16 2 16 2 16 2问题2 0 72 52 11 2 12 1 12 1问题3 156 102 39 26 5 25 5 25 5- 14 -表 3-5 随机数据结果对比乘用车车型 ABC CPLEX 1-1 1-2 1-1 1-2148 67 0 2

35、0 3 20 3143 92 0 20 4 20 4117 77 0 17 3 17 30 89 61 13 2 13 242 58 78 17 2 17 274 62 17 14 2 14 281 77 94 22 4 22 473 82 101 23 4 23 488 97 117 26 5 26 5110 115 136 31 6 31 6图 3-6 问题 3 的最优方案程序输出4. 问题 4 建模与求解本节根据问题 4 的特点建立了相应的整数线性规划模型,并通过 CPLEX 线性求解器进行了求解,同时设计一种基于启发式规则的邻域搜索算法进行求解。算法输入为运往各地的各类乘用车数量,输出

36、为不同轿运车的使用数量和装载方案,以及个别车辆的中途卸货点和卸货量(程序见附件)。4.1 问题分析问题 4 涉及不同目的地,除了确定不同类型轿运车数量和每车装载方案外,还要确定每辆轿运车的具体行车路线,运输成本需综合考虑轿运车使用数量和行驶里程。通过图 4-1 的各目的地可达树可见,相较于问题 1-3 的单目的地,问题 4 的目的地之间是相互关联的。起点和目的地之间存在着“过路站”,这就给较远目的地的车辆装载提供了更多可能,因为可以通过在“过路站”卸货的方式使轿运车的利用率更高。与此相对应,车辆的装载方案也更加多样。- 15 -根据具体问题特点,针对问题 1-3 的处理分为两步,第一步在确保完

37、成任务的前提下,给出开往每个目的地的两种轿运车的数量;第二步确定每辆轿运车的装载方案;第三步确定每辆轿运车的行车路线(卸货点)。基于上述分析,一方面通过整数线性规划方法通过 CPLEX 进行求解,另一方面设计了一种基于启发式的邻域搜索算法进行求解。首先通过设计的一种启发式方法(详见 4.4)生成初始解,再通过局部搜索对解进行优化。ODCBA图 4-1 题目 4 各目的地的可达树4.2 数学模型根据问题特性,建立了如下的整数线性规划模型:符号:需要使用的 型轿运车的数量,i1,1,2iAI:需要使用的 型轿运车的数量,j2jBJ:需要运输的目的地的数量,k ,kCK设 变量,:01ikZ1, 1

38、-0ik i kZ若 第 辆 型 轿 运 车 的 目 的 地 为否 则设 变量,:jk , -2jk j若 第 辆 型 轿 运 车 的 目 的 地 为否 则:第 辆 型轿运车的总路程id1:第 辆 型轿运车的总路程j 2其中 12343608610iiiiiZZjjjjjd模型: min ijAjBd- 16 -(10).st1, AikCZi(11)Bjkj(12)11083ijiAj(13)542ijijBZ(14)117ijiAj(15)83ijijB(16)304ijiAjZ(17)315ijijB(18)380ijiAj(19)44ijijBZ(20)2215ijiAj(21)338

39、7ijijB注:模型中系数 8、10、15、18 分别表示 1-1 只装型车、型车、1-2 只装型车、型车时的最大装载量;不等式右侧的 31、42、47、33、41、50 分别表示要求运往 A 地的型车、型车、运往 C 地的型车、型车、运往 D 地的型车数量、运往 B 地的型车数量;73 表示运往 A 地的、型车总数;133 表示路线 O-D-B-A上需运送的型车总数;80 表示运往 C 地的、型车总数;74 表示路线 O-D-C 上需运送的型车总数。公式(10)表示一辆 1-1 车只能开往一个目的地;公式(11)表示一辆 1-2 车只能开往一个目的地;公式(12-14)表示目的地 A 的约束

40、,其中公式(12)表示运往 A 地的型车数量必须满足其需求,公式(13)表示运往 A 地的型车数量必须满足其需求,取大于等于是因为可能在中途卸货,公式(14)表示运往 A 地的车辆总数量满足其需求,虽公式(12)和(14)形式上有包含关系,但具体意义不同;公式(15)表示 O-D-B-A 路线上的车辆不会折返到 O-D-C 线路;公式(16-18) 表示目的地 C 的约束,具体意义可参考公式(12-14);公式(19)表示运往目的地 D 的车辆需满足其需求,取小于等于是因为可能有其他车在 D 点卸货;公式(20)表示运往目的地 B 的车辆需满足其需求,意义可参考公式(19);公式(21)表示

41、O-D-C 路线上的车辆不会折返到 O-D-B-A 线路。4.3 模型的 CPLEX 求解针对 4.2 的整数线性规划模型,通过 CPLEX 线性求解器得到了两种轿运车的使用数量以及每辆车的具体装载方案,确保了模型的正确性,以上实验通过 GAMS/CPLEX 实现(程序见附件)。- 17 -4.4 基于启发式的邻域搜索算法综合问题 1-3 的解题方法和问题 4 的特性,本节给出了一种基于启发式的邻域搜索算法进行求解,通过根据问题特性设计的一种“长途稍货”启发式规则生成初始解,之后通过邻域搜索算法对解的性能进行优化。4.4.1“长途稍货”启发式规则根据 4-1 的问题分析可知,问题 4 的复杂性

42、在于路途较远的目的地可以通过中途卸货的方式帮助短途目的地运送任务,对其本身而言,装载方案更具柔性,但同时也增加了求解的难度。基于上述分析,针对问题 4 本节根据问题 1-3 的调度经验,结合该问题的特点,设计了一种基于轿运车使用优先级和“长途稍货”思想的启发式规则。该规则的核心思想包括两方面:一是通过计算 I 型车的使用上限估算型车的最大允许使用量,并优先给长途目的地分配 1-2 型车;二是开往长途目的地(有过路站)的车辆,在完成本身要求任务的基础上,车辆若未装满则帮助过路站装载任务。该启发式规则的提出基于下列两方面考虑:(1)1-2 型轿运车的优先级讨论题目中指出“在轿运车使用数量相同情况下

43、,1-1 型轿运车的使用成本较低,2-2型较高,1-2 型略低于前两者的平均值” ,本文理解为 1-2 型轿运车的使用成本不大于1-1 型车的 1.5 倍,并在此基础上对 1-2 型车进行分析。根据题目中表 2 所给轿运车规格,不难算出 1-2 型车和 1-1 型车的二维几何面积之比为 1.47:1,基本和使用成本比例相等。那么,根据第 2 节中的模型假设 4,在相同行驶里程条件下,1-2 型车的综合成本显然更低(同样的运费运送更多的车) ,故 1-2 型车在相同情况下,是应该优先选用的。在此基础上,为长途目的地优先选用 1-2 型车,显然能进一步降低成本(为单位成本高的路线减少使用的轿运车数

44、) 。(2) “长途稍货”的合理性对于每个目的地,其需要完成的任务量是固定的。对于有“过路站”的长途目的地,轿运车在满足其本身运输任务的前提下,最后一辆车很大可能未装满。此时,为这辆轿运车安排额外的任务,并不会增加其运输成本,但却可以通过中途“卸货”的方式帮助其途径的过路站“稍货” ,显然提高了轿运车的使用效率。在此基础上,优先帮助最远的过路站“稍货” ,更进一步提高了所稍货物的“价值” 。通过上述分析可知, “长途稍货”启发式规则可以提供一个性能较优的初试解。“长途稍货”启发式规则步骤:步骤 1:根据路程长短对目的地进行排序;步骤 2:假设所有任务均通过 1-1 型车运输,求出 1-1 型车

45、的使用上限,并基于此上限和 1-2 的使用约束,求出 1-2 型车的最大允许使用量;步骤 3:取出路程最长的两个目的地,按照其路程之比(取整)分配 1-2 型车;步骤 4:按照路程长短依次安排目的地装载方案,具体根据 3.5.2 中第二种启发式规则进行装载;- 18 -步骤 5:在每个目的地装载结束后,若最后一辆车未装满,则利用剩余空间帮助其最后一个“过路站”装载任务;步骤 6:依次完成所有目的地的装载,统计使用的总轿运车数和每个目的地的 1-1型车、1-2 型车数,作为邻域搜索的初始解和适应度函数值下界。4.4.2 基于启发式规则的邻域搜索算法针对问题 4 的邻域搜索算法,基于 4.4.1

46、的启发式规则结果进行局部调整。参数设置:N 为目的地长度,串码长度为 2*N,每个目的地用连续的两个码位分别表示其使用的 1-2 型车和 1-1 型车数量。初始解生成:读取 4.4.1 的结果,形成如图 4-2 格式的串码作为邻域搜索的初始解。. . . . .AABBCCDDA 使 用 1 - 2 型车 数 量A 使 用 1 - 2 型车 数 量A 使 用 1 - 1 型车 数 量A 使 用 1 - 1 型车 数 量33. . . . .AABBCCDD22邻 域 搜 索邻 域 搜 索图 4-2 初始解形式适应度函数:适应度函数值包括两层目标:首先保证轿运车总数最少;其次保证总路程最短。其中

47、,总路程等于每个目的地使用的总轿运车数乘以其路程之和。算法步骤:步骤 1:随机选取两个目的地;步骤 2:增加其中一个目的地的 1-2 车使用数,相应减少另一个目的地的 1-2 车使用数;步骤 3:重新检查装备方案,若调整后任务不能完成,则增加 1-1 车进行补偿,若调整后还有额外运输能力,则进行“稍货”,同时更新解,若目标函数优于之前,则更新解,否则返回步骤 1;步骤 4:设定终止条件为不更新次数,若算法超过设定次数不更新,则跳出。4.5 算法运行结果及分析- 19 -本节中的整数线性规划方法使用 GAMS/CPLEX 来实现,基于启发式的邻域搜索算法通过 Visual.C+6.0 实现,程序

48、运行环境同为 CPU 2.27GHz,内存 2 GB 的计算机。表 4-1 问题 4 的目的地优先级路线 距离 优先级O-A 360 1O-B 280 2O-C 236 3O-D 160 4表 4-2 问题 4 的结果对比启发初始解 CPLEX 邻域搜索1-1 1-2 距离 1-1 1-2 距离 1-1 1-2 距离20 5 6652 21 4 6404 21 4 6404领域搜索最优解的具体分布如下图。图 4-3 问题 4 的程序输出5. 问题 5 建模与求解本节根据问题 5 特点建立了相应的整数线性规划模型,第一层模型通过 CPLEX求解得到了完成任务所需的最少轿运车数量。通过聚类分析和约

49、束满足的方法,将问题进行了简化,并据此设计了一个启发式方法。5.1 问题分析问题 5 规模庞大,寻求最优解是不现实的,故考虑通过启发式规则进行求解。相较于问题 1-4,问题 5 的复杂度来自于乘用车类型和轿运车类型的多样性,故首先考虑通过各类约束条件,对不同类型的乘用车和轿运车进行聚类分析,再根据问题特点设计一个有针对性的启发式方法进行求解。- 20 -5.2 数学模型针对问题 5,欲建立一个三层模型进行求解。在第一层首先确定针对当前任务的最少轿运车数量;第二层以第一层的结果为输入,以最短路径为目标函数,通过具体约束条件,将轿运车分给不同的目的地;第三层最终确定轿运车的装载方案。此模型规模庞大,对于第一层目标(公式(22-31)),已经通过 CPLEX 验证了模型的正确性,并求得最少轿运车数量为 102 辆,第二、三层目标已经列出了一部分约束,但模型还有待进一步完善。该模型约束较多,总体建模思路为:根据车辆高

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报