全球FlexSim系统仿真中文论坛

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

作者: diudiu123    时间: 2013-6-21 23:04
标题: 关于队列比较的求助
现在有三个队列长度 a,b,c,n有1,2,3三个取值
+ C' h& U2 M: I4 u   当a=b=c=0时,n=3
4 N0 p( ]4 u, F   当a=b=c不等于0时,n=1
. a! c" p" J' C  E2 K* x   当a、b、c不等的时候,如果a最小n=1,b最小n=2,c最小n=3
) K$ z% _3 j2 J   求助flexsim里这个代码怎么编
作者: 天性518    时间: 2013-6-23 11:46
1# diudiu123
1 q, |" B) o9 T$ [: b' ]
6 V7 G: T5 A* w8 b& p7 Z0 `( A' Y/ H8 @+ C. D) ~* d

1 p9 x. {, P8 ]1 H" G你学过C语言吗?这在C里面是非常简单的了,至于在Flexsim里面如何写呢?我这里给你说一下思路,具体实现,你下来慢慢写。% ]3 O7 T$ s$ _5 k1 u" ~7 u& f* s. r
1、三个队列,就用三个暂存区;
6 ]& A" @+ F. F1 {+ {) T2、在其中一个暂存区写上相应代码(思路:a、首先获取每个暂存区中临时实体的数量;b、再按照你的要求写上代码即可,用if简单些);
6 y; e8 S  T7 e3、n的值可以通过设置一个标签来获取;
作者: 慧娴亚伦    时间: 2013-6-23 13:05
队列是指暂存区排队还是传送带排队呢?
3 ~& B' C# X6 @2 q6 Q我的建议是可以返回一个队列目前的数值,以暂存区为例
. b# S; |0 m5 _9 l5 U; b5 ytreenode item = parnode(1);; }) v0 Z( `2 ?1 ?1 w" g$ `
treenode current = ownerobject(c);3 O0 k; W- X. t$ K% a6 U
int port = parval(2);; ]2 Y: X/ w0 @
int aa = getinput(node("/a",model()) - getoutput("/a",model());4 Y$ d& V# f! K+ D9 P7 O/ O! f5 g
int bb = getinput(node("/b",model()) - getoutput("/b",model());
5 m: \; F" k- {- Y7 B! o( rint cc = getinput(node("/c",model()) - getoutput("/c",model());
) c( |. l; ~- B. b2 F2 H2 |! kif (aa=bb && bb=cc && cc==0){n=3;}
( ^& x5 X8 O, Y6 m4 oelse if (aa=bb && bb=cc){n=1;}
4 M' `9 Q% f# P* q4 Relse if (aa<bb && bb<=cc){n=1;}
1 T1 w8 q/ {7 X: L& N/ B: yelse if (bb<aa && aa<=cc){n=2;}
* p- J& Z+ E$ Belse if (cc<aa && aa<=bb){n=3;}/ H0 S  O4 g( `# L# c1 L. Q4 r' v  m

* }5 Z' O; n! ~" q7 G由于我也是初学并且也不知道你的n这里代表什么,所以这个代码可能有问题,只是单纯提供给你一个思路,希望有帮助。
作者: diudiu123    时间: 2013-6-23 21:30
2# 天性518
# e8 [3 j. Z( ~* A; }8 J4 j  W  q4 e8 N- z! Z7 Y9 l7 I/ b

( u1 |( E2 i9 C. F0 c" r唉,学校学的vb,然后就直接flexsim了,代码这边太不适应了,还在慢慢学,谢谢了啊
作者: diudiu123    时间: 2013-6-23 21:31
3# 慧娴亚伦 - a& m; c/ j2 i

" t% R# X  V2 H! {
, [" W+ _5 e* g就是暂存区排队了,就是以前学的vb,现在编译这块不适应,努力学习中
作者: diudiu123    时间: 2013-6-23 21:44
3# 慧娴亚伦 2 q9 X' Q+ O  Z+ ]/ M
" R. E/ f! g2 t( _2 ?$ ^$ Q

: U7 Q, q8 M% O! i; x呃,还是不成功,就是卡车到三个码头卸货,如果有两个以上码头空闲,卡车选择码头的顺序是(3,2,1)。如果所有码头都忙,则选择队长最小的码头。如果有两个以上码头的队长一样,选择码头的顺序是(1,2,3),其他都没问题,就这一小块代码写不明白了
作者: diudiu123    时间: 2013-6-23 21:58
3# 慧娴亚伦
+ S: Q) G, t, v0 N; v0 p5 {0 M" i! w8 r7 A6 H9 j
9 Y: s1 [1 L" Y4 M4 b
谢你啦,我在你的代码的基础改了改,出来了
/ N7 h* u5 u* N! c2 |+ iif (aa==bb && bb==cc && cc==0){n=3;}
+ K+ j, |4 u6 v$ Celse if (aa==bb && bb==cc){n=1;}' {0 E6 b% i" b" R/ q  ^5 X$ @
else if (aa<=bb && aa<=cc){n=1;}
& p* ?9 U. c3 K8 y2 Felse if (bb<=aa && bb<=cc){n=2;}+ L$ l9 j) C/ c' q$ r" W( L
else if (cc<=aa && cc<=bb){n=3;}
1 Q, ]8 d- [' Z) a, g2 @+ ]% X7 l; A) k   setitemtype(item,n) ;0 k! O. h6 D; f
这样就好了




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