|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢, |0 I9 f! f( y" g, J+ D
# G7 { _ m2 e* @" d1 a* G我的问题是,在每个P_pick的process中的while循环内,总显示错误Expecting QueuePtr or Location, but found PathPtr. 在我定义所有的attribute的时候,从来没有定义过任何QueuePtr or location or PathPtr,为什么会出现这种错误呢。 我这里面A_picks是一个30x1的array的load attribute,我想用A_i这个load attribute来读取这个array中的数值,不知道会不会有什么不妥。
* v# Q* z: [) b0 o. E2 N3 O$ |' i2 g* b( R/ R
begin P_read arriving2 Y0 B' V ]& U) H+ m
while 1=1 do begin2 d% @- t+ h$ z; V) d
read A_tote from "data.txt" with delimiter "\n"* [. @4 j: d# H8 p7 P' o8 e
read A_time from "data.txt" with delimiter "\n"
1 q) k V3 M/ B m @* U read A_leave from "data.txt" with delimiter "\n"+ d. o. z: E$ _. Q
read A_picks from "data.txt" with delimiter "\n"6 y" @/ @! O3 b$ S8 Q
set load type to A_tote
6 ^! N `! d6 y l$ O if A_tote="tote 1" then set A_induct to 1
9 o8 r( }+ G$ o5 a else if A_tote="tote 2" then set A_induct to 2
1 r) [, g% E5 F! K0 ]' m4 O else set A_induct to 3
$ [( P" Z' N- p9 I! B set A_i to 09 W# X: N8 ~- c0 {
clone 1 load to P_induction
8 g3 w" a7 }; R3 a wait for A_time sec
9 p7 G9 i9 q5 v( Y1 P7 u end2 ^7 V4 h: R" t" y
end
. ?) s; V" E& r. c0 }
& @* S$ t# N8 g D# _. obegin P_induction arriving! x# L7 L$ d% v9 y% c# L
if A_induct=1 then clone 1 load to P_pick1/ A0 |8 ]& Z5 N, R
else if A_induct=2 then clone 1 load to P_pick2
9 I8 a* @; O1 P$ q+ e1 d5 v# m else clone 1 load to P_pick3
' P% u7 O9 L. O. tend
# {# ]0 j9 X3 ]4 H/ y
2 Q) M# v7 e1 }- `- ybegin P_pick1 arriving. B% f" t' K4 ^) \* B
set A_i to 1: m/ F& J$ a. H9 T
move into Q_induct12 y# b, p @ F4 R+ m2 n
move into pickaisle.induct1
& _5 c6 @! j8 K: U2 R, m4 m: T while A_i<=30 do begin
& |' l3 A) [5 n' c* m' I travel to pickaisle.con(A_i)) V% g4 K! F; {3 E
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
4 A+ H' A; P- c& k! J- _+ R: q2 G else wait for 10 sec
7 d* C! o1 m. {7 Z if A_i=A_leave then send to die
0 g" b' M, J* j8 z: S else inc A_i by 13 O1 [: Q; p5 `
end
7 K8 }& V8 n' `end
( a0 j3 _+ P/ l6 q
$ ]2 c, M5 V; z# n0 [) e4 F7 Tbegin P_pick2 arriving
* I$ s! `; Z$ b' w, ?3 t set A_i to 11! O: i( g6 M1 T9 s& f+ z. ~
move into Q_induct23 v7 t3 S9 J# e$ T: W) T: U9 r" N b
move into pickaisle.induct2: [$ a' s, [( O/ F+ U2 L) `( W/ f( G
while A_i<=30 do begin& V0 Q8 Z$ {" s* i0 z! z( `
travel to pickaisle.con(A_i)8 i: T: l% W& J. j# ~7 H
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec) z6 ]1 e# L6 n3 {$ ?
else wait for 10 sec* O2 K9 b p1 l/ e9 X* o5 ~" _ Q2 H
if A_i=A_leave then send to die! i( v4 L! h: j4 `+ F8 f
else inc A_i by 17 D* a+ ?. y# c* p( l
end2 p2 A: p6 v) O; ]
end
e- K6 J* x4 K' m) o% y# n% ^; M$ l' X' C; S1 y
begin P_pick3 arriving
+ c3 N1 H# ^5 _0 X+ B0 i; S set A_i to 21& O5 M. W$ v. Q# E# u4 u: H
move into Q_induct3
: {$ u* j- v1 F7 T# } move into pickaisle.induct34 C, o/ x8 e) T
while A_i<=30 do begin
4 r; Z+ x% w6 h7 z) j4 w travel to pickaisle.con(A_i)% p7 }, D1 j0 k3 y" F( h
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec, h$ v7 k6 r8 `* v" |; ^
else wait for 10 sec
) I+ P- ]$ w3 \$ A& ?+ E5 | if A_i=A_leave then send to die' B5 F/ e* {5 ~2 a# [
else inc A_i by 1
- e ]" Y$ t' I! o% Y6 N# i- C end% Q/ ?$ G) h+ n4 L0 q6 v, {+ T
end |
最佳答案
查看完整内容
pickaisle.induct1/2/3是个什么东东?
move into后面,应该是一个station或control point,或者Queue/Container/Vehicle/Segment之类的东西。看你的报错信息,这个induct是个path么?
AutoMod Editor的语法报错信息,有时候会指在下一行,必要的时候要把上下几行都看一下。
另外,你的几个P_pick是完全重复的,建议以如下方式修改,可以减少代码编写量:
1. 创建一个Process:名称为P_pick,number of Processes为3,其它按你的 ...
|