我的補丁有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:向補丁顏色移動海龜
- 4. Netlogo在補丁3中添加補丁的平均距離信息-3
- 5. 算法在有序補丁集合中使用最新補丁對對象值進行補丁
- 6. git格式的補丁可以用於補丁程序嗎?
- 7. netlogo:有補丁使用記者計算影響力值
- 8. 一個格里特補丁集取決於過時的補丁集
- 9. 有沒有辦法在NetLogo中用單行代碼設置多個補丁的補丁顏色?
- 10. 猴子補丁或不?
- 11. 如何在Netlogo中更改一定比例的黑色補丁?
- 12. 如何顯示補丁座標plabels的NetLogo
- 13. NetLogo:可以一次選擇多個標準的補丁嗎?
- 14. 在NetLogo中創建一個50 X 50的補丁網格
- 15. Netlogo將一組補丁分配給一個品種的變量
- 16. 打個補丁,或使用$資源
- 17. 如何在netlogo中通過補丁隱藏圖像
- 18. 補丁的JasperServer
- 19. matplotlib補丁集合中的Zorder規範?
- 20. IDA Pro CommandLine補丁程序
- 21. TortoiseHg應用補丁
- 22. Git使用補丁
- 23. abort:無法將補丁應用於已經有效的補丁
- 24. NetLogo:從另一個減去一個修補程序集
- 25. Netlogo:用特定的pcolor在某個補丁上產生一隻海龜
- 26. 什麼是被套補丁集?
- 27. .NET3.5 SP1補丁
- 28. Android - 9補丁
- 29. 補丁功能
- 30. Primefaces Fileupload補丁
你能更準確地知道你想要的「最低成本和最大收益」是什麼意思?我可以想象幾種可能的含義 - 你可以從另一種中減去一種含義,或者只使用後者來打破前者中的聯繫,或者... – 2014-09-06 14:38:09