设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6580|回复: 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.高手赐教啊!! h/ e1 o+ w6 @+ K( p& [+ ~
set t  t + 18 z! Y  G( `# ~6 x1 a( O; K
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
2 {6 L6 L) m+ V7 h7 V3 f                          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 and5 @( k2 [7 E2 e6 D1 f6 b6 `) }3 _
                          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]
+ @% j+ }) a. i% _& N6 `]
 楼主| 发表于 2008-4-18 15:06:02 | 显示全部楼层
set t t+1" {! i- W( L! S
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* ~4 ^2 ~, k  E" p- u
                         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
, L0 h: p  X, C/ z6 b                         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
( N  D2 b5 D' q! L, M9 L- F; d* R- a                         [stop]) _) Y) p3 q  q, ~% b/ Z" S2 y
                      ]. ?! B! B* E* M4 G( [) g" n& Z
上面的问题勉强解决了,但为什么老是运行到第6次就死机了,郁闷。
+ C4 }) o' |: Z
5 d5 \0 Y$ U9 m& W# E. E[ 本帖最后由 wjcpcahu 于 2008-4-18 19:16 编辑 ]
 楼主| 发表于 2008-4-18 19:19:02 | 显示全部楼层

比较怪异

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

好像可以了

to go5 @( @+ M) w/ D& x2 |# o
     set t t + 1
; ?9 h: Z1 }7 g, {     grow; U7 b5 x2 _4 }) \& y  t
     update-list-of-m# u7 _) A  o% p2 n' I# Z
     do-plots3 _/ O6 G: j! W  r0 ^; C
     tick  
$ g  [2 V- |+ t( `. A; z- m7 j    ifelse t > 8
. \. X. A" d, E6 W# S                  [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
2 D; Q" Q( N, \( ]. b1 p8 o: ?- S                      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& i3 ]7 y: p0 W( z. k1 N
                      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
& j( |! ?; ]9 m3 R3 I, V! G                      [stop]]1 d! Y8 k" C& T' \! x' N- W
                      [ ]  $ M" p+ Y& }4 T: e! |
end2 g# a( c! c& A: H9 f- j
各位大虾帮忙看看,这样好像可以了。以前用while之所以不行,是不是因为如果报告为true,那么就会反复运行后面的命令导致死循环啊?0 ]3 v5 e. K) P) {2 U$ q6 }2 G$ Q$ v! z
还有就是[ ]是不是意味着不执行任何操作,返回set t t + 1,然后grow,  update-list-of-m, do-plots, tick ..........这样一直按这种顺序循环直到停止。4 o9 _2 _2 v2 d. ]
9 x  i7 J3 I. E) N
[ 本帖最后由 wjcpcahu 于 2008-4-19 16:19 编辑 ]
 楼主| 发表于 2008-4-29 10:18:36 | 显示全部楼层

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

本版积分规则

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

GMT+8, 2025-12-15 17:28 , Processed in 0.017208 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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