我的补丁有cost
和gain
属性,我想用最小的cost
和最大gain
排序补丁列表。 sort-by
函数用于对一个属性进行排序,但我如何排序这两个属性?排序补丁集或agentset用的NetLogo
回答
排序许多属性的agentset,您可以使用sort-by
或sort-on
:你更喜欢哪一个
patches-own [ cost gain ]
to sort-patches
ca
ask patches [
set cost random 100
set gain random 100
]
let patches-sorted-by sort-by [
([ cost ] of ?1 > [ cost ] of ?2) or
([ cost ] of ?1 = [ cost ] of ?2 and [ gain ] of ?1 < [ gain ] of ?2)
] patches
show map [[ list cost gain ] of ? ] patches-sorted-by
let patches-sorted-on sort-on [ (cost * -1000) + gain ] patches
show map [[ list cost gain ] of ? ] patches-sorted-on
end
是你。使用sort-on
需要仔细构建公式(即,如果您可以获得大于1000的收益,则以上方法将不起作用),但稍微不详细。
编辑:多项标准
确定排序的更一般的方式,这可能是您的情况矫枉过正,但我想出了很多更一般的:
to-report sort-by-criteria [ criteria items ]
; `criteria` needs to be a task that returns a list of numbers
report sort-by [
compare-lists (runresult criteria ?1) (runresult criteria ?2)
] items
end
to-report compare-lists [ l1 l2 ]
report ifelse-value (empty? l1 or empty? l2) [ false ] [
ifelse-value (first l1 = first l2)
[ compare-lists but-first l1 but-first l2 ]
[ first l1 < first l2 ]
]
end
什么你需要通过sort-by-criteria
是一个task
,给定你想要排序的项目之一,将报告一个数字列表,根据该列表你的项目将被排序。
在你的情况,你会使用它想:
let sorted-patches sort-by-criteria (
task [[ list (-1 * cost) gain ] of ? ]
) patches
对于两个标准,它可能不值得使用,但如果你有标准的长列表,它很可能是一个更容易和更清晰使用比其他任何方法。
这假定只有成本相等才能获得收益。但是我想知道这张海报是否真的需要考虑到这一点。 – 2014-09-06 17:18:43
确实如此。我没有考虑过这种选择,但我想如果海报想要某种加权排序的成本和收益,他可以使用'sort-on'版本并用'(cost * -1000)+ gain'替换一个合适的功能。 – 2014-09-06 18:08:10
谢谢Nicolas,谢谢Seth,实际上我想找到'cost'和'gain'之间的最佳组合......不仅如果成本是相等的。 – delaye 2014-09-08 08:16:00
- 1. 的NetLogo,补丁
- 2. NetLogo发布补丁集中的独立补丁
- 3. 的NetLogo AgentSet减法
- 4. NetLogo 3D:透明补丁
- 5. netlogo移动乌龟最近的补丁
- 6. NetLogo:向补丁颜色移动海龟
- 7. 如何访问Netlogo中的左侧或右侧海龟补丁?
- 8. Netlogo:如何使补丁有一定的红色补丁距离信息
- 9. Netlogo在补丁3中添加补丁的平均距离信息-3
- 10. GIT补丁 - 或 - 推?
- 11. 算法在有序补丁集合中使用最新补丁对对象值进行补丁
- 12. git格式的补丁可以用于补丁程序吗?
- 13. Gerrit问题与补丁集
- 14. Netlogo多修补程序层
- 15. netlogo:有补丁使用记者计算影响力值
- 16. 一个格里特补丁集取决于过时的补丁集
- 17. 有没有办法在NetLogo中用单行代码设置多个补丁的补丁颜色?
- 18. 的NetLogo - 补丁的变化颜色,当代理处于顶部
- 19. 的NetLogo代码的问题,海龟找不到补丁在0,0
- 20. 猴子补丁或不?
- 21. NetLogo:获取修补程序集以排除保存在龟内存中的修补程序
- 22. 如何在Netlogo中更改一定比例的黑色补丁?
- 23. NetLogo:可以一次选择多个标准的补丁吗?
- 24. 如何从NetLogo中随机选择neighbors4中的两个补丁
- 25. Netlogo将一组补丁分配给一个品种的变量
- 26. 如何显示补丁坐标plabels的NetLogo
- 27. 在NetLogo中创建一个50 X 50的补丁网格
- 28. 使用Flyway管理补丁子集
- 29. NetLogo从补丁变量查询龟变量
- 30. 打个补丁,或使用$资源
你能更准确地知道你想要的“最低成本和最大收益”是什么意思?我可以想象几种可能的含义 - 你可以从另一种中减去一种含义,或者只使用后者来打破前者中的联系,或者... – 2014-09-06 14:38:09