人气 21849

FlexSim概念(2) [复制链接]

babyeric 2016-1-29 01:44:06
五、物品类型(itemtype)
  Itemtype的值存储在每个flowitem中。这个值在任何flowitem的进展都可以访问和/或改变。每一个flowitem 有自己的独特的itemtype值,也就是说,如果你改变一个flowitem的itemtype,它只会改变特定的flowitem的值,其他flowitems的itemtype的不会改变。这意味着itemtype的值完全取决于分析员。一般来说,它是一个描述了产品类型或类别的值。
  示例
  比如一个邮局,顾客进来要发送包裹和复制副本的。在这个模型中,flowitems或客户被分为两大类,即那些需要发送包裹的和那些需要拷贝副本的。itemtype值可以用来指派。例如,客户或flowitems,谁需要一个包可以给itemtype赋值1,顾客需要副本可以给itemtype赋值2。在FlexSim中,当flowitems首次被创建时,会同时设置它的itemtype值。在我们的示例中60%的客户是“包”客户,和40%是“复制”的客户。要做到这一点在FlexSim我们会去 Source's OnExit trigger ,通过单击图片访问的代码编辑器。然后添加命令:
  setitemtype(item, bernoulli(60, 1, 2));
  图片
  实现上述功能也可以通过,Source——Trigger——OnExit,点击图片,选择Set Type, Name or Label或者 Set Item Type and Color。
  这个命令将随机设置temtype值,flowitems离开Source时temtype值为1的占 60%的时间,为2的占40%的时间。需要两个  参数。第一个参数是设置itemtype值的对象,第二个参数值来设置对象的值。在这个例子中,第一个参数是“item”,或者当前退出Source的flowitem,因为我们是在退出Source时触发(参数“item”,稍后将详细讨论)。
  注意etitemtype的第二个参数,用到了bernoulli(伯努利) 命令。这个命令需要3参数和返回两个值中的一个。第一个参数是一个百分比值在0和100之间。第二个和第三个参数是“成功”和“失败”值,代表了两个可能的返回值。在这种情况下,60%的时间伯努利命令将返回一个1(参数2),其余的时间,它将返回一个2(参数3)。由于伯努利命令第二个参数setitemtype命令,itemtype值将被设置为任何返回的伯努利命令。由于伯努利命令是setitemtype命令的第二个参数,itemtype值将被设置为任何伯努利命令返回值,即1或2。每次flowitem创建并退出Source,exit trigger of the Source被触发。这意味着setitemtype命令在模拟过程中会执行很多次,每个执行过程将与一个flowitem有关。
  一旦itemtype的值初始化,模型中的逻辑可以根据itemtype值实现。在这个例子中,“包”客户可能需要 3分钟的服务,而“副本”客户服务可能需要5分钟。你会在处理器对象的Process Time通过编写FlexScript代码实现这种差异。代码应该像这样:
  if(getitemtype(item)==1) return 3;
  else return 5;
   图片
  这段代码主要是说:如果flowitem的itemtype 值(getitemtype(item))等于1(这是一个“包”客户),然后处理时间返回3的。否则(这是一个“复制”客户)返回5。
  这个例子可以做没有编写任何代码,使用FlexSim的pick-lists定义你的逻辑。
  注意:1、模型中的每个flowitem都有itemtype值。然而,FlexSim对象没有。
       2、itemtype是双精度浮点数。这意味着itemtype不仅可以包含整数值,1,2,3,等等,它还可以保留浮点值像1.5或99.9。然而,itemtype不能持有字符串值。
       3、itemtype值不会定义flowitem的视觉外观。这可以通过Source的参数窗口选择设置flowitem类型,等箱、手提包或托盘。
      图片
六、标签
  标签也是在建立FlexSim模型中一个关键概念。标签非常相似itemtype,存储数据在对象中,可以用来决策模型。然而,有一些关键的差异,下面列出:
  1、每个标签都有一个名字。
  2、不像itemtype只属于flowitem,标签可以根据对象和flowitems(例如Sources, Queues or Processors)。
  3、一个对象可以有很多的标签选。
  4、标签可以有数字或字符串值,而itemtype只能是数值。标签甚至可以包含列表或表的值。
  5、你必须通过其属性窗口明确得添加标签到对象,不像itemtype值,自动包含在每个flowitem中。
  6、当在Flowitem Bin添加一个flowitem的标签时,标签是特定用于该flowitem类。这意味着如果你对 Pallet flowitem类添加一个标签,只有flowitems创建Pallet 类将有标签。
  
  值
  对于flowitems,您所指定的标签将成为所有已经创建的flowitems的默认值,但是您可以更改该值。FlexSim对象的标签,标签的值不变,除非你用对象内的逻辑变化改变标签的值。
  标签值不会重置,除非在标签选项卡页面中勾选Automatically Reset Labels 。或者在对象的OnReset trigger添加代码或者picklist选项触发重置标签的值。当你按下重置按钮重置一个模型,两种方法将设置标签回到初始值。
  
  示例
  为flowitems添加标签,在去FlowItem Bin,选择在Source中你创建的flowitem类型,从快速属性视图编辑标签。或者,您可以按属性按钮(双击)显示Flowitems属性,编辑标签选项卡。您可以添加字符串或数字标签。
  图片
  (点击上图的Properties也可以打开下图)
      图片   
  这样,每个从Source出来的Box类型的flowitem标签都是“慧”。
  标签由标签名称和对应的标签值组成。标签分为数值标签和字符串标签。如果我们希望对临时实体设置一个数值标签, 名称为 "nrofcopies",其对应的值在1~1000之间随机产生。我们可以在Source的OnExit编辑代码中输入:
  setlabelnum(item, "nrofcopies", duniform(1,1000));
  第一个参数是设置对象,第二个参数是标签的名称,第三个参数是此标签所附的值。duniform(min,max)函数是离散均匀分布。min和max都是整数,函数返回min~max之间的一个整数。而函数uniform() 是均匀分布,可以取得小数。
  如果我们要获得临时实体的标签值可以用如下示例:
  getlabelnum(item, "nrofcopies")
  其含义参数含义与setlabelnum 相同。
  除法操作注意:如果我们要表达6数以50,不能写成6/50,而要写成6.0/50.0。前者系统会默认返回一个整数,后者返回0~1的小数。
呼唤 2017-8-11 06:46:56
大家都活跃起来啊,制造业需要大家
回复

使用道具 举报

快乐小魔女 2019-5-23 09:39:29
看起来好像不错的样子
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

QQ|手机版|精益人 ( 沪ICP备19004111号-1 )|网站地图

GMT+8, 2024-12-22 13:32 , Processed in 0.274057 second(s), 25 queries .

Powered by Lean.ren X3.5 Licensed  © 2001-2030 LEAN.REN