如何在netlogo中创建对

时间:2014-05-12 22:00:40

标签: netlogo

我正在尝试在代理之间建立连接。我创建了3个代理品种:公司,官员和公民(每个品种有10个代理商),我需要创建成对。每对涉及:一个公司,一个公民和一个官员(代理人随机选择)。我还需要所有代理都会创建对。

breed [ firms firm]
breed [ officers officer]
breed [ citizens citizen]

;;那么我需要创造一对,如果这对中的一个代理人是坚定的那么,公司可以自行贿赂或不贿赂,如果不是,公司挣30,官员挣0,公民挣10:

to go 
 if ticks mod 3 = 0 
  [
   ask turtles 
   [ 
  if breed = firms 
  [ 
    if bribe? = false 
    [ 
       set budget budget + 30
       output-print (word " firms   " budget)
       ask other turtles 
       [ 
         if breed = officers [ set budget budget +   0 
                               output-print (word " officers   " budget)]
         if breed = citizens [ set budget budget +  10 
                               output-print (word " citizens"   budget)]     
            ]
           stop
         ]
        ]
       ]
      ]

;;然后去其他蜱,公民和官员决定接受贿赂或惩罚贿赂.......

1 个答案:

答案 0 :(得分:0)

你说“每对涉及:一个公司,一个公民和一个官员”。我称之为三元组,或者仅仅是组合而不是一对组合; “对”总是意味着两个,而不是三个。

这里有一些示例代码,它们构成了所有可能的三元组,然后做了一些近似于您的描述:

ask officers [
  let this-officer self
  ask citizens [
    let this-citizen self
    ask firms [
      if bribe? [
        set budget budget + 30
        ask this-citizen [
          set budget budget + 10
        ]
      ]
    ]
  ]
]

我无法理解你所说的关于你正在做什么的一切。但希望上面的代码很接近,并说明嵌套ask的原则,以便形成所有可能的组合。