垃圾回收物流仿真系统设计.docx

上传人:b****8 文档编号:10079096 上传时间:2023-02-08 格式:DOCX 页数:20 大小:66.17KB
下载 相关 举报
垃圾回收物流仿真系统设计.docx_第1页
第1页 / 共20页
垃圾回收物流仿真系统设计.docx_第2页
第2页 / 共20页
垃圾回收物流仿真系统设计.docx_第3页
第3页 / 共20页
垃圾回收物流仿真系统设计.docx_第4页
第4页 / 共20页
垃圾回收物流仿真系统设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

垃圾回收物流仿真系统设计.docx

《垃圾回收物流仿真系统设计.docx》由会员分享,可在线阅读,更多相关《垃圾回收物流仿真系统设计.docx(20页珍藏版)》请在冰豆网上搜索。

垃圾回收物流仿真系统设计.docx

垃圾回收物流仿真系统设计

文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256)

 

垃圾回收物流仿真系统设计

第十一章垃圾回收物流仿真系统设计

垃圾回收物流系统介绍

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

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

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

本节内容可以参看随书光盘models/垃圾回收仿真文件夹下的,模型运行结果参看此目录下的文件。

数据信息

仿真系统涉及的数据信息如下:

地理及需求信息

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

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

表收集点信息

收集点

名称

收集点居民数people(i)(千人)

距离停车场距离distance(ip)(km)

距离垃圾转运站距离distance(it)(km)

Dump001

6

16

Dump002

16

27

Dump003

26

24

Dump004

38

36

Dump005

28

26

Dump006

16

14

Dump007

10

8

表点间距离

路径起点

路径终点

距离(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)

与收集车辆有关的信息

固定成本[price(i)]:

收集车辆的购买费用;

可变成本[cost(i)]:

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

行驶速度:

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

收集时间[loadtime(i)]:

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

卸载时间[unloadtime(i)]:

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

具体信息如表所示:

表收集车辆信息

车辆

名称

载重

t

固定成本

万元

可变成本

元/km

载重速度

km/h

空载速度

km/h

人员

人员工资

元/天.人

收集时间

min

卸载时间

min

车1

X1

2+X1

X1

60

72

P1

60

3+y*6/P1

3+X1*6/P1

车2

X2

2+*X2

X2

60

72

P2

60

2+y*8/P2

2+X2*6/P2

说明:

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

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

3,4或5吨;X2取值:

;2;;

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

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

与垃圾相关的信息

人均垃圾量:

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

垃圾比例:

各种垃圾成分所占比例。

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

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

2。

收集垃圾的成本函数

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

TLC=车1成本+车2成本

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

即:

TLC=CC1+CC2

CC[i]=X[i]+V[i]+S[i]+P[i]*365*60

S[i]=(runtime[i]-240)*m

S[i]为垃圾回收的服务时间成本,m为收集时间对服务时间成本的惩罚因子。

垃圾回收公司在十二点之前收集完毕,社会效应好,给予奖励;在十二点后完成,社会满意度低,影响公司信誉,成本增加。

runtime[i]为垃圾车将垃圾全部回收完成的最终时间,也即垃圾车每天的运行时间;

系统逻辑结构

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

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

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

叫车模块在垃圾存放入各个小区的两个垃圾箱过程中,根据每种垃圾的总量以及每种垃圾车的载重量,生成叫车的次数。

收集模块叫车次数确定之后,车辆根据需求,沿着最短路径依次收集垃圾。

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

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

数据处理模块每天车辆收工时,

仿真模型的建立

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

具体步骤如下:

元素定义Difine

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

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

表实体元素列表:

元素名称

类型

说明

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的回收

表逻辑元素—变量列表:

变量名称

类型

说明

people(7)

integer

各小区的居民数量

capacitycart

(2)

integer

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

ndemand

(2)

integer

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

labor

(2)

integer

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

Salary

Real

工作人员每天工资

price

(2)

Real

两种垃圾车的购买价格

costrate

(2)

Real

两种垃圾车的运行费率

unloadspeed

(2)

Real

两种垃圾车的空载速度

loadspeed

(2)

Real

两种垃圾车的实载速度

loadnum

(2)

integer

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

nfree

(2)

integer

两车辆剩余载重能力

Nparts7)

integer

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

loadtime

(2)

Real

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

unloadtime

(2)

Real

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

