设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5350|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false' _- @' M, `$ R* @% M; t
to go
, T" M# F: E8 ]/ m9 T5 Eif not any? turtles with [not stopped? ] [ stop ]  : Z# s3 ~8 O4 M6 D9 @6 m9 C: E
ask turtles with [remainder who 5 = 0] [
& P* N4 {( x, q; _$ ]- P( pset close-mates  (turtles with [self != myself])with[
) `+ P# C! W: Y3 f0 w(abs(xcor -(xcor-of myself)) < X-Dist + Wid )
, i: ]! m3 Z0 _& O* Iand (abs(ycor -(ycor-of myself)) < Y-Dist + Dep )
! C: G2 c; p/ }and remainder who 5 = 0 3 v( s3 P! r% ^( `" u4 g% W0 w/ N# }6 x
]                   2 a9 |$ A, a" Q
ifelse any? close-mates ) @. Q; T. V6 Y1 K& o% d) h0 F
[                                                               
7 q/ u6 E( H9 ~1 V; a' Qset closest-one min-one-of (close-mates with[self != myself] )[distance myself]
# e1 s. G/ q# `0 h8 R( Qface closest-one; d8 c+ v1 W/ N' H8 G& r
rt 180
  T: P$ T1 j. j" U0 {fd random-float step-size  H) _- e$ R; \! C
avoid-walls! b3 l  E/ g; q2 o
set stopped? false]' {/ J" U5 u) H# j
[set stopped? true] ) q+ [$ W0 r; u; r# a0 o' X, k
]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成
# F1 t+ c. s$ e% vif not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]9 r8 L/ E* D) r
则可以顺利的终止go程序
% k) p, E8 ^. Y8 Y! V但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-6 07:50 , Processed in 0.016093 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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