基于Extend的物流运输组织动态仿真
更新时间:2020-08-13 05:00:06
摘要为更好地优化物流运输组织模式并对运输方案进行绩效评估,利用仿真软件Extend开发物流运输组织与运输方案绩效评
0 引 言
物流运输组织是指通过各类运输方式将货物从始发地经过多式联运网络运往目的地的过程,内容主要包括:物流运输路线与节点选择及物流运输方式选择等,具有复杂、多变的特点.国内外学者对物流运输组织进行大量研究,但仍存不足之处.
首先,对物流运输组织的决策和技术研究比较注重单一运输环节,从系统层面对整个物流运输组织进行整合的研究相对薄弱,尤其是对不同运输网络、运输方式及货物类型之间的协调研究不足.其次,系统仿真一般为定结构,即节点数和运输路线固定.当实际运输路线小于模型中时,模型中多余的运输线路资源就会浪费,给使用带来很大的局限性.最后,目前物流运输组织绩效评估中的各类绩效指标均根据数据库中的固定数据计算得到.而实际的时间值、成本值以及服务质量值并非固定不变,如果只利用固定数据计算结果而忽略现实性,评估准确性会有所下降.
针对上述薄弱环节,围绕企业对物流运输组织的要求,以Delphi[1]为开发平台,选用Extend[2]作为主要仿真工具,开发物流运输组织动态仿真系统,通过计算绩效指标寻求最优路径,实现整个物流运输过程优化.
1 变结构实现
鉴于传统系统仿真定结构的不足,引入变结构思想,即节点数和运输线路随起始地和目的地的变化而变化.变结构的实现主要分为动态仿真可行路径与动态计算绩效指标两大部分.
1.1 动态仿真可行路径
确定动态仿真可行路径的过程见图1.
1.1.1 使用枚举法建立Extend基本模型
该物流运输组织系统研究对象是具体区域内的货物运输,因此货物运输线路以及线路经过城市都是有限的.[3-4]将货物运输经过的城市视为节点,以节点为基准利用枚举法列出所有节点间的可行路径,并手动构造能够涵盖该物流运输系统中所有货物运输线路的Extend基本模型.构建原则为
具体结构为:Num=3,即起始地和目的地间最多有3条运输路线;Num1=4,即节点间最多有4种运输方式;Num2=4,即每条可行路径中最多经过4个节点.另外,根据具体情况还可进一步简化模型.
1.1.2 建立具体Extend模型所需要的信息
用户输入起始地和目的地后,物流运输系统自动给出符合要求的运输线路.从这些信息中概括提取有用信息,将基本模型转换成具体的Extend模型.使用变量或数组暂时存放所需要的信息.信息的具体定义见表1.
1.1.3 更改基本Extend模型所需要的函数
系统从数组中读取有效信息后,对基本模型进行修改,具体包括隐藏多余模块、添加模块之间连线、删除模块之间的连线和添加文本等.几个主要的Extend函数见表2.
1.1.4 建立具体Extend模型方法
首先,对Count1的值进行判断,确定运输线路的数量,当Coun韶关到雅安物流t1=i时(i=1,2,…,n),利用函数MakeBlockInvisible()隐藏剩余n-i条路径中的模块.其次,通过Route[i,j]数组确定每条运输线路的节点数,利用MakeBlockInvisible()函数隐藏多余的节点模块.再次,通过Rtrannum[i,j]数组确定每2个节点间运输方式数量,利用MakeBlockInvisible()函数隐藏多余运输方式模块.最后,利用函数MakeConnection()添加模块间的连线,利用PlaceTextBlock()函数注明模块用途.建立具体Extend模型通过代码自动实现,例如,1条线路2个节点的运输方式程序代码为:
case count of
2:
begin
Extend.Execute(′PlaceTextBlock(+StringGridRoute.Cells[5,1]+,434,136,0,-1,0)′);
Extend.Execute(′MakeBlockInvisible(3,true)′);
Extend.Execute(′MakeBlockInvisible(71,true)′);
Extend.Execute(′ClearConnection(3,1,71,0)′);
Extend.Execute(′MakeBlockInvisible(5,true)′);
Extend.Execute(′MakeBlockInvisible(6,true)′);
Extend.Execute(′MakeBlockInvisible(7,true)′);
Extend.Execute(′MakeConnection(10,2,8,0)′);
Extend.Execute(′MakeConnection(8,1,4,0)′);
Extend.Execute(′MakeConnection(4,1,105,0)′);
Extend.Execute(′MakeConnection(105,1,2,0)′);
Extend.Execute(′MakeBlockInvisible(106,true)′);
Extend.Execute(′MakeBlockInvisible(107,true)′);
Extend.Execute(′MakeBlockInvisible(108,true)′);
Extend.Poke(′System′, ′value1:#105:0:0:0:0′,′1′);
end;
end;
理论上,采用枚举法可得到南京到釜山的货物运输方案见表3.需说明的是,其中部分方案不具有可操作性,在随后的仿真优化中被自然淘汰.具体Extend模型见图3.
1.2 动态计算绩效指标
动态计算绩效指标[5]是指计算每条运输线路的时间、成本和服务质量3大指标.由于计算方法相似,仅以计算时间指标为例进行说明.动态计算绩效指标的基本思路见图4.
1.2.1 重新建立基本模型
在基本模型中加入一些特定模块,实现计算可行路径时间指标的功能.加入的模块有Set Attribute模块、Get Attribute模块、Change Attribute模块、System Variable模块、Input Random Number模块、Information模块和Subtract模块.
1.2.2 更改基本模型
更改基本模型分为以下4个步骤:
(1)用MakeBlockInvisible()函数隐藏多余计算指标类模块.首先确定运输线路的数量,当Count1=i时,隐藏其余n-i条路线上的相关模块;其次确定每条可行路径中的节点数.根据Route[i,j]数组的信息,隐藏i条路线上多余相关模块;最后,确定运输方式的数量.根据Rtrannum[i,j]数组的信息,隐藏2个节点间多余相关模块.
(2)为活动类模块输入相对应的时间.活动类模块主要分为2类:Activity-Delay模块和Station模块.前者的作用是模拟各类运输过程,时间数值存放在它的Delay属性中;后者的作用是模拟场站过程,时间数值存放在它的Processing time属性中.根据场站名称即可确定场站过程所花费的时间,而各类运输过程所花费的时间要根据此运输过程的起始节点、目的节点和运输方式3个要素决定.
(3)为每条可行路径设定属性值.这是实现动态计算绩效指标的关键步骤.通过Set Attribute模块和Change Attribute模块的组合实现属性值的设定.前者的功能是设定1个新的属性值,后者的功能是改变特定的属性值,其实现原理见图5.图5所示运输组织流程包含1个中间节点和2段运输过程.理论分析不难发现:最多存在16条可行路径,但在实际情况下,可行路径的数量可能小于16条.首先,在建立Extend基本模型阶段,设定4个Set Attribute模块和3个Change Attribute模块的一些属性.Set Attribute模块中的Attribute Name属性都被设定为RouteNum,Value属性自上而下被设定为1,5,9,13.Change Attribute模块的Attribute Name属性应与Set Attribute模块的Attribute Name属性保持一致;改变方法为加1个常量,自上而下设定3个模块的常量为1,2,3.
(4)设定Input Random Number模块中的分布值.该模块的作用是根据特定分布给出随机数.对此模块的属性进行设定,将Distribution属性选择Integer,Uniform分布(这类分布有2个参数,分别为min和max).服从Integer,Uniform分布的Random模块能随机给出大于或等于min并且小于等于max的整数.在建立Extend基本模型阶段,将所有Input Random Number模块中的min和max值设置为0和1.Random模块的作用是控制仿真线路选择Select DE Output模块的输出口.Select DE Output模块共有5个输出端口,自上而下ID分别为0,1,…,4,因此max参数随着该模块输出端口连接模块数量的变化而变化.在建立具体模型阶段,利用Poke()函数,根据Rtrannum[i,j]数组信息,改变max的值.说明实现原理见图6.货物经过1条包含3个节点的线路,共有12条可行路径,根据Rtrannum[Route[1,1],Route[1,3]]=3,Rtrannum[Route[1,3],Route[1,5]]=4,设定第1个Random模块的max参数值为2,第2个Random模块的max参数值为3.
1.2.3 计算绩效指标
以时间指标计算为例进行说明,设定Arrivaltime属性,存放货物开始运输的时间.当货物运输完毕时,设定Totaltime属性,存放货物整个运输过程所花费的时间由当前时间减去开始运输时间得到.最后使用Information模块列出所有货物的Totaltime属性和Routenum属性.根据Routenum属珠海到抚顺物流性值可以将货物的运输时间与其具体运输路径相对应,显示在表格中.主要程序为
for n:=1 to count-1 do
begin
for m:=0 to 99 do
begin
if Extend.Request(′System′, ′display:#100:′+inttostr(m)+′:2′)=inttostr(n) then
begin
StringGridRoute.Cells[9+count2,n]:=Extend.Request(′System′,′display:#100:′+inttostr(m)+′:3′);
break;
end;
end;
end;
南京到釜山各运输方案的绩效指标计算结果见表4.
2 Extend与物流运输组织及绩效评估系统的交互
Extend不仅要实现整个物流运输组织过程的可视化,而且要及时与物流运输组织及绩效评估系统进行交互,包括实时跟踪、并行显示和数据传输.
2.1 实时跟踪
根据运行结果,用户按照需求选择最优路径,物流运输组织与绩效评估系统需要将最优路径的过程及过程中涉及的单证、时间和成本等信息展示给用户.系统通过树型结构将货物运输过程分步表示出来,并及时与Extend进行时间、费用以及服务等信息的交互.为了配合系统显示最优路径,Extend最优路径仿真模型的运行应该与系统保持一致,做到实时跟踪.实时跟踪功能的实现主要用到:Pause Sim模块,Program模块和Queue Matching模块.
2.1.1 Pause Sim模块
该模块的作用是设定具体时间点,使仿真模型暂停运行.在程序中加入ResumeSimulation()函数就可以使仿真继续运行.因此,该模块与此函数的组合是实现实时跟踪的关键.
2.1.2 Program模块
该模块与Queue Matching模块组合使用,不仅可以按照时间表生成事件的主体,还可以按照时间表输出数据.该模块的作用是控制事件的主体在Queue Matching模块中的停留时间.
2.1.3 Queue Matching模块
该模块的ID端口控制事件主体运行,事件主体必须带有与该模块设置的相同属性及属性值才可以通过此模块,否则将一直停留在模块中.最优路径仿真模型中使用的模块均为非活动类模块,即这些模块不花费时间,如果不使用Queue Matching模块,事件的主体将在0时间点到达终点.该模块的作用是控制事件主体在模型中暂留.
2.2 并行显示的实现
仿真模型界面及物流运输组织与绩效评估系统界面应同步显示和运行,使用户在操作其他界面时也能直观了解Extend模型的整个仿真过程,更好地实现Extend可视化功能.具体方法:先将Extend窗口置于所有窗口最前端,再将其置于屏幕上合适的位置,即先使用FindWindow(nil,‘Extend’)函数得到Extend窗口的ID,然后在Delphi中调用窗口函数SetWindowPos()控制Extend窗口的位置.
2.3 数据传输
数据传输指的是Extend,物流运输组织,绩效评估系统及数据库之间的数据传输,是Extend与其他系统交互的重要组成部分.
2.3.1 动态计算绩效指标中的数据传输
(1)将数据库的数据读入数组.用Rtime[i,j],Rprice[i,j]和Rservice[i,j]数组分别存放第i条路径中第k段运输的时间、成本和服务质量.数据库中的TransInfo表格包括FromId,ToId,PackForm,TransMode,Price,Time和Service等字段.通过FromId,ToId和TransMode字段可确定唯一数据,并读入对应的数组中.
(2)将数组中的数据读入Extend对应的活动模块中,为计算绩效指标做准备.
(3)将计算得到的各类指标传输到系统界面中.仿真模型中的Information模块列出的路径号无序,因此要将每条路径的绩效指标显示在系统界面上,首先要查找路径号,然后再将绩效指标值按路径号输出.
2.3.2 实时跟踪中的数据传输
Extend最优路径模型不仅模拟货物整个运输过程,还要把随机生成的时间、成本和服务质量等数据传输给物流运输组织及绩效评估系统.
3 结 论
详细讨论动态仿真过程中两大核心技术问题的解决过程,即变结构的实现和Extend同物流运输组织及绩效评估系统的交互.
变结构实现节点数和运输线路随着起始地和目的地的变化而变化,克服以往定结构仿真的不足,从而使可行路径的动态仿真得以实现,具有一定的灵活性.同时以南京到釜山的货物运输为实例,说明基于Extend的物流运输组织仿真系统具有实用性,能够较好地解决物流运输组织模式的实时优化和对运输方案的实时绩效评估.因此,该系统对优化物流运输网络、提高企业运行效率具有重要意义佛山到衢州物流.