本项目为 2023年全国大学生数学建模竞赛 C题(蔬菜类商品的自动定价与补货决策) 的解决方案代码仓库。项目旨在利用历史销售数据,建立数学模型,解决生鲜商超在蔬菜品类的定价与补货策略问题,以最大化商超收益。
生鲜商超中,蔬菜类商品保鲜期短、品控难,且销量极易受时间和价格影响。如何制定合理的每日补货量和定价策略,在满足市场需求的同时减少损耗、最大化利润,是商超运营的核心痛点。
本项目通过以下步骤解决该问题:
- 数据分析与清洗:处理历史销售流水、批发价格及损耗率数据。
- 需求预测:利用 LSTM/Transformer 模型预测未来 7 天的销量、批发价及销售单价。
- 定价决策:基于价格弹性系数,分析价格对销量的影响。
- 优化求解:使用粒子群算法在满足约束条件下寻找最优补货量和定价策略。
按以下顺序运行脚本,体验完整的解决流程:
| 文件名 | 描述 | 输入 | 输出 |
|---|---|---|---|
step1.py |
数据预处理:读取附件1-3,清洗、合并并按日聚合数据。 | 附件1-3.xlsx |
outpics/step1_aggregated_daily_data.csv |
step2.py |
弹性计算:计算各品类的价格弹性系数(OLS回归)。 | step1_*.csv |
outpics/step2_price_elasticities.json |
step3.py |
时序预测:基于 LSTM 预测未来 7 天的销量及价格。 | step1_*.csv |
outpics/step3_lstm_predictions.csv |
step4.py |
策略优化:利用 PSO (粒子群算法) 求解最优补货量与定价。 | step3_*.csv, step2_*.json |
outpics/step5_optimal_strategy.csv |
包含更复杂的模型实现(Transformer)及改进的预测逻辑:
best1.py/best2.py:集成了数据处理、特征工程(季节性分解、周期特征)与 Transformer 预测模型的完整脚本。相比基础 LSTM,Transformer 在捕捉长序依赖上表现更优。- 特点:使用 Huber Loss、RobustScaler、EarlyStopping 等策略提升模型鲁棒性。
- 输出:生成详细的预测图表(保存在
plots/目录下)。
数据集读入.py:独立的数据读取脚本,包含对附件4(损耗率)的处理逻辑。价格LSTM.py:专注于使用 Optuna 框架对 LSTM 模型进行超参数自动寻优(针对批发价预测)。粒子群.py:PSO 算法的独立实现或变体。
依赖以下库:
pip install pandas numpy matplotlib seaborn scikit-learn statsmodels tensorflow torch optuna openpyxl理解每一步的中间结果。
- 确保
附件1.xlsx至附件4.xlsx位于项目根目录。 - 依次运行:
python step1.py # 生成聚合数据 python step2.py # 计算价格弹性 python step3.py # 训练LSTM并预测 python step4.py # 运行PSO优化,得到最终策略
- 查看
outpics/目录下的结果文件。
获取更高精度的预测结果。
- 运行
best2.py:python best2.py
- 程序将自动进行数据清洗、特征构建、模型训练及预测,并生成可视化图表。
- 预测结果:各品类未来一周的销量、成本及建议售价。
- 最优策略:每日各品类的具体补货量 (kg) 和 定价策略 (加成率)。
- 可视化:生成的销量趋势图保存在
plots/文件夹中。
本项目由以下参与者贡献和维护:
![]() |
![]() |
|---|---|
| @aprlost | @xphfdp |

