设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10303|回复: 0

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

[复制链接]
发表于 2012-6-20 08:59:43 | 显示全部楼层 |阅读模式
新手,在看netlogo自带的例子时,有几行程序看不懂,希望高手能够指点。
/ U/ @2 m: g. ynetlogo自带的social science--traffic grid这一例子当中,1 X# L+ j  ?9 z7 I/ O9 D" R
globals
/ D4 k  ^! {& T$ E[
! H1 u1 w; G; Z6 {# T3 B0 U  grid-x-inc               ;; the amount of patches in between two roads in the x direction4 W. x2 Z9 D* f
  grid-y-inc               ;; the amount of patches in between two roads in the y direction$ G4 U. ?  a# W5 l' e/ K$ V
  acceleration             ;; the constant that controls how much a car speeds up or slows down by if: Y3 @0 m" X' t% y) q- G+ K
                           ;; it is to accelerate or decelerate* p3 h/ x! x$ F/ A0 F' ]- |
  phase                    ;; keeps track of the phase% R( j7 F) C' T' ^# L3 b
  num-cars-stopped         ;; the number of cars that are stopped during a single pass thru the go procedure- n4 f  r, f0 }+ e) Z* t
  current-light            ;; the currently selected light
1 Q7 z" \0 |& M7 J# _* o6 Y
$ X  H; q; A& I* B: b) f8 E$ D8 Z2 q  ;; patch agentsets
, h$ I6 ?1 y% p" u& w5 f# h  intersections ;; agentset containing the patches that are intersections
+ v  i# a; k! k2 n  roads         ;; agentset containing the patches that are roads+ U- t5 `' Z' T9 J! W, E9 X1 A' e/ s4 u
]3 N- Y, m% }$ z5 r8 G
% c) ^8 `9 t. [0 j' k: u
turtles-own
; m4 Z; ~% B# m% k# t0 ~3 Z[
  |. A5 C7 x: w0 S  speed     ;; the speed of the turtle' x  a9 p$ _$ f3 ~& S. H2 K
  up-car?   ;; true if the turtle moves downwards and false if it moves to the right0 Z) r0 z& I1 A1 |* y' f) M
  wait-time ;; the amount of time since the last time a turtle has moved
  p1 c: G# l+ q* S. `]  w$ w- c4 t& G( o! K3 w8 d
) X8 Q+ t' ^& v) g0 o
patches-own
! }7 N6 E" ^8 F* M[/ r/ {7 U2 y0 q% k3 T0 v; p
  intersection?   ;; true if the patch is at the intersection of two roads
; Y# T7 r+ x1 r7 n. Q3 b  green-light-up? ;; true if the green light is above the intersection.  otherwise, false.
9 X+ H& ?  v( m' G                  ;; false for a non-intersection patches.
+ v+ j) Q  F# L: V* N5 F7 a- B  my-row          ;; the row of the intersection counting from the upper left corner of the' ?* i3 D: U* k5 U! Y
                  ;; world.  -1 for non-intersection patches.
  y  w7 f/ Q( J- }% g* K' {  my-column       ;; the column of the intersection counting from the upper left corner of the
& C) j: l8 k$ I, o: n! p                  ;; world.  -1 for non-intersection patches.
1 d4 T4 j/ y* s$ N' {) r% r  my-phase        ;; the phase for the intersection.  -1 for non-intersection patches.( ^" p+ z" D6 m% b! U- k9 L
  auto?           ;; whether or not this intersection will switch automatically.
' W) x1 m0 E$ S" Q' _* \: m                  ;; false for non-intersection patches.
) w4 l/ o7 ?5 c1 N  Y2 I]
9 a- X, ~; b- t1 B# a, y7 R5 w
# P# A3 S0 f. U: w. W/ r
6 s8 D, Q/ m! f& k- C% U0 Q9 o;;;;;;;;;;;;;;;;;;;;;;3 n0 k( N! p9 H5 N3 D3 \
;; Setup Procedures ;;
- z3 z9 Q  U, v; J, U6 t;;;;;;;;;;;;;;;;;;;;;;1 ]: y5 m. `, K1 m/ ]% K( U, {
5 t$ Z& g2 \3 \
;; Initialize the display by giving the global and patch variables initial values.
% _, F/ i( e; v* D5 s, s9 p& ^' H;; Create num-cars of turtles if there are enough road patches for one turtle to5 @4 |* m! U  y0 F
;; be created per road patch. Set up the plots.0 |7 `" i( U: O) o. k( b
to setup
  c/ E* e$ o5 l  y  ca. F5 Y9 Y1 z/ D% _; r/ }
  setup-globals5 @6 V4 T, l) @6 a
) [1 L, e! G- K  V- O8 p0 |2 @
  ;; First we ask the patches to draw themselves and set up a few variables* a! F$ j, c) ?
  setup-patches4 O( v; O) p1 g0 E- d
  make-current one-of intersections
4 v5 f6 [0 x. i  label-current) E- j% W  H% f; U4 ?. l  S4 U

. _1 y- T5 k$ F8 t, E& c  set-default-shape turtles "car"' K* n8 |2 a5 R4 k# G6 J2 P2 ]: Y
* I) Y4 X/ s- _0 c, E
  if (num-cars > count roads)
