模型1
在第一个模型中,我们将研究三种产品离开一条生产线进行检验的过程。有三种不同类型的临时实体将按照正态分布的时间间隔到达。临时实体的类型符合1、2、3 的均匀分布。当临时实体到达时,它们进入暂存区待检验。有三个检验台。一台用于检验类型1,另一台检验类型2,第三台检验类型3。教验后的临时实体放到传送带上。通过传送带,送到吸收器离开模型。
模型1数据
发生器到达速率:normal(20,2)秒暂存区最大容量:25个临时实体
检验时间:exponential(0,30)秒
传送带速度:1米/秒
参数及逻辑
发生器
离开触发:
代码
Object current = ownerobject(c); Object item = param(1); int port = param(2); { // ************* PickOption Start ************* // /***popup:SetLabelAndColor*/ /**设置标签和颜色*/ Object involved = /** \nObject: *//***tag:object*//**/item/**/; string labelname = /** \nLabel: *//***tag:label*//**/"Type"/**/; Variant value = /** \nValue: *//***tag:value*//**/duniform(1, 3, getstream(current))/**/; involved.color = Color.fromPalette(value); involved.labels.assert(labelname).value = value; } // ******* PickOption End ******* //
暂存区
Object item = param(1); Object current = ownerobject(c); /***popup:ByExpression*/ /**指定*/ double value = /** \nOutput Port: *//***tag:expression*//**/item.Type/**/; /** \n\nNote: The expression may be a constant value or the result of a command (item.Type, item.labelName, duniform(1,2), etc).*/ return value;
模型2
在模型1的基础之上,在模型的产品检验环节,将使用一组操作员执行预置工。这里共有两名操作员,每次使用其中一名进行预置。完成以后,就可以进行检验了,检验过程中不需要操作员在场。在开始预置之前,操作员必须将临时实体搬运到检测台。验完成后,临时实体自动移动到传送带
上。
当临时实体离开传送带后,将放置到一个暂存区,通过叉车把他们送到吸收器。
当暂存区1来货物时,任务分配器默认分配给操作员1,当到了产品检测环节时,操作员2过去进行检测10s(预置时间10s)。
模型3
学习内容:
- 如何使用全局表定义路径
- 如何设置叉车的行走路径
- 如何创建网络路径中的样条线
- 如何定制和输出报告
- 如何多次运行模型
根据货物类型分发至不同端口 ,在模型3中用3个货架代替吸收器,用来存储装运前的临时实体(见图3-1)。需要改变传送带1和3的物理布局,使它们的末端弯曲并接近暂存区。引用一个全局表,所有类型为1的临时实体都送到货架2,所有类型为2的临时实体都送到货架3,所有类型为3的临时实体都送。采用网络节点实体,建立叉车的网络路径,当它从传送带暂存区往货架运输临时类体时使用此网络路径。用实验器设置模型的多次运行,得出统计方差并计算关键绩效指标的置信区间。
标签使用模型
根据发生器的不同类型进行统计,并在临时实体上标注产生的次序,是第几个。
发生器的发生器设置创建触发:设置标签与颜色
离开触发根据代码设置:
发生器设置标签:
临时实体设置标签:
代码设置:
/**Custom Code*/
Object current = ownerobject(c);
Object item = param(1);
int port = param(2);
treenode thenode1 = current.labels["item1produced"];
treenode thenode2 = current.labels["item2produced"];
treenode thenode3 = current.labels["item3produced"];
double value = 1;
if(item.Type == 1){
inc(thenode1,value);
setlabel(item,"itemtypeorder",inc(thenode1,value));
}
if(item.Type == 2){
inc(thenode2,value);
setlabel(item,"itemtypeorder",inc(thenode2,value));
}
if(item.Type == 3){
inc(thenode3,value);
setlabel(item,"itemtypeorder",inc(thenode3,value));
}