Netlogo 两个海龟品种——一个品种是另一个品种的变量?

Netlogo 两个海龟品种——一个品种是另一个品种的变量?,netlogo,Netlogo,我有一个关于Netlogo的问题。如果我有两个不同品种的海龟,一个品种的变量的指定数量之和是否可以成为另一个品种的变量 这是我的思路。我想对多个家庭的用水量进行建模,但一个家庭的用水量需要取决于a)房屋的固定值(如水龙头用水量)*b)一个人使用水龙头的频率。每个家庭包含1人或多人,使用频率因人而异 使用两个海龟品种的想法可以让我看到一个品种的决定如何影响另一个品种 下面是我的伪代码,以帮助说明我的想法(并非打算成为一个工作代码) 为什么不简单地将每个地块作为一个家庭,让每个地块有一个或多个海龟(

我有一个关于Netlogo的问题。如果我有两个不同品种的海龟,一个品种的变量的指定数量之和是否可以成为另一个品种的变量

这是我的思路。我想对多个家庭的用水量进行建模,但一个家庭的用水量需要取决于a)房屋的固定值(如水龙头用水量)*b)一个人使用水龙头的频率。每个家庭包含1人或多人,使用频率因人而异

使用两个海龟品种的想法可以让我看到一个品种的决定如何影响另一个品种

下面是我的伪代码,以帮助说明我的想法(并非打算成为一个工作代码)


为什么不简单地将每个地块作为一个家庭,让每个地块有一个或多个海龟(人),然后将家庭因素计算为地块因素?为了定义社区,可以将斑块划分为区域(例如,如果pxcor>=5,pxcor=3,pycor为什么不简单地将每个斑块划分为一个家庭,让每个斑块都有一个或多个海龟(人),然后将家庭因素计算为斑块因素?为了定义社区,可以将斑块划分为区域(例如,如果pxcor>=5且pxcor=3且pycor 一个品种变量的指定数量之和是否可以成为另一个品种的变量

当然

snipsnip澄清:在我这里的代码中,我不允许居住在一个家庭中的人的用水成为该家庭的用水变量。通常,我建议不要使用一个(或多个)状态的解决方案代理可能是另一个变量的状态-除非有很好的理由。状态相互依赖是危险的,因为您必须始终确保在代理之间同步值。更重要的是,这通常是不必要的。在我的解决方案中,每个人都属于一个家庭,并且当该家庭计算时它要求所有居民在当天向他们提供用水,然后返回所有这些数字的总和。我希望这是有意义的。如果没有,请询问

*

您需要使用
of
关键字。的
允许您从一个或多个个体代理的上下文/角度直接访问变量。因此,假设我们有家庭、人和人(因为我们都有不同的用水习惯)有一些水龙头的使用频率。事实上,我们可以让人们从他们特有的正态分布中提取他们每天使用的水量。让我们这样做:

breed [people person]
breed [households household]
people-own [
  mean-use-per-day ;; mean use per day
  sd-use-per-day ;; standard dev per day
  my-household ;; the household to which a person belongs
]

to setup
  create-households 10 [
    hatch-people random 4 + 1 [ ;; between 1 and 4 people in a household
    set mean-use-per-day random 5 + 5 ;; mean 5-9
    set sd-use-per-day random-float 3 ;; sd 0.00-2.99
    set my-household myself ;; we set the person's household to the household that hatched them
   ]
]

to-report household-water-use ;; household reporter
  report sum [random-normal mean-use-per-day sd-use-per-day] of people with [my-household = myself] ;; this creates a list of water uses based on the random use of each person in the household.
end
为了运行这段代码,您只需调用

show [household-water-use] of households
从指挥中心。这将给你一份每户用水量的清单。或者如果你只想在一个随机的日子里看到一户人家的用水量,你可以试试

show [household-water-use] of one-of households
一个品种变量的指定数量之和是否可以成为另一个品种的变量

当然

snipsnip澄清:在我这里的代码中,我不允许居住在一个家庭中的人的用水成为该家庭的用水变量。通常,我建议不要使用一个(或多个)状态的解决方案代理可能是另一个变量的状态-除非有很好的理由。状态相互依赖是危险的,因为您必须始终确保在代理之间同步值。更重要的是,这通常是不必要的。在我的解决方案中,每个人都属于一个家庭,并且当该家庭计算时它要求所有居民在当天向他们提供用水,然后返回所有这些数字的总和。我希望这是有意义的。如果没有,请询问

*

您需要使用
of
关键字。
允许您从一个或多个个体代理的上下文/角度直接访问变量。因此,假设我们有家庭、人和人(因为我们都有不同的用水习惯)有一些水龙头的使用频率。事实上,我们可以让人们从他们特有的正态分布中提取他们每天使用的水量。让我们这样做:

breed [people person]
breed [households household]
people-own [
  mean-use-per-day ;; mean use per day
  sd-use-per-day ;; standard dev per day
  my-household ;; the household to which a person belongs
]

to setup
  create-households 10 [
    hatch-people random 4 + 1 [ ;; between 1 and 4 people in a household
    set mean-use-per-day random 5 + 5 ;; mean 5-9
    set sd-use-per-day random-float 3 ;; sd 0.00-2.99
    set my-household myself ;; we set the person's household to the household that hatched them
   ]
]

to-report household-water-use ;; household reporter
  report sum [random-normal mean-use-per-day sd-use-per-day] of people with [my-household = myself] ;; this creates a list of water uses based on the random use of each person in the household.
end
为了运行这段代码,您只需调用

show [household-water-use] of households
从指挥中心。这将给你一份每户用水量的清单。或者如果你只想在一个随机的日子里看到一户人家的用水量,你可以试试

show [household-water-use] of one-of households

嘿,这很好,谢谢你的建议。事实上,我有一个后续问题。一个家庭中的人有可能知道他们在哪个家庭吗?我的意思是
我的家庭
是一个
变量,那个人能与那个家庭沟通吗?
家庭(我的家庭)
它可以,尽管您最后发布的代码没有真正意义。
我的家庭
人员变量包含对家庭代理的引用,因此您可以执行类似于
询问一个人[询问我的家庭[设置大小10]]
。嘿,这很好,谢谢你的建议。事实上,我有一个后续问题。一个家庭中的人有可能知道他们在哪个家庭吗?我的意思是
我的家庭
是一个
变量,那个人能与那个家庭沟通吗?
家庭(我的家庭)
它可以,尽管您最后发布的代码没有真正意义。
我的家庭
人员变量包含对家庭代理的引用,因此您可以执行类似于
询问一个人[询问我的家庭[set size 10]]