" S1 @# E* {: N/ ^) H  [
0 w- Z" w7 S$ U& z    user-message (word "There are too many cars for the amount of "
$ V5 C5 q2 U% }6 Z3 g                       "road.  Either increase the amount of roads ". |9 d8 |9 I: g
                       "by increasing the GRID-SIZE-X or "
4 L9 N9 y$ i* d  ~+ @1 ]                       "GRID-SIZE-Y sliders, or decrease the "0 F  ]0 R+ R# O% I+ J" Y
                       "number of cars by lowering the NUMBER slider.\n"
1 [9 s1 ]( y6 s                       "The setup has stopped.")
5 P1 M) {' j0 @6 T8 z' i" G    stop& F. ?* {" X5 [( E& M. I( Y
  ]
: {0 J1 Y0 |& ?$ z) c: M( c, `. \& M5 L* ^
  ;; Now create the turtles and have each created turtle call the functions setup-cars and set-car-color
( f8 \, H( e" d# F6 [: n8 M5 q! x3 L  crt num-cars* C( e( R  N: f& ]
  [" f6 E4 m, q6 k3 O7 z
    setup-cars0 I4 ]' e# x0 O
    set-car-color
  V5 I$ x% c' p) S1 b. N: W+ k    record-data
) w% b2 M& w+ @/ y& h* y8 l, r: l  ]& |3 E3 R. Z! I4 h( |. l- l! n
' m' v: }: s/ ~) w, o: ^7 \
  ;; give the turtles an initial speed
) M! ^5 p/ z' @) S" D+ C7 |" [$ }  ask turtles [ set-car-speed ]
9 Y  G; }/ t9 t- c# U! }3 Y( y0 J, t2 J, V# Z
  reset-ticks0 u  q2 W' e' n" f6 s
end
+ j1 W9 y4 ~' I+ O
9 T' m/ T3 I, i0 w  R' m;; Initialize the global variables to appropriate values
  x5 C9 z! y& F1 D0 \" \- \9 ito setup-globals
% I! i7 G/ j) A6 ~) P/ |" B; H4 m  set current-light nobody ;; just for now, since there are no lights yet; C9 n4 M8 m6 v( Z  J
  set phase 02 L8 p3 ~# ]8 J# T
  set num-cars-stopped 09 o. T; O" I, Z0 M
  set grid-x-inc world-width / grid-size-x
7 L9 ~# ]6 ~: V  set grid-y-inc world-height / grid-size-y& @  F; u) e+ F4 l5 g6 s2 o( M

0 x' o4 Q+ F4 _$ ?  ;; don't make acceleration 0.1 since we could get a rounding error and end up on a patch boundary# C2 U! K$ ~* l2 G5 R
  set acceleration 0.099
2 X; i9 r0 ?, N5 Eend6 f8 N0 N1 [: v: R

. S& {: @8 q$ ?+ f0 s;; Make the patches have appropriate colors, set up the roads and intersections agentsets,; {6 t/ n- Z3 H8 y: ?
;; and initialize the traffic lights to one setting- ^; r/ ?) U; Q" C5 [0 O
to setup-patches% g4 Y% F. `' y5 Q& u, K6 v
  ;; initialize the patch-owned variables and color the patches to a base-color4 h! y; @4 d# d, A9 J4 H
  ask patches- ^) `1 j5 d; C- E: @/ j7 x
  [, @: F0 X9 ?- r3 r  I  ^3 [
    set intersection? false! o4 n1 L- W- B: v
    set auto? false+ {# ~+ g+ C2 A/ x" j
    set green-light-up? true+ U: }  g! n1 x% M) g
    set my-row -1* a) k5 P% t$ b. w( h* U
    set my-column -1
. q2 m) q+ E, }) U    set my-phase -18 s6 b1 {$ h$ e# S" x3 i8 Y
    set pcolor brown + 3- z! f: \9 \: D! s+ N
  ]! t8 _" I0 ^/ Z9 Y/ s
2 o8 |; M6 c; z5 d/ k
  ;; initialize the global variables that hold patch agentsets
" I- H" d8 h$ }  set roads patches with' [7 f# k( S4 \# M. q* [% T, s
    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) or
; w) w9 F" u! i: e" M5 Z    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]$ C7 Y) Q. v% P/ P7 k& C
  set intersections roads with
0 g% I6 w3 k0 L2 w) g    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) and
! v6 ?$ g6 v" N: T" W1 I    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]0 x2 Q5 X3 Z. B9 a; T

" F& Y! O5 o) n  ask roads [ set pcolor white ]. N( ?: O4 v* d! V9 Q2 B
    setup-intersections: O* R7 o9 i: F: }# n5 U) g
end  @, g4 L3 |* Y5 w7 M9 W7 V
其中定义道路的句子,如下所示,是什么意思啊?
' C' I6 m: q6 o5 S$ C& F set roads patches with5 i! s( b* t3 o, Q
    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) or
0 j! t6 e9 E6 R) ]    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]0 u* N4 Y$ l$ s- H2 T# S# A0 i
谁能帮我解释一下[(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0)是什么意思吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-29 23:46 , Processed in 0.016493 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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