改变变量范围 netlogo

Changing range of variables netlogo

我有一个变量:

ask group [set means-one groupmeans + resources-agent ]

我想请netlogo将变量限制在1到99之间。 怎么样?

你的问题不是很清楚。 "change the range" 是什么意思?如果你想剪掉极值,你可以这样做:

to-report clip [#x #min #max]
  if (#x < #min) [report #min]
  if (#x > #max) [report #max]
  report #x
end

那么你可以ask turtles [set means-one clip means-one 1 99]。 Otoh,如果您真的想将所有现有值线性调整到您的新范围内,您可以执行以下操作:

to rescale-all-means-one
  let _newmin 1
  let _newmax 99
  let _newrange (_newmax - _newmin)
  let _lst [means-one] of turtles
  let _min min _lst
  let _max max _lst
  let _range (_max - _min)
  ask turtles [
    let _scale (means-one - _min) / _range
    let _scaled (_newmin + _scale * _newrange)
    set means-one _scaled
  ]
end

只是为了简化 Alan 删除 if 语句的第一个答案:

你可以这样做:

ask group [set means-one (max (list 1 (min (list 99 groupmeans + resources-agent))) ]