设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5969|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false  `+ k0 Y9 v' X1 Q4 p) ~. h3 S3 e* k9 ^/ f) e
to go1 G0 E: R" z. G- ?* g8 u
if not any? turtles with [not stopped? ] [ stop ]  - j& K9 S6 S: x1 `
ask turtles with [remainder who 5 = 0] [
2 h% h  ~# i  s2 aset close-mates  (turtles with [self != myself])with[
& S' {) d* \7 E5 _, t4 ^5 L& W(abs(xcor -(xcor-of myself)) < X-Dist + Wid )
) r+ [& V; C! {- ?6 S3 M, @and (abs(ycor -(ycor-of myself)) < Y-Dist + Dep ) 0 ]% t, m; u# o  d, |
and remainder who 5 = 0 , R3 D; f, G% p& P# s: B  \
]                   8 ^' Y. o7 K8 h+ W% S
ifelse any? close-mates
5 `2 y' }% o/ o0 P6 c- }1 x[                                                               
2 n. {/ ^- z' a) bset closest-one min-one-of (close-mates with[self != myself] )[distance myself]" d0 [, K- @0 |1 \5 |7 Q: N1 [
face closest-one+ ^1 L* D4 J! Y9 [7 t! Z3 L
rt 180
/ `- V- o! a% e5 w5 I  Yfd random-float step-size  r) [) N" S0 q5 ~2 |
avoid-walls
  E- R+ _# f, o1 _set stopped? false]$ {& I  O  L' d) g2 H" F
[set stopped? true]
0 q, q5 G2 i" ^]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成2 R3 e. k7 F9 x5 S3 w* |! u
if not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]$ h% n5 m$ v/ s% h: f( I3 E' D
则可以顺利的终止go程序! Z. d+ @3 j+ i& K2 g8 ~" S& e( i
但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-29 11:23 , Processed in 0.017174 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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