“人们沿着许多路线,以各种方式分开。存在性别、年龄、收入、语言、宗教、肤色、品味、比较优势和历史区位偶然性的隔离。有些隔离是组织实践的结果;有些是刻意组织的结果;有些是歧视的个人选择相互作用的结果。其中一些是由特殊的交流系统造成的,比如不同的语言。有些隔离是其他隔离模式的必然结果:居住与工作地点和交通相关。“-隔离的动态模型[1]-托马斯·C·谢林,1969。
这篇论文的主要动机是研究在美国观察到的种族居住隔离。谢林提出了一个种族隔离模式,在这个模式中,个人对其他群体的成员没有强烈的偏好,但几乎总是导致种族隔离。谢林写道:
划分个人动机的隔离、集体强制的隔离和经济诱导的隔离的界限根本不是清晰的界限。…。因此,这篇论文是关于那些将无组织的个人行为转化为集体结果的机制。
让我们来看看这个模型。假设有一个网格,每个单元格都由一个人占据。每个人都是一个组的成员。相邻的单元格定义了邻域。每个人都是“快乐的”,只要至少有一定百分比的邻居属于他们所做的同一个群体。如果一个人不快乐,它就会转移到另一个他们会快乐的地方。这是模型的一个非常简化的表示,但足以让人对它有个感觉。
当我第一次看到这篇论文时,它让我想起了康威的“生活的游戏”[2],其中简单的规则,给定一个特定的初始配置,将导致任意复杂的紧急模式。谢林的模型不是那样的。同样简单的规则(尽管大相径庭),它似乎有在群体隔离中趋同的倾向。
半个世纪过去了,推动谢林研究这一问题的种族隔离仍然清晰可见[3]。居住隔离并不局限于种族。这可以从教育、收入和许多其他社会方面观察到。
在这篇博客文章中,我们将深入研究该模型的更多细节,建立一个模拟器,在那里我们可以研究从个人行为中出现的集体模式。我们将查看不同的模型参数,并尝试找出哪些参数会导致集成或分离。此后:People→\Right Tarrow→Population,Person→\Right Tarrow→Agent。
座席可以多久移动一次,成本函数是什么(即按接近程度区分优先顺序)等。
我们将从一个完全分为两个组的群体开始,每个代理的成员都是永久的和可识别的。每个特工在给定的时刻都有一个特定的位置。组的首选项传播到其所有代理。然后,每个代理都优先选择居住在至少某些最小部分的邻居属于同一组的社区中。在整个模拟过程中,开始时的代理位置将从均匀分布中随机抽取(即,我们希望代理均匀占据整个地图或网格)。因此,初始配置将保持不变。
我们从提取参数开始,这些参数使我们能够定义群体和代理的首选项。我们将这些参数存储在变量config中。这兼顾了邻域大小、相似偏好和种群组成。
配置={#人口大小";代理";:10000,#相似偏好";:0.5,#邻域大小";邻居";:100,#人口组成(定义组)";组";:{";组1";:{";类型";:";组1";,#人口百分比";比率";:0.5,";颜色";:";#ff745c";},";组2";:{";类型";:";组2";,";比率";:0.5,";颜色";:";#c2bebe";},}。
然后,我们需要根据前面定义的配置生成填充,并为模拟提供原始配置。为此,让我们用一个具有三个属性的数字记录数组来表示每个代理:
x,y确定代理在地图中的位置(笛卡尔平面图)和组,以表示代理的成员身份。
将numpy导入为np def(Config):#从config加载组(`pro`是组代表的人口的百分比)。Groups,prob=zip(*sorted([(g[";type";],g[";rate";])for g in list(config[";groups";].values()],key=lambda x:x[1],))Agents=[]#在不同位置随机产生代理,并将#分配给具有给定概率(接近#所需组大小)的组for_in range(config[。Agents";])):x=np随机.均匀(0,1)y=np.随机.form(0,1)agents.append((x,y,np.随机性.option(Groups,p=prob)#将人口表示为记录数组#(方便的数据结构)return np.rec.array(代理,dtype=[(";x";,";f";),(";y";,";(";y";,"。),(";组&34;,<;U8";)],)。
开始时,每个代理都被分配了一个随机位置。模拟将是迭代的,从这个意义上说,每一轮都将给每个不愉快的代理一个重新定位的机会。
在第一次尝试中,每个代理将查看邻近的100个代理,如果相似性偏好不满足,则该代理将再次在另一个位置随机生成。我们定义运动规则的随意性可能看起来“令人担忧”,至少有两个原因:第一,它没有反映现实。现实生活中的代理人将拥有关于群体分布和集群的信息(例如,曼哈顿是许多富人居住的地方),并有望用这些信息为他们的决策提供信息。其次,我们可能无法使模拟收敛到所有代理都满意的稳定均衡。但是,对于许多配置,您仍然会看到隔离正在发生。有趣的是,谢林关于一个群体是少数群体的限制并不需要强加。
无论如何,下面是我们描述的基于迭代的模拟的实现。请不要客气,我们稍后再换。
从集合导入计数器来自sklearn。邻居导入KDTree#将在末尾链接到(目前不重要)导入绘图定义(Plot_Folder):Population=Generate_Population(Config)STRATE=FALSE Iterations=0 When Not Stability and Iterations<;100:Locations=np.array(List(zip(panation.x,popation.y)kdtree=KDTree(Locations,Leaf_Size=100)Agents_Relocation=0 for agent in Population:dist,idx。])Neighborhood=Counter(Population[IDX[0]].group)#如果观察到_相似性<;config[";相似度";]:agent.x=np.随机.form(0,1)agent.y=np.随机性.均匀(0,1)agent_relocation+=1次迭代+=1次如果agent_relocation<,检查代理是否需要重定位观察到的_相似性=(Neighborhood[agent.group]/sum(Neighbhood.Values()。5:STRATE=True#生成给定迭代绘制的状态图。Population_Scatter(Population,Iteration=Iterations,Folder=Plot_Folder,config=config)。
简而言之,我们实例化一个种群,然后继续迭代,直到种群稳定(在某种意义上它已经达到平衡),其中代理已经在给定他们的相似偏好的情况下定居,或者最多有100次迭代。后者只是为了保证程序终止。
对于每一次迭代,我们都会构建一棵k-d树[4],用来在邻域上执行最近邻搜索。然后,对于每个代理,我们查询邻居以查看组在该空间中的分布,代理使用该分布来决定是否重新定位。
让我们首先来看一下1万名特工的人口。每组人占总人口的一半。每个座席都希望至少50%的邻居属于他们所属的同一组。
值得一提的是,每个特工都想呆在他们不占少数的社区。
我们看到星团形成得非常快,直到它们达到稳定的平衡。然而,稳定和令人向往是两码事。种族隔离现象十分猖獗。
本轮我们继续模拟10,000名代理的人口,然而,有两个不同之处:一组是少数,只占人口的30%,每个代理更喜欢住在至少~1/3的代理来自同一组的社区。
我们仍然看到种族隔离。这并不令人意外。代理人的位置是从均匀分布中随机抽取的。来自组2的代理是少数(他们占人口的30%),但相似偏好为33%,这意味着与组1(大多数)的代理相比,我们可以预期他们中的许多人会在第一次迭代中移动。
合乎情理的是,如果智能体的相似偏好低于少数群体所代表的人口比例,那么初始配置应该是稳定的,智能体不会搬迁,社区将会很好地整合。
它与我们如何生成初始配置有关。初始位置是从均匀分布中随机抽取的。既然我们对每个代理的搜索空间是100个最近的邻居,那么对于几个代理来说,不满意的级联效应并导致隔离就足够了。随机性加上模拟的代理数量较少,即使配置参数表明初始配置应该稳定,也仍然允许初始配置不稳定。
有几件事我们可以尝试:将搜索空间增加到100个以上的邻居,增加模拟的代理总数以使概率发挥得更好,以概率较低的方式生成初始配置以实施一些保证,或者与少数份额相比进一步放宽相似性优先级。总而言之,我们可以生成初始配置,从而形成一体化的社区。在结论中有更多关于这一点的内容,但首先让我们重新审视一个关于管理代理人移动规则的相当薄弱的假设。
到目前为止,我们假设代理没有关于地图中其他代理位置的信息。然而,在现实生活中,社区层面的信息虽然不完美,但仍然存在。如果你想搬家,你对你要搬到的社区是什么样子有一定的了解。
让我们用这样的信息装备特工吧。我们可以做到这一点的一种方式是创建一些引导群集,这些引导群集在开始时在地图中等间距,然后向想要重新定位的代理提供关于他们可以移动到的每个可能群集的信息:特别是那些群集的组成(例如,40%组1,60%组2)。这改进了我们关于代理人有多少关于搬迁到哪里的信息的假设,但没有说明搬迁的成本函数。出于这篇博客的目的,我们假设迁移到任何集群的成本都是相同的[5]。
实现不需要很复杂。我们用预定数量的引导群集(例如10个)运行k-Means,然后每个代理在移动之前都会获得关于所有群集的组成的信息,以及它们选择移动到的群集的幼稚边界空间(要在那里繁殖)。目前,他们选择组成最有利的星团。请注意,这不是完美的信息。正如您将在下一节中看到的,引导群集与隔离群集并不完全相同。把它们想得更像是城市地区。
我们将使用与模拟2相同的初始配置,只是控制移动的规则不同。
如果没有满足相似偏好,则移动到具有最有利表示的群集。7个指导性集群。
现在,每个代理将选择最有利的引导群集进行繁殖,而不是随机繁殖到另一个位置。
在这篇博客文章中,我们构建了一个简单的模拟器,并研究了集体模式如何从个人行为中浮现出来。我们看到了松散的相似偏好如何导致基于群组成员的高度隔离的社区。
推动谢林研究这一问题的种族隔离至今仍在继续。在这篇文章中,我谈到了群体,因为无论他们是如何定义的,如果群体成员身份以任何方式预测了移动性,那么简单的规则就会导致明显的隔离。这里有一个按收入进行居住隔离的例子。
从这个简单的模型中得出的见解表明,只要代理人的相似偏好低于少数群体所代表的人口比例,初始配置就应该是稳定的;代理人不会搬迁,社区就会很好地整合。然而,我们看到初始配置中非常轻微的不平衡可能会导致一些代理重新定位,然后更多代理迁移,然后我们看到的下一件事就是完全隔离。而且,在现实中,相似偏好并不是人们搬迁的唯一原因。至少,相似性偏好是一组加权的偏好,可能包括收入、工作邻近程度、就业和教育机会等。任何旨在使我们的社区更加一体化的政策都必须解决其中许多变量。
作为技术专家,我希望我们能做更多的事情来帮助领域专家(社会学家、经济学家、教育家和政策制定者)测试假设,编码行为,并最终推荐使我们的社区更加一体化的政策。
美国比以往任何时候都更加多样化-但仍然是隔离的-华盛顿邮报↩︎。
请注意,这一点很容易更改。对于每个移动的座席,我们都知道座席可以重新定位的当前位置和候选位置。这意味着我们已经有了旅行距离。接下来,您需要想出一个随距离增加(例如,线性或指数级)的成本函数。↩︎
纽约按收入划分的住宅隔离-来源:皮尤研究中心。↩︎