设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7809|回复: 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.高手赐教啊!; _6 W8 w5 ]0 P& g1 F' B
set t  t + 1
" l' ^1 B" f0 w( C, }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 and8 P. ?+ w# k' D) Z! u7 |
                          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 and: O! t( Q) a5 j8 D3 w8 `2 P" X8 J, ~. 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[stop]1 p3 X  ^2 f9 s( e- ]5 E! Y3 i2 X
]
 楼主| 发表于 2008-4-18 15:06:02 | 显示全部楼层
set t t+1, D9 h7 ^" U) b& S4 B% Y, a3 ?
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 and3 p# f. U9 s; D# u! o" I$ f+ s7 X+ W
                         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
8 q; ?/ l$ j6 }! O                         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 @# I  L( Y, P# C6 B3 }                         [stop]( z1 {0 Y2 ^3 q& H  O( ~
                      ]
: r* m0 C: @, R) G9 _4 w! F7 E上面的问题勉强解决了,但为什么老是运行到第6次就死机了,郁闷。
% N  T" Q8 A, [  w
: Y' q+ h. [2 ][ 本帖最后由 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
  D- [6 Q, F0 ?- Z3 z     set t t + 1
: Y0 F+ P( `! I, ?! W5 e% m4 t( |     grow
( b9 G% t# `7 e' U; U' ?/ U' g$ Y     update-list-of-m- v  w& r8 C6 c( U! m; d' {
     do-plots! J$ x$ c6 W3 I6 m- a, Z
     tick  9 B. F: q) ]! l' c9 R
    ifelse t > 8
! V- ?+ Y- A( U$ }                  [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
( U5 ?8 a0 x: z2 G3 W                      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: v! d' Q/ \7 M
                      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
& c: n9 b% X' A$ p* ~5 z% x                      [stop]]) H) u* |0 K, H6 b" t
                      [ ]  
  X3 N3 |9 l, X; N! K  yend
% @: w9 T4 K" L4 e+ V各位大虾帮忙看看,这样好像可以了。以前用while之所以不行,是不是因为如果报告为true,那么就会反复运行后面的命令导致死循环啊?5 L4 x: }$ ]% a& N$ x( S; ?9 d
还有就是[ ]是不是意味着不执行任何操作,返回set t t + 1,然后grow,  update-list-of-m, do-plots, tick ..........这样一直按这种顺序循环直到停止。
# p2 a; ^8 [7 V
0 c$ ~+ t6 S* {6 q8 V. d. q0 `[ 本帖最后由 wjcpcahu 于 2008-4-19 16:19 编辑 ]
 楼主| 发表于 2008-4-29 10:18:36 | 显示全部楼层

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

本版积分规则

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

GMT+8, 2026-9-15 16:51 , Processed in 0.019618 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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