设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7285|回复: 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.高手赐教啊!
( T$ {9 @  B& K, N' aset t  t + 18 F  |! \7 C3 C0 q7 h  w5 i
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# K; _! m0 P* Q: D- p+ d" g( w
                          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 |4 A" M9 \* R% f9 q$ ]
                          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]
% G- w! b8 V; p; ]# R]
 楼主| 发表于 2008-4-18 15:06:02 | 显示全部楼层
set t t+1) H8 U" R8 d+ W9 j5 G, c
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 S2 f" H. u5 w( s( W& m: 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+ M5 V& F& h, Y4 `$ `) T. b* u
                         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 # l$ y- P0 J: Q/ f: b- h! p
                         [stop]! v1 G7 b0 R1 t% O
                      ]
, h1 P" D+ k7 X; l8 I- i* y# z上面的问题勉强解决了,但为什么老是运行到第6次就死机了,郁闷。+ K- I- o7 y9 D3 E# K& H
4 {$ t+ X4 N# ]( r) ~4 A
[ 本帖最后由 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
. G; V. \$ I* G% K     set t t + 1
3 s; C' W6 L. {5 Q4 s  z     grow
3 Y% b8 n* e3 ~: Q  q2 {     update-list-of-m
! P/ l$ s% ^+ Q3 w. G: H9 r" R5 `     do-plots8 M0 d+ P+ b2 S) a3 K4 ~
     tick  - W& }& W4 f) ~5 O1 R+ o
    ifelse t > 8
/ X7 w7 z7 a8 H3 u3 A" E! i" Q) k                  [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
. t/ S. D$ r& V/ }                      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 and2 Y3 W# i0 N) [9 F
                      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
; w+ B: V  m  K                      [stop]]- o+ B- N/ l9 {  Z" m% ~! B: }9 }
                      [ ]  - T; g) E! G/ ?# L# ?& K
end
$ v2 B' \5 L8 r% z: a8 \. _* \各位大虾帮忙看看,这样好像可以了。以前用while之所以不行,是不是因为如果报告为true,那么就会反复运行后面的命令导致死循环啊?; U$ t# _' h! c
还有就是[ ]是不是意味着不执行任何操作,返回set t t + 1,然后grow,  update-list-of-m, do-plots, tick ..........这样一直按这种顺序循环直到停止。, s# y" A' j; l- B5 Z# N/ ?! J8 [/ {* K& ?

  ?& e# ~- f  E) J3 r5 t) C. ][ 本帖最后由 wjcpcahu 于 2008-4-19 16:19 编辑 ]
 楼主| 发表于 2008-4-29 10:18:36 | 显示全部楼层

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

本版积分规则

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

GMT+8, 2026-7-9 05:48 , Processed in 0.014554 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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