全球FlexSim系统仿真中文论坛

标题: 关于队列比较的求助 [打印本页]

作者: diudiu123    时间: 2013-6-21 23:04
标题: 关于队列比较的求助
现在有三个队列长度 a,b,c,n有1,2,3三个取值3 ?3 J+ r% s3 P% G; H4 Z
   当a=b=c=0时,n=3* M1 v% Z/ T( _- B
   当a=b=c不等于0时,n=1
9 @( U- V1 u& E$ b# f  B! ]   当a、b、c不等的时候,如果a最小n=1,b最小n=2,c最小n=37 z# u# S: \3 q! T' E
   求助flexsim里这个代码怎么编
作者: 天性518    时间: 2013-6-23 11:46
1# diudiu123 # C8 s# G- v, I* H; U' n/ K( }

1 e! _$ Y( G4 e# w" U
! I1 V, z  k) o) _8 ~2 h  V1 J" z4 }5 d9 n6 {7 E3 a# f; z
你学过C语言吗?这在C里面是非常简单的了,至于在Flexsim里面如何写呢?我这里给你说一下思路,具体实现,你下来慢慢写。
0 P/ _/ f$ j8 X8 _6 k" z1、三个队列,就用三个暂存区;8 C, e# S. P4 G8 F
2、在其中一个暂存区写上相应代码(思路:a、首先获取每个暂存区中临时实体的数量;b、再按照你的要求写上代码即可,用if简单些);
6 }3 T$ F; E% m- C% l( r  L3、n的值可以通过设置一个标签来获取;
作者: 慧娴亚伦    时间: 2013-6-23 13:05
队列是指暂存区排队还是传送带排队呢?, y4 v1 v2 W# l9 x4 f5 w, {$ [& D% ]
我的建议是可以返回一个队列目前的数值,以暂存区为例3 ?. D5 l7 a$ D. K  |
treenode item = parnode(1);
5 [5 y6 z. W; g6 K& qtreenode current = ownerobject(c);) \/ X" e  M) m8 ?: c( V
int port = parval(2);& Y( h& x6 V( r
int aa = getinput(node("/a",model()) - getoutput("/a",model());1 s) E7 P% \, |# j0 o
int bb = getinput(node("/b",model()) - getoutput("/b",model());
" D+ d7 Y6 u5 E/ \- fint cc = getinput(node("/c",model()) - getoutput("/c",model());. ?8 p% t. _; J$ m( q* ~, f) z
if (aa=bb && bb=cc && cc==0){n=3;}
6 v2 o5 h; d9 Yelse if (aa=bb && bb=cc){n=1;}
9 Z1 y8 C, `+ _$ }, selse if (aa<bb && bb<=cc){n=1;}
: R5 H0 Z7 `# L. n$ ?else if (bb<aa && aa<=cc){n=2;}. ^" w. r' I/ G: C; C
else if (cc<aa && aa<=bb){n=3;}: j( [% W) |$ }" q

( ^- r) R# u3 R; J由于我也是初学并且也不知道你的n这里代表什么,所以这个代码可能有问题,只是单纯提供给你一个思路,希望有帮助。
作者: diudiu123    时间: 2013-6-23 21:30
2# 天性518
4 p3 d! l) N  m2 b+ A) c* s4 a
* Y- K# g. m. t  k& p
1 D' a  q8 l: B& b3 z7 H+ }唉,学校学的vb,然后就直接flexsim了,代码这边太不适应了,还在慢慢学,谢谢了啊
作者: diudiu123    时间: 2013-6-23 21:31
3# 慧娴亚伦 7 ]6 ^1 Y) }' x( }8 P: L

( b' K( f' _6 `8 d" @% t: y$ U0 f' Z$ H0 q: t- s
就是暂存区排队了,就是以前学的vb,现在编译这块不适应,努力学习中
作者: diudiu123    时间: 2013-6-23 21:44
3# 慧娴亚伦
/ {+ g2 p& u* N0 p
' S2 ~, O. K" `: p0 U, Z; S4 z4 z6 y/ f, c5 E
呃,还是不成功,就是卡车到三个码头卸货,如果有两个以上码头空闲,卡车选择码头的顺序是(3,2,1)。如果所有码头都忙,则选择队长最小的码头。如果有两个以上码头的队长一样,选择码头的顺序是(1,2,3),其他都没问题,就这一小块代码写不明白了
作者: diudiu123    时间: 2013-6-23 21:58
3# 慧娴亚伦
6 c( Y: {0 X% ^, y* u+ B* V0 t$ k! C
. o, F' B: c" q+ f2 v9 h2 l
谢你啦,我在你的代码的基础改了改,出来了+ T$ S; b2 k( c* f2 }3 G2 T
if (aa==bb && bb==cc && cc==0){n=3;}7 U1 @# N4 h! W' M% c: M- e, N9 M
else if (aa==bb && bb==cc){n=1;}
) M. M8 G, P$ x, |& Lelse if (aa<=bb && aa<=cc){n=1;}
3 |( E: o. ?% M, t  Z3 m- R0 C2 gelse if (bb<=aa && bb<=cc){n=2;}
6 X' H3 C3 m: @3 Telse if (cc<=aa && cc<=bb){n=3;}1 x, t" s2 K2 [* ]" ?
   setitemtype(item,n) ;
4 c' O' Y* L9 E4 u# o这样就好了




欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/) Powered by Discuz! X3.3