设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6778|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false0 f- T/ ?3 W5 R. y, F
to go0 l; q, f# P- [5 N7 }  Q+ Y
if not any? turtles with [not stopped? ] [ stop ]  
: t) G& P( z# |$ Q  I8 l. G. G0 Qask turtles with [remainder who 5 = 0] [; G7 R# c: J) R1 P& x: U
set close-mates  (turtles with [self != myself])with[) P) J# K. B! M# x8 n( Z; ]
(abs(xcor -(xcor-of myself)) < X-Dist + Wid ) * @3 c% i( }( P. G1 I# e; z
and (abs(ycor -(ycor-of myself)) < Y-Dist + Dep ) " m( i! j7 Z) P  K2 \- D  x& v
and remainder who 5 = 0
& y: ^+ Z4 e! t( U/ E+ [& d& O2 q9 R]                  
& G6 b1 E8 i5 e, c* q% oifelse any? close-mates
- }% c; s" r; O- m3 W1 Z; i[                                                               
6 o  @. {; T$ R7 {( X- dset closest-one min-one-of (close-mates with[self != myself] )[distance myself]+ r. C* w6 j( n9 T
face closest-one
8 |- a, j) o9 u$ i5 b$ h2 f5 p# o3 hrt 180% W& l; j6 c9 z4 g5 ^
fd random-float step-size+ B4 `- t) o& Y: o) o6 {7 N, |$ ]
avoid-walls
  h/ v" t! Y1 Q8 Mset stopped? false]
) b8 F' T( H5 ?% x- ~* G5 N6 ][set stopped? true] . Z7 {- B# A4 T* i, s& l" P
]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成
- L9 p; I; s1 Z) X. E0 Xif not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]$ S& l. K; W3 j, J% f$ N$ z
则可以顺利的终止go程序8 q! Y9 p( \8 Z
但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-9-22 04:51 , Processed in 0.014957 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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