设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5681|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false
; U$ A, Q( L+ j+ }to go) v; z: ?6 F0 V) l4 ]' X) [
if not any? turtles with [not stopped? ] [ stop ]  : R! _: R& h3 f4 n" h9 i
ask turtles with [remainder who 5 = 0] [' S2 j2 a0 Z! x
set close-mates  (turtles with [self != myself])with[
  ^/ o5 ?1 S+ b7 `(abs(xcor -(xcor-of myself)) < X-Dist + Wid )
# B  {, C8 r/ ^and (abs(ycor -(ycor-of myself)) < Y-Dist + Dep ) . l. t" g" s' r9 q7 x; `
and remainder who 5 = 0 2 g" P; h; n6 A; ~
]                   6 d8 q' q( h+ k8 N7 g+ l) Z
ifelse any? close-mates
% X  G$ I$ O# l% s  r! M  w$ ?[                                                                8 v0 P3 I$ A% l/ _
set closest-one min-one-of (close-mates with[self != myself] )[distance myself]% g- o& b+ `8 Z/ m0 k+ e8 d- H
face closest-one4 {  b- i! X& U( C9 h/ G
rt 180
% n- m% e1 s& bfd random-float step-size, h& I! n9 c" R7 M
avoid-walls
: R" @. L: N# Kset stopped? false]
" e( P9 x' q; M/ s1 q/ ]' Y[set stopped? true]
# Q4 y/ [) w. A+ V: p]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成. N( c" F1 o. D- L) ^
if not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]0 I0 S8 u. p5 L. C- t+ M
则可以顺利的终止go程序: r0 S) M. Y, S/ ]7 j( y6 O3 X
但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-3 19:31 , Processed in 0.015662 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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