物流仿真实训报告(3)

2019-08-30 18:32

根据垒局表来设定托盘包装的货物的个数,从不同的“source”中获取不同数量的货物。 实验仿真运行至少14400单位时间,然后停止。在完成建模后,分析模型产生的一些统计数字。可以根据以前学习的内容来分析数据,修改和完善模型方案,完成实验报告。 实验报告

记录实验过程及心得体会。 3.9.6设施选址优化仿真实验

实验目的

实现复杂的编程逻辑,通过触发器函数和代码编辑窗口完成开发应用。通过仿真运行可以找到需要建立的新设施地址,该地址能使得物流网络的总体收益最大化。 背景案例

在物流系统中,物流设施地址的选择,是物流系统优化的一个具有战略意义的问题,物流设施的建设与运营需要耗费大量的资源。因此,这些设施的选址十分重要。科学、合理的设施选址可以有效地节约资源、降低物流成本、优化物流网络结构和空间布局,有助于提高物流经济效益和社会效益,确保提供优质服务,是实现集约化经营、建立资源节约型物流至关重要的一步。

有关设施选址问题,国内外学者都进行了大量的研究,从简单的选址因素分析、选址原则的制定到多层次、模糊的综合指标评判与决策,从重心法到多元离散选址模型,最后定性分析与定量模型相结合,各种研究方法从不同的角度和层次为设施选址的规划决策提供理论依据。但上述研究在考虑现实的因素和条件时或多少地存在着一些欠缺与问题。 通过软件仿真进行设施选择规划是一个很好的方法,在仿真模型中可以考虑多现实因素和条件,并且可以突破数学模型解析法求解难度限制,使问题得到较好解决。本案例是一个简单的示范,主要探讨仿真方法的应用。案例中对很多实际背景进行了简化,比如将需求点的需求量设为固定,但该模型处理来自多个设施地址的需求可变的情况。 实验内容及步骤

假设在印度,有四个需求点城市,分别是Delhi,Mumbai,Kolkatta,chennai,现在需要建立一个集中库存点以进行配送作业,假设各需求点需求量已知,要求建立仿真模型,并通过仿真运行,可以找到需要建立的新设施地址,该地址能使得物流网络的总体收益最大化。 主要建模实验过程如下 (一)仿真实体使用

通过导人现有的实体,建立模型树。 {二)使用全局表

建立四个需求城市和候选设施的地址全局表,列1表示x坐标,列2表示y坐标,列3表示需求量。

建立各城市需求点的运输费率和总需求量。其中列1表示运输费率,单位每公里每单位的运输成本,列2表示相对于需求量Dn的货物单位。

建立总成本计算的全局表,行表示迭代次数,列1和列2表示迭代前的设施地址,列3表

示总成本,列4和列5表示选代后的新设施地址。

建立表示计算结果的设施地址,相对于四个需求城市的距离。 建立表示仿真距离单位与实际距离之间的比例。 主要代码编写与运行结果

1待定设施的触发器编码。在名为“NewFacility”的发生器的流输出域选择“Send the flowltem to the port number matching the number of its itemtype.”,并且选择“use transport”,在“request transport from”域选择“Call for a transport connected lo。port number defined by the value of the flowitem?s itemtype”,同时在触发器“OnExit”域中,加人以下代码: Fsnode*item=parnode(1); Fsnode*current=ownerobject(c);

unsigned int port=(unsigned int)parval(2); item= item;

colorarray(item ,getitemtype(item)); //PROSESTART //计算总成本并写入表中 //PROSEEND //PARAMSTART //PARAMEND //PROSESTART //PROSEEND

chat*tablename=”TotalCost”; 目7—50 NewFacillty界面

double fm,TC=0,xl,yl,xtp=0,ytp=0,bp=0;

const int colunlns=0;

fm=getnodenum(stats_output(current)j; if(fmod(fm,4.0)==0.0) {

pt(“1st:”);pf(fm);pr(); //计算总成本

for(Int n一1;n<一4:n++)

TC—add(TC.gettablenum(“XYCo”.n.3)?gcttablenum(”TCost”,n,1)? gettablenum(”TCost”,n,2))); //获取新设施的地址

[or(Int x=1;x<一4;x++)

Xtp=xtp+div((gettablenum(”TCost”,x,1)*gettablenum(”TCost”,x,2)*gettablenum(”XYCo”,x,1)),gettablenum(”XYCo”,x·3));

Ytp=ytp+div(gettablenum(“TCost”,x,1)*gettablenum(”TCost”,x,2)*gettablenum(”XYCo”,x,2)),gettablenum(”XYCo”,x,3));

bp=bp+div((gettablenum(”TCost”,x.1)*gettablenum(”TCost”,x,2))*gettablenum(”XYCo”,x,3)); }

pt(”xtp,ytp,bp:”);pf(xtp);pt(”,”);pI(ytp);pt(”,??);pf(bp)}pt(“,”);pr(); x1=div(xtp,bp); yl=div(ytp,bp);

pt(”New X1,Y1:”);pf(x1);pt(”,”);pf(y1);pr(); double rows=gettablerows(tablename); double curR=getlabelnum(current”currow”); settablesize(tablename,curR,columns);

setnodename(node(concat(“MAIN:/1/3/1/4/3>2/1/”,numtostring(curR,0,0)),model()),strquote(concat(“Iteration”,””,numtostring(curR,0,0)))); //写入表并进行更新

settablenum(tablename.cuR,1,xloc(current)); settablenum(tablename,curR,2,yloc(current)); settablenum(tablename.curR,3,TC); settablenum(tablename,curR,4,x1): settablenum(tablename,curR,5,y1); setlabelnum(current,”currow”,curR+1); //移动设施到新的地址(迭代) setloe(current,xl,yl,0.1);

if(gettablenum(“TotalCost”,curR,1)==gettablenum(“TotalCost”,curR,4&gettablenum(”TotalCost”,curR,2)——gettablenum(”TotalCost”,curR 5)) {

stop();

string loc1=concat(strquote(numtostring(gettablenum(”Distance”,1,1),

0,0)),”Kms”,”>”,”FromDelhi”,strascii(13));

string loc2=concat(strquote(numtostring(gettablenum(”Distance”,1,2),0,0)),”Kms”,”>”,” From Mumbal”,strascil(13));

string loc3=concat(strquote(numtostring(gettablenum(”Distance”,1,3),0,0)),”Kms”,”>”,”From Koklatta”,strascii(13));

string loc4=concat(strquote(numtostring(gettablenum(”Distance”,1,4),0,0)),”Kms”,”>”,” From Chennai”);

msg(”Finished Model Run”,concat(”Model has got the New Facility Location situated at:”,strascii(13),strquote(1oc1),strquote(1oc2),strquote(Ioc3),strquote(1oc4)));

2城市运输工具代码编写。对于所有的运输工具设置参数项. 其中在“Break to”requirement(中断响应)域编辑代码如下 Fsnode*activets=parnode(1); fsnode*current=ownerobject(c); P¨PROSESTART

//仅执行新任务序列(非部分完成顺序) //PROSEEND //PARAMSTART //PARAMEND //PROSESTART //PROSEEND

Fsnode*tsqueue=gettasksequencequeue(current);

Fsnode*returnts=NULL:

for(int index=1;index<=content(tsqueue)&&! returnts;index++) {

Fsnode*cunrs=rank(tsqueue,index);

1f(gettotalnroftasks(curts)==getnroftasks(curts)) Return=curts; }

Returnts tonum(returnts);

仿真运行结果。在每一个城市需求点queue的Maximum content参数要求足够大,比如设为10000,其他采用默认参数。仿真运行过程事实上是程序的迭代寻址优化,最终得到新的设施地址。同时该数据已写入表中。

写出仿真模型的建立过程,并配置Vc++编译环境,然后输人相关代码,并编译调试,进行语法与语义检查,在运行正确后,考虑程序算法的实现过程,并思考进一步的优化方法。完成实验报告。 实验报告

记录实验过程及心得体会。


物流仿真实训报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:探究摩擦力的大小

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: