设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12076|回复: 0

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

[复制链接]
发表于 2012-6-20 08:59:43 | 显示全部楼层 |阅读模式
新手,在看netlogo自带的例子时,有几行程序看不懂,希望高手能够指点。
5 k: l& G; w: _& anetlogo自带的social science--traffic grid这一例子当中,
0 m/ W0 E( R. Q: R  j' nglobals
2 d  c$ r# H/ Z4 T" d[' \/ P3 M! u3 ?( a6 h" [! M
  grid-x-inc               ;; the amount of patches in between two roads in the x direction
' H4 B" u* I* P' Y( g" B  grid-y-inc               ;; the amount of patches in between two roads in the y direction* V; z0 M3 D9 D6 M7 e
  acceleration             ;; the constant that controls how much a car speeds up or slows down by if
; V# ^9 a, O2 j                           ;; it is to accelerate or decelerate' S. h' x' l5 D, K1 M! c
  phase                    ;; keeps track of the phase
0 r: |. O6 U% w  num-cars-stopped         ;; the number of cars that are stopped during a single pass thru the go procedure) H" {( n- e1 k. x1 }
  current-light            ;; the currently selected light
0 A2 |0 J/ d! [* c% |# ~# L, G8 @! |
  ;; patch agentsets. B' i; Q' N; s
  intersections ;; agentset containing the patches that are intersections) B, |9 _% P7 |, c
  roads         ;; agentset containing the patches that are roads7 h* P8 v+ P$ r9 M% {* K- X
]
8 @  W. r$ i" Z  _+ t: l+ Q7 Z+ l, |0 Q( E
turtles-own+ @+ [/ ^' R! K4 R+ d
[
- h! q# y! V  d  k; e  W  speed     ;; the speed of the turtle
2 K( n) P$ J' J2 p% s' y  up-car?   ;; true if the turtle moves downwards and false if it moves to the right6 ~7 g5 {' H8 D9 `# V3 J! P% _7 q
  wait-time ;; the amount of time since the last time a turtle has moved
' l6 L# X8 ?- j5 \3 I/ ?4 a]* `; E, N- D) j' e5 q

7 g, ~; ?5 ?: y4 f, upatches-own5 F( U) F# G$ G6 i' [; b/ P
[/ w' a% }$ h8 Z3 y7 ]
  intersection?   ;; true if the patch is at the intersection of two roads
: l1 S0 S$ t$ e# }; L) U  green-light-up? ;; true if the green light is above the intersection.  otherwise, false.# J' Z0 T& S6 v! N. F$ B
                  ;; false for a non-intersection patches.
% i. ~( A( J% `% p2 x. y- t  my-row          ;; the row of the intersection counting from the upper left corner of the3 h' [/ E6 k. D5 b8 j
                  ;; world.  -1 for non-intersection patches.
, z5 S! I( {/ n  my-column       ;; the column of the intersection counting from the upper left corner of the
/ n7 t. S* {6 N                  ;; world.  -1 for non-intersection patches.( x" H4 c; ~. d
  my-phase        ;; the phase for the intersection.  -1 for non-intersection patches.
" L# Z0 M6 m1 v$ ]$ b" q0 p4 @  auto?           ;; whether or not this intersection will switch automatically.+ E2 p! H5 p7 f1 V7 K2 ^
                  ;; false for non-intersection patches.3 a" k, ^$ Q& K
]* f6 f- v6 A, u, }, F- |, l9 N( `
1 K" i' C# A! r* N5 F" F- `
' K1 ~8 O- H, M4 o8 w
;;;;;;;;;;;;;;;;;;;;;;& n7 b6 V" H' M" y! U; H; B
;; Setup Procedures ;;
  h. o; v& D2 E! e;;;;;;;;;;;;;;;;;;;;;;: E+ x" k3 e1 w5 s8 f
8 T) }$ S& D" d! ~
;; Initialize the display by giving the global and patch variables initial values.; |1 r8 K7 F, Z& g9 f: @
;; Create num-cars of turtles if there are enough road patches for one turtle to
2 V7 Z0 d% ?3 @/ Y% W7 ?* a. w;; be created per road patch. Set up the plots." K# O1 n5 V& O+ f( \) V
to setup
- K& ?' l! R+ A  ca
" A$ X' Y$ l  B  setup-globals
. k% I3 O6 y2 {0 `* Z( B1 w" w4 ?3 m4 r: x' J' L8 h; q
  ;; First we ask the patches to draw themselves and set up a few variables0 P/ c2 e) {1 ^: k  r
  setup-patches
( U' x; l  P) X, s  make-current one-of intersections
3 L4 |! K; l: z& s  label-current% {& u+ J3 v$ c' ]5 [

; b' i' y* T3 T: g  set-default-shape turtles "car"; |  P  N2 a4 _) p- X8 V' F, w6 p

. [+ u" N2 t7 h# I/ d! Z, h: c: A$ O  if (num-cars > count roads)
8 E5 N( T& N: B  [" k' X% M" U* d
    user-message (word "There are too many cars for the amount of "
0 ]1 w; h' b" W, X                       "road.  Either increase the amount of roads "
: Q( b+ J) n; O( Q% A: e" z7 ?                       "by increasing the GRID-SIZE-X or "
$ E9 N' B$ [  L$ e" }) m) O                       "GRID-SIZE-Y sliders, or decrease the "+ m6 I$ |9 e1 ?  t
                       "number of cars by lowering the NUMBER slider.\n"! ^0 ]3 _' J6 l9 [( {
                       "The setup has stopped.")
2 F: |8 N; d* E9 |8 S- E! \    stop
0 x8 N' @% C7 |& X3 C$ V  ]
! a$ ]$ n5 \( N( W
& {# t: E9 L9 U( {$ g  S  ;; Now create the turtles and have each created turtle call the functions setup-cars and set-car-color
- L2 S7 @: V5 b% s- p$ N0 f  crt num-cars( ]! Y# M3 U. N) R! N+ C
  [
: d+ F2 x6 ?+ D    setup-cars
! ]7 x" h& B3 m, b: n    set-car-color0 P! a6 h7 E0 k" [0 C- d* O
    record-data
" {6 N+ y- g1 p! ^  ]( p( w& K; L2 f

% ~4 Y0 ?; Q) v) m  ;; give the turtles an initial speed
( K, v$ o- _9 o4 E  ask turtles [ set-car-speed ]% @4 ]' L4 z# j" U, b  w
$ f$ m& a, @2 {, x, {% w* q: q
  reset-ticks
( w) i* Y0 }$ k; Hend; p/ Q: K) Z9 ^. e: b9 S9 h
  I7 d7 Q' d' d9 r- X
;; Initialize the global variables to appropriate values
. L- J& R8 N: {. q' z/ I, ^( gto setup-globals/ o  V! {8 a( Q1 h
  set current-light nobody ;; just for now, since there are no lights yet' O$ L& e- n1 R2 b2 K0 S
  set phase 07 W+ K, }  y  D' b- J1 l; Q* Y& |
  set num-cars-stopped 0& ~9 Q# R6 o; E
  set grid-x-inc world-width / grid-size-x
% q0 U( J4 V2 ]6 [2 D! ]% L4 u  set grid-y-inc world-height / grid-size-y
" a7 X+ X7 q' P# u+ g" d3 G& c$ f! K. w1 ~) p
  ;; don't make acceleration 0.1 since we could get a rounding error and end up on a patch boundary, q8 s4 m. ^5 u  @/ y4 d
  set acceleration 0.099
5 a, j( Z  p& A8 Pend
. r. ^, o/ b: D/ f7 N9 E, g) g' v3 w& t
;; Make the patches have appropriate colors, set up the roads and intersections agentsets,
& \/ U( b8 x$ X% a* h;; and initialize the traffic lights to one setting
/ R4 B! Y" t/ v5 kto setup-patches
( p" @  X% ~0 u# G! H. P  ;; initialize the patch-owned variables and color the patches to a base-color
/ ~6 X% Q0 R- g9 V" T; t  ask patches
8 i. Z4 [: a& W, L% A! j  [
& D& D) ]7 ^2 V/ I: L    set intersection? false
* S- `& h, B$ a; g    set auto? false
5 Q0 Y4 ^6 m. ?. C    set green-light-up? true
% _4 k1 Q6 t) ]1 ~: w" X. N$ M% _+ E    set my-row -1
! k% R4 W: _# x* [% G+ ?5 [    set my-column -15 S3 \0 y- p' M3 A7 {( X
    set my-phase -1
: k* v) H; C4 z+ ^7 A8 n9 c    set pcolor brown + 3
# G1 s' i+ Z9 K( H0 C. h  ]
5 E* Y; W% D; Z' \) X
+ k* a& ^. o! P8 l  ;; initialize the global variables that hold patch agentsets
4 i+ w  T& B6 L7 Y  set roads patches with4 ^9 ?; j# [  n$ L) X; R% d
    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) or
: n! }+ ~- \, I2 S# j    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]+ `. R; L6 p2 t  e) n7 O0 s  e
  set intersections roads with; X9 A0 \! ~. E5 V; U
    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) and
  \5 N- ^8 f$ z& z. l& C1 q% V    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]' c; f5 t5 ^" j; w: ?( W
& y; j3 v, B/ v% G
  ask roads [ set pcolor white ]- n5 _+ ?2 B% u. c
    setup-intersections8 Y7 z* c' @  q. T5 `/ L  m
end. F$ J% Y1 g$ y+ Q+ T
其中定义道路的句子,如下所示,是什么意思啊?$ |& ?$ u2 R0 q0 t& V7 l2 K
set roads patches with- C+ J* T& i, d% B" U
    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) or
5 X8 c: n& u" E9 `7 w    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]
5 v9 {* A1 y1 D+ `9 Q: r, \5 j' w谁能帮我解释一下[(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0)是什么意思吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-2 11:49 , Processed in 0.017835 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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