系统建模与仿真第19章 垃圾回收物流.docx

上传人:b****3 文档编号:4007799 上传时间:2023-05-06 格式:DOCX 页数:18 大小:305.20KB
下载 相关 举报
系统建模与仿真第19章 垃圾回收物流.docx_第1页
第1页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第2页
第2页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第3页
第3页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第4页
第4页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第5页
第5页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第6页
第6页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第7页
第7页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第8页
第8页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第9页
第9页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第10页
第10页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第11页
第11页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第12页
第12页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第13页
第13页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第14页
第14页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第15页
第15页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第16页
第16页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第17页
第17页 / 共18页
系统建模与仿真第19章 垃圾回收物流.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

系统建模与仿真第19章 垃圾回收物流.docx

《系统建模与仿真第19章 垃圾回收物流.docx》由会员分享,可在线阅读,更多相关《系统建模与仿真第19章 垃圾回收物流.docx(18页珍藏版)》请在冰点文库上搜索。

系统建模与仿真第19章 垃圾回收物流.docx

系统建模与仿真第19章垃圾回收物流

第十七章垃圾回收物流仿真系统

17.1垃圾回收物流系统介绍

城市某一区域,共有7个居民小区,每个小区有一个固定垃圾投放处,两个垃圾箱分别投放完全废弃垃圾和可回收利用垃圾;每天有专门公司(垃圾处理公司)派运输车收集垃圾,将垃圾从居民区运送之中转站,再由中转站运至垃圾处理中心。

仿真程序研究如何设计物流系统,能够使收集系统在满足时间约束、载重约束的条件下,使垃圾处理公司的物流总成本最低。

系统配置的项目主要有车辆载重量、随车工作人员数、客户满意度。

17.2.1地理及需求信息

各个收集点所有的人口数、距离垃圾转运站、公司停车场的距离信息如表17-1所示。

表17-1收集点信息

收集点名称

收集点居民数(千人)

距离停车场距离(KM)

距离垃圾转运站距离(KM)

Dump001

1.5

6

16

Dump002

1.45

16

27

Dump003

1.65

26

24

Dump004

1.85

38

36

Dump005

1.4

28

26

Dump006

2.05

16

14

Dump007

1.6

10

8

各收集点之间以及停车场和转运站之间的距离信息如表17-2所示。

表17-2点间距离

路径起点

路径终点

距离KM

符号

Tran_station

Corppark

11

Distance(pt)

Dump001

Dump002

10

Distance(12)

Dump002

Dump003

10

Distance(23)

Dump003

Dump004

12

Distance(34)

Dump004

Dump005

10

Distance(45)

Dump005

Dump006

12

Distance(56)

Dump006

Dump007

6

Distance(67)

17.2.2与收集车辆有关的信息

1.固定成本[price(i)]:

收集车辆的购买费用;

2.可变成本[cost(i)]:

车辆的行驶费用、维护费用和雇员工资;

3.行驶速度:

分为空车行驶速度[unloadspeed(i)]和载重行驶速度[loadspeed(i)];

4.收集时间[loadtime(i)]:

在垃圾收集点收集垃圾所需的时间

5.卸载时间[unloadtime(i)]:

在转运站卸载垃圾所需的时间

表17-3收集车辆信息

车辆名称

载重(t)

固定成本(万元)

可变成本(元/KM)

载重速度(KM/H)

空载速度(KM/H)

人员(人)

人员工资(元/天/人)

收集时间(MIN)

卸载时间(MIN)

车1

X1

2+X1

X1

60

72

P1

60

3+y*10/P1

3+X1*6/P1

车2

X2

2+1.2X2

X2

60

72

P2

60

2+y*12/P2

2+X2*6/P2

说明:

(1)车1用来收集不可回收垃圾;车2用来收集可回收利用垃圾;

(2)X1,X2为现有两种车的吨位数,X1取值:

3,4或5吨;X2取值:

1.5;2;2.5;

(3)y为每次收集的垃圾量,单位--吨;

(4)P1,P2为两种车可配备的随车工作人员数(可以是1,2,3)

17.2.3与垃圾相关的信息

1.人均垃圾量:

