Skip to content

Repository files navigation

农作物种植优化系统

项目简介

本项目是一个基于粒子群优化算法(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. 准备数据

确保以下数据文件在项目根目录:

  • 附件1.xlsx: 基础数据
  • 附件2.xlsx: 包含两个工作表
    • "2023年统计的相关数据": 作物价格、成本、产量等信息
    • "2023年的农作物种植情况": 历史种植情况

2. 运行优化程序

python code_1.py

3. 使用Jupyter Notebook进行交互式分析

jupyter notebook solve1.ipynb

4. 测试PSO算法

运行测试代码验证PSO算法的正确性:

python test.py

算法说明

粒子群优化(PSO)算法

本项目使用PSO算法进行优化,主要参数如下:

C1 = 1.5        # 个体学习因子
C2 = 1.5        # 社会学习因子
W = 1           # 惯性权重
num_particles = 50   # 粒子数量
max_iter = 40        # 最大迭代次数

优化目标

目标函数旨在最大化总收益:

Z1 = Σ (销售收入 - 种植成本)

其中:

  • 销售收入 = 销售单价 × min(产量, 预期销量)
  • 种植成本 = 种植成本/亩 × 种植面积

约束条件

  1. 面积约束: 每个地块的总种植面积不超过地块面积
  2. 最小种植面积约束:
    • 普通大棚/智慧大棚: ≥ 0.3亩
    • 水浇地: ≥ 5亩
    • 其他地块: ≥ 10亩
  3. 作物-地块适配约束: 特定作物只能在特定类型地块种植
  4. 轮作约束:
    • 连续年份避免重复种植同一作物
    • 豆类作物需满足三年轮作要求
  5. 大棚约束:
    • 普通大棚第一季节不能种植特定作物(编号35-37)
    • 智慧大棚不能种植特定作物
  6. 水稻约束: 水稻只能在水浇地种植

输出结果

输出文件

程序运行后会在2023-2029/文件夹中生成以下文件:

  1. 种植方案CSV文件: YYYY_Season_K.csv

    • 行: 地块编号(P_1 至 P_82)
    • 列: 作物编号(C_1 至 C_41)
    • 值: 该地块该季度各作物的种植面积(亩)
  2. 收敛曲线图: 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种地块类型:

  1. 平旱地 (6块): 80-68亩不等
  2. 梯田 (14块): 60-20亩不等
  3. 山坡地 (6块): 15-27亩不等
  4. 水浇地 (8块): 15-22亩不等
  5. 普通大棚 (16块): 每块0.6亩
  6. 智慧大棚 (4块): 每块0.6亩

以上地块在两个季节重复,共计82个地块单元。

作物类型

系统支持41种作物的种植优化,包括但不限于:

  • 粮食作物(小麦、玉米等)
  • 豆类作物(大豆、绿豆等)
  • 蔬菜类(各类蔬菜)
  • 经济作物

具体作物信息详见附件2.xlsx文件。

注意事项

  1. 确保输入数据文件格式正确,特别是Excel文件的工作表名称
  2. 程序运行时间较长(取决于迭代次数和粒子数量),请耐心等待
  3. 如需调整优化参数,可修改代码中的全局参数设置
  4. 输出文件会覆盖同名文件,请注意备份重要结果

参数调优建议

如果优化结果不理想,可以尝试调整以下参数:

  • num_particles: 增加粒子数量可提高搜索能力,但会增加计算时间
  • max_iter: 增加迭代次数可能找到更优解
  • C1, C2: 调整学习因子影响收敛速度和全局搜索能力
  • W: 惯性权重影响算法的探索和开发平衡

常见问题

Q: 程序运行很慢怎么办?
A: 可以减少num_particlesmax_iter的值,但可能影响优化质量。

Q: 如何理解输出的CSV文件?
A: 每个CSV文件表示一个特定年份和季节的种植方案,行代表地块,列代表作物,值代表种植面积。

Q: 约束条件没有完全满足怎么办?
A: PSO是启发式算法,可能无法完美满足所有约束。可以增加迭代次数或调整约束处理逻辑。

开发者

本项目为农业优化建模竞赛解决方案。

许可证

本项目仅供学习和研究使用。

更新日志

  • Initial Version: 实现基本的PSO优化功能
  • 支持多年度、多季节、多地块、多作物的综合优化
  • 包含完整的约束条件处理
  • 提供可视化输出

贡献

欢迎提出问题和改进建议!

参考资料

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages