Skip to content

SAY683/SAY683.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

三世界理论动态演化模型 (RX-GML / GM4.5.7c)

项目简介

本项目是一个基于Python Dash的交互式模拟平台,旨在探索和可视化一个关于个体“现实”如何由其内在“本然”、“应然”与“或然”三个核心世界相互作用、共同塑造而成的原创理论。该模型通过多主体演化系统,展现了在复杂社会互动、认知偏差、情绪波动、随机事件及环境因素影响下,个体多维度特征的动态变化与涌现行为。

  • 本然 (The Inherent/Given Realm): 代表个体所拥有的客观物质基础(如资源)、生理条件、既有技能,以及其所处的环境中直接面临的限制与障碍。这是个体存在的基石,是其行动的起点和约束。
  • 应然 (The Normative/Purposeful Realm): 代表个体的价值体系(价值观清晰度)、内在驱动力、理想抱负(理想高度)、目标设定以及道德准绳。这是个体行为与发展的内在罗盘与引擎,赋予行动意义和方向。
  • 或然 (The Potential/Exploratory Realm): 代表个体所能感知到的可能性空间(可能性广度)、其创新与适应能力(创新能力)、对不确定性的探索意愿以及风险偏好(风险承受)。这是个体拓展边界、实现突破、将潜能转化为现实的可能路径。

模型中的每一个“个体”(或称“世界状态”)均被赋予这三大核心世界下的多个具体可量化维度,并辅以“社交”维度(如可信度、声望)来调节其在社群中的互动。这些维度值(通常在0-10的范围内)遵循一套精心设计的演化算法进行动态调整。此算法融合了维度间的内部反馈(如高驱动力促进资源获取,高限制压制可能性探索)、个体基于其(可能存在偏差的)认知和情绪状态对风险的评估与决策、对外部环境因素的响应、个体间的社会网络互动(信任、联盟、对抗、规范压力、信息共享)以及由随机或条件触发的复杂(甚至链式)事件所带来的影响。

用户可以通过浏览器界面,实时观察这些“世界状态”在三维空间中的演化轨迹,并通过交互式控件调整模型的全局参数、环境因子、个体维度,以及控制模拟的进程,从而深入探究不同条件下“三世界”理论的动态表现和可能涌现的复杂社群现象。

核心特性:

  • 多维度个体建模: 基于“本然”、“应然”、“或然”和“社交”四大领域构建个体特征。
  • 复杂动态演化算法: 精细的内部逻辑驱动维度变化,体现相互促进、制约与非线性反馈。
  • 认知与情绪建模: 个体拥有感知模型(影响对资源、可能性、限制、声望、他人信任的判断)和情绪状态,两者均受个体状态和外部事件影响,并反过来影响决策(如风险行为、学习率、目标调整)。
  • 深化风险机制: 风险决策基于感知资源、情绪和风险偏好,结果对多维度产生连锁反应。
  • 结构化社会交互: 动态信任、联盟与对抗关系形成与解除、社群规范压力、声望系统、信息(创新)共享。
  • 社区共同项目: 个体可发起/参与合作项目,体现集体行动逻辑。
  • 多层次事件系统: 支持随机、条件(全局/个体/情绪)、定时及链式事件,事件效果考虑个体韧性。
  • 数值极端化缓解: 引入维度维持成本、专业化惩罚、资源归零缓冲及破产机制、维度极端值软回归等机制,增强模型长期运行的合理性。
  • 可调全局环境与参数: 模拟宏观影响,并提供UI进行部分核心参数的实时调整。
  • 交互式三维可视化与日志: 实时展示演化过程,提供详细日志追踪系统行为。

代码结构与说明

项目主要由单独一个Python脚本 (RX-GMQ.py【其他版本同理】) 构成,其中包含了以下主要部分:

