设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4454|回复: 4

[交流] 列表中的条目比较

[复制链接]
发表于 2008-4-18 00:08:38 | 显示全部楼层 |阅读模式
我想创建一个列表list-of-m,其中m值在每轮循环后会更新并fput到list-of-m中。在6轮循环之后开始比较,如果列表中0  1 2项的均值与3 4 5项的均值的绝对值相差小于0.1,并且如果列表中6 7 8项的均值与3 4 5项的均值的绝对值相差小于0.1,并且如果列表中0  1 2项的均值与6 7 8项的均值的绝对值相差小于0.1,就停止程序运行。我按下面的方法编,报告(红色部分):expected number,list,string or boolean.高手赐教啊!' R* }/ h# T! G0 K! P- o4 p* v
set t  t + 1% J! ~  n7 W: R  d
while [t > 6 ] [ if abs((mean [item 0 list-of-m item 1 list-of-m item 2 list-of-m]) - (mean [item 3 list-of-m item 4 list-of-m item 5 list-of-m]))< 0.01 and
/ {7 o# W2 r: T2 r1 V                          abs((mean [item 6 list-of-m item 7 list-of-m item 8 list-of-m]) - (mean [item 3 list-of-m item 4 list-of-m item 5 list-of-m]))< 0.01 and8 T1 \, F  T* N% l! P" ?- H7 r$ c8 m
                          abs((mean [item 6 list-of-m item 7 list-of-m item 8 list-of-m]) - (mean [item 3 list-of-m item 4 list-of-m item 5 list-of-m])) < 0.01[stop]
% h( a. u5 z: p  ~0 c]
 楼主| 发表于 2008-4-18 15:06:02 | 显示全部楼层
set t t+1
! l  i8 c  Z7 i: Y. d. X' ^while [t > 6 ] [ if abs( mean (list (item 0 list-of-m)  (item 1 list-of-m) (item 2 list-of-m)) - mean (list (item 3 list-of-m)  (item 4 list-of-m) (item 5 list-of-m)))< 0.01 and
8 @* k; I( S" D7 _! U9 Z6 [) T0 O                         abs( mean (list (item 3 list-of-m)  (item 4 list-of-m) (item 5 list-of-m)) - mean (list (item 6 list-of-m)  (item 7 list-of-m) (item 8 list-of-m)))< 0.01 and
+ F7 n5 P2 e& [( Q; I                         abs( mean (list (item 0 list-of-m)  (item 1 list-of-m) (item 2 list-of-m)) - mean (list (item 6 list-of-m)  (item 7 list-of-m) (item 8 list-of-m)))< 0.01
& ]4 d; b+ K$ ~/ u. h                         [stop]
! g$ }2 }3 @& H                      ]1 }. S5 s% O. I2 R
上面的问题勉强解决了,但为什么老是运行到第6次就死机了,郁闷。4 W# M( I& _0 @, L& n% ?: \
( x" G4 e  z4 s3 l- a2 ]8 `. R
[ 本帖最后由 wjcpcahu 于 2008-4-18 19:16 编辑 ]
 楼主| 发表于 2008-4-18 19:19:02 | 显示全部楼层

比较怪异

如果将6 改为18,运行到18次就死机,我发现这个程序怎么跟病毒一样!修改0.01没用,减少主体数量也没用,闷啊!!!!!
 楼主| 发表于 2008-4-19 16:11:18 | 显示全部楼层

好像可以了

to go; f( f$ |2 y% ^- a1 k  e4 Q
     set t t + 1
4 C: t8 i" Q$ V5 h3 T4 _     grow
  j9 H& U0 e) M3 M- f& |% l     update-list-of-m
, n, a3 v% p: m) J( J. M3 j. Q5 o     do-plots5 `5 q2 ?1 ]+ e' B% d0 u7 [1 C: Q
     tick  9 Y2 M# G5 G* `$ n$ P8 p
    ifelse t > 8
! ?/ a7 @5 R1 r- C                  [if abs( mean (list (item 0 list-of-m)  (item 1 list-of-m) (item 2 list-of-m)) - mean (list (item 3 list-of-m)  (item 4 list-of-m) (item 5 list-of-m)))< 0.01 and
. N" Q: H. T4 _7 r  C" g( ?' Q# ^                      abs( mean (list (item 3 list-of-m)  (item 4 list-of-m) (item 5 list-of-m)) - mean (list (item 6 list-of-m)  (item 7 list-of-m) (item 8 list-of-m)))< 0.01 and
  U& R0 r4 Y) F( T                      abs( mean (list (item 0 list-of-m)  (item 1 list-of-m) (item 2 list-of-m)) - mean (list (item 6 list-of-m)  (item 7 list-of-m) (item 8 list-of-m)))< 0.01 9 j5 @# V1 s, o8 q- w
                      [stop]]- C' r' W3 g# p% k" |
                      [ ]  0 ]2 j, Z( b1 t5 x
end" K% j6 A" U" d) S
各位大虾帮忙看看,这样好像可以了。以前用while之所以不行,是不是因为如果报告为true,那么就会反复运行后面的命令导致死循环啊?5 u4 i' O% O9 s! v5 F" f5 P
还有就是[ ]是不是意味着不执行任何操作,返回set t t + 1,然后grow,  update-list-of-m, do-plots, tick ..........这样一直按这种顺序循环直到停止。, K' [) C4 l5 p6 I
& Y+ ~4 }6 [6 h' g
[ 本帖最后由 wjcpcahu 于 2008-4-19 16:19 编辑 ]
 楼主| 发表于 2008-4-29 10:18:36 | 显示全部楼层

各位大虾,上面说的对吗?给点意见,小弟心里还是很忐忑的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-4 08:57 , Processed in 0.012704 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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