设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8180|回复: 0

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

[复制链接]
发表于 2012-6-20 08:59:43 | 显示全部楼层 |阅读模式
新手,在看netlogo自带的例子时,有几行程序看不懂,希望高手能够指点。
. Y) ?2 x" U% x' @3 S) Ynetlogo自带的social science--traffic grid这一例子当中,
, R6 d' w# }, r5 Q  a* Q; ?: Eglobals
1 ^* _3 E, i" H, q8 y: F- P$ ][
( i$ k" s5 v- c  grid-x-inc               ;; the amount of patches in between two roads in the x direction$ s& N1 w7 e. v/ p5 X4 t
  grid-y-inc               ;; the amount of patches in between two roads in the y direction
$ M5 s! G+ n( O  acceleration             ;; the constant that controls how much a car speeds up or slows down by if
5 {* Q3 x4 r9 L                           ;; it is to accelerate or decelerate, s' ?- z' {* D5 V8 o; h5 ?
  phase                    ;; keeps track of the phase: U/ K& [$ ?9 T) j
  num-cars-stopped         ;; the number of cars that are stopped during a single pass thru the go procedure
; Y- \+ r- v: O' x  current-light            ;; the currently selected light
3 s$ \  i0 J% w5 H% f: c$ e5 O( e5 d. Q0 l, n
  ;; patch agentsets
$ `) a- _8 V6 x! j  intersections ;; agentset containing the patches that are intersections
) k3 F9 X# O  i' |. S5 X8 C  roads         ;; agentset containing the patches that are roads6 a, b7 X7 O6 D
]
1 _- R+ S, I3 E7 ^  K8 t7 A8 r3 {4 `$ W
turtles-own$ f8 Z8 ^8 O. H  J
[- B3 x5 |( X+ P% q
  speed     ;; the speed of the turtle$ r8 K' A* f8 x; ^+ _- p
  up-car?   ;; true if the turtle moves downwards and false if it moves to the right
% t3 \, ~  v' A* m0 O+ ^) h8 J  wait-time ;; the amount of time since the last time a turtle has moved8 J: M! _) m& W( B- Y1 M
]
4 s! m% ?# K0 j1 P
5 }6 W& @( ?0 R3 V, e2 upatches-own6 ?6 o+ r" u1 g( G7 a
[
& p9 ^( f. s9 M5 d' O  intersection?   ;; true if the patch is at the intersection of two roads
% ]0 h; G% A1 L  green-light-up? ;; true if the green light is above the intersection.  otherwise, false.
8 m/ a* }& M1 T& j. V                  ;; false for a non-intersection patches.
; E2 O2 {3 p9 H& }0 `6 N  my-row          ;; the row of the intersection counting from the upper left corner of the$ Y! D% m1 p& A) k$ w8 \* X& [
                  ;; world.  -1 for non-intersection patches.
0 o1 k4 n$ i; n. V8 {  my-column       ;; the column of the intersection counting from the upper left corner of the% b, d3 |. b% f, W3 Y: M1 }$ T
                  ;; world.  -1 for non-intersection patches.
  V1 p( b) R8 b! f# K1 I  my-phase        ;; the phase for the intersection.  -1 for non-intersection patches./ n, y8 s2 a% s. k9 f" {! M4 J
  auto?           ;; whether or not this intersection will switch automatically.
# t4 [6 g: V3 ]5 A# _6 Z  m- |2 J4 S4 b                  ;; false for non-intersection patches.2 _. Z& }* Q% R4 R
]! z% R( E( _2 {4 Q, _! M
9 \2 v3 B9 {. `  [6 g
9 p  `- s' v' [* w
;;;;;;;;;;;;;;;;;;;;;;3 e" o: p# X2 j  r! J# m
;; Setup Procedures ;;
* P, N0 V. t# Q* X& Z) P0 R;;;;;;;;;;;;;;;;;;;;;;0 }# ^' Z5 w6 L0 ^

8 v7 D4 h3 Q" u% T+ l; K;; Initialize the display by giving the global and patch variables initial values.
- |% c+ o4 {- P;; Create num-cars of turtles if there are enough road patches for one turtle to
% B- F0 G6 J& e* `;; be created per road patch. Set up the plots.
4 V# t6 b" ]7 ]to setup: F3 b* b% y9 Y* M4 |4 P' v( a
  ca
% ^$ d4 n7 j) \  setup-globals
$ o2 v1 E+ N* f8 Y7 p
2 i, \# _9 C& v: e  ;; First we ask the patches to draw themselves and set up a few variables& F% ^4 `  M8 ]* I
  setup-patches" O4 t9 s5 K) b% Z# }
  make-current one-of intersections
6 D9 P+ t2 F# {3 L9 y  label-current
( q* x: c/ ?  I/ ?( @0 x: V* l2 S+ b3 ~( A
  set-default-shape turtles "car"
% c$ w9 M. g; ^: i- f
5 Z% }7 Z8 S' K3 @3 \; n# C7 v7 E, D  if (num-cars > count roads)
. o  V; Q. W8 j+ Z3 H- r3 H8 S8 z  [
9 u8 F% A2 L8 G& \. S6 e    user-message (word "There are too many cars for the amount of "
  b- V! R+ Y/ \- j- ]( b                       "road.  Either increase the amount of roads "% d8 H4 a% T# q% Q
                       "by increasing the GRID-SIZE-X or "
# x6 o; b& M! e' V                       "GRID-SIZE-Y sliders, or decrease the "
  R! d: W; l: D' H! U9 U( V3 ?                       "number of cars by lowering the NUMBER slider.\n"& ]9 L+ n9 h% G+ o# E( I
                       "The setup has stopped.")6 ?. _1 s7 [; H0 |: J
    stop* z" {1 _+ t/ E) N4 ?$ M' Y
  ]
! ^5 v3 U, |, u
( D" {. n! P- S' A: Q  ;; Now create the turtles and have each created turtle call the functions setup-cars and set-car-color
4 Y9 _; C0 i  U% Z* Y  crt num-cars: [* K! F9 Y3 I6 A& A
  [
. L& w1 J' {* v    setup-cars! e2 C0 f& J9 _2 t
    set-car-color: }5 L7 S+ K8 Q% x: _/ p
    record-data7 Y! d  q. p8 U% @* J. P$ V
  ]+ S% X9 f: j% q  h7 f
* ^! X# n( {1 n* L
  ;; give the turtles an initial speed
  u2 t4 W; x$ e# z8 J* `1 v  ask turtles [ set-car-speed ]* B* O. J8 R9 Z% I2 o: Q

. I) \0 g6 H# \# _7 L  P  reset-ticks
' I/ V' O$ C- G7 U6 C. g4 {end
; k2 L; V8 W4 u1 E1 X3 u$ Z# K' @/ B  m$ I% w" o1 ?
;; Initialize the global variables to appropriate values' F% C1 N1 y" J+ W8 d; m9 t
to setup-globals
! k7 @0 O% s: c8 @* s. m# v  set current-light nobody ;; just for now, since there are no lights yet& ~; w% m: E: z* T5 p' }% [
  set phase 0
! V( f1 P3 Q; y. I$ H9 U  set num-cars-stopped 01 i# D( L, s, q! D/ s
  set grid-x-inc world-width / grid-size-x
& }: h/ M, W/ y8 g  set grid-y-inc world-height / grid-size-y
$ e) i0 k% Q  O7 {. j  @
) s6 l* g8 L0 A# L  ;; don't make acceleration 0.1 since we could get a rounding error and end up on a patch boundary
  o. v! G* k6 ?' C3 A  set acceleration 0.0994 f2 b/ i+ k0 D) I# p8 A4 W* x
end3 r2 l' }1 C. W
8 @/ [  `; L9 R+ z6 T- {# \
;; Make the patches have appropriate colors, set up the roads and intersections agentsets,* n" i% y; c+ G: R; c" q: f
;; and initialize the traffic lights to one setting
( O! e7 j, H! Z+ pto setup-patches* Y7 W. ]5 {6 k' A, `& H
  ;; initialize the patch-owned variables and color the patches to a base-color
1 y$ v9 l9 Y, @# n' v  ask patches
! c/ @6 p1 ^  j6 b: j, z. L5 ]: Q1 B% a  [
  |5 p: X! m! c" h' [0 t) o3 U    set intersection? false, h' F) W  x& ?# t8 f; w8 K
    set auto? false; r: x3 r7 O$ C8 R% B
    set green-light-up? true- u( i) a9 I, _# F: O+ G7 t
    set my-row -1
; N/ n' h. R# z$ e    set my-column -1
8 F1 u4 \4 J: z    set my-phase -16 E& |# t; i) \* z
    set pcolor brown + 3+ ^& H: l5 {4 m) a$ k
  ]
) p& ?2 V% w! d- h7 s( i8 g8 `$ p/ q( o+ k
  ;; initialize the global variables that hold patch agentsets
8 @6 x! i* s, Q- X+ y# w6 k) A  set roads patches with7 P1 L8 S# t/ n  y  ?# d
    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) or4 o: V( |3 @# Q" l: @2 t, P  j
    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]+ K2 k0 q- _5 m5 R6 Z, s
  set intersections roads with1 ~( z2 I5 j& P0 U5 j8 [7 F& L
    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) and  w* g& r: B7 s; u2 N
    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]+ A/ M9 P/ A! l
/ N; [' H+ o$ U- e. b
  ask roads [ set pcolor white ]
7 O* L7 h0 V/ c+ |" @1 B    setup-intersections- j, ~7 ^  y- x: y5 N
end
9 U, V0 F6 F* D* b其中定义道路的句子,如下所示,是什么意思啊?/ E' m3 P0 n: v6 _7 y* ?  W2 Q
set roads patches with
: r3 B7 T& U. t& j" t% `) J    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) or
! z2 Z9 I. S- |+ }    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]. m2 b( g4 R. n" W: x; e0 X. _
谁能帮我解释一下[(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0)是什么意思吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-5 06:36 , Processed in 0.015019 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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