runtime(2,3)

Real

存储车辆的时间参数,runtime(k,1)存储仿真钟的当前数值,runtime(k,2)存储车辆k在当天的运行时间,runtime(k,3)存储车辆k在仿真过程中总的运行时间

Timeweigh

Real

时间惩罚因子

timecost

(2)

Real

时间惩罚成本

sumcost

Real

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

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

元素显示display

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

图垃圾回收物流仿真系统可视化界面

元素详细设计

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

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

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

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

personum

(1)=

personum

(2)=

personum(3)=

personum(4)=

personum(5)=

personum(6)=

personum(7)=

!

给各小区的人数赋初值,单位:

千人

FORnum=1TO7

meandump(num)=*personum(num)*1000

NEXT

!

分别生成每天七个小区产生垃圾的均值

setcapacityofdumpcart1tocapacitycart

(1)

setcapacityofdumpcart2tocapacitycart

(2)

!

分别设定两个车辆的载重量,由变量数组capacitycart

(1)和capacitycart

(2)决定。

unloadtime=0!

卸载时间

FORnum=1TO7

moddemanda(num)=0

moddemandb(num)=0!

决定叫车次数的变量

NEXT

FORnum=1TO4

roadchoicea(num)=0

roadchoiceb(num)=0!

最短路径控制变量

NEXT

FORnum=1TO3

runtimea(num)=0

runtimeb(num)=0!

车辆运行时间控制变量

NEXT

intervaltime=1440!

每天的分钟数

timeweigh=5!

时间惩罚因子

laborneeda=1

laborneedb=1!

两辆车随车工作人员数

!

对变量赋初始值

各个小区垃圾的详细设计

表垃圾元素详细设计列表

Name

Firstarrival

Interarrival

Lotsize

To

Dumpa1

1440

ERLANG(meandump

(1)/3,3,1)

PUSHtobuffera1

Dumpa2

1440

ERLANG(meandump

(2)/3,3,2)

PUSHtobuffera2

Dumpa3

1440

ERLANG(meandump(3)/3,3,3)

PUSHtobuffera3

Dumpa4

1440

ERLANG(meandump(4)/3,3,4)

PUSHtobuffera4

Dumpa5

1440

ERLANG(meandump(5)/3,3,5)

PUSHtobuffera5

Dumpa6

1440

ERLANG(meandump(6)/3,3,6)

PUSHtobuffera6

Dumpa7

1440

ERLANG(meandump(7)/3,3,7)

PUSHtobuffera7

Dumpb1

1440

ERLANG(meandump

(1)/3,3,8)

PUSHtobufferb1

Dumpb2

1440

ERLANG(meandump

(2)/3,3,9)

PUSHtobufferb2

Dumpb3

1440

ERLANG(meandump(3)/3,3,10)

PUSHtobufferb3

Dumpb4

1440

ERLANG(meandump(4)/3,3,11)

PUSHtobufferb4

Dumpb5

1440

ERLANG(meandump(5)/3,3,12)

PUSHtobufferb5

Dumpb6

1440

ERLANG(meandump(6)/3,3,13)

PUSHtobufferb6

Dumpb7

1440

ERLANG(meandump(7)/3,3,14)

PUSHtobufferb7

垃圾名称

*

一天的分钟数

Meandump为通过各小区人数计算出来的变量数组

决定垃圾的存放

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

运输车辆详细设计

表运输车辆详细设计列表

Name

Unloadspeed

Loadspeed

to

Dumpcart1

1.2

1.0

PUSHtocorppark

(1)

Dumpcart2

1.2

1.0

PUSHtocorppark

(2)

车辆名称

空载速度(km/min)

实载速度

生成时,放入公司停车场的车位

垃圾箱详细设计

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

oninput:

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中继续计算并叫车。

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)

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

第一行:

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

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

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

下面以road2_3为例,加以说明其逻辑流程。

其它路径类似,可以在路径的generaldetail中的outputto中加以查看。

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

第一行到第六行:

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

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

第七行到第十二行:

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

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

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

路径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),它是本次垃圾收集量、随车工作人员数以及收集时间系数的函数。

图路径geta2中的loading详细设计图

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

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

TransferMode(装载模式)有三种:

if、call、always。

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

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

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

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

程序解释:

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

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

图是路径road7_t设置中的另一项内容,就是车辆卸载的

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1