平均每人每天产生的垃圾数量;

2.垃圾比例:

各种垃圾成分所占比例。

17.3收集垃圾的成本函数

假设人均垃圾量服从均值为1.2kg/天的爱尔郎分布,垃圾成分分为两类:

一类为可重复利用资源,一类为无用需销毁垃圾,两者比例为1:

2。

现在假设仿真一年365天的垃圾回收工作,决定两种型号的车配置何种吨位以及随车工作人员数,垃圾回收物流成本(TotalLogisticCost,TLC)最低。

TLC=车1成本+车2成本

车i所耗成本=i的固定成本+i的可变成本+i的服务时间成本+i的人员成本

17.4系统逻辑结构

此垃圾回收物流系统的逻辑结构分为五个子模块:

垃圾产生模块、派车模块、收集模块、收工模块、数据处理模块。

1.垃圾产生模块每天收集工作开始时,系统根据小区的人数、人均垃圾量、两种垃圾量的比例,通过爱尔朗随机分布函数,随机产生各个小区的两种垃圾数量,分别存放入各个小区的两个垃圾箱内。

2.派车模块在垃圾存放入各个小区的两个垃圾箱过程中,根据每种垃圾的总量以及每种垃圾车的载重量进行派车。

3.收集模块派车之后,车辆根据需求,沿着最短路径依次收集垃圾。

在收集过程中,在一个垃圾点,如果垃圾车收集满了或当天的收集工作全部完成,车辆驶向垃圾中转站,进行卸载操作;如果垃圾车未满,则驶向下一最近垃圾收集点继续收集。

4.收工模块当天的收集工作全部完成之后,车辆驶向公司停车场,当天收集工作完毕。

5.数据处理模块每天车辆收工时,进行必要的数据处理。

17.5仿真模型的建立

根据系统逻辑结构和数据信息,我们建立具有7个垃圾收集点、一个垃圾转运站的WITNESS垃圾回收仿真模型。

具体步骤如下:

17.5.1元素定义Difine

建立仿真模型时,首先定义仿真模型中所需的元素,并设计它们的可视效果。

我们将设计的元素分为两类――实体元素和逻辑元素,名称如下。

表17-4实体元素列表

元素名称

类型

说明

Dumpa

(1)~dumpa(7)

Part

七个小区不可回收利用的垃圾

Dumpb

(1)~dumpb(7)

Part

七个小区可回收利用的垃圾

Dumpcart

(1)

Vehicle

专门回收dumpa的垃圾回收车

Dumpcart

(2)

Vehicle

专门回收dumpb的垃圾回收车

Buffera

(1)~buffera(7)

Buffer

各小区不可回收垃圾的垃圾箱

Bufferb

(1)~bufferb(7)

Buffer

各小区可回收利用垃圾的垃圾箱

corppark

Track

公司停车场

Transfer_station

buffer

垃圾转运站

Road(i,j)

Track

由节点实体i向节点j方向的道路

Road(j,i)

Track

由节点实体j向节点i方向的道路

Geta

(1)~geta(7)

Track

车辆将通过它们进行垃圾a的回收

Getb

(1)~getb(7)

Track

车辆将通过它们进行垃圾b的回收

表17-5逻辑元素列表

名称

类型

说明

Capacitycart

(2)

Integer

两种垃圾车每次可收集的垃圾数量即载重量

Ndemand

(2)

Integer

每天对两种垃圾车的需求次数

Labor

(2)

Integer

两种垃圾车的随车工作人员数

Salary

Real

工作人员每天工资

Price

(2)

Real

两种垃圾车的购买价格

Costrate

Real

两种垃圾车的运行费率

Unloadspeed

(2)

Real

两种垃圾车的空载速度

Loadspeed

(2)

Real

两种垃圾车的实载速度

Loadnum

(2)

Integer

两车辆到达垃圾收集点可收集的垃圾数量

Nfree

(2)

Integer

两车辆剩余载重能力

Nparts(7)

Integer

每一垃圾收集点在特定仿真时点剩余垃圾量

Loadtime

(2)

Real

两车辆收集垃圾所需的时间

Unloadtime

(2)

Real

