Random 如何分发代理';根据Netlogo中的特定概率随机设置属性?
我对Netlogo比较陌生,只完成了少数几个型号。目前正在为我的论文做一个工作,我需要根据特定的概率随机分配代理的属性,一些在模拟开始时,其他属性将在整个过程中分布。对于那些熟悉它的人来说,这与信任游戏的扩展有关。我和一个不使用Netlogo的同事完成了概念模型,所以我现在有点卡住了 我认为rnd扩展可能有用,但我不太明白如何使用它。如果这对你们任何人来说都是多余的,我很抱歉,但我真的希望在这里得到一些帮助Random 如何分发代理';根据Netlogo中的特定概率随机设置属性?,random,attributes,netlogo,probability,agent-based-modeling,Random,Attributes,Netlogo,Probability,Agent Based Modeling,我对Netlogo比较陌生,只完成了少数几个型号。目前正在为我的论文做一个工作,我需要根据特定的概率随机分配代理的属性,一些在模拟开始时,其他属性将在整个过程中分布。对于那些熟悉它的人来说,这与信任游戏的扩展有关。我和一个不使用Netlogo的同事完成了概念模型,所以我现在有点卡住了 我认为rnd扩展可能有用,但我不太明白如何使用它。如果这对你们任何人来说都是多余的,我很抱歉,但我真的希望在这里得到一些帮助 extensions [ rnd] ;; divides agents into tw
extensions [ rnd]
;; divides agents into two types
breed [ sexworkers sexworker ]
breed [ officers officer ]
;; determines attributes of agents
sexworkers-own
[ assault? ;; is assaulted
trust? ;; probability to trust police to report assault
protection? ;; probability of good experience with police during report
prob-trust ] ;; probability to trust overall
officers-own
[ behavior ] ;; probability of treating sex workers well/badly during report
这是模型的开始,然后我想根据特定的概率分布属性。老实说,我还没有找到一个方法来做到这一点,因为我打算这样做。
我想要的是,对于每一个性工作者来说,被攻击的概率为0.01(prob-attack;attack?=true)。之后,每打一个勾,性工作者再次遭受袭击的几率为0.01
之后,在攻击?=真的子集中,有一个报告攻击的概率(概率报告,0.5。这用信任?=真/假表示。在报告的子集中,有一个与警察有良好/不良经验的最终概率(概率保护),这里的保护?=真/假
这三个属性应该根据概率随机分布,然后也会产生未来信任警察的组合概率,即概率信任(概率信任=概率攻击+概率报告+概率保护)
我所做的(到目前为止没有rnd扩展)是:
;; determines sex workers' behavior
ask sexworkers [ move ]
ask sexworkers [ victimize ]
ask sexworkers [ file ]
to victimize
ask sexworkers [
ifelse random-float 1 <= 0.0001
[ set assault? 1 ]
[ set assault? 0 ]
]
end
to file
ask sexworkers with [ assault? = 1 ] [
ifelse random-float 1 <= 0.5
[ cooperate ]
[ avoid ]
]
end
to cooperate
ask sexworkers [ set trust? 1 ]
end
to avoid
ask sexworkers [ set trust? 0 ]
end
决定性工作者的行为
询问性工作者[行动]
询问性工作者[受害]
询问性工作者[档案]
害
询问性工作者[
ifelse随机浮动1(1)您在这里尝试做的任何事情都不需要rnd
扩展。如果您只是想以某种概率采取一些行动,那么您的If random float 1
方法是正确的方法。当您想要进入加权概率时,rnd
扩展就是,例如,根据国际关系收入
(2) NetLogo可识别true
和false
(大写不重要)作为特定的真值。您不应该使用1和0作为真值和假值的代理。直接使用真值有几个优点。最明显的是可读性,您可以使用诸如set trust?true
和if trust?=true[做某事]
之类的语句。更简洁地说,您可以简单地说if trust?[做点什么]
。其他优势包括可以访问逻辑运算符,例如针对您的情况使用not
和和
关于每个代理都有相同行为的实际问题,您已经嵌套了ask-turtles
type语句。例如,您有:
to file
ask sexworkers with [ assault? = 1 ] [
ifelse random-float 1 <= 0.5
[ cooperate ]
[ avoid ]
]
end
如果没有其他事情要做,请使用第一个选项。如果设置信任?值只是海龟在合作或回避时应采取的众多行动之一,请使用第二个选项。非常感谢,看到我离目标不远,这非常有帮助,也让人松一口气。我可能会提出一个新问题关于如何将每只海龟的这些概率相加,以获得基于这些方面的信任的总体概率,并以此为基础挑选海龟。如果我没有错的话,这将被加权?对不起,我来自一个定性背景,这是基于长期的实地调查,有时我对这些术语感到非常困惑。Tha非常感谢你的帮助!
to file
ask sexworkers with [ assault? = 1 ] [
ifelse random-float 1 <= 0.5
[ ask sexworkers [ set trust? 1 ] ]
[ ask sexworkers [ set trust? 0 ] ]
]
end
to file
ask sexworkers with [ assault? = 1 ] [
ifelse random-float 1 <= 0.5
[ set trust? true ]
[ set trust? false ]
]
end
to cooperate
set trust? true
end
to avoid
set trust? false
end