|
|
5仿真币
想请版上的人帮我看看我这段code中的一个错误,我刚学Automod没多久,实在找不出错在什么地方了,谢谢9 C0 j! l( |* V, L- j: b6 o; B& H/ B
) |( h4 z. n' y3 K3 \
我的问题是,在每个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中的数值,不知道会不会有什么不妥。
. O$ e* D' U% j* k# t, A9 |( |
$ G+ \+ j6 L. Z, y7 Bbegin P_read arriving$ b0 s5 P ^6 j4 v+ e. k
while 1=1 do begin" C* r6 y' e8 N- b
read A_tote from "data.txt" with delimiter "\n"6 m' \* U1 _9 Z- {3 q% u* y
read A_time from "data.txt" with delimiter "\n"
; q C5 _; a9 e6 k- T read A_leave from "data.txt" with delimiter "\n"
' x+ Y- X# \" z" \; q read A_picks from "data.txt" with delimiter "\n"
0 c9 ?. t; x2 Y! n( x set load type to A_tote
$ c0 `* ~, [, Q- {: r: r if A_tote="tote 1" then set A_induct to 18 b3 n5 t! W5 x* c+ ^4 J0 ^
else if A_tote="tote 2" then set A_induct to 2' H' G" C: f$ u+ J
else set A_induct to 3
" Q& ~7 s- b5 g- b; }: H set A_i to 0
$ P' w& k1 A; A, I7 F8 T9 { clone 1 load to P_induction; z2 A1 r7 D+ T2 [
wait for A_time sec7 d' i& J6 b' Y. O
end( Q# f- e" S( o$ w# f. Z$ F
end
5 d& ?5 l* P6 j; j, u: l
8 |' Q* r: S% {( Vbegin P_induction arriving3 J3 D: N! I" K4 d' H
if A_induct=1 then clone 1 load to P_pick1- O3 U3 h1 [' c. A# U1 T4 y
else if A_induct=2 then clone 1 load to P_pick23 z9 }6 A# M, [
else clone 1 load to P_pick3* e4 m& j& _/ V$ e
end
7 H6 @4 [$ N; i, L8 m
* S6 W4 e/ K6 o) W8 Y0 |begin P_pick1 arriving
3 H1 @/ R* G/ u9 E, Q/ G+ ~ set A_i to 1
! P" S; g" Y0 Z) g4 k- z. L move into Q_induct1 e3 r# A! G$ J4 d$ ?. l' y
move into pickaisle.induct1
( p0 s1 {8 r! A) {. W while A_i<=30 do begin
" `. q: z" V9 c+ i1 Z( S travel to pickaisle.con(A_i)* S2 {* g) z2 m) I4 \- _1 c9 \" `
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec! m3 ?9 j7 d) d; I' F" H
else wait for 10 sec+ V5 m# ^( K6 @, P9 Z
if A_i=A_leave then send to die* f3 F0 H3 A' ~6 w: y7 Q
else inc A_i by 1, S/ K: a$ J" r5 j. Y
end
! ^' [- n" s, N2 i, i/ f" n, Eend' U$ H1 i& k- E* t8 L
9 f, @! {9 `1 ~; R- bbegin P_pick2 arriving+ N9 C+ j7 {0 k
set A_i to 11
* u9 K6 G1 ~, D- c8 O6 t move into Q_induct2
2 c0 s- h- \# F1 v move into pickaisle.induct2( }1 a s% D- A5 j" ~: z- B# v
while A_i<=30 do begin
* I: Y5 c5 m3 ~/ M4 b travel to pickaisle.con(A_i)
' |( _0 ` Z! X1 R3 m8 w4 ? if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec
! D7 f0 ^$ Z: Z$ ]6 P2 o0 G, n+ ] else wait for 10 sec
# h' o. o) E, c1 v" u if A_i=A_leave then send to die2 P% l2 B, y6 Q! F0 F# R( U; @
else inc A_i by 1) ]6 y( ^: ^7 `( `3 N0 V. T
end" z4 y# B o* }* G: A
end! i9 g- }& j# [: H9 e2 {) c+ X
5 _. y' y) I5 ]- u: o
begin P_pick3 arriving3 n* y) }( \! `' S, k
set A_i to 216 }6 O) _! D# q# h6 a
move into Q_induct3- G& K& X) J0 p! Q9 b( T- h
move into pickaisle.induct3( z( S1 Q& `- n) K6 F! _
while A_i<=30 do begin
' S# z: p; o! Z" N/ P; F" j9 a% [ travel to pickaisle.con(A_i)7 J' E4 v9 ^5 o" e# ?. M
if A_picks(A_i)<5 then wait for 5*A_picks(A_i) sec% Y/ ]8 W& f, L, [% {1 a! g- P9 a
else wait for 10 sec
) g- W! e; ]+ U$ e/ [ if A_i=A_leave then send to die
% m# F7 k6 i; \ Z& H; W else inc A_i by 1
( y+ b' T% k$ @( z* S end( x7 Z1 h) \5 a8 @& N
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,其它按你的 ...
|