设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11715|回复: 0

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

[复制链接]
发表于 2012-6-20 08:59:43 | 显示全部楼层 |阅读模式
新手,在看netlogo自带的例子时,有几行程序看不懂,希望高手能够指点。- i! u; m" p- K+ R. j
netlogo自带的social science--traffic grid这一例子当中,
" a% d4 |8 A. g; gglobals
. Z5 Z0 P4 @0 H[' h: ^0 m& x. b* b3 F; A
  grid-x-inc               ;; the amount of patches in between two roads in the x direction8 E- @; H9 w5 a2 J; Q
  grid-y-inc               ;; the amount of patches in between two roads in the y direction  @/ y: x, M" ?0 ^8 s. p
  acceleration             ;; the constant that controls how much a car speeds up or slows down by if& G1 A/ ]* T2 m$ o, e; G! W" R2 F
                           ;; it is to accelerate or decelerate
! v# L. ~" k: _  phase                    ;; keeps track of the phase. t- G; s* S% l
  num-cars-stopped         ;; the number of cars that are stopped during a single pass thru the go procedure8 m" ^5 G/ t  O/ M# @) H
  current-light            ;; the currently selected light" f4 V  ]3 ]# o- q
' o7 X7 L0 e3 R6 z4 W2 I% b
  ;; patch agentsets" W' B6 ]( z# O; b3 i8 E
  intersections ;; agentset containing the patches that are intersections
4 w0 D6 y4 ?$ V: X. P- y  roads         ;; agentset containing the patches that are roads
3 _- Q% T, J0 h7 G( r]" p) o) N& p8 G& V. }3 w8 D

