本项目使用多智能体 Q-learning 模拟重复定价市场,比较卖家数量、价格动作数和折扣因子
当前主实验包含三种市场:
| 市场 | 卖家数 | 价格动作 |
|---|---|---|
| 多人两价 | 4 | |
| 两人多价 | 2 | |
| 多人多价 | 4 |
三种市场使用相同的价格范围
通用多人/多价实验使用包含外部选项的 Logit 需求。卖家
默认市场参数为
每个 Agent 观察上一轮所有卖家的动作、需求和利润分箱。更新目标为
代码使用 hysteretic learning rate:
其中
每种市场分别测试
共运行 15 个实验,每个训练
运行完整实验:
python3 run_gamma_sweep.py --episodes 1000000 --workers 3最后
| 市场 | 主要结果 |
|---|---|
| 多人两价 |
|
| 两人多价 |
|
| 多人多价 | 五组均通过经验收敛检查,稳定在非对称价格分布 |
完整表格、数值和讨论见 GAMMA_SWEEP_RESULTS_CN.md 与 results/gamma_sweep/summary.csv。
每种市场分开绘图:
figures/gamma_sweep/
├── many_agents_two_prices/
├── two_agents_many_prices/
└── many_agents_many_prices/
每个目录包含:
-
training_curves_by_gamma.png:价格、利润、需求和同价率的完整训练曲线; -
final_metrics_by_gamma.png:最后价格、利润和同价率对$\gamma$ 的比较。
run_experiment.py 是一个独立的两人两价对照实验,用来检验原始状态相关 Q 先验在
python3 run_experiment.py该实验与上述零初始化 Gamma sweep 不应混为一组。详细说明见 GAMMA_CONTROL_EXPERIMENT_CN.md。
python3 -m pip install -r requirements.txt主要代码:
repeated_market_rl.py:市场、需求、状态、Q 表和训练循环;run_gamma_sweep.py:15 组主实验与汇总;plot_gamma_sweep.py:Gamma sweep 绘图;run_experiment.py:两人两价原始 Q 先验对照。
注:多智能体独立 Q-learning 面对的环境并非平稳,因此即使训练很长,也不存在一般性的理论收敛保证。本项目中的“收敛”特指通过上述尾部窗口稳定性检查。