1. 全局常量与辅助函数

  • DIM_KEYS, DIMENSION_LABELS_MAP_ZH, AXIS_LABELS_ZH: 定义维度、UI标签。
  • MAX_LOG_LINES: 日志行数。
  • sigmoid, scale_value: 核心数学工具函数。
  • SIMULATION_LOG, log_message: 日志系统。

2. CommunityProject

  • 定义和管理社区合作项目的属性与生命周期。

3. WorldState

模型的核心实体,包含所有维度和核心演化逻辑。

  • __init__(...): 初始化个体所有属性,包括本然、应然、或然、社交维度,以及认知状态(感知值、情绪、准确度)、社交关系(联盟、对手)、破产状态等。
  • update_perception(): 更新个体对B1, H1, B2, S2及他人信任的感知,受Y1, H2, 情绪影响。
  • update_mood(): 更新个体情绪,受风险结果、B1水平、社交关系、认知失调等影响。
  • _calculate_delta_X(...): 为每个维度计算变化量。关键逻辑包括:
    • 基于感知值进行部分判断(如Y1/Y3的现实差距,B2对其他维度的影响)。
    • 受破产状态和极端值回归机制的调节。
  • _calculate_neighbor_effects(...): 计算邻居影响,使用感知信任,并考虑联盟/对手状态对交换和传播的调节,以及社群规范压力。
  • manage_social_relations(): 动态处理联盟与敌对关系的形成、维持与解除,基于感知信任、价值观相似度等。
  • decide_community_actions(): 个体决定是否发起或加入社区项目,基于自身状态和对项目的感知评估。
  • evolve(...): 核心演化方法,按特定顺序驱动个体在一个时间步内的所有变化:
    1. 更新感知 (update_perception)。
    2. 处理社交关系 (manage_social_relations) 和社区行动 (decide_community_actions),受破产状态限制。
    3. 评估并执行风险项目(决策受感知资源、情绪、破产状态影响)。
    4. 更新情绪 (update_mood)。
    5. 计算邻居效应 (_calculate_neighbor_effects)。
    6. 计算所有维度的基础Deltas (_calculate_delta_X)。
    7. 应用维度过高/专业化的额外B1成本(A1数值修正)。
    8. 应用学习率(受情绪调节 - B2认知深化)、随机噪声、事件效果(考虑韧性),并进行边界裁剪,更新所有维度。
    9. 检查并处理B1过低缓冲及破产状态的触发与后续影响(A2数值修正)。
  • 其他方法:get_display_name, get_coords_for_plot, _apply_boundary_effect, record_history, clear_history, to_dict, from_dict (均已更新以支持所有新属性)。

4. Event 类 和 EventManager

  • Event: 定义事件。支持链式事件、基于个体情绪的目标选择器,check_trigger方法更为健壮。
  • EventManager: 管理事件。process_step处理链式事件,并将current_step传递给触发检查。

5. 初始化数据 (..._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: 社区项目存储。

6. Dash 应用布局 (app.layout)

  • UI中增加了破产状态显示、认知信息(感知/情绪)的显示、社区项目列表。
  • 左侧控制面板增加了对更多核心参数的调整控件,并允许通过复选框控制悬停信息的详细程度。

7. Dash 回调函数 (@app.callback)

  • 新增和更新了回调以支持新的UI元素和参数控制。
  • 核心演化回调 run_evolution_step_gm457c 正确处理所有新的数据存储和逻辑调用。

如何运行

  1. 确保已安装Python库:dash, plotly, numpy (pip install dash plotly numpy)。
  2. 将代码保存为 RX-GMQ.py
  3. 在终端中运行:python RX-GMQ.py
  4. 在浏览器中访问通常的地址 (如 http://127.0.0.1:8067/)。

后续可添加内容方法说明书 (人物与事件)

A. 新增人物角色模板

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 )。也考虑更新现有角色的邻居列表以包含新角色。

B. 新增事件模板

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
 }

哲学思想与模拟项目的理论结合点

