设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7824|回复: 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.高手赐教啊!1 @- M" P: Y- o6 Z  g
set t  t + 1; y; k( x+ h3 U3 ?, r" z
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
/ \! p2 P0 N# w  C: ^! s                          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
2 a( C5 L6 V6 y& [+ l! M9 S                          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]
, X+ a3 F& P0 I' D]
 楼主| 发表于 2008-4-18 15:06:02 | 显示全部楼层
set t t+16 n" O1 l; o9 H' b( V$ j
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
5 }2 B  l# N! g1 H! R) F( P                         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/ [. L: d7 P# C
                         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 0 t4 c; @$ y9 a' q0 G$ P/ `/ H8 B
                         [stop]
' m! H+ W0 h, u+ F' N! Z                      ]
* @- b# |2 L9 T$ N$ D+ L  _上面的问题勉强解决了,但为什么老是运行到第6次就死机了,郁闷。
: q3 z$ T4 ], \# U
3 }; k* U2 ?. ~. m3 H6 k, Y[ 本帖最后由 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
6 ]! ~' x3 [8 ?) |7 z& M; ~  S     set t t + 1# ~! ^" p8 T# j8 _: S/ R5 U
     grow
3 a% v- K! G+ o4 s     update-list-of-m! \8 Z$ m5 J! f! W- B0 h( R( A
     do-plots
8 ?7 N* \( e9 s" j     tick  
  q& f' v  J) [) o1 p$ C+ X8 G7 L+ q    ifelse t > 82 U/ ~6 ~1 K$ G. A
                  [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
% ^' }& J5 N: i5 I# h, x                      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 and3 ?7 [9 q2 z1 F+ s$ c
                      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, T3 o- g0 V' `                      [stop]]6 L1 j( H. u# ?' t+ i9 U( m0 V3 @
                      [ ]  
2 o: Y( u9 U' `7 D7 Eend5 w6 S( M% K- C5 U, }
各位大虾帮忙看看,这样好像可以了。以前用while之所以不行,是不是因为如果报告为true,那么就会反复运行后面的命令导致死循环啊?
& r6 M  L1 a6 h+ ?还有就是[ ]是不是意味着不执行任何操作,返回set t t + 1,然后grow,  update-list-of-m, do-plots, tick ..........这样一直按这种顺序循环直到停止。
% d) w! c8 ?: k" x) b+ ~/ }, N
# a! q* t8 N" P7 L. u- m8 B[ 本帖最后由 wjcpcahu 于 2008-4-19 16:19 编辑 ]
 楼主| 发表于 2008-4-29 10:18:36 | 显示全部楼层

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

本版积分规则

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

GMT+8, 2026-9-17 16:27 , Processed in 0.017047 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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