设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3884|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false
2 y# t# T. b5 I  ^% f8 ?  p1 Wto go$ F4 A4 A& G9 v9 b
if not any? turtles with [not stopped? ] [ stop ]  9 h. y% N  s# r. K9 g4 `7 G
ask turtles with [remainder who 5 = 0] [
7 x0 q, q3 e9 J; V  m) [2 Wset close-mates  (turtles with [self != myself])with[" j  H; f- F6 |) Y6 J/ F# |1 w
(abs(xcor -(xcor-of myself)) < X-Dist + Wid ) 3 D# `& M7 s& `* f- M
and (abs(ycor -(ycor-of myself)) < Y-Dist + Dep )   w! w+ V8 ]% g2 U3 r3 X: a) S* C/ Y
and remainder who 5 = 0 . m2 i9 ?# B4 e6 i6 `( M8 C
]                   " s' ~0 k# o, q+ B) U$ z2 N/ h
ifelse any? close-mates
) {3 ~  t8 s. T4 o& V  u[                                                               
8 c4 Y9 P/ A9 H0 wset closest-one min-one-of (close-mates with[self != myself] )[distance myself]. D* `" J7 O5 o$ I% d* u( l$ e
face closest-one4 G& Z( b, S: [, ]5 N+ a7 s; t& x
rt 1805 \% N8 r8 v/ T6 }* w
fd random-float step-size
, Y' [6 s) O1 @: }avoid-walls# G0 G3 m7 Z0 l+ @' d7 J
set stopped? false]
6 q, Z4 Q) Z1 `# Z+ N2 [0 Q, D8 F$ J[set stopped? true]
7 t+ W# Z, M+ i+ z% r, f+ q]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成
3 j% P' H9 ~! V7 B2 C9 Qif not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]9 N& |; P6 |4 K. v
则可以顺利的终止go程序
% H+ s+ _5 F* q* u/ b7 l' h9 y$ j但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-1 23:42 , Processed in 0.013780 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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