全球FlexSim系统仿真中文论坛

搜索
查看: 6412|回复: 6
打印 上一主题 下一主题

关于队列比较的求助

[复制链接]
跳转到指定楼层
1#
diudiu123 发表于 2013-6-21 23:04:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在有三个队列长度 a,b,c,n有1,2,3三个取值
9 r- G* x  z: _% j2 a2 p1 z   当a=b=c=0时,n=3# N0 V* `7 A7 {+ P; k: E5 `; x
   当a=b=c不等于0时,n=10 A3 \- N5 N2 Q. G4 z4 e
   当a、b、c不等的时候,如果a最小n=1,b最小n=2,c最小n=3' C: j- F# N4 _
   求助flexsim里这个代码怎么编
2#
天性518 发表于 2013-6-23 11:46:14 | 只看该作者
1# diudiu123
8 E( z0 _+ Z, S7 f# b5 m: i% N2 n; ~- b
- b# z3 P  C; [+ @1 k& \  T  w
- \9 }: T3 P' F; [/ a% T6 F
你学过C语言吗?这在C里面是非常简单的了,至于在Flexsim里面如何写呢?我这里给你说一下思路,具体实现,你下来慢慢写。
* g+ g$ |* W+ W) m2 Q" }* C# x/ a3 b1、三个队列,就用三个暂存区;
! B  ?" Y9 w% k: {' b2、在其中一个暂存区写上相应代码(思路:a、首先获取每个暂存区中临时实体的数量;b、再按照你的要求写上代码即可,用if简单些);
8 g5 @: Q  j* ]1 u3、n的值可以通过设置一个标签来获取;
3#
慧娴亚伦 发表于 2013-6-23 13:05:34 | 只看该作者
队列是指暂存区排队还是传送带排队呢?: G/ c0 |  h- x$ k2 d
我的建议是可以返回一个队列目前的数值,以暂存区为例
4 e1 Y- f. E8 h, F# @5 S, @8 [( f5 Mtreenode item = parnode(1);
0 `9 p0 _$ d' j* K9 utreenode current = ownerobject(c);
$ K6 z2 l! G/ n% O" x* O2 ?% J: m$ oint port = parval(2);2 y/ H' q3 E& O" G3 x  ~0 l, e
int aa = getinput(node("/a",model()) - getoutput("/a",model());
6 X5 G# k- K/ B* z$ A) ?  mint bb = getinput(node("/b",model()) - getoutput("/b",model());
( g0 ?/ L! l$ @+ Q6 [; c3 Yint cc = getinput(node("/c",model()) - getoutput("/c",model());
! V& n! _# I/ R# P* T( Jif (aa=bb && bb=cc && cc==0){n=3;}7 a7 e/ ]5 F+ Z- \$ j4 t% |
else if (aa=bb && bb=cc){n=1;}
5 }4 N% \6 H0 jelse if (aa<bb && bb<=cc){n=1;}/ h9 c* j- l0 r$ B- {8 _
else if (bb<aa && aa<=cc){n=2;}9 N, H! q' x2 a7 c, z! X/ F; ?2 }) R
else if (cc<aa && aa<=bb){n=3;}+ d( O- d2 P2 ?" J- v
# d; a) w  }, Y! n- e: s# y
由于我也是初学并且也不知道你的n这里代表什么,所以这个代码可能有问题,只是单纯提供给你一个思路,希望有帮助。
4#
 楼主| diudiu123 发表于 2013-6-23 21:30:02 | 只看该作者
2# 天性518 ; a* [  D+ }+ C, G0 p2 h/ U( q% h: H- |' Q
: g8 N/ G, _+ A0 J" x3 ]: ^+ C0 O3 C
5 P( t! D" M" Z7 {8 z+ I. e2 ?6 G- Q
唉,学校学的vb,然后就直接flexsim了,代码这边太不适应了,还在慢慢学,谢谢了啊
5#
 楼主| diudiu123 发表于 2013-6-23 21:31:47 | 只看该作者
3# 慧娴亚伦 : Q& }0 s; z& @/ w7 ?9 P5 p

& \3 h0 G( x, {0 N8 v  a5 R
* M5 \% e3 T1 C就是暂存区排队了,就是以前学的vb,现在编译这块不适应,努力学习中
6#
 楼主| diudiu123 发表于 2013-6-23 21:44:17 | 只看该作者
3# 慧娴亚伦 ( u& S, g- g2 u! z
4 _% I& r7 [; B* e* Z

4 T$ F6 Q3 m/ x3 t5 N呃,还是不成功,就是卡车到三个码头卸货,如果有两个以上码头空闲,卡车选择码头的顺序是(3,2,1)。如果所有码头都忙,则选择队长最小的码头。如果有两个以上码头的队长一样,选择码头的顺序是(1,2,3),其他都没问题,就这一小块代码写不明白了

本帖子中包含更多资源

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

x
7#
 楼主| diudiu123 发表于 2013-6-23 21:58:13 | 只看该作者
3# 慧娴亚伦 5 j+ v/ K3 u7 N5 j
9 j9 J. y( l( ]  }# a  ~
6 }- O7 }1 ]7 }, h$ T- c# p
谢你啦,我在你的代码的基础改了改,出来了
. X! }- v) z2 Q9 eif (aa==bb && bb==cc && cc==0){n=3;}
: P+ g( R; h( v6 c* B3 d9 W3 \else if (aa==bb && bb==cc){n=1;}
" g0 j; k9 f9 M: Z) pelse if (aa<=bb && aa<=cc){n=1;}
9 @7 ?8 Q$ H2 L5 Q1 ^  c" oelse if (bb<=aa && bb<=cc){n=2;}
( A8 G( R- |+ @* Aelse if (cc<=aa && cc<=bb){n=3;}
7 O# ]+ l3 S  M/ L) I" }   setitemtype(item,n) ;3 X; G6 u5 N1 d" Y
这样就好了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-29 14:38 , Processed in 0.071535 second(s), 14 queries .

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

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