|
本帖最后由 lisa527 于 2013-3-18 13:43 编辑
标签表模型:tablelabel+user commend.fsm
* 模型描述:
* 每个仿真时间单位发生一个产品,产品被送至下游区域进行排队打包,然后成批离开。临时实体的类型服从1到16的均匀分布。
* 这里提供了两条独立的由暂存区组成的打包线,产品来自于上游的传送带。按照临时实体类型匹配的原则,将临时实体发送到对应的暂存区,完成打包作业。如果对于某个类型的临时实体开没有开始打包的工作,则将临时实体发送到最近的空闲的暂存区。
* 否则发送到接收的临时实体数量较少的一侧。
* 为了避免相同类型的临时实体在一起排队,也因为不同类型的临时实体的打包尺寸不同,需要使用全局表定义批量(请看下一个幻灯片)。
* 流程仿真:
1. 在buffer设置一个标签表,用来记录每一种item的去向。在onreset 和sink 的on entry完成标签表的维护。
2. 每次从buffer释放一个item的时候,执行如下判断:
1. 如果标签表中这个类别的item有queue正在收集-->发往该queue
2. 如果标签表中这个类别的item没有去向-->发往总数较少的线
3. 在conveyor的flow里面对item进行判断:
1. 如果queue中有这个类别正在收集-->发往该queue
2. 如果没有,发往距离最短的queue:最短路代码:
double long= 10000000000;
double distance= distancetotravel(point,outobject (current ,port ));
if (distance<long)
{trueport=port;
long=distance;}
}
* 笔记:
1. 标签表的格式:
* 以item类别为行标题,去向为值,可以写作32个元素的表,或者32*1或者16*2
* 以每个queue作为行标题,item类型为值,也要32个元素
2. 用户函数
* 设置参数类型
* 设置返回值类型
* 在代码里面写一个return,就是这样
3. 设置计数函数的时候一定要int i=0;记得初始定义! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|