两车辆卸载垃圾所需的时间

Timewigh

Real

时间惩罚因子

Timecost

(2)

Real

时间处罚成本

Sumcost

Real

目标函数objfun中用于统计系统运行的总费用

定义一个实数型逻辑函数objfun(),用于计算和统计系统运行一年365天所花费的总费用。

17.5.2元素显示display

各个元素的显示设置如图12-1所示。

图17-1垃圾回收系统可视化界面

17.5.3元素详细设计

在该子模块中定义随着仿真钟的推进,装载垃圾的逻辑条件。

该系统的工作班次制度采用每天工作8小时,每一仿真时间等价于现实时间一分钟。

1.为了实现系统的仿真运行,需要对系统中的元素进行详细设计。

系统初始化程序设计(initializeactions),通过选择系统菜单model/initializeactions…菜单项,得到初始化程序编辑框,输入如下程序:

 

2.各个小区垃圾的详细设计

表12-6垃圾元素详细设计列表

NAME

FIRSTARRIVAL

INTERARRIVAL

LOTSIZE

TO

Dumpa1

0.001

1440

Erlang(meandump

(1)/3*2,3,1)

Pushtobuffera1

Dumpa2

0.002

1440

Erlang(meandump

(2)/3*2,3,2)

Pushtobuffera2

Dumpa3

0.003

1440

Erlang(meandump(3)/3*2,3,3)

Pushtobuffera3

Dumpa4

0.004

1440

Erlang(meandump(4)/3*2,3,4)

Pushtobuffera4

Dumpa5

0.005

1440

Erlang(meandump(5)/3*2,3,5)

Pushtobuffera5

Dumpa6

0.006

1440

Erlang(meandump(6)/3*2,3,6)

Pushtobuffera6

Dumpa7

0.007

1440

Erlang(meandump(7)/3*2,3,7)

Pushtobuffera7

Dumpb1

0.001

1440

Erlang(meandump

(1)/3,3,1)

Pushtobufferb1

Dumpb2

0.002

1440

Erlang(meandump

(2)/3,3,2)

Pushtobufferb2

Dumpb3

0.003

1440

Erlang(meandump(3)/3,3,3)

Pushtobufferb3

Dumpb4

0.004

1440

Erlang(meandump(4)/3,3,4)

Pushtobufferb4

Dumpb5

0.005

1440

Erlang(meandump(5)/3,3,5)

Pushtobufferb5

Dumpb6

0.006

1440

Erlang(meandump(6)/3,3,6)

Pushtobufferb6

Dumpb7

0.007

1440

Erlang(meandump(7)/3,3,7)

Pushtobufferb7

*决定每天各个小区的垃圾依次产生,以便于生产叫车次数。

3.运输车辆详细设计

表12-7运输车辆详细设计列表

NAME

UNLOADSPEED

LOADSPEED

TO

Dumpcart1

1.2

1.0

Pushtocorppark

(1)

Dumpcart2

1.2

1.0

Pushtocorppark

(2)

4.垃圾箱详细设计

设计垃圾放入垃圾箱时的活动,也即每个垃圾箱的“actionsoninput”中的程序。

(1)buffera1.actionsoninput:

IFMOD(NPARTS(buffera1),cartcapacity

(1))=1

CALLdumpcart1,get1,road7_t,1

VSEARCHroad0_1,corppark,road1_2,road1_0,road2_3,road3_4,road4_5,

road5_6,road6_5,road6_7,road7_t,roadt_7,road1_0,road3_6,

road6_3,road7_0,road0_7,road2_1,geta1,geta2,geta3,geta4,geta5,

geta6,geta7,getb1,getb2,getb3,getb4,getb5,getb6,getb7

ENDIF

moddemanda

(1)=MOD(NPARTS(buffera1),cartcapacity

(1))

 

程序解释:

第一行:

判断当buffera1中的垃圾的数量同车辆1的载重量取余为1时,发生if…endif之间的活动;

第二行:

叫车dumpcart1,该车将在路径get1上装载垃圾,在路径road7_t上卸载垃圾,优先级为1;

第三行至第五行:

在所有路径上搜索车辆dumpcart1;

第七行:

汇总非整车垃圾的数量,带到buffera2中继续计算并叫车。

(2)Buffera2~buffera7的actionsoninput:

IFMOD(moddemanda(i-1)+NPARTS(buffera(i)),cartcapacity1)=1

CALLdumpcart1,geta(i),road7_t,0

VSEARCHroad0_1,corppark,road1_2,road1_0,road2_3,road3_4,road4_5,

road5_6,road6_5,road6_7,road7_t,roadt_7,road1_0,road3_6,

road6_3,road7_0,road0_7,road2_1,geta1,geta2,geta3,geta4,geta5,

geta6,geta7,getb1,getb2,getb3,getb4,getb5,getb6,getb7

ENDIF

moddemanda(i)=MOD(moddemanda(I-1)+NPARTS(buffera(i)),cartcapacity1)

 

程序说明:

(1)i表示本垃圾箱的序号,为2,3,4,5,6,7;

(2)第一行:

将其上一个垃圾箱的非整车垃圾数量同本垃圾箱中的垃圾数相加,然后与车辆一的载重量取余,当结果为1时,叫车。

(3)垃圾箱bufferb1~bufferb7的“actionsoninput”同垃圾箱buffera1~buffera7的“actionsoninput”处理逻辑完全一样,只需要将buffera改为bufferb、dumpcart1改为dumpcart2、moddemanda改为moddemandb、geta改为getb即可。

IFVEHICLE(road2_3,1)=dumpcart1

IFNPARTS(buffera3)>0

PUSHtogeta3

(1)

ELSE

PUSHtoroad3_4

ENDIF

ELSEIFVEHICLE(road2_3,1)=dumpcart2

IFNPARTS(bufferb3)>0

PUSHtogetb3

ELSE

PUSHtoroad3_4

ENDIF

ELSE

Wait

ENDIF

5.两点间运输路径上的程序设计

下面以road2_3为例,加以

说明其逻辑流程。

其它路径

类似,可以在路径的general

detail中的outputto中加以

查看。

 

第一行到第六行:

决定车辆dumpcart1到达路径road2_3末端时,它的运行路径。

如果此时垃圾箱buffera3中有垃圾,则车辆dumpcart1驶向路径geta3,进行垃圾收集(第二行到第四行);如果垃圾箱buffera3中没有垃圾,则车辆dumpcart1驶向路径road3_4。

第七行到第十二行:

决定车辆dumpcart2到达路径road2_3末端时,它的运行路径。

如果此时垃圾箱bufferb3中有垃圾,则车辆dumpcart2驶向路径getb3,进行垃圾收集(第八行到第十行);如果垃圾箱bufferb3中没有垃圾,则车辆dumpcart2驶向路径road3_4。

如果是其他情况,等待(第十三行到第十四行)。

6.路径get系列的设置

在Get系列(Geta1~geta7,Getb1~getb7)路径中设置车辆的装载(loading)程序和条件,它们的设定以及程序的处理流程基本相同,下面举geta2加以说明。

其中装载数量(loadnum)和装载时间(loadtime)在generaldetail页的actionsonfront中设定;装载程序和条件在loadingdetail页中进行设定。

Generaldetail页的actionsonfront程序如下:

IFNFREE(dumpcart1)>=NPARTS(buffera2)

loadnum=NPARTS(buffera2)

ELSE

loadnum=NFREE(dumpcart1)

ENDIF

loadtimea

(1)=3+loadnum/1000*loadindexa/laborneeda

dayloadtimea=dayloadtimea+loadtimea

(1)

 

程序解释:

第一行至第五行:

如果车辆dumpcart1的空余容量NFREE(dumpcart1)不小于垃圾箱buffera2中的垃圾数量,则收集数量loadnum为垃圾箱buffera2中的所有垃圾;否则,收集数量loadnum为车辆的空余容量。

第六行:

计算本次收集所需的时间loadtimea

(1),它是本次垃圾收集量、随车工作人员数以及收集时间系数的函数。

图12-2路径geta2中的loading详细设计图

路径geta2中的loadingdetail页框的设定如图12-2所示。

在选中loadingenabled(能够装载)前的复选框后,将会出现该界面上的其他内容。

