本项目是一个基于Python Dash的交互式模拟平台,旨在探索和可视化一个关于个体“现实”如何由其内在“本然”、“应然”与“或然”三个核心世界相互作用、共同塑造而成的原创理论。该模型通过多主体演化系统,展现了在复杂社会互动、认知偏差、情绪波动、随机事件及环境因素影响下,个体多维度特征的动态变化与涌现行为。
模型中的每一个“个体”(或称“世界状态”)均被赋予这三大核心世界下的多个具体可量化维度,并辅以“社交”维度(如可信度、声望)来调节其在社群中的互动。这些维度值(通常在0-10的范围内)遵循一套精心设计的演化算法进行动态调整。此算法融合了维度间的内部反馈(如高驱动力促进资源获取,高限制压制可能性探索)、个体基于其(可能存在偏差的)认知和情绪状态对风险的评估与决策、对外部环境因素的响应、个体间的社会网络互动(信任、联盟、对抗、规范压力、信息共享)以及由随机或条件触发的复杂(甚至链式)事件所带来的影响。
用户可以通过浏览器界面,实时观察这些“世界状态”在三维空间中的演化轨迹,并通过交互式控件调整模型的全局参数、环境因子、个体维度,以及控制模拟的进程,从而深入探究不同条件下“三世界”理论的动态表现和可能涌现的复杂社群现象。
核心特性:
项目主要由单独一个Python脚本 (RX-GMQ.py
【其他版本同理】) 构成,其中包含了以下主要部分:
DIM_KEYS
, DIMENSION_LABELS_MAP_ZH
, AXIS_LABELS_ZH
: 定义维度、UI标签。MAX_LOG_LINES
: 日志行数。sigmoid
, scale_value
: 核心数学工具函数。SIMULATION_LOG
, log_message
: 日志系统。CommunityProject
类WorldState
类模型的核心实体,包含所有维度和核心演化逻辑。
__init__(...)
: 初始化个体所有属性,包括本然、应然、或然、社交维度,以及认知状态(感知值、情绪、准确度)、社交关系(联盟、对手)、破产状态等。update_perception()
: 更新个体对B1, H1, B2, S2及他人信任的感知,受Y1, H2, 情绪影响。update_mood()
: 更新个体情绪,受风险结果、B1水平、社交关系、认知失调等影响。_calculate_delta_X(...)
: 为每个维度计算变化量。关键逻辑包括:
_calculate_neighbor_effects(...)
: 计算邻居影响,使用感知信任,并考虑联盟/对手状态对交换和传播的调节,以及社群规范压力。manage_social_relations()
: 动态处理联盟与敌对关系的形成、维持与解除,基于感知信任、价值观相似度等。decide_community_actions()
: 个体决定是否发起或加入社区项目,基于自身状态和对项目的感知评估。evolve(...)
: 核心演化方法,按特定顺序驱动个体在一个时间步内的所有变化:
update_perception
)。manage_social_relations
) 和社区行动 (decide_community_actions
),受破产状态限制。update_mood
)。_calculate_neighbor_effects
)。_calculate_delta_X
)。get_display_name
, get_coords_for_plot
, _apply_boundary_effect
, record_history
, clear_history
,
to_dict
, from_dict
(均已更新以支持所有新属性)。Event
类 和 EventManager
类Event
: 定义事件。支持链式事件、基于个体情绪的目标选择器,check_trigger
方法更为健壮。EventManager
: 管理事件。process_step
处理链式事件,并将current_step
传递给触发检查。..._gm457c
后缀)initial_states_templates_gm457c
: 包含所有13个预定义角色的模板。neighbor_config_gm457c
: 包含所有角色间初始邻居关系的完整配置。event_definitions_gm457c
: 包含所有丰富后的事件定义,每个事件都有trigger_params
。default_evolution_params_gm457c
: 最终的核心参数字典,整合了GM4.5.6、GM4.5.7a和GM4.5.7b的所有参数和系数。global_environment_factors_gm457c
: 全局环境因子。COMMUNITY_PROJECTS_STORE
: 社区项目存储。app.layout
)@app.callback
)run_evolution_step_gm457c
正确处理所有新的数据存储和逻辑调用。dash
, plotly
, numpy
(pip install dash plotly numpy
)。RX-GMQ.py
。python RX-GMQ.py
。http://127.0.0.1:8067/
)。在 initial_states_templates_gm457c
列表中添加新的字典,定义其:
name_zh
(中文名), name_en
(英文ID,必须唯一)。DIM_KEYS
中定义的维度(b1_resource 到 s2_reputation)的初始值 (0-10)。示例:
{'name_zh': "投机资本家", 'name_en': "VentureCapitalist",
'b1_res': 7.0, 'b2_lim': 2.0, 'y1_cla': 6.0, 'y2_dri': 7.5, 'y3_asp': 8.0,
'h1_pos': 7.0, 'h2_inn': 5.0, 'h3_ris': 9.0, 's1_tru': 4.0, 's2_rep': 6.5
}
同时,需要在 neighbor_config_gm457c
字典中为新角色的 name_en
添加一个键,并赋予一个邻居列表(其他角色的 name_en
)。也考虑更新现有角色的邻居列表以包含新角色。
在 event_definitions_gm457c
列表中添加新的字典,定义其:
name
(str): 事件的唯一中文名称。trigger_type
(str): 触发类型,可选:
'probabilistic'
: 概率性触发。
trigger_params
: {'prob': 0.01, 'env_prob_mod_key': 'optional_env_factor_key'}
'conditional_global'
: 基于全局指标或环境因子。
trigger_params
:
{'dim': 'metric_name', 'op': '<' | '>' | '==', 'val': threshold, 'source': 'metrics' | 'env_factors' | 'metrics_derived'}
'conditional_individual'
: 当场景中至少有一个个体满足条件时触发。
trigger_params
: {'dim': 'attribute_name', 'op': '<' | '>' | '==', 'val': threshold}
'timed'
: 在特定步骤触发。
trigger_params
: {'step': step_number}
'none'
: 通常由其他事件链式触发。
trigger_params
: {}
(空字典)target_selector
: (str 或 dict) 如何选择受影响的目标。
"all"
: 所有个体。{'type': 'random_n', 'n': count}
: 随机选择count
个个体。{'type': 'conditional_individual', 'dim': 'attr', 'op': '>', 'val': threshold, 'max_targets': num}
: 选择满足条件的最多
num
个个体。{'type': 'mood_based', 'op': '<', 'val': mood_threshold, 'max_targets': num}
: 选择情绪满足条件的个体。{'type': 'random_n_neighbors', 'n_clusters': num, 'cluster_size_avg': size, 'cluster_size_std': std}
: 选择随机集群。effects
(list of dicts): 事件对目标产生的效果列表。每个效果字典:
*
{'dim': 'dimension_key', 'type': 'add_abs' | 'multiply_abs' | 'set_abs', 'val': base_value, 'rand_range': percentage_of_base_val_for_randomness}
duration
(int, optional): 效果持续的回合数(默认为1,瞬时)。one_time
(bool, optional): 事件是否只触发一次(默认False)。chain_event_name
(str, optional): 此事件成功触发后,可能链接触发的下一个事件的名称。chain_event_delay
(int, optional): 链接触发的延迟回合数。chain_event_prob
(float, optional): 链接触发的概率 (0-1)。示例:
{'name': "学术交流会议", 'trigger_type': "probabilistic", 'trigger_params': {'prob': 0.01},
'target_selector': {'type': 'random_n', 'n': 4}, # 随机4个参与者
'effects': [{'dim': 'h2_innovation', 'type': 'add_abs', 'val': 0.5, 'rand_range': 0.2},
{'dim': 's2_reputation', 'type': 'add_abs', 'val': 0.3, 'rand_range': 0.1}],
'duration': 2, 'one_time': False
}
本模拟项目的核心在于将抽象的哲学概念——“本然”、“应然”、“或然”三世界理论——具象化为一个可计算、可观察的动态系统。
WorldState
对象的多个维度被明确归类到这三个世界(以及社交维度作为互动界面)。个体的整体状态向量(所有维度值的组合)代表了其在某一时刻的“现实”。整个模拟系统的所有个体状态共同构成了模拟世界的“宏观现实”。b1_for_y1_erosion_thresh
)也反过来校验和影响应然世界(Y1, Y2, Y3)。b1_from_y2
)、B2的克服(b2_reduce_y2
)。通过这个模拟项目,我们试图将思辨性的哲学构想转化为一个可操作、可实验的计算模型,从而更深入地理解个体与现实、主观与客观、潜能与实现之间的复杂关系。