NetLogo:可以 select 一次按多个标准打补丁吗?
NetLogo: possible to select a patch by multiple criteria at one time step?
这个问题偏理论,偏实际。我的补丁有变量 timber_value
和 harvest_cost
。
请问,在 NetLogo 中是否有一种方法可以select 一块具有最大木材价值和最小采伐成本的补丁 'ask' 即同时?
我想这可以通过添加变量 difference
(difference = timber_value - harvest_cost
) 和 select 补丁 ask max-one-of patches [difference]
.
来解决
但是,我想知道是否有另一种方法同时考虑两个变量(timber_value和harvest_cost)?
我真的想不出比描述的更好的方法...
感谢您分享知识和讨论!
一般来说答案是否定的,但这与NetLogo无关。要查看问题,请为这两个属性创建有序的值对。假设你得到 [2 1] 和 [1 2]。你想如何比较它们?也就是说,您可以获得最大的木材价值补丁,然后是其中最低的采伐成本补丁。
patches-own [x y]
to test
ca
ask patches [
set x random-float 1
set y random-float 1
]
show map [[list x y] of ?]
sublist
sort-by compare patches
0 10
end
to-report compare [#p1 #p2]
let _x1 [x] of #p1
let _x2 [x] of #p2
let _y1 [y] of #p1
let _y2 [y] of #p2
report (_x1 < _x2) or (_x1 = _x2 and _y1 < _y2)
end
另一方面,在这种情况下,您最好按总利润排序。由于这只是一个实数,因此会出现 none 个排序问题。
这个问题偏理论,偏实际。我的补丁有变量 timber_value
和 harvest_cost
。
请问,在 NetLogo 中是否有一种方法可以select 一块具有最大木材价值和最小采伐成本的补丁 'ask' 即同时?
我想这可以通过添加变量 difference
(difference = timber_value - harvest_cost
) 和 select 补丁 ask max-one-of patches [difference]
.
但是,我想知道是否有另一种方法同时考虑两个变量(timber_value和harvest_cost)?
我真的想不出比描述的更好的方法...
感谢您分享知识和讨论!
一般来说答案是否定的,但这与NetLogo无关。要查看问题,请为这两个属性创建有序的值对。假设你得到 [2 1] 和 [1 2]。你想如何比较它们?也就是说,您可以获得最大的木材价值补丁,然后是其中最低的采伐成本补丁。
patches-own [x y]
to test
ca
ask patches [
set x random-float 1
set y random-float 1
]
show map [[list x y] of ?]
sublist
sort-by compare patches
0 10
end
to-report compare [#p1 #p2]
let _x1 [x] of #p1
let _x2 [x] of #p2
let _y1 [y] of #p1
let _y2 [y] of #p2
report (_x1 < _x2) or (_x1 = _x2 and _y1 < _y2)
end
另一方面,在这种情况下,您最好按总利润排序。由于这只是一个实数,因此会出现 none 个排序问题。