设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11448|回复: 0

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

[复制链接]
发表于 2012-6-20 08:59:43 | 显示全部楼层 |阅读模式
新手,在看netlogo自带的例子时,有几行程序看不懂,希望高手能够指点。
  u5 R1 g0 m0 X1 y: |1 A' `4 Rnetlogo自带的social science--traffic grid这一例子当中,9 r- x5 V7 r' y, l6 i/ v% ~4 ~$ K- m
globals
* G* Y/ D3 A; I4 H  M9 B8 P2 ^0 |[
& `  Q/ i# \) }2 L1 o7 E: V) ~7 z+ t: Z  grid-x-inc               ;; the amount of patches in between two roads in the x direction
( z! z1 R# h; r$ P/ V  grid-y-inc               ;; the amount of patches in between two roads in the y direction
* D: G. y& v+ W) g  l1 K  acceleration             ;; the constant that controls how much a car speeds up or slows down by if7 w; }- d5 m6 e$ ^/ ]
                           ;; it is to accelerate or decelerate
8 a! ]; O& r3 u% J, S7 o  phase                    ;; keeps track of the phase
9 K3 i5 p; M% o( t( m- Y* ~  num-cars-stopped         ;; the number of cars that are stopped during a single pass thru the go procedure2 ~; d, r  r3 D# t2 _( D# K
  current-light            ;; the currently selected light5 I4 {# d: i0 g- C+ e$ ~- E( c

4 @  M+ o$ j$ [1 |. a! B  ;; patch agentsets5 U+ m" F  n- m" P; b5 O
  intersections ;; agentset containing the patches that are intersections' E* X% p$ C3 F5 p! N5 Q
  roads         ;; agentset containing the patches that are roads$ d# _! v. [" {* s: C+ b, M
]
$ B% S$ a) O* E6 F% Q/ V# \- s2 _- Y& W5 n; B7 r9 X( w6 D  D, H
turtles-own5 Y2 n' E5 q8 \) p+ f3 y, P
[
# B$ J* Z& p/ P; E6 z  speed     ;; the speed of the turtle
5 ^" H8 T7 f3 X4 N: o  up-car?   ;; true if the turtle moves downwards and false if it moves to the right1 s% f% f, d* c1 g9 W
  wait-time ;; the amount of time since the last time a turtle has moved
* _( B4 j, d9 h  s]
5 @, G) K, b# F5 f/ ^4 Z# t9 g" M
* Z2 k: i" N* m* J9 \patches-own2 a* ?) w, v5 _. j; r& S
[/ `* Q7 ^& \. M1 {5 ]2 t! H- S
  intersection?   ;; true if the patch is at the intersection of two roads9 @7 m. T) A0 ]: K4 y" Z1 ^+ V% S
  green-light-up? ;; true if the green light is above the intersection.  otherwise, false.
) U6 ~9 c- m5 F4 @7 O) x                  ;; false for a non-intersection patches.
' v: v( g9 }7 n4 k! s. Y  my-row          ;; the row of the intersection counting from the upper left corner of the
* O2 F+ c) G; f* a+ n4 c# U8 V' }: A                  ;; world.  -1 for non-intersection patches.0 z: ?* C2 ~1 A3 F
  my-column       ;; the column of the intersection counting from the upper left corner of the
