本项目是一个基于粒子群优化算法(PSO)的农作物种植方案优化系统。该系统旨在通过智能算法优化农作物的种植安排,最大化农业收益,同时满足各种农业生产约束条件。
项目使用粒子群优化算法对2024-2030年(共7年)的农作物种植方案进行优化,考虑了不同地块类型、作物轮作、季节安排等多种因素。
- 🌾 支持41种不同作物类型的种植优化
- 📍 覆盖82个不同类型的地块(平旱地、梯田、山坡地、水浇地、普通大棚、智慧大棚)
- 📅 跨越7年的长期种植规划(2024-2030)
- 🔄 考虑作物轮作和季节性种植安排
- 💰 综合考虑销售价格、种植成本和产量
- 📊 可视化优化过程和结果
- Python 3.x
- NumPy: 数值计算
- Pandas: 数据处理和分析
- Matplotlib: 数据可视化
- DEAP: 遗传算法和进化计算工具包
- OpenPyXL: Excel文件读写
.
├── code_1.py # 主要优化算法实现
├── test.py # PSO算法测试代码(香蕉函数测试)
├── solve1.ipynb # Jupyter Notebook交互式分析
├── 附件1.xlsx # 输入数据文件1
├── 附件2.xlsx # 输入数据文件2(包含作物数据和种植情况)
├── 附件3/ # 输出结果文件夹
│ ├── result1_1.xlsx
│ ├── result1_2.xlsx
│ └── result2.xlsx
├── 附件数据.xlsx # 附加数据文件
├── C题.pdf # 问题描述文档
├── result1_1.xlsx # 优化结果1
├── result1_2.xlsx # 优化结果2
├── result2.xlsx # 优化结果3
└── 2023-2029/ # 输出文件夹(包含各年度各季度的种植方案)
├── 2024_Season_1.csv
├── 2024_Season_2.csv
├── ...
├── 2030_Season_2.csv
└── Convergence_PSO.png # PSO收敛曲线图
pip install numpy pandas matplotlib deap openpyxl或使用requirements.txt安装:
pip install -r requirements.txt确保以下数据文件在项目根目录:
附件1.xlsx: 基础数据附件2.xlsx: 包含两个工作表- "2023年统计的相关数据": 作物价格、成本、产量等信息
- "2023年的农作物种植情况": 历史种植情况
python code_1.pyjupyter notebook solve1.ipynb运行测试代码验证PSO算法的正确性:
python test.py本项目使用PSO算法进行优化,主要参数如下:
C1 = 1.5 # 个体学习因子
C2 = 1.5 # 社会学习因子
W = 1 # 惯性权重
num_particles = 50 # 粒子数量
max_iter = 40 # 最大迭代次数目标函数旨在最大化总收益:
Z1 = Σ (销售收入 - 种植成本)
其中:
- 销售收入 = 销售单价 × min(产量, 预期销量)
- 种植成本 = 种植成本/亩 × 种植面积
- 面积约束: 每个地块的总种植面积不超过地块面积
- 最小种植面积约束:
- 普通大棚/智慧大棚: ≥ 0.3亩
- 水浇地: ≥ 5亩
- 其他地块: ≥ 10亩
- 作物-地块适配约束: 特定作物只能在特定类型地块种植
- 轮作约束:
- 连续年份避免重复种植同一作物
- 豆类作物需满足三年轮作要求
- 大棚约束:
- 普通大棚第一季节不能种植特定作物(编号35-37)
- 智慧大棚不能种植特定作物
- 水稻约束: 水稻只能在水浇地种植
程序运行后会在2023-2029/文件夹中生成以下文件:
-
种植方案CSV文件:
YYYY_Season_K.csv- 行: 地块编号(P_1 至 P_82)
- 列: 作物编号(C_1 至 C_41)
- 值: 该地块该季度各作物的种植面积(亩)
-
收敛曲线图:
Convergence_PSO.png- 展示PSO算法的优化过程
- X轴: 迭代次数
- Y轴: 最优适应度值(收益)
- 运行结束后,程序会输出最优总收益
- 每个CSV文件代表特定年份特定季节的种植方案
- 种植面积以0.1亩为最小单位进行优化
Iteration 0: 4523678.5
Iteration 1: 4567890.2
...
Iteration 39: 5234567.8
最优解对应的总收益: 5234567.8
解空间矩阵已输出到文件夹: 2023-2029
输出矩阵形状: (41, 82, 2, 7)
项目涉及以下6种地块类型:
- 平旱地 (6块): 80-68亩不等
- 梯田 (14块): 60-20亩不等
- 山坡地 (6块): 15-27亩不等
- 水浇地 (8块): 15-22亩不等
- 普通大棚 (16块): 每块0.6亩
- 智慧大棚 (4块): 每块0.6亩
以上地块在两个季节重复,共计82个地块单元。
系统支持41种作物的种植优化,包括但不限于:
- 粮食作物(小麦、玉米等)
- 豆类作物(大豆、绿豆等)
- 蔬菜类(各类蔬菜)
- 经济作物
具体作物信息详见附件2.xlsx文件。
- 确保输入数据文件格式正确,特别是Excel文件的工作表名称
- 程序运行时间较长(取决于迭代次数和粒子数量),请耐心等待
- 如需调整优化参数,可修改代码中的全局参数设置
- 输出文件会覆盖同名文件,请注意备份重要结果
如果优化结果不理想,可以尝试调整以下参数:
num_particles: 增加粒子数量可提高搜索能力,但会增加计算时间max_iter: 增加迭代次数可能找到更优解C1, C2: 调整学习因子影响收敛速度和全局搜索能力W: 惯性权重影响算法的探索和开发平衡
Q: 程序运行很慢怎么办?
A: 可以减少num_particles或max_iter的值,但可能影响优化质量。
Q: 如何理解输出的CSV文件?
A: 每个CSV文件表示一个特定年份和季节的种植方案,行代表地块,列代表作物,值代表种植面积。
Q: 约束条件没有完全满足怎么办?
A: PSO是启发式算法,可能无法完美满足所有约束。可以增加迭代次数或调整约束处理逻辑。
本项目为农业优化建模竞赛解决方案。
本项目仅供学习和研究使用。
- Initial Version: 实现基本的PSO优化功能
- 支持多年度、多季节、多地块、多作物的综合优化
- 包含完整的约束条件处理
- 提供可视化输出
欢迎提出问题和改进建议!
- 粒子群优化算法原理
- 农业生产优化相关文献
- DEAP库文档: https://deap.readthedocs.io/