设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5696|回复: 2

[交流] 代码逻辑问题

[复制链接]
发表于 2008-4-12 15:04:09 | 显示全部楼层 |阅读模式
在这段代码中我设定了一个stopped?变量,初始状态设为false 。运行过程不能输出stopped?为true 。始终为false
! y9 H( W7 j1 n5 L4 {to go
. [7 X3 e( ]' u4 c( Wif not any? turtles with [not stopped? ] [ stop ]  % G; C- `# k; h- t9 [7 Y5 O5 [( ]6 M" Y5 O
ask turtles with [remainder who 5 = 0] [
6 B+ O. b5 ]1 W& P, u/ W, oset close-mates  (turtles with [self != myself])with[  Z9 b+ I. p: p+ K6 f
(abs(xcor -(xcor-of myself)) < X-Dist + Wid ) # M* H5 D, y/ ^" B: u
and (abs(ycor -(ycor-of myself)) < Y-Dist + Dep )
: P, }" [1 Z7 b  I' z/ W! fand remainder who 5 = 0
% q' y! f# r6 k5 J& W8 N]                   * [0 l& |2 y+ ^- r" x8 _  u
ifelse any? close-mates ' F8 B8 x9 [  k$ d: c0 h
[                                                               
% q- n/ q" P3 w+ H4 Yset closest-one min-one-of (close-mates with[self != myself] )[distance myself]
* V* ?) V3 ]2 C; @' Xface closest-one
2 |" v, q3 l* W5 Brt 180
0 o0 V4 ?. I2 K2 Z! |fd random-float step-size
5 L8 }7 M! L  f+ d7 Savoid-walls
9 U9 L+ Q2 [" q+ [9 w( qset stopped? false]
* t* y" i8 ]6 u) O' h[set stopped? true] % s' @( m: I/ z
]
 楼主| 发表于 2008-4-12 15:05:12 | 显示全部楼层
是逻辑有问题吗?
 楼主| 发表于 2008-5-2 17:02:02 | 显示全部楼层
上述问题,如果最先的if语句改成% M# A: L1 q9 ~. x# E
if not many? turtles with [remainder who 5 = 0] with [ not stopped?][ stop]; N8 I1 E% N3 Y3 o+ b+ u& h9 e
则可以顺利的终止go程序
; C' `' y4 Y/ l) B. z& v但是从我的程序逻辑上,编号非5的整数倍的turtle分别与最近的一个五的整数倍turtle tie在一起,5的倍数turtle为根turtle,所以没有turtle运动和没有5的整数倍turtle运动是等价的,if语句两者逻辑没有实质区别,但为什么执行起来会有区别呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-7 01:42 , Processed in 0.017631 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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