设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4510|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false
1 ^# U* {! }4 r+ {5 M" }to go7 g3 |9 O' D) N  d7 K: G  `/ }
if not any? turtles with [not stopped? ] [ stop ]  7 L! g0 b  G$ T* T
ask turtles with [remainder who 5 = 0] [
! N- T2 c9 Z9 ]' ^set close-mates  (turtles with [self != myself])with[4 Q: f. [+ V9 \, q
(abs(xcor -(xcor-of myself)) < X-Dist + Wid ) + ?6 m! Y9 e; A% Q) ~
and (abs(ycor -(ycor-of myself)) < Y-Dist + Dep ) % s, p( ~. Y: a; ~# I
and remainder who 5 = 0 0 @5 q  t( A6 @+ h% o" a4 N. \/ t
]                  
; @4 P9 p2 ?9 t$ p$ l5 j( M' |ifelse any? close-mates
, i5 @+ Y2 u) O0 }1 H  d1 C8 u) e[                                                               
0 L& @: V% d6 d  nset closest-one min-one-of (close-mates with[self != myself] )[distance myself]
8 m/ Y+ N) l0 a$ wface closest-one1 u, C$ F% D2 I2 j* U
rt 180
0 P4 v) H9 E- w. j. e: h) Z  xfd random-float step-size7 _4 X0 R' v  o3 R/ j
avoid-walls
0 l. o# [/ f1 d. pset stopped? false]) `8 g7 q+ _( i/ B2 z* k
[set stopped? true] & \2 [  z6 i6 `
]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成
1 M. W5 P8 l: u5 K/ N8 Xif not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]; L$ K" `. v' T9 P; `& j
则可以顺利的终止go程序/ C; M9 v  K* ^1 l+ S$ D
但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-18 02:54 , Processed in 0.017044 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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