本模拟项目的核心在于将抽象的哲学概念——“本然”、“应然”、“或然”三世界理论——具象化为一个可计算、可观察的动态系统。

  1. 现实的构成 (Being of Reality):

    • 哲学: “本然的,应然的,或然的,这三种世界构成了现实。”
    • 模拟: 每个 WorldState 对象的多个维度被明确归类到这三个世界(以及社交维度作为互动界面)。个体的整体状态向量(所有维度值的组合)代表了其在某一时刻的“现实”。整个模拟系统的所有个体状态共同构成了模拟世界的“宏观现实”。
  2. 本然的基础性 (Foundation of the Inherent):

    • 哲学: “本然的使世界成为世界,世界就藏于本然中。”
    • 模拟: B1(资源)和B2(限制)是所有行动和发展的基础。低B1或高B2会直接限制Y(应然)的实现和H(或然)的探索。风险项目需要B1投入,创新活动(H2)也间接受B1支持。本然的状态(如 b1_for_y1_erosion_thresh)也反过来校验和影响应然世界(Y1, Y2, Y3)。
  3. 应然的驱动性与现实的塑造 (Drive of the Normative & Shaping of Reality):

    • 哲学: “应然的使现实成为现实,现实就变于应然中。”
    • 模拟: Y1(价值清晰度)、Y2(驱动力)、Y3(理想高度)是推动个体行为和变化的核心引擎。
      • Y2直接驱动B1的产生(b1_from_y2)、B2的克服(b2_reduce_y2)。
      • Y1和Y2共同影响H2(创新能力)的培养和H3(风险偏好)的形成。
      • Y3(理想高度)与现实(B、H)的差距会驱动Y1、Y2的调整,或在情绪和认知层面产生影响(如认知失调)。
      • 高Y值(特别是Y2)是发起风险项目、社区项目、甚至承受专业化成本的前提。
      • 个体的“现实”(其维度状态)在“应然”的指引和驱动下不断演变。
  4. 或然的创造性与成就的孕育 (Creativity of the Potential & Nurturing of Achievement):

    • 哲学: “或然的使成就变为世界,成就就孕育世界中。”
    • 模拟: H1(可能性)、H2(创新)、H3(风险偏好)代表了潜能和探索。
      • 风险项目是“或然”世界最直接的体现:基于H3的风险意愿,投入B1资源,其结果(受H2创新、Y1清晰度等影响)直接改变B1和B2,从而重塑“本然”世界,即“成就变为世界”。
      • H2(创新能力)的成果可以直接转化为B1(资源)或降低B2(限制),也是“成就孕育世界”的过程。
      • H1(可能性广度)受B1和H2影响,也为Y3(理想)提供了参照。
  5. 认知与情绪的介入:

    • 新增的认知模型使得个体不再是完全理性的“经济人”。它们基于感知到的资源、可能性、限制、声望和他人信任进行决策,而这些感知又受到其Y1(清晰度)和情绪的影响。
    • 情绪本身受内外因素(风险结果、资源状态、社交关系、认知失调)驱动,反过来又影响风险决策、学习率、目标调整和创新积极性。这使得个体的行为更加“人性化”和多变。
  6. 社会互动与社群演化:

    • 个体并非孤立存在。信任、联盟、对抗、声望、规范压力、信息共享和社区项目等机制,使得个体间的互动能够涌现出复杂的社群动态。个体的“现实”不仅由其自身三世界构成,也深受其所处的社会网络和互动结果的影响。
  7. 模拟即“讲解”:

    • 哲学: “这三种世界通过我向它们讲解;你们就听我的故事入睡。”
    • 模拟: Dash应用的可视化和交互界面,以及详细的日志,构成了对这个理论的“讲解”。用户通过观察和互动,理解这三个世界如何交织运作,形成千变万化的“个体故事”和“社群故事”。

通过这个模拟项目,我们试图将思辨性的哲学构想转化为一个可操作、可实验的计算模型,从而更深入地理解个体与现实、主观与客观、潜能与实现之间的复杂关系。

Releases

No releases published

Packages

No packages published

Languages