TransferMode(装载模式)有三种:

if、call、always。

我们选择条件模式if,在条件condition:

框中输入条件表达式NPARTS(buffera2)>0,即当垃圾箱buffera2中的垃圾数量大于零时,能够装载;装载数量等于Quantityto框中的变量loadnum的值;装载的时间需要TimetoLoad框中的变量loadtimea

(1);装载的源在InputLoadingRule规则中进行设定,为“PULLfrombuffera2”,从垃圾箱buffera2中收集。

7.road7_t的设定

车辆每次到达路径road7_t的末端时,都要进行卸载处理,所以对路径road7_t的详细设计项目包括卸载所需的时间,卸载模式等。

通过路径road7_t的Generaldetail页的actionsonfront中设定卸载所需的时间,程序如下:

IFVEHICLE(road7_t,1)=dumpcart1

unloadtime=3+6*NPARTS(dumpcart1)/1000/laborneeda

dayunloadtimea=dayunloadtimea+unloadtime

ELSE

unloadtime=2+6*NPARTS(dumpcart2)/1000/laborneedb

dayunloadtimeb=dayunloadtimeb+unloadtime

ENDIF

 

程序解释:

(1)第一行至第三行,根据函数VEHICLE()的结果,如果到达车辆是dumpcart1,就通过车辆dumpcart1中所装载的垃圾数量NPARTS(dumpcart1)、车辆dumpcart1的随车工作人员数laborneeda来确定卸载时间unloadtime(第二行),然后统计车辆dumpcart1的总的卸载时间dayunloadtimeb(第三行)。

(2)第四行至第七行,否则,也就是到达的车辆是dumpcart2,就通过车辆dumpcart2中所装载的垃圾数量NPARTS(dumpcart2)、车辆dumpcart2的随车工作人员数laborneedb来确定卸载时间unloadtime(第五行),然后统计车辆dumpcart2的总卸载时间dayunloadtimeb(第六行)。

(3)图12-3是路径road7_t设置中的另一项内容,就是车辆卸载的相关内容。

在选中UnloadingEnabled(能够卸载)前的复选框后,该页面上的其他选项将能够被用户设置。

卸载模式(TransferMode)也有三种模式if、call、always,我们选择模式always,只要车辆到达路径road7_t的末端,就进行卸载活动。

卸载数量Quantityto设定为All,就是卸载车辆上的所有垃圾。

卸载时间Timeto设定为变量unloadtime,决定本次卸载所需要的时间。

停车Park设定为公司停车场corppark,决定在当天回收任务完成后,车辆泊放的位置。

卸载到什么地方,将由“outputunloadingrule”中的程序决定,程序为:

pushtoship,将所有垃圾送出系统。

图12-3路径卸载Unloading页框界面

17.5.4数据处理子模块

每天车辆完成收集工作完成后,驶向垃圾处理公司停车场停泊时,都将进行一些数据统计和处理活动。

这些程序写在路径road7_0的“ActionsonFront”中,程序及其说明如下:

 

程序解释:

(1)第一行至第十一行,如果即将停泊的车辆是dumpcart1,同时系统此时对车辆dumpcart1的需求是零(第三行);先统计车辆dumpcart1在当天收集工作的完成时间,并判断是否超过了12点,然后计算当天的时间惩罚成本timecost(第三至第六行);统计车辆的运行距离(第七至第八行);对两个变量置零(第九至第十行)。

(2)第十二行至第二十二行,统计如果即将停泊的车辆是dumpcart2的一些数据,解释同dumpcart1一样。

17.5.5目标函数objfun()中的程

 

sumcost=0!

统计总费用的变量置零

sumcost=initialcosta+initialcostb+sumcost

将车辆的购置成本加到总费用变量中

sumcost=(laborneedb+laborneeda)*60*(runtimea

(2)+1)+sumcost

!

将工作人员工资添加到总费用变量

sumcost=DISTANCE(dumpcart001)/10*permilecosta+DISTANCE(dumpcart002)/

10*permilecostb+sumcost

!

将车辆的运行费用添加到总费用变量

sumcost=timecosta+timecostb+

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2