系统建模与分析课程代码解读及相关问题咨询
代码分析与问题解答
先明确pivot变量的作用
pivot是当前所有智能体(agents)数值的平均值:代码里先通过循环把所有agents的数值求和得到x,再除以智能体数量num_samples,计算出群体当前的平均水平。这个变量是智能体行为调整的核心参照标准。
1. 智能体之间如何相互影响?
- 智能体并非直接一对一交互,而是通过群体平均值间接相互影响:每个智能体的更新规则完全依赖于当前群体的平均数值(
pivot)。 - 具体规则:
- 如果当前智能体的数值小于群体平均值,就给它加上一个0到1之间的随机数;
- 如果当前智能体的数值大于或等于群体平均值,就给它减去一个0到1之间的随机数。
- 本质是让每个智能体向群体的平均水平靠拢,但随机数的存在会让调整幅度带有不确定性。
2. 它们会表现出哪些长期行为?
- 群体层面:所有智能体的数值会围绕群体平均值持续波动,但平均值本身会大致稳定在初始均值附近(初始是0-1随机数的平均,约0.5),不会出现持续上涨或下跌的趋势——因为加和减的随机数都是0-1均匀分布,长期来看总和的变化会相互抵消。
- 个体层面:单个智能体的数值会一直随机波动,但不会偏离平均值太远:一旦偏离过多,就会触发反向调整(低于均值就加,高于就减),因此不会出现某个智能体数值无限增大或缩小的极端情况。
- 不会出现的行为:不会形成明显的两极分化,也不会有智能体长期脱离群体均值单向发展。
3. 模型可代表的系统例子
- 市场商家定价:把每个智能体的数值看作商家的产品定价,商家会参考行业平均定价调整自己的价格——定价低于行业平均就往上调(随机数代表调整幅度的不确定性),高于平均就往下调,最终市场价格围绕行业均值波动,不会出现定价极端偏离的情况。
- 群体意见动态:比如一群人对某件事的满意度打分,每个人会参考群体的平均打分调整自己的意见,随机数代表个人调整时的小幅度偏差或犹豫,最终群体意见会围绕均值波动,不会出现完全对立的极端意见群体。
内容的提问来源于stack exchange,提问作者John Alperto
相关产品推荐
相关产品推荐

