全球FlexSim系统仿真中文论坛

搜索
查看: 9062|回复: 9
打印 上一主题 下一主题

发生器一次产生多个同类实体

[复制链接]
跳转到指定楼层
1#
hans_tigger 发表于 2015-9-23 18:02:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
2#
 楼主| hans_tigger 发表于 2015-9-23 18:03:47 | 只看该作者
7.3.4版本
3#
zorsite 发表于 2015-9-24 09:45:02 | 只看该作者

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
4#
慧娴亚伦 发表于 2015-9-24 21:20:10 | 只看该作者
感谢楼上两位的分享!
& T7 Q8 s4 r* X# x6 _, a再多嘴一句,使用6.0中文版的用户,该选项被误翻译为“批量加工”+ K) c! c( [5 I  E+ j  S
此外,我们还可以借助一个分解器来完成这个过程。
5#
zorsite 发表于 2015-9-25 01:26:31 | 只看该作者
自己整理了一下思路,才发现自带的代码是多么的精简,这就是高手与新手的差别啊~~
+ y; G4 {# N$ o# u以下是我按照自己的思路编写的代码:
  1. int batchnumber = 5;
    4 n" X; @0 Z- M9 G
  2. double cycletime = exponential(0, 4, 0);4 }& i$ e+ ^% g
  3. string labelName = "批次数量";  A3 L! Z5 U/ A- k. V
  4. treenode curlabel = assertlabel(current, labelName, DATATYPE_NUMBER);
    - F1 a- K8 r3 D8 N/ F

  5. 7 j+ D. I  H' ^, |+ A$ l7 _9 g
  6. if (time()==0)
    " q5 ?6 v& |7 s0 p# F; }3 `
  7. {
    8 r  N/ O8 w7 u: v, j4 k' U
  8.         setnodenum(curlabel,batchnumber);2 W$ z6 n, A# g; M$ V' I
  9.         return cycletime;; E1 }. H2 z5 \3 d. o
  10. }  p5 B; p0 |3 x% j' l3 K& e
  11. else ; ?' e7 ]3 ~7 M
  12. {
    : X! z) C3 E: k  @8 _
  13.                 if (getnodenum(curlabel)==1)
    " x: Q/ s% j6 i. |% E/ W- w" W( f
  14.                 //如果等于0,似乎是正确的,但是会比预期中的批次数量大1.
    % C& w7 F) I( E" v0 Z6 Z6 t3 _
  15.                 //原因在于只要激发了该触发,就一定会生成一个临时实体。
    1 m1 m% Q; |: r$ d7 G8 v; W
  16.                         {  ^. s" F) {/ \/ t4 u3 j0 X
  17.                                 setnodenum(curlabel,batchnumber);  ?  G. ~( k( V% x
  18.                                 //想要执行的语句一定要放在return前面。4 y. H- j" X( w& e/ c8 A
  19.                                 return cycletime;8 F- T8 x' R$ U. G6 [
  20.                         }$ z" S- {# u( x  T" q: L1 J$ x; x  E
  21.                 else ) a7 Z0 ]8 ]& }4 k! Y. `0 D
  22.                         {
    : w5 R0 w2 v) d8 [- [/ Y* W
  23.                                         inc(curlabel,-1);$ w9 ?: e+ v. L* V
  24.                                         return 0;                                                  5 ~0 x' O0 ]0 @/ {9 Y# T: A
  25. , g1 }0 B8 E9 b' p7 K  i
  26.                         }
    1 r, I5 }- j) @$ Y! H: {
  27. }
复制代码
以下是flexsim自带代码:
  1. int batchnumber = 5;6 }6 I! [# c. e* J6 |
  2. double cycletime = exponential(0, 10, 0);' z  M5 E6 H5 h4 O! b
  3. string labelName = "批次数量";
    7 ?% ]0 k4 F8 v* W  X9 Z
  4. & [+ H% v. ?5 Q' h: ~6 \0 `
  5. treenode curlabel = assertlabel(current, labelName, DATATYPE_NUMBER);+ J! T( m) s2 y  z5 f
  6. * e" G, J+ f! d1 B
  7. if (time()>0 && getnodenum(curlabel)>1) {6 c; p8 N0 v5 L0 V! ~5 V
  8.   inc(curlabel,-1);4 S5 \) `' a* K3 ?+ p
  9.   return 0;
    ) t/ z$ @: t. D  B# f# o& Y
  10. } else {# u* H/ B/ j* H$ f* d$ b& k6 Q+ W
  11.   setnodenum(curlabel,batchnumber);
    & y  G$ F5 Q5 V( _; D7 J
  12.   return cycletime;! V6 J; G$ [7 i  O$ z, H
  13. }
复制代码
6#
 楼主| hans_tigger 发表于 2015-9-25 01:35:36 | 只看该作者
谢谢大家,好好学习
7#
shiningcz 发表于 2015-9-25 10:39:50 | 只看该作者
学习了
8#
lulu-luka 发表于 2016-12-1 10:29:59 | 只看该作者
3# zorsite : j7 M8 I2 X# e
我想要实现发生器后接的暂存区或者货架上的货物一旦空了就触发发生器批量生产实体的功能,求指教~
9#
lulu-luka 发表于 2016-12-1 10:32:22 | 只看该作者
我想实现发生器后接的暂存区或者货架上实体数量为0时触发发生器开始批量生产输出实体的功能~求指教
10#
susan 发表于 2016-12-1 12:58:09 | 只看该作者
9# lulu-luka
3 G7 R* [* S' o7 C- ^4 q3 g: l- ^8 G- u
类似的问题论坛上其实有很多,您可以参考下这个帖子。http://www.flexsimasia.com/viewt ... =%D4%DD%B4%E6%C7%F8
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|全球FlexSim系统仿真中文论坛 ( 京ICP备14043114号-2 )

GMT+8, 2025-9-6 08:14 , Processed in 0.081194 second(s), 15 queries .

Powered by Discuz! X3.3© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表