gpt4 book ai didi

list - NetLogo 按特定值对代理列表进行排序

转载 作者:行者123 更新时间:2023-12-02 03:42:13 24 4
gpt4 key购买 nike

我有一个包含 5000 多名农民和几家工厂的模型。有时新建一个工厂,此时我希望工厂执行以下操作:

创建一个包含所有农民的列表,然后根据农民到工厂的距离(从低到高)对该列表进行排序。

我尝试过用 table 来做这个,

ask factory 1 [ask farmers [set distance-to-factory distance myself]]
ask factory 1 [set a table:group-agents farmers [distance-to-factory]]

但是生成的主体集并不是从低到高排序的,反之亦然。此外,我希望工厂之后能够要求订购表(或列表)中的单个代理做某事:

按照离工厂的距离对农民进行排序后,我希望工厂能够要求该列表中的农民送货(即首先询问最近的农民,但当没有 cargo 时,再询问第二个)询问最近的农民等等)。

非常感谢您的帮助!

最佳答案

您需要为工厂创建一个代理变量,用于按距离顺序存储农民列表。这是一个完整的示例,运行它并检查工厂以确信它有效。

breed [factories factory]
breed [farmers farmer]

factories-own [my-farmers]

to setup
clear-all
create-farmers 100
[ setxy random-xcor random-ycor
set color yellow
set shape "circle"
set size 0.5
]
create-factories 3
[ setxy random-xcor random-ycor
set color red
set shape "house"
set size 2
initialise-factory
]
reset-ticks
end

to initialise-factory
set my-farmers sort-on [distance myself] farmers
end

查看初始化工厂过程。对agentset 进行操作的sort-on 原语返回一个list。而[distance myself] of ...正在计算返回工厂的距离(因为工厂正在询问,因此是myself)。因此该列表按到工厂的距离排序。

创建列表后,您可以使用列表过程(例如item原语)来询问特定的农民。

关于list - NetLogo 按特定值对代理列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48193143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com