/ s. p" w  I$ n% o; k) Z                  ;; world.  -1 for non-intersection patches.3 I+ \& C$ M8 N: F: b1 g' X! |
  my-phase        ;; the phase for the intersection.  -1 for non-intersection patches.- }, O* o( L6 C4 [/ }$ h  F
  auto?           ;; whether or not this intersection will switch automatically.
( Z4 d6 ~3 o  Q% n  g: S                  ;; false for non-intersection patches.
. u/ S9 ?  f7 y# C7 e1 u6 ]]/ q1 S$ a5 A# D' Q
5 P, n- p" e: |% e* P( g

* `9 `" a4 H6 d$ b;;;;;;;;;;;;;;;;;;;;;;+ D% E: n) m/ q( i8 r+ \5 A
;; Setup Procedures ;;3 O5 i! M* q% D6 {9 h( g2 {9 `" C
;;;;;;;;;;;;;;;;;;;;;;
7 O8 C6 z; t; P" ?: h: |3 K6 ~& r  S; q( r, _
;; Initialize the display by giving the global and patch variables initial values.
7 g5 h) h& f- x( @; f;; Create num-cars of turtles if there are enough road patches for one turtle to
; d3 R7 G8 _7 j2 T;; be created per road patch. Set up the plots.- V7 D8 }8 Z% Y6 P& g
to setup. M) W/ Q# }) P' t
  ca# o5 k2 E4 \" U% m  g
  setup-globals
7 q. H" p/ D( ]5 {& F
  i  ?) E4 B5 f' \. m  ;; First we ask the patches to draw themselves and set up a few variables0 J& l$ B( a  e- {
  setup-patches  k6 L; Z, C  x. h
  make-current one-of intersections; v) _; R8 O8 b
  label-current7 g" ?$ F0 L- A! K
2 G; }# a) s5 w1 A, V- s
  set-default-shape turtles "car"
, U! I4 }1 h& l$ z: H! j- s' G: a* q2 K( u- e/ A& a" Y3 V
  if (num-cars > count roads)
* r6 D% F9 c  F9 z: l2 \  [
1 c: N" o5 t1 g7 v/ s# |7 G    user-message (word "There are too many cars for the amount of "
, Q; r- T. ~- D% w6 j4 i                       "road.  Either increase the amount of roads "
1 B/ k$ a& r# W* I1 r) Z7 `                       "by increasing the GRID-SIZE-X or "' Y( ]4 @+ k0 x- [. _! _3 N
                       "GRID-SIZE-Y sliders, or decrease the "! p  k5 h- r. M) s7 {: o0 T% L& Z& d
                       "number of cars by lowering the NUMBER slider.\n"3 G, n" x! J# |8 v: D# r$ z6 ^2 Y
                       "The setup has stopped.")
4 L5 H- w  {$ `: c! o    stop: ?/ @6 P. k0 V) O$ l
  ]
5 r* _* \& d/ ^8 Y# l- f2 R4 ?  D# \0 _
  ;; Now create the turtles and have each created turtle call the functions setup-cars and set-car-color
: Y% E. J5 n$ g& K, ~  crt num-cars
. w5 b' [6 A& e+ L# P& b2 U7 x7 B  [
% X; q3 \( S2 D9 q+ k9 e    setup-cars5 G% T6 }& Q1 D3 v3 e: T
    set-car-color
0 F5 P; f! I/ g$ E) c/ Y* K2 H- u    record-data; a, u" d& d' p) G! b# U- t' B0 S
  ]
7 A" k5 e0 u  W6 V. w3 Q: a/ y2 e+ c/ Y& _0 }
  ;; give the turtles an initial speed  T, E# s1 ~0 C  S. v( Q+ O# o! _
  ask turtles [ set-car-speed ]) d6 V/ K2 r! \1 z" K
( k: u0 J9 v: X- b. D1 j
  reset-ticks3 r" O( N& i, U- ~2 ]% U
end) S! c* \2 V9 W  Q! _
; \% D0 z+ V0 x" A- T7 A5 t( e
;; Initialize the global variables to appropriate values
' L# N7 v3 B. y0 o& v# ^to setup-globals
6 B4 `: e7 p; ^/ _4 l. A  set current-light nobody ;; just for now, since there are no lights yet
! S# v: f( ~2 _, y7 \/ |  set phase 07 M+ d; A! O0 E( [
  set num-cars-stopped 0" m+ |( P* X+ P) {1 {" y( P
  set grid-x-inc world-width / grid-size-x, E$ C/ t8 w* w: b/ h% F2 J
  set grid-y-inc world-height / grid-size-y
3 B8 e7 o, T1 @+ G
! Q4 u5 ?: j- ^1 M# i8 ]! ~  ;; don't make acceleration 0.1 since we could get a rounding error and end up on a patch boundary5 z( R% u: b) t8 D
  set acceleration 0.0997 V0 G& W& ]9 k  _8 X* E
end/ k9 B( d# G! W$ e2 m" ~
" W1 O% y( ~( Y
;; Make the patches have appropriate colors, set up the roads and intersections agentsets,
, F- u' _3 D7 i2 x" {4 K- ?;; and initialize the traffic lights to one setting
0 `2 {( i3 @) L' w1 R% T0 uto setup-patches4 G- a' r& R  T( R; _
  ;; initialize the patch-owned variables and color the patches to a base-color
1 R6 E! U; J& K3 f$ t1 G4 k* Y2 Q! k* G  ask patches
+ Q: H3 ^1 \& b  [
7 R8 b/ }3 P& |3 J# c2 y    set intersection? false
* I0 d: j2 Y4 g/ R  R. O5 p7 N8 s* T    set auto? false
: G$ ?  {* s# u* `% O    set green-light-up? true) S/ ?+ d9 x' b& a6 H
    set my-row -1; l5 x. |7 k, X  ^/ X! r
    set my-column -1
. F/ N$ B2 J. y# U0 t* I    set my-phase -18 K9 E. }, N% V: N
    set pcolor brown + 3
9 }4 }# h  v+ d, ?  ]
5 \* [- n: w4 \* ~% ?! b; H( e0 X2 `6 ?$ E8 u% I
  ;; initialize the global variables that hold patch agentsets  p- |6 p! Y1 p* j" f' @
  set roads patches with4 a8 J" T+ ?' q
    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) or
  q( g5 e/ c" F# A/ v$ y% I    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]
0 }5 B: f! V* C4 ]- A& \  set intersections roads with
8 E' l0 ]+ v& q5 H/ _4 U    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) and6 F7 z/ p$ F# [5 n3 M% ^' M
    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]
' U: I+ }: V1 Z. w. h, H5 u+ s: y1 K+ s1 m; {! Q
  ask roads [ set pcolor white ]7 l7 h# \8 A$ f% r5 Y! n
    setup-intersections
5 @+ g. K+ S' }- Lend# L6 ^! X: N- U. Y7 d
其中定义道路的句子,如下所示,是什么意思啊?/ m+ c. x5 p( D  o8 ]" y
set roads patches with( J- k/ `) P3 S
    [(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0) or
6 r& s! J9 e3 C3 ^0 O, g    (floor((pycor + max-pycor) mod grid-y-inc) = 0)]" U) e/ h; y& R7 C+ R& @- Q8 h4 A
谁能帮我解释一下[(floor((pxcor + max-pxcor - floor(grid-x-inc - 1)) mod grid-x-inc) = 0)是什么意思吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-30 17:46 , Processed in 0.016003 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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