实现一个简单的谢林模型(Schelling Model)

本文介绍了谢林隔离模型,由经济学家托马斯·谢林提出,用于描述同质性如何导致空间隔离。通过Python编程,创建了一个50x50的点阵模拟,展示了不同类别智能体的分布。模型运行后,经过多次智能体的随机迁徙,最终形成高度隔离的状态。文章提供了详细的代码实现,并分析了模拟结果,包括满意度、不满意率等指标,展现了社会现象的微观机制。

by tjuarch

1 简介

谢林模型,也叫谢林隔离模型,是由美国经济学家托马斯·谢林于1971年提出,描述同质性在空间隔离上的影响和作用。
它是基于智能体的模型,包含有三个元素:
1、会产生行为的智能体
2、智能体行为遵循一定的规则
3、智能体产生的行为会导致宏观上的结果

2 python实现

模型揭示的一些事实在实际中得到了验证,人们对于身边各种不同阶层邻居的存在,但是最终经过有限次的迁徙后,却形成了隔离。
采用python语言,在matplotlib中进行画图,用numpy计算矩阵。
主要流程包括几个步骤:
1、初始化网格,50x50的点阵,用三种颜色表示,包括两个分类和一个空白格子。设定满意度阈值、画布大小以及三类格子的生成比例(40%,40%,20%)。

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

# np.random.seed(198108)

N = 50
threshold = 0.7
figsize=(12,12)

x = np.arange(N)
y = np.arange(N)
X, Y = np.meshgrid(x, y)
# Z = np.random.rand(N, N)
status = ["C1", "C4", 'white']
prob = [0.4, 0.4, 0.2]

def init_z():
    Z = np.random.choice(a=status, size=(N**2), p=prob)
    Z.shape = (N, N)
    return Z

Z = init_z()

2、计算每个点的满意程度get_cell_happiness(),也即周边同种类格子的比例,得到一个满意度矩阵get_all_happiness()。
3、计算所有格子的平均满意度(hap_mean)、不满意格子的比例(unhap_ratio),计算阈值下不满意格子的位置get_unhap_cells()。
4、随机选择一个不满意的格子搬家。但是要注意搬走之后形成新的空位以及及时刷新空格的位置列表。
5、重新计算满意程度,进行新一轮的搬家行动,最终计算经过多少步能达到目的,及不满意格子的比例达到一个比较低的水平。

def get_null_cells(Z):
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值