首页 > 解决方案 > Netlogo 代码框架:意见形成过程和复制器动态/ESS

问题描述

我有一个关于建模游戏理论框架的相对具体的问题。老实说,我不太精通 Netlogo 中的编程,并从 Youtube 视频中获得了基本代码设置。

但是为了扩展我用于学士论文的框架,我想模拟非平衡动力学并看看会发生什么:

首先是我为我的学士论文考虑的模型:

一个人可以在两种意见之间进行选择,一种代表公众舆论,另一种代表任何其他相反的意见。因此策略空间由 S = (A,B) 或多或少给出。个人获得回报,取决于选择相同策略 A 或 B 的人口份额。因此,回报 fct。用于在公众中代表意见 A(公众意见)由 U(A)= x * a 和 x 给出;份额和a;任何代表与我的朋友/邻居等意见相同的一致性效果或效用的正数。

但是代理人有一个基本的倾向是不同意他们的指数 i 给出的舆论。这意味着如果我们假设(为简单起见)所有代理均等分布在从 0 到 1 代理的区间上,那么接近 1 的代理在这个意义上本质上更不快乐,而接近 0 的代理本质上对公众舆论更满意。

所以收益函数。因为意见 B 由 U(B) = (1-x) a + i b 给出,其中 i 作为刚刚提到的索引,b 再次为任何正数,为“遵循”他们的基本倾向提供了额外的效用

在我的学士论文中,我提出了一个均衡分析,您可以在其中看到即使只有一小部分人在为意见 B 蜂拥而至,它也可能导致公众舆论发生变化的连锁反应。当然取决于选择的变量值。

所以我现在模拟这个的想法如下:收益取决于我想用进化博弈论/复制器动力学覆盖的人口份额,看看会发生什么。我认为 2x2 收益矩阵在对角线上为 1 或任何其他正数,否则为 0 就足够了(在最近的代码中仍然是 3x3 矩阵)。

但是我如何对从 0 到 1 的区间上平均分布的代理进行建模,然后将它们的指数插入到收益矩阵中?

我知道这听起来很懒,但有人可以为我设置必要的代码行吗?这对我的研究将是巨大的帮助。

我希望这是可以理解的,我对您的提示、改进建议和批评非常感兴趣。

非常感谢!

最好的问候, 拉斐尔

globals [
  colors; all the colors/actions
  payments
  old-red-count
  old-green-count
  old-blue-count
]

to setup
  ca
  set colors [red green blue]
  set payments [
  [1 0 0]
  [0 1 0]
  [0 0 1]
  ]
  ask patches [set pcolor white]
  create-turtles num-turtles [
  set color one-of colors
  setxy random-pxcor random-pycor
  ]
reset-ticks
end
to-report payoff [a b]
  set a position a colors
  set b position b colors
  report item b (item a payments)
end

to-report u [action]
  let result 0
  foreach colors [
      let theta count turtles with [color = ?] / count turtles
      set result result + (theta * payoff action ? )
      ]
  report result
end

to go
  tick
  let current-population-count map [count turtles with [color = ?] ] colors      
  let new-population-count (map [?1 * (1 + u ?2)] current-population-count colors) 
  set new-population-count map [num-turtles * ? / sum new-population-count] new-population-count        
  ask turtles [die]
  (foreach new-population-count colors [
     create-turtles ?1 [
       set color ?2
       setxy random-pxcor random-pycor
     ]  
 ])
end

标签: netlogogame-theory

解决方案


推荐阅读