设为首页收藏本站

最大的系统仿真与系统优化公益交流社区

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8815|回复: 0

[求助] 在看例子时有几个问题看不懂

[复制链接]
发表于 2012-6-20 08:59:43 | 显示全部楼层 |阅读模式
新手,在看netlogo自带的例子时,有几行程序看不懂,希望高手能够指点。
9 Q4 q$ _# g/ pnetlogo自带的social science--traffic grid这一例子当中,
0 ]/ j. a3 K: H3 ?) nglobals& Z, I& V* Z% X6 |( u3 f  z
[+ @, U/ E8 M1 x" b4 I
  grid-x-inc               ;; the amount of patches in between two roads in the x direction
, W: l; R( L+ q/ X% A- L  grid-y-inc               ;; the amount of patches in between two roads in the y direction
/ u0 |  Y0 y+ z" j  acceleration             ;; the constant that controls how much a car speeds up or slows down by if' f: v# Y  x9 g: Z( C
                           ;; it is to accelerate or decelerate$ A5 h+ o, V) g0 r+ D5 w
  phase                    ;; keeps track of the phase
7 P# ^: G% i4 Q  num-cars-stopped         ;; the number of cars that are stopped during a single pass thru the go procedure  s2 q2 J( k2 |
  current-light            ;; the currently selected light
5 f1 s. t, P' d; r9 ?: g
& ~& N! \1 f9 v1 A: S6 R  ;; patch agentsets
( r" Q) |. s+ h* Y: `1 V  intersections ;; agentset containing the patches that are intersections
. }* c1 H, r6 L7 x; n) L  roads         ;; agentset containing the patches that are roads- \% }- C# C( {4 o: a. ^
]
+ s) O. c5 [3 V6 {% n0 p/ v' p( `+ ~5 U5 f2 d
turtles-own
+ ?! j$ N+ w$ {& e[
% y# b0 t1 t3 P  speed     ;; the speed of the turtle
" ^$ {$ X4 T/ s4 K8 ^) f; e6 A  up-car?   ;; true if the turtle moves downwards and false if it moves to the right; n% d1 Z1 A( D0 _, V
  wait-time ;; the amount of time since the last time a turtle has moved% h0 D) w# J% s
]4 W& \, D2 V* R% L  [

1 N; z2 t- d( _( K* T: y. g6 d6 Wpatches-own
4 p) O2 y! E/ f( ?8 T[
5 {2 p3 @; ^% M/ j: Z+ r* @  intersection?   ;; true if the patch is at the intersection of two roads4 i7 j& ~7 I8 K0 ~/ f1 T
  green-light-up? ;; true if the green light is above the intersection.  otherwise, false.9 d, a& `9 u7 J2 G) n9 K- y
                  ;; false for a non-intersection patches.
, f. Z, i! d# I6 {, J% ?- H  my-row          ;; the row of the intersection counting from the upper left corner of the" w( x' R7 ~0 J/ j8 j
                  ;; world.  -1 for non-intersection patches.
; r) e0 K+ `; ^4 ^  D  my-column       ;; the column of the intersection counting from the upper left corner of the7 r8 V: D; S/ E8 p" s& E
                  ;; world.  -1 for non-intersection patches.0 Y* y) [2 q) ~
  my-phase        ;; the phase for the intersection.  -1 for non-intersection patches.% E: E3 P0 A% q1 x* J; ~' j* u
  auto?           ;; whether or not this intersection will switch automatically.
, Q% o& B/ ~; w5 ^1 E0 {                  ;; false for non-intersection patches.: ^, A# N) T4 x) U# E
]
* a6 I% z5 J6 k: E. i* G% k
4 \2 k( p" m" L: g- d3 u: W2 @
3 }# H5 T" b1 e$ t4 ?$ C) N;;;;;;;;;;;;;;;;;;;;;;
. }% Z" u/ z% B: `. R;; Setup Procedures ;;
7 K( ~! K$ Q* Z. N6 ?7 g7 s" [;;;;;;;;;;;;;;;;;;;;;;$ y% z' a1 ?" u4 ~2 i8 P$ S

2 o4 x) e9 U! T8 P* p; E5 @0 _+ y;; Initialize the display by giving the global and patch variables initial values.
; |% {7 Y# ]0 R0 l. j, _% g;; Create num-cars of turtles if there are enough road patches for one turtle to6 i5 D1 ^* l8 }
;; be created per road patch. Set up the plots.* d9 P+ O/ J/ n
to setup6 w- |8 {6 S2 T3 a+ h
  ca
4 v9 L! E+ g% v( R& R  setup-globals
) E; c0 q5 R- R/ T- B  l% G7 ~! o* ~/ j* i, }5 J9 d
  ;; First we ask the patches to draw themselves and set up a few variables
' z/ C" p3 s& Q. z: V; i1 B2 J  setup-patches: f4 E% ~$ [6 u  r! \2 l
  make-current one-of intersections  {2 u  T2 k! t" C3 G
  label-current7 d& W, z/ o7 U3 m# N' g

; H7 z6 Z" C' h% Z; ~; `  set-default-shape turtles "car"5 w  p/ J# a2 N" H- ^8 e3 H
5 t5 [3 f! H( J) H: Z
  if (num-cars > count roads)
% B7 M0 l% P6 ?6 w* U0 A  [
& j  n1 G, a1 i. s" V; W8 n0 ]    user-message (word "There are too many cars for the amount of "  ?3 ^7 {4 ]0 @/ |8 G
                       "road.  Either increase the amount of roads "
4 d0 s  X# A+ c8 F                       "by increasing the GRID-SIZE-X or "
5 x* i; [2 A4 |3 J9 B                       "GRID-SIZE-Y sliders, or decrease the "5 t, M8 P  z9 F0 M! c( O% k
                       "number of cars by lowering the NUMBER slider.\n"
4 e. c9 Z9 s" v& ^& C                       "The setup has stopped.")7 w0 A8 O5 v7 M  ^; d& p0 I3 T
    stop0 ]2 B& c8 A! J& ^& ]& k: r; W5 e7 A
  ]
. p4 N' H+ K6 D8 N- p
5 f& |1 ]" L7 G* ^/ ?  ;; Now create the turtles and have each created turtle call the functions setup-cars and set-car-color
4 g5 b- N1 V4 d* P. c  crt num-cars
6 v1 W- x$ B7 ?9 a4 |8 _- X  [
3 Z4 {4 t# V9 m0 f/ V! t' T& ?    setup-cars
; O/ L9 p. N: r2 H6 c    set-car-color9 F4 F8 j$ `+ j- F( v
    record-data
  ^% K# j! \( t* n: ?  ]3 O+ B1 T5 ?4 H
/ ?# s5 B3 v) \; L: J7 b
  ;; give the turtles an initial speed
1 z1 F$ p7 M  W9 Q9 u, ^5 ^  ask turtles [ set-car-speed ]
" |5 h$ H, F& \6 E6 V  J/ Y& A8 R, s6 j3 f  ~: Z, P
  reset-ticks
+ R' R$ S7 N  O4 dend
' i( d) C5 X' a! M3 P" \2 N9 n& d/ `. L# }. `- f1 r2 Q$ u
;; Initialize the global variables to appropriate values
; s) b( H  ~+ Q/ n) h2 Kto setup-globals
/ {, ?5 n! O. V  set current-light nobody ;; just for now, since there are no lights yet
  e; j1 a6 }! w3 Q: h  set phase 0
( d$ A# m- U) T8 g  R  set num-cars-stopped 0& \5 b3 D4 D& J& T) F
  set grid-x-inc world-width / grid-size-x: {0 T% V+ t; L/ d& z; T7 {% c
  set grid-y-inc world-height / grid-size-y& O, W  z. |9 B1 [4 A; ?
1 z+ h0 y% r% g
  ;; don't make acceleration 0.1 since we could get a rounding error and end up on a patch boundary. E4 a+ `' m7 p' H+ z! F
  set acceleration 0.0994 w0 I! G8 l% X  v4 i
end
9 z4 e- k) ?  d+ n
* x. X& p" U8 R+ D2 Q+ L4 q- I;; Make the patches have appropriate colors, set up the roads and intersections agentsets,
- p! y& N* z, J' X- I. {;; and initialize the traffic lights to one setting" d0 G! [  c2 Q7 V# S
to setup-patches
7 c2 J$ n8 T* M# b) y1 G8 D  ;; initialize the patch-owned variables and color the patches to a base-color9 K; `# B8 d, W0 h
  ask patches2 A! g$ s2 }5 p% ]8 K% [
  [
# P, m7 h( X4 M/ S    set intersection? false4 n* ]8 l2 c" V- b$ x1 |. e
    set auto? false
. x, r4 V; [3 \/ C    set green-light-up? true: I, N2 E# J) Q1 s; u# j* c7 o6 Z$ Q/ V
    set my-row -1- s  q0 t/ p5 k" h% w
    set my-column -1" j9 W) V3 {; w; l5 s) E
    set my-phase -1
0 T' S4 q4 v  |3 Y    set pcolor brown + 39 D1 f, k% e+ L) \) K
  ]3 Z( i8 ^1 Q# p- n0 ~; e
, ?: b$ }- C. n; V4 G
  ;; initialize the global variables that hold patch agentsets
* Y6 I  o1 W( {) \  set roads patches with
. O: p; ^. N  V( z) K6 x    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) or6 g6 q( x% I) r6 H4 `/ m
    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]
. H  v7 L7 l# v3 G5 d  set intersections roads with- _9 T9 v1 R. i" ?7 U+ k) _- ]
    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) and
. @$ ?6 h  m: x8 C! \' h    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]/ \( Q  n; a- F* k& D9 v
, {/ G- f; T8 |$ L. X4 p/ i
  ask roads [ set pcolor white ]
. B; N: D9 g7 G1 t3 _6 Q    setup-intersections* \6 l  \  L1 n1 l
end; b) R4 d( F1 w7 J9 C5 S- K0 G
其中定义道路的句子,如下所示,是什么意思啊?
4 X- J: z! @; r set roads patches with
4 `, S$ n5 }0 _& Y7 `1 F$ [6 x    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) or
8 r5 y8 Q- m$ q5 \    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]# ~- T3 f4 t) P" M9 G+ Y9 G
谁能帮我解释一下[(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0)是什么意思吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|SimulWay 道于仿真   

GMT+8, 2026-3-11 03:18 , Processed in 0.017656 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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