基于蒙特卡洛方法的谢林隔离模型实现

本文介绍了基于蒙特卡洛方法实现的谢林隔离模型,探讨了社会同质性对空间隔离的影响。通过Python编程,模拟了不同网格尺寸、代理比例和门槛值下的模型,观察其稳定性与隔离效果。分析了模型中可能出现的问题和解决方案,以及对原书现象的解释。
摘要由CSDN通过智能技术生成

基于蒙特卡洛方法的谢林隔离模型实现

谢林隔离模型

在研究社会上人类种群的空间分布问题时,社会学家们发现了同质性对自然的空间特征产生的影响,即人们倾向于与其相似的人群居住在一起。
托马斯谢林(Thomas Schelling)发明了一个著名的模型,描述的是同质性对于空间隔离的影响与作用,此模型大致描述如下:在一个二维网格中居住着一群代理(agent),这个代理可能是A型,也可能是B型,这描述了一个社会空间中存在的两个不同类型的人,接下来定义一个门槛值t,这个门槛值表示如果某个代理当前同类型邻居的数量小于这个值时,就会发生移动,直到他找到合适位置可以使他的同类型邻居数量大于等于门槛值为止。

蒙特卡洛方法

蒙特卡洛方法也称统计模拟方法,对于本身具有随机性的事件,可以利用蒙特卡洛方法随机产生一系列样本点,通过大量重复随机试验得到统计规律。
在谢林隔离模型中的应用是为模型初始化产生随机的样本点,并且在代理移动的过程中为代理随机产生目标位置,这样经过有限多次循环过程,模型可以最终达到稳定,产生种群隔离的结果。

Python语言实现

具体实现步骤如下:
1.随机初始化二维矩阵:

class SchellingModel(object):

    def __init__(self,length,t):
        self.matrix = np.zeros((length)*(length)).reshape((length,length))
        self.t = t #threshold value
        self.space = 0 #0 indicates that there is no people
        self.red = 1 #red and blue represent 2 kind of people
        self.blue = 2
        self.length = length
        self.population = 0
        for i in range(length):
            for j in range(length):
                self.matrix[i][j] = random.randint(0,2)
                if self.matrix[i][j] != 0:
                    self.population += 1

2.根据门槛值判断当前代理是否满意自己的位置

    def is_satisfied
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值