( B6 s: o& h/ Y( J. qturtles-own# J& `4 k2 j- `# [- R
[
, x4 j9 C/ w% u) m  speed     ;; the speed of the turtle  A$ @/ F9 d9 l
  up-car?   ;; true if the turtle moves downwards and false if it moves to the right
: ^5 ^8 L8 H* G6 v. F4 G! j  wait-time ;; the amount of time since the last time a turtle has moved! J! B2 _; }- \9 T
]
& {+ w. `; B! r# ?8 [
: {$ ?5 D, L& F; Ppatches-own+ U% Q7 U' w+ m% ~3 ~
[( D% H! e( p9 w, z
  intersection?   ;; true if the patch is at the intersection of two roads' {; u- W: V0 l  f4 f
  green-light-up? ;; true if the green light is above the intersection.  otherwise, false." l) e9 n! @' R/ W
                  ;; false for a non-intersection patches.
. H8 I. A0 }4 j' I# b6 ]/ }( [, z9 V  my-row          ;; the row of the intersection counting from the upper left corner of the4 ]7 Y) }$ X, u: n$ R* L
                  ;; world.  -1 for non-intersection patches.& ^% u6 ]9 p$ G. W7 Y$ ~9 o" ?
  my-column       ;; the column of the intersection counting from the upper left corner of the4 @4 ]) x; h* @4 k9 k, ^
                  ;; world.  -1 for non-intersection patches.
. b! z" t/ j' x  my-phase        ;; the phase for the intersection.  -1 for non-intersection patches., O5 m, s6 x  `5 l
  auto?           ;; whether or not this intersection will switch automatically.
5 c1 `5 J) B; M! _* r                  ;; false for non-intersection patches.3 L( H& L2 ^5 s: Y' j
]
1 T" E1 }* ?! N7 |
3 F$ {5 E% t8 \9 {4 [- @& J3 K
, q7 N1 g( }" Q& M7 O6 \& b" w;;;;;;;;;;;;;;;;;;;;;;
8 y; `+ R1 a4 s# t. o;; Setup Procedures ;;( \) A* c& T$ ]2 j9 Z
;;;;;;;;;;;;;;;;;;;;;;
2 P: X# K+ m% ^& Y
& N4 }7 _& [, S  ~5 T% e;; Initialize the display by giving the global and patch variables initial values.
. w5 J0 \3 {1 H;; Create num-cars of turtles if there are enough road patches for one turtle to
; N- _( L- [  s;; be created per road patch. Set up the plots.
8 \5 D6 q9 D. Mto setup, \" m  t8 p: ]8 A- M- d& D4 Q- H
  ca6 B4 l2 J5 V2 g2 F
  setup-globals4 S5 E! n% b) Y0 Z
7 z2 Y; @# O  w1 Q2 D" Z' D
  ;; First we ask the patches to draw themselves and set up a few variables
1 L+ A8 I# M# H8 [" O, Q# w  setup-patches
: E* X8 U, \- J8 A' F  D  R* `  make-current one-of intersections
8 G' T4 e6 C, e" L0 l0 L  label-current
' T* f2 D! k9 i- R+ q4 [# ^& c! l
$ f8 X& X' W9 i' n  set-default-shape turtles "car"2 X% X7 I+ S' w% k) Y5 b% l

& K% m- c) E& R# O) j% w4 I  if (num-cars > count roads)1 I; O9 o0 V- n6 L7 U" k% y6 o% D
  [. ~! j8 t+ @1 q- o; r
    user-message (word "There are too many cars for the amount of "
! S: l6 K* W1 |; Y/ \                       "road.  Either increase the amount of roads "$ U5 x2 c+ q0 m, r
                       "by increasing the GRID-SIZE-X or "
; m; t, Y/ @; L. m; A+ t: J" {                       "GRID-SIZE-Y sliders, or decrease the "* L  I+ f  R) e9 A# }
                       "number of cars by lowering the NUMBER slider.\n"- T, b/ I6 ?5 y$ P4 |* P% \8 |
                       "The setup has stopped.")
3 w4 A/ H4 n! m& b, ?- N    stop2 z& Q# j- m) P3 l8 {7 j, f
  ]
" i" X+ g* p, O& C8 @1 P" H/ ]! w+ D2 Y/ C5 D
  ;; Now create the turtles and have each created turtle call the functions setup-cars and set-car-color$ C' k& z% v/ L1 {1 [, Z
  crt num-cars, ?2 ^% T. v) Q! i4 _) \8 p
  [
( x0 U. B; `. n* l; @    setup-cars) }* R: K1 V. J; y
    set-car-color
8 E$ ?/ J4 _) k    record-data+ W9 j1 B  @5 j7 u3 n' U
  ]
  y8 K; [' o5 n& w0 K" G( c" p5 [* A
  ;; give the turtles an initial speed
+ x/ a; ?. V/ c! C  ask turtles [ set-car-speed ]
5 P( _* O. O3 X2 b9 p: r: e+ O2 t2 z, s( f, v. x9 o0 L
  reset-ticks+ L2 V: o' u2 [+ {+ b
end; T0 w) v/ _+ n& ~3 [6 _/ j
* H% J, M& b: d2 ^4 ?
;; Initialize the global variables to appropriate values
. \/ N+ d" h/ z3 Jto setup-globals- ?2 {8 y8 P9 b  p$ z( Q7 Z' r' V
  set current-light nobody ;; just for now, since there are no lights yet2 _# ?! S. @, m% H- m% U
  set phase 0
+ Y) H; W, }6 d  A  set num-cars-stopped 0
' ~7 d) j% P* q) U  set grid-x-inc world-width / grid-size-x" R- }& g; z( y# T! E
  set grid-y-inc world-height / grid-size-y
6 k+ V4 p* G* z& p0 }7 s+ g2 g6 n/ |' {* p7 v( v, q* I
  ;; don't make acceleration 0.1 since we could get a rounding error and end up on a patch boundary
. d8 x3 a* l5 l: i1 U2 N  set acceleration 0.099: `( g/ |. g  K" b& y! Z/ e
end
% J8 n$ }# S* r2 P7 K8 r% T5 I0 b5 }# u! X! B0 o* l
;; Make the patches have appropriate colors, set up the roads and intersections agentsets,
: @6 h% @* j5 m! I: p) _. E3 n;; and initialize the traffic lights to one setting, J! ~. g$ P7 f9 \1 P* R" }
to setup-patches8 C" h1 u% m6 r# h% M/ k0 u
  ;; initialize the patch-owned variables and color the patches to a base-color- l# t+ m/ O/ @; X8 v
  ask patches4 Y# @( Z4 j' O. O6 T
  [
/ d8 J& ?5 v! h! B    set intersection? false
  s. c& x& r& f9 H, H    set auto? false$ l6 C( |4 [+ p% G1 p. w! u
    set green-light-up? true9 l% `/ H0 F0 g
    set my-row -1
& H" z9 C$ k: S' C; }& t5 d2 E9 g    set my-column -1
' W8 [6 @6 s" [6 h; v& z    set my-phase -1
$ S7 E! f' z3 O7 ^& o2 ^. `( `    set pcolor brown + 3
! F: ]2 Q) ^2 X; B% Q' ^* Q  ]4 I4 d" ?7 @% g- \; d
  ?7 |) V8 W) `/ h, t# G
  ;; initialize the global variables that hold patch agentsets
3 w6 _- ?  x* f! _  set roads patches with
1 Z# w) b! [) p    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) or2 N- K( o+ O# `: W! r
    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]+ \; o9 A, m7 _. D" K: `
  set intersections roads with
) _5 k% }9 y: W+ C8 j    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) and% J7 T# L$ [7 ^5 T# j% G
    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]  k0 \2 |2 v/ E0 J0 z2 O

' _+ X8 b6 A% N$ ^# D  ask roads [ set pcolor white ]
/ Z$ k' o" `4 M5 A  q    setup-intersections
8 B9 S9 V+ d5 S* i6 ], ?; c- Gend% N0 P5 {: y: l, G' M8 B
其中定义道路的句子,如下所示,是什么意思啊?. N5 z& A, }" w- e1 F  s
set roads patches with
3 D/ ]( b( Q5 G2 \, w% i8 z    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) or
$ K0 y7 n/ r4 Q* @: E6 ^1 n$ u    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]6 j2 ?+ j! a0 ]$ N; H: G0 j
谁能帮我解释一下[(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0)是什么意思吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-12 13:21 , Processed in 0.015477 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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