全球FlexSim系统仿真中文论坛

标题: 任务序列代码 [打印本页]

作者: 啊钟    时间: 2014-5-29 14:53
标题: 任务序列代码
本帖最后由 啊钟 于 2014-5-29 21:31 编辑
1 v8 W0 P- l& a  s6 a& o8 j. P" a0 `. Y2 M/ Y
这是我想用的任务序列,可是不知道为什么设置完了以后会显示程序出错,请问我是错在哪里呢?
3 g5 B( w0 {+ p: _) p8 Q; h* M  x3 o) t8 r2 _
treenode item = parnode(1);* _3 H2 l7 R+ L+ M- n0 r
treenode current = ownerobject(c);2 ^8 V8 v9 K2 |% m
int port = parval(2);
; i% L- j) P' @; {6 P  Z$ w3 \
  W0 f3 w/ h: r; mtreenode ts = createemptytasksequence(centerobject(current,1),0,0);0 C& }6 \. d% X6 T3 }" M( l
7 A6 R: a6 |* J" B3 R1 V
inserttask(ts,TASKTYPE_TRAVEL,current,NULL);
% C5 T) R9 c6 `0 n6 F$ g- O, ^4 _inserttask(ts,TASKTYPE_FRLOAD,item,current,port);: K2 {. r# }/ w0 G8 ^; g9 i
inserttask(ts,TASKTYPE_TRAVEL,centerobject(current,2),NULL);
+ j9 |8 j2 O% d/ Rinserttask(ts,TASKTYPE_DELAY,NULL,NULL,60,STATE_BUSY);7 W8 x& O+ U' _8 H- S8 @; F8 W
inserttask(ts,TASKTYPE_TRAVEL,outobject(current,port),NULL);
* L$ b/ X5 l  H" i( _inserttask(ts,TASKTYPE_FRUNLOAD,item,outobject(current,port),opipno(current,port));9 y+ U+ _8 o, S" A) ~8 h
% A  _2 {8 E- X. Y# u3 R
dispatchtasksequence(ts);" G: C0 ?  u* l$ H8 M, x4 N  O+ z" t
+ K1 i: n- q! p6 |- B; N
return 0;  // return a 0 so this object will know that you made your own tasksequence and it doesn't need to make the standard tasksequence automatically
作者: 慧娴亚伦    时间: 2014-5-30 10:07
单看代码是没有问题,但是需要结合具体的模型中的情况来看,您最好是能把报错截图上传。
作者: 啊钟    时间: 2014-5-31 09:13
2# 慧娴亚伦
& n% g( \1 C$ L% t2 B
1 k- u, g3 `0 r$ k" {+ K# {/ N+ D/ I1 S  G1 S8 {' }
报错是这样的。其实我第一次输入代码的时候是可以运行的,但后来就一直不行了。[attach]1977[/attach]
作者: 啊钟    时间: 2014-5-31 09:13
本帖最后由 啊钟 于 2014-5-31 09:18 编辑 $ R9 H& x8 b9 M  v, K# U% U

, h0 C8 F) h  ^8 P[attach]1978[/attach] 3# 啊钟 就是这个  e! G# m0 s% Q0 w6 u1 L

0 }' ]1 I9 n3 P9 j. D5 M/ w8 T( m由于模型要到实验室才可以修改,我自己的软件item有限所以上传不了加入了任务序列的模型,我的任务序列是添加给每一个source后的queue,下面是没有添加任务序列的模型。我的模型还有一个问题,就是货物会不断地堆积在queue中,而不会被sink吸收,这是为什么呢?求解,谢谢!![attach]1979[/attach]
作者: 啊钟    时间: 2014-5-31 16:19
2# 慧娴亚伦 ; E- s% M0 H  W0 ]6 C- y* k4 W
3 n/ n2 Z! }* _0 Q4 ]1 \8 |7 o

$ W# `& q: r+ }6 g; K& @$ \2 `我仔细看了一下发现代码的顺序有点问题,改了一下,发现可以运行了
1 i- R7 N$ c0 R
& w( {5 v3 Y1 ?# h- A+ S* i" jtreenode item = parnode(1);
  V% K4 D# {' A4 j% w6 otreenode current = ownerobject(c);3 W2 `* y' O2 n$ O5 n( n
int port = parval(2);
* L5 t4 }; W* Z: }& @3 A* `& v% t
treenode ts = createemptytasksequence(centerobject(current,1),0,0);       //创建空任务序列. Q6 B9 B, m* a( s4 R
inserttask(ts,TASKTYPE_TRAVEL,current,NULL);                                   //走到本序列
* G. H- ~! e3 J! Yinserttask(ts,TASKTYPE_DELAY,NULL,NULL,60,STATE_BUSY);                       //延时60秒
' g0 z' D3 C6 ]2 A. ^inserttask(ts,TASKTYPE_FRLOAD,item,current,port);                             //装载实体4 Q# m0 `" f2 |) Q& e" ^) |
inserttask(ts,TASKTYPE_TRAVEL,outobject(current,port),NULL);                //走到下一序列
, q: u# w  F: E/ X* m$ [4 K. Iinserttask(ts,TASKTYPE_DELAY,NULL,NULL,60,STATE_BUSY);                       //延时60秒$ `. J/ e7 i3 o- k" {8 u: `4 w5 F
inserttask(ts,TASKTYPE_FRUNLOAD,item,outobject(current,port),opipno(current,port));
$ V$ t7 s/ Y8 i7 N//卸载实体7 c9 r1 H9 [" B; Q  `% l4 _9 p0 d
6 Y& p( j' i* k7 A; g9 l
dispatchtasksequence(ts);                                                          //分配任务序列
6 ?4 Z1 d  ^  m1 K; g* e5 b
' r1 ~. |3 \* S4 b, greturn 0;                                                                           // 返回0表示本对象创建自己的任务序列,而不是使用默认的自动创建的任务序列! X9 `' C4 p2 m  w* a% f: {3 V% k
( q: Z; M, {+ K5 @

! Q1 v" \, F7 [- u: w0 z2 k# }) ~这样是可以的吗?谢谢您!
作者: guozhongyun    时间: 2014-8-21 19:42
学习学习!!




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