2015-04-23 20 views
1

我有这行代码:的NetLogo - 预期恒定误差

set SSB sum [foreach [foglie with [ipotetico? = false]] [((([media] of self) - media-tot)^2) * ([larg] of self * [altez] of self)]] 
  • foglie是一个agentlist;
  • 媒体TOT是一个全局变量

我想不通为什么它给我的错误:

expected constant

我发现下面的漏洞,但在我看来不优雅,也许更慢:

set SSB 0 
ask foglie with [ipotetico? = false] [ set SSB (SSB + (([media] of self - media-tot)^2) * ([larg] of self * [altez] of self)) ] 
  • 你觉得呢?
  • 如何让第一个代码工作?
  • 第二个代码是否等同?
+2

“自我”不会增加任何含义,并且始终可以省略。而不是自己的'[x]',只要写'x' –

回答

3

一个很好的问题将包括一个最小问题的例子。在这种情况下,在上面的第一次尝试中,您看起来好像不了解座席和座席之间的差异,也不了解使用foreach。所以你需要阅读这个。

  • sum需要一个列表作为输入
  • 做一个列表与支架符号,你需要包括唯一不变的;否则,使用list
  • 把一个agentset括号不会产生列表,由于上述原因,但即使你使用list你会得到包含agentset作为一个元素,而不是代理商的名单列表
  • foreach不返回名单(map一样)

假设medialargaltez是foglie属性和media-tot是一个全球性的,你可以做以下几点:

sum [(media - media-tot)^2 * (larg * altez)] of (foglie with [ipotetico? = false]) 
+0

谢谢你的好解答。 我很抱歉没有包含一个简单的例子,但需求改变了,我必须在明天展示模型。 – AndreA