设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5385|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false
$ @1 q  ?8 n& o7 l. ^* y0 K( X/ rto go4 T0 \$ b; b+ N. D9 t1 `; v2 ]+ U
if not any? turtles with [not stopped? ] [ stop ]  / X5 }/ E6 K8 _) G7 }
ask turtles with [remainder who 5 = 0] [( I( ~" D- w1 g! e1 X! }
set close-mates  (turtles with [self != myself])with[
1 W/ L) |  y2 t3 T(abs(xcor -(xcor-of myself)) < X-Dist + Wid )
% w- s. w% n2 h1 l3 Zand (abs(ycor -(ycor-of myself)) < Y-Dist + Dep )
& W) C: }% s9 [- l# I  ~8 mand remainder who 5 = 0 6 R5 X' y, Z; N: b" U
]                  
2 x6 c) q0 G' _* }. [ifelse any? close-mates ! z0 T4 w+ o3 j
[                                                               
# @0 i1 v8 E  M4 a, c  E5 `' y) ?set closest-one min-one-of (close-mates with[self != myself] )[distance myself]- W) ^7 i1 @+ G% {' U* h2 T7 N
face closest-one/ Z1 L" S2 t  ^
rt 180
5 V. I, L6 q) D' A% ^5 ^fd random-float step-size% x6 \4 X# _& f1 m
avoid-walls) G& \" [) v3 x8 U1 z' _+ \
set stopped? false]
4 Z9 O* H* x$ C5 B- W4 J[set stopped? true] ! S  l; P4 l) k$ e
]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成, a! }+ M+ H% B3 j
if not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]$ N, `3 L7 f3 I; J2 U
则可以顺利的终止go程序, y+ F. @/ t6 y' B! E- l' U
但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-14 02:11 , Processed in 0.021600 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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