设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9006|回复: 0

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

[复制链接]
发表于 2012-6-20 08:59:43 | 显示全部楼层 |阅读模式
新手,在看netlogo自带的例子时,有几行程序看不懂,希望高手能够指点。2 j: q& i' X0 T
netlogo自带的social science--traffic grid这一例子当中,& M( d9 k4 F. R- l' A- g8 e
globals
* R/ v# L! u3 ~, Y6 R6 X; [) K1 e[9 Y& h: g) K& g9 B3 y
  grid-x-inc               ;; the amount of patches in between two roads in the x direction
) `9 I. f0 Q. s# h  grid-y-inc               ;; the amount of patches in between two roads in the y direction' ~0 ?9 j" B: H" O+ X8 l% I
  acceleration             ;; the constant that controls how much a car speeds up or slows down by if
* c; F& m' w2 R& Y3 h% x$ W. n                           ;; it is to accelerate or decelerate& x3 b3 J3 A9 O$ w  w9 b
  phase                    ;; keeps track of the phase5 \8 r: a6 ]1 ?
  num-cars-stopped         ;; the number of cars that are stopped during a single pass thru the go procedure
9 f- U- @' P% H4 }  current-light            ;; the currently selected light
3 a2 l! l8 o+ `! U  r) J: ^
7 {6 Q* X" N/ {  ;; patch agentsets
$ B( J  p0 W! }8 N  intersections ;; agentset containing the patches that are intersections
" c7 c1 x& I; B. N" q7 Y  roads         ;; agentset containing the patches that are roads
! U3 Q* r8 [4 s) H5 S/ b$ Q]( n6 E; q/ d. z
8 ~# w* b6 o' ^/ C( X5 c( z
turtles-own& A  x3 ^" \3 Z+ Y+ q1 D9 ?
[
4 o& q7 B2 l$ T- Y/ m  speed     ;; the speed of the turtle# c0 Q( P0 d0 x8 O  M
  up-car?   ;; true if the turtle moves downwards and false if it moves to the right& |  K  X: d2 M6 `" P
  wait-time ;; the amount of time since the last time a turtle has moved
  A6 s( A/ t5 t! W0 W]
% V+ i: D) v+ N: e/ z( P9 N% K
1 k* w1 E. ]( y0 e* \patches-own
- b. i; F5 X. `3 [( P9 J4 u' I" v[
* k  U+ k' Z3 ^5 L$ X  intersection?   ;; true if the patch is at the intersection of two roads
/ J3 m" j% T! D6 }8 i1 j  green-light-up? ;; true if the green light is above the intersection.  otherwise, false.; D  b1 r# o: E" _) [$ U6 P
                  ;; false for a non-intersection patches.
! C% z# }3 Y5 w& c: x' D  my-row          ;; the row of the intersection counting from the upper left corner of the8 p1 a5 ^/ ]- O8 e3 w
                  ;; world.  -1 for non-intersection patches.
) I/ D; q+ f! E% k  my-column       ;; the column of the intersection counting from the upper left corner of the$ _2 L  B+ a( G& [$ i% \, m8 J3 o
                  ;; world.  -1 for non-intersection patches.# v  D/ s7 K) Y: l% }4 _1 U
  my-phase        ;; the phase for the intersection.  -1 for non-intersection patches.7 g! e% K" P: ^& a
  auto?           ;; whether or not this intersection will switch automatically.9 `: V: W% O" T- `2 G% p
                  ;; false for non-intersection patches.
1 \! }) j% B  h. s6 X; ?# _# f0 D]
# O  G; d  E6 b0 U. O. m( k/ W9 Y/ S+ p3 d1 a2 g& M6 c

0 O6 Y) }) v5 i% j# w$ C7 |;;;;;;;;;;;;;;;;;;;;;;0 \; g7 o. `0 x  {7 {
;; Setup Procedures ;;
6 O: {$ r: G7 D9 v# m;;;;;;;;;;;;;;;;;;;;;;% v0 H4 C3 L3 x/ z; T0 i& L9 k

4 ^: w" \$ N$ f( Q;; Initialize the display by giving the global and patch variables initial values.1 ^' H% T6 P, j
;; Create num-cars of turtles if there are enough road patches for one turtle to& ^  a) p- v; C/ |  ?1 I
;; be created per road patch. Set up the plots.
3 a6 ]: V* I( `to setup; d9 R8 r8 B6 K$ q1 _
  ca/ z! f2 n# G* |0 G. B- \
  setup-globals
$ l$ l2 T  X8 Q6 T
% K0 l5 h0 W& G# U$ [+ k# W$ U! l  ;; First we ask the patches to draw themselves and set up a few variables7 z" j: i1 M0 ^6 Q3 t7 r' o
  setup-patches
+ i1 ~6 f  s2 M. s1 R  f. r( s  make-current one-of intersections
) A# P# b2 R6 c( F: e, a  label-current8 }7 _; s; F( r5 p: I

# z; |" x! {+ k7 p  set-default-shape turtles "car", [, f5 n! Q6 g" e; ]) W: p% b6 O

4 N$ p# y, ^- j0 m+ U  if (num-cars > count roads)
4 R9 B' Y- O1 {: U5 F  [& s: h/ }5 R' M' ?! d( a
    user-message (word "There are too many cars for the amount of "7 Y/ S9 s+ U$ P7 k5 x9 m
                       "road.  Either increase the amount of roads "* ~; Y6 v( M* s
                       "by increasing the GRID-SIZE-X or "/ n! t8 C- z, r, j0 Y
                       "GRID-SIZE-Y sliders, or decrease the "
/ W5 {* T6 c$ A4 q                       "number of cars by lowering the NUMBER slider.\n"
1 g& ]; m/ }: m                       "The setup has stopped.")) v2 n: Z  F4 ]! D* G% \0 _
    stop& k0 ^; J. m. J) k
  ]3 r! Q8 ?, ~0 F; e' B6 Y7 b
4 W4 s& \- J2 O. y/ t* ^. u
  ;; Now create the turtles and have each created turtle call the functions setup-cars and set-car-color
0 O$ M3 K) _9 w+ x1 y# q- p  crt num-cars
& D3 O3 C7 S2 q5 k) e  [
* k" l  ^" `; u$ h    setup-cars7 w% l7 m$ V& P
    set-car-color
2 d$ ]0 x& U( L% k. m    record-data! e4 b& D1 ~& z6 `3 M
  ]
  v! L8 T& r+ c9 b" X
; O2 I, G' ^" W; e  F- j4 Q  ;; give the turtles an initial speed: P" ^9 `1 C3 V  X# P6 L
  ask turtles [ set-car-speed ]
" D1 R- d0 D4 m7 {$ H
6 m1 y* Y3 n- f( r9 |3 |% `4 z* L  reset-ticks
+ s8 l9 a7 R8 o" h1 ^4 Hend" h, T. C2 }6 a5 Z
4 G6 N2 l2 g2 X* ~1 x# i( O: S6 D9 p
;; Initialize the global variables to appropriate values5 R: A5 u3 r$ v% F! ?/ v
to setup-globals9 U9 q+ m( _4 a% }! i
  set current-light nobody ;; just for now, since there are no lights yet  ]5 |( J3 I: ~$ ?5 R
  set phase 0
3 Z/ U8 H  t8 }7 x! Y% t: b  set num-cars-stopped 0
! k' l0 p: Z& s6 h7 d  set grid-x-inc world-width / grid-size-x
0 I' A" B" c& o) n, P# R  set grid-y-inc world-height / grid-size-y/ Y6 a# Y. \- ?" H5 |) H

/ w' n; Q% g( H2 F( ^  ;; don't make acceleration 0.1 since we could get a rounding error and end up on a patch boundary5 Y, f' `1 H2 X! E
  set acceleration 0.099
0 `, w7 Y  q" c; R% Z& }: m% Uend
8 e$ M" S! p- ]& [
8 l$ ^! w# t' t+ N& j8 U;; Make the patches have appropriate colors, set up the roads and intersections agentsets,
! J- D* m9 j5 A;; and initialize the traffic lights to one setting
' d3 F+ ?( c5 a( h1 oto setup-patches) b7 F6 X# x1 p
  ;; initialize the patch-owned variables and color the patches to a base-color' A3 `+ Y' u" a' O! Z
  ask patches
6 R/ e& g6 l& |/ ?' r: p; b* C1 J  [% l3 O! Y2 t$ ~. v) Y# M
    set intersection? false7 c+ o' F  c, T  n/ I: Y" t
    set auto? false
  b# r; a5 G4 j4 K5 {8 q/ _: {    set green-light-up? true
( M: z6 ?2 T8 \" m! D    set my-row -1
, P& d$ U8 A, @1 p+ y3 h  E    set my-column -1/ E3 j% [" o1 j2 G+ t% E
    set my-phase -1
, x: u8 f/ e5 g) o6 y    set pcolor brown + 3
9 [; e0 E6 ^; s$ d7 [  ]
5 f5 r' A, @- F! Z: u! D
$ N5 _, Y3 v7 q* J' D0 n  ;; initialize the global variables that hold patch agentsets
3 \/ V8 s0 o& b! u; i  set roads patches with
% d5 s" g3 P; X+ L    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) or, |, u: M) ]2 |3 [9 b  Q
    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]1 s6 N2 p$ t) z' L: L
  set intersections roads with) \' X0 A  y  W+ k' l
    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) and
( ]$ |2 n0 g; b: l! l* K    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]
8 m* K7 m! ?% {7 H) {4 \: z) F' R9 ]+ T! B( h* {- e" r
  ask roads [ set pcolor white ]' k: [2 ?! [1 g! w! k
    setup-intersections
8 P* Y/ P$ T, R  C) \end
& B. }# E* q6 m4 @% R其中定义道路的句子,如下所示,是什么意思啊?3 k; \! C# G8 L5 Z; Y
set roads patches with
6 s. G: z  R( u7 E7 D    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) or
; Q9 A+ @: o: B  j    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]% r- y1 J8 I- p4 o9 E4 E
谁能帮我解释一下[(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0)是什么意思吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 21:28 , Processed in 0.018032 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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