改变变量范围 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))) ]
我有一个变量:
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))) ]