设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6461|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false% a: t4 s4 j& @2 W& |
to go9 k. g* J4 V( f% t! t
if not any? turtles with [not stopped? ] [ stop ]  ( w' y9 x" R* H7 k6 Y7 H
ask turtles with [remainder who 5 = 0] [4 P9 q; ~3 R7 d# O& D
set close-mates  (turtles with [self != myself])with[! o: x+ B3 _& f: |
(abs(xcor -(xcor-of myself)) < X-Dist + Wid )
! H% x5 H- [7 {/ tand (abs(ycor -(ycor-of myself)) < Y-Dist + Dep ) ) {% C! a; ?8 A" x4 @
and remainder who 5 = 0 , w6 F4 z, f  O8 o  s
]                  
6 p8 b  A7 {0 cifelse any? close-mates   }" ?+ e; R; }( G
[                                                               
$ z& s6 N7 g8 d) C8 Lset closest-one min-one-of (close-mates with[self != myself] )[distance myself]
# x& ?: N; x1 G+ L6 sface closest-one* d5 O, |: d5 z: {
rt 180: B0 k6 \9 H5 p: l* ]8 v
fd random-float step-size7 [  {' z# I( c1 I6 k% C
avoid-walls
0 [1 N- N1 }. X5 V( `& O- y6 ]* ?set stopped? false]
/ K* Q7 H  i# y: g6 D/ o: j[set stopped? true] 3 Z9 T! C6 [9 g6 {' d- j4 n8 p# o
]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成, \; z( V1 n0 t, p
if not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]8 v( }$ D! L, O: q5 f0 E* s, q* `
则可以顺利的终止go程序2 j! F& i: Q6 U/ [: C7 g6 g
但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-3 00:29 , Processed in 0.017267 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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