查看原文
其他

舍林的种族隔离模型:微观偏好与宏观现象

王海华 模型视角 2023-09-05

在很多国家,有些地方是某一种族或文化的集聚地。这种现象,称为种族或文化隔离,存在于许多大都市中。但是,这种隔离背后的原因是什么? 是政策原因,还是个体的选择? 托马斯·舍林,在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 [-101]:
        for dy in [-101]:
            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 [01249]:  # 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(23, figsize=(1510))

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()

从上面的图像中,你可以看到随着时间的推移,代理开始按颜色(种族)聚集在一起,即使他们的满足度阈值并不高。

这个模型说明,即使个体的种族倾向性并不强烈,整体上仍可能出现明显的种族隔离。

启示与反思

舍林的模型为我们提供了一种理解种族和文化隔离现象的新视角。它强调了个体偏好与社会 结构之间的关系,以及微观行为如何导致宏观现象。

这个模型提醒我们,我们的个体选择,即使看似无害或温和,都可能在更大的社会背景下产 生深远的影响。因此,我们每个人在做决策时都需要考虞到这一点,无论是选择住在哪里, 还是与谁交往。

舍林的种族隔离模型不仅为社会科学家提供了研究工具,也为我们普通人提供了反思我们自己行为的机会。通过理解和应用这一模型,我们可以更好地建设一个多元而和谐的社会。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存