舍林的种族隔离模型:微观偏好与宏观现象
在很多国家,有些地方是某一种族或文化的集聚地。这种现象,称为种族或文化隔离,存在于许多大都市中。但是,这种隔离背后的原因是什么? 是政策原因,还是个体的选择? 托马斯·舍林,在1971年提出了一个令人深思的模型,揭示了即使个体的种族偏好不强烈,也可能导致大规模的种族隔离。让我们深入探索这个模型,并理解它对我们现实生活的启示。
格子上的实验
想象一个巨大的棋盘,每个格子上可以住一个红色或蓝色的代理。这些代理并不特别讨厌与 目己不同颜色的其他代理,但他们确实有一个小小的偏好:他们常望目己周围的一部分邻居 与自己是同一颜色。这听起来很合理,不是吗? 每个人都可能喜欢与具有相似背景或文化的 人为邻。
舍林提出,每个代理都有一个满意度國值。这个國值告诉我们代理希望多少邻居与自己是同 一颜色。如果这个國值没有得到满足,该代理会选择一个新的地方重新定居。
数学背后的逻辑
让我们使用一些简单的数学来描述这一现象。假设 为代理 的邻居总数,而 为与代理 同色的邻居数。如果:
那么代理 就会选择一个新的位置。
模型所揭示的惊人事实
当舍林使用计算机模拟这一模型时,他发现了一些令人震惊的结果。即使每个代理的满意度 國值相对较低(例如,他们只希望 的邻居与目己是同一颜色),这个世界也会很快地进化为明显的种族隔离区域。
这意味着即使我们每个人的种族或文化偏好只是微不足道的,但当这些微小的偏好在社会中 累积时,它们可能导致强烈的集群效应,从而形成明显的隔离区域。
Python模拟
import numpy as np
import matplotlib.pyplot as plt
# Parameters for the model
size = 50 # grid size
red_fraction = 0.4
blue_fraction = 0.4
red_count = int(red_fraction * size**2)
blue_count = int(blue_fraction * size**2)
empty_count = size**2 - red_count - blue_count
# Create the initial grid with agents
agents = np.array([0] * empty_count +
[1] * red_count +
[2] * blue_count)
np.random.shuffle(agents)
grid = agents.reshape((size, size))
def find_unsatisfied(x, y, grid):
value = grid[x, y]
if value == 0: # Empty cell
return False
total = 0
same_count = 0
for dx in [-1, 0, 1]:
for dy in [-1, 0, 1]:
if dx == dy == 0:
continue
if (0 <= x + dx < size) and (0 <= y + dy < size):
total += 1
if grid[x + dx, y + dy] == value:
same_count += 1
return same_count / total < threshold
def get_unsatisfied_agents(grid):
unsatisfied = []
for x in range(size):
for y in range(size):
if find_unsatisfied(x, y, grid):
unsatisfied.append((x, y))
return unsatisfied
def relocate_unsatisfied(grid):
unsatisfied_agents = get_unsatisfied_agents(grid)
empty_cells = list(zip(*np.where(grid == 0)))
np.random.shuffle(unsatisfied_agents)
np.random.shuffle(empty_cells)
num_moved = min(len(unsatisfied_agents), len(empty_cells))
for i in range(num_moved):
x, y = unsatisfied_agents[i]
new_x, new_y = empty_cells[i]
grid[new_x, new_y] = grid[x, y]
grid[x, y] = 0
def simulate_segregation(grid, max_steps=500):
snapshots = [grid.copy()]
for step in range(max_steps):
prev_grid = grid.copy()
relocate_unsatisfied(grid)
if np.array_equal(prev_grid, grid):
break
if step in [0, 1, 2, 4, 9]: # Capture earlier stages
snapshots.append(grid.copy())
snapshots.append(grid.copy()) # Capture final stage
return snapshots
# Run the simulation
snapshots = simulate_segregation(grid)
# Plot the results
fig, axes = plt.subplots(2, 3, figsize=(15, 10))
titles = ["Initial State", "After 1 Move", "After 2 Moves", "After 3 Moves", "After 5 Moves", "Final State"]
for ax, snapshot, title in zip(axes.ravel(), snapshots, titles):
ax.imshow(snapshot, cmap="bwr", vmin=0, vmax=2)
ax.set_title(title)
ax.axis('off')
plt.tight_layout()
plt.show()
从上面的图像中,你可以看到随着时间的推移,代理开始按颜色(种族)聚集在一起,即使他们的满足度阈值并不高。
这个模型说明,即使个体的种族倾向性并不强烈,整体上仍可能出现明显的种族隔离。
启示与反思
舍林的模型为我们提供了一种理解种族和文化隔离现象的新视角。它强调了个体偏好与社会 结构之间的关系,以及微观行为如何导致宏观现象。
这个模型提醒我们,我们的个体选择,即使看似无害或温和,都可能在更大的社会背景下产 生深远的影响。因此,我们每个人在做决策时都需要考虞到这一点,无论是选择住在哪里, 还是与谁交往。
舍林的种族隔离模型不仅为社会科学家提供了研究工具,也为我们普通人提供了反思我们自己行为的机会。通过理解和应用这一模型,我们可以更好地建设一个多元而和谐的社会。