【2024年高教社杯全国大学生数学建模竞赛】 C题:农作物的种植策略问题分析、数学模型及代码
1 题目
根据乡村的实际情况,充分利用有限的耕地资源,因地制宜,发展有机种植产业,对乡村经济的可持续发展具有重要的现实意义。选择适宜的农作物,优化种植策略,有利于方便田间管理,提高生产效益,减少各种不确定因素可能造成的种植风险。
你扮演一个专业的数学建模专家。请根据以下问题背景,对以下我提出的问题进行分析,只分析思路,不需要给出数学公式和代码。要求step by step的输出,要求有逻辑,确保是根据题目中的数据进行分析。由于数据较多,以下表格只是提供了部分示例数据:
问题背景
根据乡村的实际情况,充分利用有限的耕地资源,因地制宜,发展有机种植产业,对乡村经济的可持续发展具有重要的现实意义。选择适宜的农作物,优化种植策略,有利于方便田间管理,提高生产效益,减少各种不确定因素可能造成的种植风险。某乡村地处华北山区,常年温度偏低,大多数耕地每年只能种植一季农作物。该乡村现有露天耕地 1201 亩,分散为 34 个大小不同的地块,包括平旱地、梯田、山坡地和水浇地 4 种类型(表格中只举例每种类型2个地块)。平旱地、梯田和山坡地适宜每年种植一季粮食类作物;水浇地适宜每年种植一季水稻或两季蔬菜。该乡村另有 16 个普通大棚亩地(以下表格只举例了2个)和 4 个智慧大棚(以下表格只举例了2个),每个大棚耕地面积为 0.6 亩。普通大棚适宜每年种植一季蔬菜和一季食用菌,智慧大棚适宜每年种植两季蔬菜。同一地块(含大棚)每季可以合种不同的作物。粮食有黄豆、黑豆、红豆、绿豆、爬豆、小麦、玉米、谷子、高粱、黍子、荞麦、南瓜、红薯、莜麦、大麦、水稻。蔬菜有豇豆、刀豆、芸豆、土豆、西红柿、茄子、菠菜 、青椒、菜花、包菜、油麦菜、小青菜、黄瓜、生菜 、辣椒、空心菜、黄心菜、芹菜、大白菜、白萝卜、红萝卜。食用菌有榆黄菇、香菇、白灵菇、羊肚菌。
耕地部分数据如下表1。
地块名称 | 地块类型 | 地块面积/亩 |
---|---|---|
A1 | 平旱地 | 80 |
A2 | 平旱地 | 55 |
B1 | 梯田 | 60 |
B2 | 梯田 | 46 |
C1 | 山坡地 | 15 |
C2 | 山坡地 | 13 |
D1 | 水浇地 | 15 |
D2 | 水浇地 | 10 |
E1 | 普通大棚 | 0.6 |
E2 | 普通大棚 | 0.6 |
F1 | 智慧大棚 | 0.6 |
F2 | 智慧大棚 | 0.6 |
根据农作物的生长规律,每种作物在同一地块(含大棚)都不能连续重茬种植,否则会减产;因含有豆类作物根菌的土壤有利于其他作物生长,从 2023 年开始要求每个地块(含大棚)的所有土地三年内至少种植一次豆类作物。同时,种植方案应考虑到方便耕种作业和田间管理,譬如:每种作物每季的种植地不能太分散,每种作物在单个地块(含大棚)种植的面积不宜太小,等等。2023年的农作物种植地块如表2(只举例了部分地块)。
作物编号 | 作物名称 | 作物类型 | 种植面积/亩 | 种植季次 | 种植地块 |
---|---|---|---|---|---|
6 | 小麦 | 粮食 | 80 | 单季 | A1 |
7 | 玉米 | 粮食 | 55 | 单季 | A2 |
6 | 小麦 | 粮食 | 60 | 单季 | B1 |
2 | 黑豆 | 粮食(豆类) | 46 | 单季 | B2 |
11 | 荞麦 | 粮食 | 15 | 单季 | C1 |
12 | 南瓜 | 粮食 | 13 | 单季 | C2 |
20 | 土豆 | 蔬菜 | 15 | 第一季 | D1 |
36 | 白萝卜 | 蔬菜 | 15 | 第二季 | D1 |
28 | 小青菜 | 蔬菜 | 10 | 第一季 | D2 |
35 | 大白菜 | 蔬菜 | 10 | 第二季 | D2 |
18 | 刀豆 | 蔬菜(豆类) | 0.6 | 第一季 | E1 |
38 | 榆黄菇 | 食用菌 | 0.6 | 第二季 | E1 |
24 | 青椒 | 蔬菜 | 0.6 | 第一季 | E2 |
38 | 榆黄菇 | 食用菌 | 0.6 | 第二季 | E2 |
32 | 空心菜 | 蔬菜 | 0.3 | 第一季 | F1 |
33 | 黄心菜 | 蔬菜 | 0.3 | 第一季 | F1 |
24 | 青椒 | 蔬菜 | 0.3 | 第二季 | F1 |
21 | 西红柿 | 蔬菜 | 0.3 | 第二季 | F1 |
25 | 菜花 | 蔬菜 | 0.3 | 第一季 | F2 |
26 | 包菜 | 蔬菜 | 0.3 | 第一季 | F2 |
22 | 茄子 | 蔬菜 | 0.3 | 第二季 | F2 |
29 | 黄瓜 | 蔬菜 | 0.3 | 第二季 | F2 |
各种农作物亩产量和销售单价,部分数据如表3:
序号 | 作物编号 | 作物名称 | 地块类型 | 种植季次 | 亩产量/斤 | 种植成本/(元/亩) | 销售单价/(元/斤) |
---|---|---|---|---|---|---|---|
1 | 1 | 黄豆 | 平旱地 | 单季 | 400 | 400 | 2.50-4.00 |
2 | 2 | 黑豆 | 平旱地 | 单季 | 500 | 400 | 6.50-8.50 |
16 | 1 | 黄豆 | 梯田 | 单季 | 380 | 400 | 2.50-4.00 |
17 | 2 | 黑豆 | 梯田 | 单季 | 475 | 400 | 6.50-8.50 |
31 | 1 | 黄豆 | 山坡地 | 单季 | 360 | 400 | 2.50-4.00 |
32 | 2 | 黑豆 | 山坡地 | 单季 | 450 | 400 | 6.50-8.50 |
46 | 16 | 水稻 | 水浇地 | 单季 | 500 | 680 | 6.00-8.00 |
47 | 17 | 豇豆 | 水浇地 | 第一季 | 3000 | 2000 | 7.00-9.00 |
65 | 17 | 豇豆 | 普通大棚 | 第一季 | 3600 | 2400 | 7.00-9.00 |
66 | 18 | 刀豆 | 普通大棚 | 第一季 | 2400 | 1200 | 5.50-8.00 |
83 | 35 | 大白菜 | 水浇地 | 第二季 | 5000 | 2000 | 2.00-3.00 |
84 | 36 | 白萝卜 | 水浇地 | 第二季 | 4000 | 500 | 2.00-3.00 |
86 | 38 | 榆黄菇 | 普通大棚 | 第二季 | 5000 | 3000 | 50.00-65.00 |
87 | 39 | 香菇 | 普通大棚 | 第二季 | 4000 | 2000 | 18.00-20.00 |
90 | 17 | 豇豆 | 智慧大棚 | 第二季 | 3200 | 2640 | 8.40-10.80 |
91 | 18 | 刀豆 | 智慧大棚 | 第二季 | 2200 | 1320 | 6.60-9.60 |
问题1
假定各种农作物未来的预期销售量、种植成本、亩产量和销售价格相对于 2023 年保持稳定,每季种植的农作物在当季销售。如果某种作物每季的总产量超过相应的预期销售量,超过部分不能正常销售。请针对以下两种情况,分别给出该乡村 2024~2030 年农作物的最优种植方案,将结果分别填入表格中,参考表2。
(1) 超过部分滞销,造成浪费;
(2) 超过部分按 2023 年销售价格的 50%降价出售。
问题 2 根据经验,小麦和玉米未来的预期销售量有增长的趋势,平均年增长率介于5%~10%之间,其他农作物未来每年的预期销售量相对于 2023 年大约有±5%的变化。农作物的亩产量往往会受气候等因素的影响,每年会有±10%的变化。因受市场条件影响,农作物的种植成本平均每年增长 5%左右。粮食类作物的销售价格基本稳定;蔬菜类作物的销售价格有增长的趋势,平均每年增长5%左右。食用菌的销售价格稳中有降,大约每年可下降1%~5%,特别是羊肚菌的销售价格每年下降幅度为5%。请综合考虑各种农作物的预期销售量、亩产量、种植成本和销售价格的不确定性以及潜在的种植风险,给出该乡村 2024~2030 年农作物的最优种植方案,将结果填入表中,参考表2。
问题 3、在现实生活中,各种农作物之间可能存在一定的可替代性和互补性,预期销售量与销售价格、种植成本之间也存在一定的相关性。请在问题 2 的基础上综合考虑相关因素,给出该乡村2024~2030 年农作物的最优种植策略,通过模拟数据进行求解,并与问题 2 的结果作比较分析。
附件 1 乡村现有耕地和农作物的基本情况
附件 2 2023 年乡村农作物种植和相关统计数据
附件 3 须提交结果的模板文件(result1_1.xlsx,result1_2.xlsx,result2.xlsx)
2 问题分析
总结一句话,题目很复杂,但要明白这就一个优化问题。优化问题,只有两个东西。第一个是目标函数,第二个是约束条件。建立好目标函数后,然后就在题目中挖掘所有的约束条件。不要被具体的数据晃瞎了眼,捋清楚数据之间的关系就行,具体数值是留给编程的人根据数学模型来统计的,先建立好模型,再去考虑具体的数值的应用。
2.1 问题一
题目要求最大化种植收益并尽量减少浪费。并且两种情况涉及不同的目标:一是避免产能过剩带来的浪费,二是考虑降价销售的情况。分为两种情况设计两种最优的种植策略。需要结合不同地块的类型、面积,以及种植要求(单季、多季、轮作等),合理安排各类农作物的种植分配。要求尽量集中化种植,以方便田间管理,减少分散种植带来的管理难度和效率低下的问题。
(1)首先分析种植资源和限制条件的数据
-
地块分类:明确乡村的不同类型地块,包括平旱地、梯田、山坡地、水浇地、普通大棚和智慧大棚。不同地块适合种植的作物类型不同:
- 平旱地、梯田、山坡地:适宜种植粮食类作物(如小麦、玉米等)。
- 水浇地:适合种植一季水稻或两季蔬菜。
- 普通大棚:每年种植一季蔬菜和一季食用菌。
- 智慧大棚:每年种植两季蔬菜。
-
地块面积:每个地块的耕地面积不同,决定了各地块能承载的种植规模。例如,A1 地块有 80 亩,F1 智慧大棚为 0.6 亩。
-
轮作制度:由于豆类作物的根菌作用,要求三年内每个地块至少种植一次豆类作物。必须合理安排豆类作物的轮种,避免重茬种植。
-
种植物分类:
- 粮食:黄豆、黑豆、红豆、绿豆、爬豆、小麦、玉米、谷子、高粱、黍子、荞麦、南瓜、红薯、莜麦、大麦、水稻。
- 蔬菜:豇豆、刀豆、芸豆、土豆、西红柿、茄子、菠菜 、青椒、菜花、包菜、油麦菜、小青菜、黄瓜、生菜 、辣椒、空心菜、黄心菜、芹菜、大白菜、白萝卜、红萝卜。
- 食用菌:榆黄菇、香菇、白灵菇、羊肚菌。
-
市场需求和产量:
- 各类农作物在6种耕地的亩产量:可附件2中的”2023年统计的相关数据“进行统计计算,每种农作物在每种耕地上的亩产量唯一,即同一种农作物,不同的耕地产量会不一样。
- 市场预期销售量:注意,这里计算销售量,是以季为单位,分别计算第一季的销售量为S1,第二季的销售量为S2
- 种植成本:种植成本只和农作物有关,与耕地类型无关。
- 销售价格都保持和2023一样,一种农作物一个季度,一个价格,即同一种农作物,不同的季度价格不一样。
(2)第一小问
目标是减少浪费,合理控制高产作物的种植面积,集中化种植,同时保证豆类作物的合理轮作,避免过量种植低需求作物。因为超过部分滞销,会造成浪费,则最大化产量与预期销售量的匹配,避免浪费。首先只考虑2024年一整年的,不需要考虑连续多年种植的问题,即只考虑两个季度的分配。
目标函数:2024最大化产量
约束:
- 粮食有黄豆、黑豆、红豆、绿豆、爬豆、小麦、玉米、谷子、高粱、黍子、荞麦、南瓜、红薯、莜麦、大麦、水稻。
- 蔬菜有豇豆、刀豆、芸豆、土豆、西红柿、茄子、菠菜 、青椒、菜花、包菜、油麦菜、小青菜、黄瓜、生菜 、辣椒、空心菜、黄心菜、芹菜、大白菜、白萝卜、红萝卜。
- 食用菌有榆黄菇、香菇、白灵菇、羊肚菌。
- 总产量小于或等于2023预期销售量。
- 所有种植作物的总面积不超过可用耕地总面积
- 所有作物的种植面积必须是非负的
- 作物的亩产量和2023年一样
- 种植成本和2023年一样
- 平旱地、梯田、山坡地:适宜种植粮食类作物(如小麦、玉米等)。
- 水浇地适合种植一季水稻或两季蔬菜。
- 普通大棚每年种植一季蔬菜和一季食用菌。
- 智慧大棚每年种植两季蔬菜。
- 控制产量较大的作物。
(3)第二小问
目标是最大化收益,在考虑市场需求的前提下,适度增加高产作物的种植面积,利用降价销售的方式提高总收益。因为超出部分可以降价继续销售。则建立最大化收益目标,可以考虑部分产量降价出售。
- 合理分配两季作物种植的耕地,尤其是智慧大棚和水浇地,最大化利用它们的多季种植优势。
目标函数:最大化收益
约束:
- 粮食有黄豆、黑豆、红豆、绿豆、爬豆、小麦、玉米、谷子、高粱、黍子、荞麦、南瓜、红薯、莜麦、大麦、水稻。
- 蔬菜有豇豆、刀豆、芸豆、土豆、西红柿、茄子、菠菜 、青椒、菜花、包菜、油麦菜、小青菜、黄瓜、生菜 、辣椒、空心菜、黄心菜、芹菜、大白菜、白萝卜、红萝卜。
- 食用菌有榆黄菇、香菇、白灵菇、羊肚菌。
- 总产量小于或等于2023预期销售量。
- 所有种植作物的总面积不超过可用耕地总面积
- 所有作物的种植面积必须是非负的
- 作物的亩产量和2023年一样
- 种植成本和2023年一样
- 平旱地、梯田、山坡地:适宜种植粮食类作物(如小麦、玉米等)。
- 水浇地适合种植一季水稻或两季蔬菜。
- 普通大棚每年种植一季蔬菜和一季食用菌。
- 智慧大棚每年种植两季蔬菜。
- 优先考虑种植高产量作物的种植面积(不同点)
- 优先使用智慧大棚和水浇地
(4)隐藏的第三小问
在2024的方案基础上,微调方案,增加两条约束,重新计算出2025、2026、2027、2028、2029、2030的分配计划。要求考虑两点
- 每种作物在同一地块都不能连续重茬种植。
- 从 2023 年开始要求每个地块的所有土地三年内至少种植一次豆类作物。
2.2 问题二
由于市场需求、气候、成本等因素的变化存在不确定性,在问题一的基础上要考虑更多的风险约束,和变量条件,目标仍然是最大化收益。并且提出假设不考虑滞销的问题,全部产出都能销售。首先针对2024年份,建立方案。
(1)确定主要的变化因素及其影响
-
预期销售量的变化:
- 小麦、玉米:未来预期销售量有增长趋势,年增长率介于 5%~10% 之间。这意味着在 2024~2030 年内,种植这些作物的潜在收益增加,因此需要优先考虑这些作物的种植面积。
- 其他农作物:每年预期销售量变化为±5%,需根据市场需求调整种植策略,以应对可能的需求减少或增加。
-
亩产量的变化:
- 所有作物:亩产量每年可能有±10%的变化,受气候等因素的影响。这一不确定性增加了种植的风险,特别是对于产量波动大的作物。需要考虑适当的风险分散,避免将大量耕地集中于高风险作物上。
-
种植成本的变化:
- 种植成本:每年增长5%左右。这意味着未来几年内种植成本将逐渐上升,因此在制定种植策略时,需要充分考虑成本控制,尤其是对于收益增长较慢或价格下降的作物。
-
销售价格的变化:
- 粮食类作物(小麦、玉米等):销售价格基本稳定,因此收益主要依赖于销售量和产量的变化。
- 蔬菜类作物:每年销售价格增长5%左右,这意味着蔬菜类作物的潜在收益逐年增加。因此,需要适当扩大蔬菜的种植面积,特别是在大棚内的多季种植。
- 食用菌(尤其是羊肚菌):销售价格稳中有降,每年下降1%~5%,其中羊肚菌下降幅度更大,达5%。因此,食用菌的种植面积应适当控制,特别是羊肚菌,种植面积应逐渐减少。
(2)在2024年最大化收益的目标函数下,增加约束条件
优先考虑高增长作物:
- 小麦和玉米:由于预期销售量每年增长 5%~10%,小麦和玉米的种植面积应逐年扩大,尤其是在适合单季种植粮食作物的平旱地和梯田中。这些地块可以优先分配给小麦和玉米。
- 蔬菜类作物:销售价格每年增长5%,因此在蔬菜类作物中选择高收益作物(如西红柿、黄瓜、大白菜等)进行扩种,特别是在大棚内可以进行多季种植的作物。智慧大棚和普通大棚可以优先用于蔬菜种植,以最大化收益。
减少低增长或价格下降作物的种植:
- 食用菌:由于食用菌价格每年下降 1%~5%,特别是羊肚菌价格下降较大,种植面积应逐步缩小。普通大棚可以优先用于其他高收益的蔬菜,减少食用菌的种植比例。
- 羊肚菌:由于其价格下降幅度最大,建议逐年减少其种植面积,并替换为其他收益更高的作物,如蔬菜类。
合理分散种植(可选):
- 由于产量存在 ±10% 的变化,不能将过多土地集中于某一种作物,尤其是单季高产作物。需要进行多样化种植,将不同类型的作物合理分配到不同类型的地块,确保即使部分作物的产量波动较大,也不会对整体收益造成过大影响。
(3)2025-2030年种植策略调整
微调方案,增加约束
- 逐年扩大小麦、玉米的种植面积
- 随着食用菌价格的逐年下降,逐年减少食用菌(尤其是羊肚菌)种植面积
2.3 问题三
这个题是属于敏感性分析了,因为计算过程比较复杂,具体在做的时候就考虑2-3个点实验后对比分析问题2的结果即可,可以从收益差异、种植结构的差异的角度去分析。在问题二的数学模型上进行一些调整后,重新计算。
首先对数据进行分析,从亩产量、种植成本、销售单价三个方面,分析每类作物、每种地块类型之间的相关性。然后根据相关性(替代性)、互补性,选出可替代作物。
然后提出某条假设后,优先选择可替代产物后,分析变化。比如
-
假设市场对某类粮食作物的需求下降或种植成本上升,增加其他粮食作物的种植面积,分析收益和种植结构有何变化。
-
假设如果某类蔬菜的市场表现不好(如价格下跌或成本上升),可以考虑替代种植其他蔬菜类作物。
3 数学模型
3.1 问题一
你扮演一个专业的数学建模专家。请根据以下问题背景和问题,对我提出的问题分析思路建立详细的数学模型,需要给出详细的数学公式。要求step by step的有逻辑的输出,由于数据较多,以下表格只是提供了部分示例数据:
问题背景
根据乡村的实际情况,充分利用有限的耕地资源,因地制宜,发展有机种植产业,对乡村经济的可持续发展具有重要的现实意义。选择适宜的农作物,优化种植策略,有利于方便田间管理,提高生产效益,减少各种不确定因素可能造成的种植风险。某乡村地处华北山区,常年温度偏低,大多数耕地每年只能种植一季农作物。该乡村现有露天耕地 1201 亩,分散为 34 个大小不同的地块,包括平旱地、梯田、山坡地和水浇地 4 种类型(表格中只举例每种类型2个地块)。平旱地、梯田和山坡地适宜每年种植一季粮食类作物;水浇地适宜每年种植一季水稻或两季蔬菜。该乡村另有 16 个普通大棚亩地(以下表格只举例了2个)和 4 个智慧大棚(以下表格只举例了2个),每个大棚耕地面积为 0.6 亩。普通大棚适宜每年种植一季蔬菜和一季食用菌,智慧大棚适宜每年种植两季蔬菜。同一地块(含大棚)每季可以合种不同的作物。粮食有黄豆、黑豆、红豆、绿豆、爬豆、小麦、玉米、谷子、高粱、黍子、荞麦、南瓜、红薯、莜麦、大麦、水稻。蔬菜有豇豆、刀豆、芸豆、土豆、西红柿、茄子、菠菜 、青椒、菜花、包菜、油麦菜、小青菜、黄瓜、生菜 、辣椒、空心菜、黄心菜、芹菜、大白菜、白萝卜、红萝卜。食用菌有榆黄菇、香菇、白灵菇、羊肚菌。
耕地部分数据在附件1.csv,部分数据如下:
地块名称 | 地块类型 | 地块面积/亩 |
---|---|---|
A1 | 平旱地 | 80 |
A2 | 平旱地 | 55 |
2023年的农作物种植方案在附件2.csv,部分数据如下:
作物编号 | 作物名称 | 作物类型 | 种植面积/亩 | 种植季次 | 种植地块 |
---|---|---|---|---|---|
6 | 小麦 | 粮食 | 80 | 单季 | A1 |
7 | 玉米 | 粮食 | 55 | 单季 | A2 |
现有2023年销售数据在附件3.csv文件中,包含列有作物编号、作物名称、地块类型、种植季次、亩产量/斤、种植成本/(元/亩)、销售单价/(元/斤),部分数据如下:
序号 | 作物编号 | 作物名称 | 地块类型 | 种植季次 | 亩产量/斤 | 种植成本/(元/亩) | 销售单价/(元/斤) |
---|---|---|---|---|---|---|---|
1 | 1 | 黄豆 | 平旱地 | 单季 | 400 | 400 | 2.50-4.00 |
2 | 2 | 黑豆 | 平旱地 | 单季 | 500 | 400 | 6.50-8.50 |
问题一
假定各种农作物未来的预期销售量、种植成本、亩产量和销售价格相对于 2023 年保持稳定,每季种植的农作物在当季销售。如果某种作物每季的总产量超过相应的预期销售量,超过部分不能正常销售,超过部分滞销,造成浪费。求解2024年的最优种植方案。
问题分析
题目要求最大化种植收益并尽量减少浪费。设计最优的种植策略,需要结合不同地块的类型、面积,以及种植要求(单季、多季、轮作等),合理安排各类农作物的种植分配。要求尽量集中化种植,以方便田间管理,减少分散种植带来的管理难度和效率低下的问题。
- 首先分析种植资源和限制条件的数据
地块分类:明确乡村的不同类型地块,包括平旱地、梯田、山坡地、水浇地、普通大棚和智慧大棚。不同地块适合种植的作物类型不同:
- 平旱地、梯田、山坡地:适宜种植粮食类作物(如小麦、玉米等)。
- 水浇地:适合种植一季水稻或两季蔬菜。
- 普通大棚:每年种植一季蔬菜和一季食用菌。
- 智慧大棚:每年种植两季蔬菜。
地块面积:每个地块的耕地面积不同,决定了各地块能承载的种植规模。例如,A1 地块有 80 亩,F1 智慧大棚为 0.6 亩。
轮作制度:由于豆类作物的根菌作用,要求三年内每个地块至少种植一次豆类作物。必须合理安排豆类作物的轮种,避免重茬种植。
种植物分类:
- 粮食:黄豆、黑豆、红豆、绿豆、爬豆、小麦、玉米、谷子、高粱、黍子、荞麦、南瓜、红薯、莜麦、大麦、水稻。
- 蔬菜:豇豆、刀豆、芸豆、土豆、西红柿、茄子、菠菜 、青椒、菜花、包菜、油麦菜、小青菜、黄瓜、生菜 、辣椒、空心菜、黄心菜、芹菜、大白菜、白萝卜、红萝卜。
- 食用菌:榆黄菇、香菇、白灵菇、羊肚菌。
市场需求和产量:
- 各类农作物在6种耕地的亩产量:可附件2中的”2023年统计的相关数据“进行统计计算,每种农作物在每种耕地上的亩产量唯一,即同一种农作物,不同的耕地产量会不一样。
- 市场预期销售量:注意,这里计算销售量,是以季为单位,分别计算第一季的销售量为S1,第二季的销售量为S2
- 种植成本:种植成本只和农作物有关,与耕地类型无关。
- 销售价格都保持和2023一样,一种农作物一个季度,一个价格,即同一种农作物,不同的季度价格不一样。
- 数学模型
目标是减少浪费,合理控制高产作物的种植面积,集中化种植,同时保证豆类作物的合理轮作,避免过量种植低需求作物。因为超过部分滞销,会造成浪费,则最大化产量与预期销售量的匹配,避免浪费。首先只考虑2024年一整年的,不需要考虑连续多年种植的问题,即只考虑两个季度的分配。
目标函数:2024最大化产量
约束:
- 粮食有黄豆、黑豆、红豆、绿豆、爬豆、小麦、玉米、谷子、高粱、黍子、荞麦、南瓜、红薯、莜麦、大麦、水稻。
- 蔬菜有豇豆、刀豆、芸豆、土豆、西红柿、茄子、菠菜 、青椒、菜花、包菜、油麦菜、小青菜、黄瓜、生菜 、辣椒、空心菜、黄心菜、芹菜、大白菜、白萝卜、红萝卜。
- 食用菌有榆黄菇、香菇、白灵菇、羊肚菌。
- 所有种植作物的总面积不超过可用耕地总面积
- 所有作物的种植面积必须是非负的
- 作物的亩产量和2023年一样,(E_{作物,地块类型,季度})
- 种植成本和2023年一样
- 平旱地、梯田、山坡地:适宜种植粮食类作物(如小麦、玉米等)
- 水浇地适合种植一季水稻或两季蔬菜
- 普通大棚每年种植一季蔬菜和一季食用菌
- 智慧大棚每年种植两季蔬菜
- 优先考虑产量较大的作物
- 总产量小于或等于2023预期销售量
- 严格限制每个作物的种植面积,使得产量与2023的销售量匹配
你扮演一个专业的数学建模专家。请根据以下问题背景和问题,对我提出的问题分析思路建立详细的数学模型,需要给出详细的数学公式。要求step by step的有逻辑的输出,由于数据较多,以下表格只是提供了部分示例数据:
问题背景
根据乡村的实际情况,充分利用有限的耕地资源,因地制宜,发展有机种植产业,对乡村经济的可持续发展具有重要的现实意义。选择适宜的农作物,优化种植策略,有利于方便田间管理,提高生产效益,减少各种不确定因素可能造成的种植风险。某乡村地处华北山区,常年温度偏低,大多数耕地每年只能种植一季农作物。该乡村现有露天耕地 1201 亩,分散为 34 个大小不同的地块,包括平旱地、梯田、山坡地和水浇地 4 种类型(表格中只举例每种类型2个地块)。平旱地、梯田和山坡地适宜每年种植一季粮食类作物;水浇地适宜每年种植一季水稻或两季蔬菜。该乡村另有 16 个普通大棚亩地(以下表格只举例了2个)和 4 个智慧大棚(以下表格只举例了2个),每个大棚耕地面积为 0.6 亩。普通大棚适宜每年种植一季蔬菜和一季食用菌,智慧大棚适宜每年种植两季蔬菜。同一地块(含大棚)每季可以合种不同的作物。粮食有黄豆、黑豆、红豆、绿豆、爬豆、小麦、玉米、谷子、高粱、黍子、荞麦、南瓜、红薯、莜麦、大麦、水稻。蔬菜有豇豆、刀豆、芸豆、土豆、西红柿、茄子、菠菜 、青椒、菜花、包菜、油麦菜、小青菜、黄瓜、生菜 、辣椒、空心菜、黄心菜、芹菜、大白菜、白萝卜、红萝卜。食用菌有榆黄菇、香菇、白灵菇、羊肚菌。
耕地部分数据在附件1.csv,部分数据如下:
地块名称 | 地块类型 | 地块面积/亩 |
---|---|---|
A1 | 平旱地 | 80 |
A2 | 平旱地 | 55 |
2023年的农作物种植方案在附件2.csv,部分数据如下:
作物编号 | 作物名称 | 作物类型 | 种植面积/亩 | 种植季次 | 种植地块 |
---|---|---|---|---|---|
6 | 小麦 | 粮食 | 80 | 单季 | A1 |
7 | 玉米 | 粮食 | 55 | 单季 | A2 |
现有2023年销售数据在附件3.csv文件中,包含列有作物编号、作物名称、地块类型、种植季次、亩产量/斤、种植成本/(元/亩)、销售单价/(元/斤),部分数据如下:
序号 | 作物编号 | 作物名称 | 地块类型 | 种植季次 | 亩产量/斤 | 种植成本/(元/亩) | 销售单价/(元/斤) |
---|---|---|---|---|---|---|---|
1 | 1 | 黄豆 | 平旱地 | 单季 | 400 | 400 | 2.50-4.00 |
2 | 2 | 黑豆 | 平旱地 | 单季 | 500 | 400 | 6.50-8.50 |
问题
小麦和玉米未来的预期销售量有增长的趋势,平均年增长率介于5%~10%之间,其他农作物未来每年的预期销售量相对于 2023 年大约有±5%的变化。农作物的亩产量往往会受气候等因素的影响,每年会有±10%的变化。因受市场条件影响,农作物的种植成本平均每年增长 5%左右。粮食类作物的销售价格基本稳定;蔬菜类作物的销售价格有增长的趋势,平均每年增长5%左右。食用菌的销售价格稳中有降,大约每年可下降1%~5%,特别是羊肚菌的销售价格每年下降幅度为5%。请综合考虑各种农作物的预期销售量、亩产量、种植成本和销售价格的不确定性以及潜在的种植风险,求解 2024~2030 年农作物的最优种植方案。
问题分析思路
由于市场需求、气候、成本等因素的变化存在不确定性,在问题一的基础上要考虑更多的风险约束,和变量条件,目标仍然是最大化收益。并且提出假设不考虑滞销的问题,全部产出都能销售。首先针对2024年份,建立方案。
(1)确定主要的变化因素及其影响
-
预期销售量的变化:
- 小麦、玉米:未来预期销售量有增长趋势,年增长率介于 5%~10% 之间。这意味着在 2024~2030 年内,种植这些作物的潜在收益增加,因此需要优先考虑这些作物的种植面积。
- 其他农作物:每年预期销售量变化为±5%,需根据市场需求调整种植策略,以应对可能的需求减少或增加。
-
亩产量的变化:
- 所有作物:亩产量每年可能有±10%的变化,受气候等因素的影响。这一不确定性增加了种植的风险,特别是对于产量波动大的作物。需要考虑适当的风险分散,避免将大量耕地集中于高风险作物上。
-
种植成本的变化:
- 种植成本:每年增长5%左右。这意味着未来几年内种植成本将逐渐上升,因此在制定种植策略时,需要充分考虑成本控制,尤其是对于收益增长较慢或价格下降的作物。
-
销售价格的变化:
- 粮食类作物(小麦、玉米等):销售价格基本稳定,因此收益主要依赖于销售量和产量的变化。
- 蔬菜类作物:每年销售价格增长5%左右,这意味着蔬菜类作物的潜在收益逐年增加。因此,需要适当扩大蔬菜的种植面积,特别是在大棚内的多季种植。
- 食用菌(尤其是羊肚菌):销售价格稳中有降,每年下降1%~5%,其中羊肚菌下降幅度更大,达5%。因此,食用菌的种植面积应适当控制,特别是羊肚菌,种植面积应逐渐减少。
(2)在2024年最大化收益的目标函数下,增加约束条件
优先考虑高增长作物:
- 小麦和玉米:由于预期销售量每年增长 5%~10%,小麦和玉米的种植面积应逐年扩大,尤其是在适合单季种植粮食作物的平旱地和梯田中。这些地块可以优先分配给小麦和玉米。
- 蔬菜类作物:销售价格每年增长5%,因此在蔬菜类作物中选择高收益作物(如西红柿、黄瓜、大白菜等)进行扩种,特别是在大棚内可以进行多季种植的作物。智慧大棚和普通大棚可以优先用于蔬菜种植,以最大化收益。
减少低增长或价格下降作物的种植:
- 食用菌:由于食用菌价格每年下降 1%~5%,特别是羊肚菌价格下降较大,种植面积应逐步缩小。普通大棚可以优先用于其他高收益的蔬菜,减少食用菌的种植比例。
- 羊肚菌:由于其价格下降幅度最大,建议逐年减少其种植面积,并替换为其他收益更高的作物,如蔬菜类。
合理分散种植(可选):
- 由于产量存在 ±10% 的变化,不能将过多土地集中于某一种作物,尤其是单季高产作物。需要进行多样化种植,将不同类型的作物合理分配到不同类型的地块,确保即使部分作物的产量波动较大,也不会对整体收益造成过大影响。
(3)2025-2030年种植策略调整
微调方案,增加约束
- 逐年扩大小麦、玉米的种植面积
- 随着食用菌价格的逐年下降,逐年减少食用菌(尤其是羊肚菌)种植面积
3.2 问题二
4 代码实现
你扮演一个专业的数学建模专家,擅长Python编程。请根据以下问题背景、问题、针对问题建立的数学模型,要求,首先用python实现对表格数据的统计和分析,然后根据统计的数据使用Python工具包求解模型,并python实现输出种植方案表格表5。输出代码,要求step by step的有逻辑的输出,由于数据较多,以下表格只是提供了部分示例数据。输出中文。
问题背景
根据乡村的实际情况,充分利用有限的耕地资源,因地制宜,发展有机种植产业,对乡村经济的可持续发展具有重要的现实意义。选择适宜的农作物,优化种植策略,有利于方便田间管理,提高生产效益,减少各种不确定因素可能造成的种植风险。某乡村地处华北山区,常年温度偏低,大多数耕地每年只能种植一季农作物。该乡村现有露天耕地 1201 亩,分散为 34 个大小不同的地块,包括平旱地、梯田、山坡地和水浇地 4 种类型(表格中只举例每种类型2个地块)。平旱地、梯田和山坡地适宜每年种植一季粮食类作物;水浇地适宜每年种植一季水稻或两季蔬菜。该乡村另有 16 个普通大棚亩地(以下表格只举例了2个)和 4 个智慧大棚(以下表格只举例了2个),每个大棚耕地面积为 0.6 亩。普通大棚适宜每年种植一季蔬菜和一季食用菌,智慧大棚适宜每年种植两季蔬菜。同一地块(含大棚)每季可以合种不同的作物。粮食有黄豆、黑豆、红豆、绿豆、爬豆、小麦、玉米、谷子、高粱、黍子、荞麦、南瓜、红薯、莜麦、大麦、水稻。蔬菜有豇豆、刀豆、芸豆、土豆、西红柿、茄子、菠菜 、青椒、菜花、包菜、油麦菜、小青菜、黄瓜、生菜 、辣椒、空心菜、黄心菜、芹菜、大白菜、白萝卜、红萝卜。食用菌有榆黄菇、香菇、白灵菇、羊肚菌。
(1) 平旱地、梯田和山坡地每年适宜单季种植粮食类作物(水稻除外)。
(2) 水浇地每年可以单季种植水稻或两季种植蔬菜作物。
(3) 若在某块水浇地种植两季蔬菜,第一季可种植多种蔬菜(大白菜、白萝卜和红萝卜除外);第二季只能种植大白菜、白萝卜和红萝卜中的一种(便于管理)。
(4) 根据季节性要求,大白菜、白萝卜和红萝卜只能在水浇地的第二季种植。
(5) 普通大棚每年种植两季作物,第一季可种植多种蔬菜(大白菜、白萝卜和红萝卜除外),第二季只能种植食用菌。
(6) 因食用菌类适应在较低且适宜的温度和湿度环境中生长,所以只能在秋冬季的普通大棚里种植。
(7) 智慧大棚每年都可种植两季蔬菜(大白菜、白萝卜和红萝卜除外)。
耕地部分数据在”乡村的现有耕地.csv”,部分数据如下:
地块名称 | 地块类型 | 地块面积/亩 |
---|---|---|
A1 | 平旱地 | 80 |
A2 | 平旱地 | 55 |
农作物适宜的耕地类型和季度,在“乡村种植的农作物.csv“中,部分数据如下:
作物编号 | 作物名称 | 作物类型 | 种植耕地 |
---|---|---|---|
1 | 黄豆 | 粮食(豆类) | 平旱地 梯田 山坡地 (单季) |
2023年的农作物种植方案在”2023种植情况.csv“,部分数据如下:
作物编号 | 作物名称 | 作物类型 | 种植面积/亩 | 种植季次 | 种植地块 |
---|---|---|---|---|---|
6 | 小麦 | 粮食 | 80 | 单季 | A1 |
7 | 玉米 | 粮食 | 55 | 单季 | A2 |
现有2023年的统计数据在”2023年统计的相关数据.csv“中,部分数据如下:
序号 | 作物编号 | 作物名称 | 地块类型 | 种植季次 | 亩产量/斤 | 种植成本/(元/亩) | 销售单价/(元/斤) |
---|---|---|---|---|---|---|---|
1 | 1 | 黄豆 | 平旱地 | 单季 | 400 | 400 | 2.50-4.00 |
2 | 2 | 黑豆 | 平旱地 | 单季 | 500 | 400 | 6.50-8.50 |
问题
假定各种农作物未来的预期销售量、种植成本、亩产量和销售价格相对于 2023 年保持稳定,每季种植的农作物在当季销售。如果某种作物每季的总产量超过相应的预期销售量,超过部分滞销,造成浪费,分别计算出 2024到2030 年农作物的最优种植方案,将结果分别填入表格中,格式如下表5,其中表格分为两部分,一部分是第一季度,一部分是第二季度:
地块名 | 黄豆 | 黑豆 | 红豆 | 绿豆 | 爬豆 | … |
---|---|---|---|---|---|---|
A1 | ||||||
A2 | ||||||
A3 |
数学模型
-
x c , l , t x_{c,l,t} xc,l,t:在第 t t t 季节,种植作物 c c c 在地块 l l l 上的面积(单位:亩)。
-
p c , l , t p_{c,l,t} pc,l,t:作物 c c c 在地块 l l l 在第 t t t 季节的亩产量(单位:斤/亩)。
-
s c , t s_{c,t} sc,t:作物 c c c 在第 t t t 季节的销售单价(元/斤)。
-
d c , t d_{c,t} dc,t:作物 c c c 在第 t t t 季节的市场需求(斤),即预期销售量。
-
c c c_{c} cc:作物 c c c 的种植成本(元/亩)。
-
C grain C_{\text{grain}} Cgrain:粮食类作物集合(例如:黄豆、小麦、玉米等)。
-
C rice C_{\text{rice}} Crice:水稻作物集合。
-
C vegetable C_{\text{vegetable}} Cvegetable:蔬菜类作物集合(例如:番茄、黄瓜、辣椒等)。
-
C mushroom C_{\text{mushroom}} Cmushroom:食用菌作物集合(例如:香菇、榆黄菇等)。
-
L flatland L_{\text{flatland}} Lflatland:平旱地、梯田、山坡地集合。
-
L irrigated L_{\text{irrigated}} Lirrigated:水浇地集合。
-
L ordinary_greenhouse L_{\text{ordinary\_greenhouse}} Lordinary_greenhouse:普通大棚集合。
-
L smart_greenhouse L_{\text{smart\_greenhouse}} Lsmart_greenhouse:智慧大棚集合。
1.目标函数
目标是最大化净收益
Maximize: Z = ∑ c , t ∑ l min ( x c , l , t ⋅ p c , l , t , d c , t ) ⋅ s c , t − ∑ c , t ∑ l x c , l , t ⋅ c c \text{Maximize: } Z = \sum_{c,t} \sum_{l} \min(x_{c,l,t} \cdot p_{c,l,t}, d_{c,t}) \cdot s_{c,t} - \sum_{c,t} \sum_{l} x_{c,l,t} \cdot c_{c} Maximize: Z=c,t∑l∑min(xc,l,t⋅pc,l,t,dc,t)⋅sc,t−c,t∑l∑xc,l,t⋅cc
其中, min ( x c , l , t ⋅ p c , l , t , d c , t ) \min(x_{c,l,t} \cdot p_{c,l,t}, d_{c,t}) min(xc,l,t⋅pc,l,t,dc,t) 表示实际销售量,即产量和需求之间的较小值,以避免滞销。
2. 约束条件
(1) 地块面积约束
每个地块的种植面积不能超过该地块的总面积,其中, A l A_{l} Al 是地块 l l l 的总面积。
∑ c x c , l , t ≤ A l , ∀ l , t \sum_{c} x_{c,l,t} \leq A_{l}, \quad \forall l, t \ c∑xc,l,t≤Al,∀l,t
(2) 地块类型限制
-
平旱地、梯田、山坡地:仅允许种植粮食类作物。
x c , l , t = 0 , ∀ c ∉ C grain , l ∈ L flatland , t = 1 x_{c,l,t} = 0, \quad \forall c \notin C_{\text{grain}}, \ l \in L_{\text{flatland}}, \ t = 1 xc,l,t=0,∀c∈/Cgrain, l∈Lflatland, t=1 -
水浇地:允许种植水稻或蔬菜。
x c , l , t = 0 , ∀ c ∉ ( C rice ∪ C vegetable ) , l ∈ L irrigated , t ≤ 2 x_{c,l,t} = 0, \quad \forall c \notin (C_{\text{rice}} \cup C_{\text{vegetable}}), \ l \in L_{\text{irrigated}}, \ t \leq 2 xc,l,t=0,∀c∈/(Crice∪Cvegetable), l∈Lirrigated, t≤2 -
普通大棚:第 1 季节种蔬菜,第 2 季节种食用菌。
x c , l , t = 0 , ∀ c ∉ C vegetable , l ∈ L ordinary_greenhouse , t = 1 x_{c,l,t} = 0, \quad \forall c \notin C_{\text{vegetable}}, \ l \in L_{\text{ordinary\_greenhouse}}, \ t = 1 xc,l,t=0,∀c∈/Cvegetable, l∈Lordinary_greenhouse, t=1c , l , t = 0 , ∀ c ∉ C mushroom , l ∈ L ordinary_greenhouse , t = 2 {c,l,t} = 0, \quad \forall c \notin C_{\text{mushroom}}, \ l \in L_{\text{ordinary\_greenhouse}}, \ t = 2 c,l,t=0,∀c∈/Cmushroom, l∈Lordinary_greenhouse, t=2
-
智慧大棚:每季只能种植蔬菜。
x c , l , t = 0 , ∀ c ∉ C vegetable , l ∈ L smart_greenhouse , t ≤ 2 x_{c,l,t} = 0, \quad \forall c \notin C_{\text{vegetable}}, \ l \in L_{\text{smart\_greenhouse}}, \ t \leq 2 xc,l,t=0,∀c∈/Cvegetable, l∈Lsmart_greenhouse, t≤2
(3) 市场需求约束
每季作物的总产量不得超过市场需求:
∑ l x c , l , t ⋅ p c , l , t ≤ d c , t , ∀ c , t \sum_{l} x_{c,l,t} \cdot p_{c,l,t} \leq d_{c,t}, \quad \forall c, t l∑xc,l,t⋅pc,l,t≤dc,t,∀c,t
(5) 非负性约束
种植面积必须为非负:
x c , l , t ≥ 0 , ∀ c , l , t x_{c,l,t} \geq 0, \quad \forall c, l, t xc,l,t≥0,∀c,l,t
在以下代码的基础上,实现数学模型的所有约束条:
代码
import pandas as pd# 加载地块数据
land_data = pd.read_csv('data/附件1-乡村的现有耕地.csv',encoding='gbk')
# 加载作物数据
crop_data = pd.read_csv('data/附件1-乡村种植的农作物.csv',encoding='gbk')
# 加载2023年种植数据
planting_2023 = pd.read_csv('data/附件2-2023年的农作物种植情况.csv',encoding='gbk')
# 加载2023年统计数据
stats_2023 = pd.read_csv('data/附件2-2023年统计的相关数据.csv',encoding='gbk')# 查看数据的前几行,确保数据加载正确
print("地块数据:")
print(land_data.head())
print("\n作物数据:")
print(crop_data.head())
print("\n2023年种植数据:")
print(planting_2023.head())
print("\n2023年统计数据:")
print(stats_2023.head())# 函数:处理价格范围,返回平均值
def process_price_range(price_range):if isinstance(price_range, str) and '-' in price_range:# 分割字符串,获取最小值和最大值min_price, max_price = map(float, price_range.split('-'))# 返回平均值return (min_price + max_price) / 2else:# 如果不是范围,直接返回浮点数return float(price_range)stats_2023['销售单价/(元/斤)'] = stats_2023['销售单价/(元/斤)'].apply(process_price_range)# 合并地块数据和2023年种植情况,统计各地块种植的作物面积与类型
merged_data = pd.merge(planting_2023, land_data, left_on='种植地块', right_on='地块名称')stats_2023.set_index('作物编号', inplace=True)def calculate_yield(x):crop_id = x[x.index] # 获取当前分组的作物编号yield_per_acre = stats_2023.loc[crop_id, '亩产量/斤']return sum(yield_per_acre)
planting_stats = merged_data.groupby(['地块名称', '作物名称', '作物编号']).agg(total_area=('地块面积/亩', 'sum'),# 总面积total_yield=('作物编号', calculate_yield) # 总产量
).reset_index()
print(planting_stats.head())from pulp import LpMaximize, LpProblem, LpVariable, lpSumfrom pulp import LpMaximize, LpProblem, LpVariable, lpSum
# 创建线性规划模型
model = LpProblem(name="farm-planting-optimization", sense=LpMaximize)# 创建决策变量
variables = {}
for _, land in land_data.iterrows():land_name = land['地块名称']land_area = land['地块面积/亩']for _, crop in crop_data.iterrows():crop_name = crop['作物名称']var = LpVariable(f"x_{crop_name}_{land_name}", lowBound=0, upBound=land_area)variables[(crop_name, land_name)] = var# 添加目标函数:净收益
profit_terms = []
for (crop_name, land_name), var in variables.items():yield_per_acre = stats_2023.loc[stats_2023['作物名称'] == crop_name, '亩产量/斤'].values[0]cost_per_acre = stats_2023.loc[stats_2023['作物名称'] == crop_name, '种植成本/(元/亩)'].values[0]price_per_pound = stats_2023.loc[stats_2023['作物名称'] == crop_name, '销售单价/(元/斤)'].values[0]profit = var * yield_per_acre * price_per_pound - var * cost_per_acreprofit_terms.append(profit)model += lpSum(profit_terms), "总净收益"# 约束 1:地块面积限制
for _, land in land_data.iterrows():land_name = land['地块名称']land_area = land['地块面积/亩']model += lpSum([variables[(crop_name, land_name)] for crop_name in crop_data['作物名称']]) <= land_area, f"地块面积约束_{land_name}"# 约束 2:地块类型限制
grain_crops = crop_data[crop_data['作物类型'] == '粮食']['作物名称'].tolist()
vegetable_crops = crop_data[crop_data['作物类型'] == '蔬菜']['作物名称'].tolist()
rice_crops = crop_data[crop_data['作物名称'] == '水稻']['作物名称'].tolist()
mushroom_crops = crop_data[crop_data['作物名称'] == '食用菌']['作物名称'].tolist()for _, land in land_data.iterrows():land_name = land['地块名称']land_type = land['地块类型']if land_type in ['平旱地', '梯田', '山坡地']:for crop_name in crop_data['作物名称']:if crop_name not in grain_crops:model += variables[(crop_name, land_name)] == 0, f"地块类型约束_粮食_{land_name}_{crop_name}"elif land_type == '水浇地':for crop_name in crop_data['作物名称']:if crop_name not in (rice_crops + vegetable_crops):model += variables[(crop_name, land_name)] == 0, f"地块类型约束_水浇地_{land_name}_{crop_name}"elif land_type == '普通大棚':for crop_name in crop_data['作物名称']:if crop_name not in vegetable_crops:model += variables[(crop_name, land_name)] == 0, f"地块类型约束_普通大棚_第1季_{land_name}_{crop_name}"if crop_name not in mushroom_crops:model += variables[(crop_name, land_name)] == 0, f"地块类型约束_普通大棚_第2季_{land_name}_{crop_name}"elif land_type == '智慧大棚':for crop_name in crop_data['作物名称']:if crop_name not in vegetable_crops:model += variables[(crop_name, land_name)] == 0, f"地块类型约束_智慧大棚_{land_name}_{crop_name}"# 约束 3:市场需求限制
for _, crop in crop_data.iterrows():crop_name = crop['作物名称']for t in range(1, 3): # 假设有两个季节demand = stats_2023.loc[stats_2023['作物名称'] == crop_name, '亩产量/斤'].values[0]yield_per_acre = stats_2023.loc[stats_2023['作物名称'] == crop_name, '亩产量/斤'].values[0]model += lpSum([variables[(crop_name, land_name)] * yield_per_acre for land_name in land_data['地块名称']]) <= demand, f"市场需求约束_{crop_name}_季_{t}"# 求解模型
model.solve()# 输出结果
print(f"最优目标值:{model.objective.value()}")# 打印变量值
for var in model.variables():print(f"{var.name} = {var.value()}")
约束条件
(1) 地块面积约束
每个地块的种植面积不能超过该地块的总面积,其中, A l A_{l} Al 是地块 l l l 的总面积。
∑ c x c , l , t ≤ A l , ∀ l , t \sum_{c} x_{c,l,t} \leq A_{l}, \quad \forall l, t \ c∑xc,l,t≤Al,∀l,t
(2) 地块类型限制
-
平旱地、梯田、山坡地:仅允许种植粮食类作物。
x c , l , t = 0 , ∀ c ∉ C grain , l ∈ L flatland , t = 1 x_{c,l,t} = 0, \quad \forall c \notin C_{\text{grain}}, \ l \in L_{\text{flatland}}, \ t = 1 xc,l,t=0,∀c∈/Cgrain, l∈Lflatland, t=1 -
水浇地:允许种植水稻或蔬菜。
x c , l , t = 0 , ∀ c ∉ ( C rice ∪ C vegetable ) , l ∈ L irrigated , t ≤ 2 x_{c,l,t} = 0, \quad \forall c \notin (C_{\text{rice}} \cup C_{\text{vegetable}}), \ l \in L_{\text{irrigated}}, \ t \leq 2 xc,l,t=0,∀c∈/(Crice∪Cvegetable), l∈Lirrigated, t≤2 -
普通大棚:第 1 季节种蔬菜,第 2 季节种食用菌。
x c , l , t = 0 , ∀ c ∉ C vegetable , l ∈ L ordinary_greenhouse , t = 1 x_{c,l,t} = 0, \quad \forall c \notin C_{\text{vegetable}}, \ l \in L_{\text{ordinary\_greenhouse}}, \ t = 1 xc,l,t=0,∀c∈/Cvegetable, l∈Lordinary_greenhouse, t=1c , l , t = 0 , ∀ c ∉ C mushroom , l ∈ L ordinary_greenhouse , t = 2 {c,l,t} = 0, \quad \forall c \notin C_{\text{mushroom}}, \ l \in L_{\text{ordinary\_greenhouse}}, \ t = 2 c,l,t=0,∀c∈/Cmushroom, l∈Lordinary_greenhouse, t=2
-
智慧大棚:每季只能种植蔬菜。
x c , l , t = 0 , ∀ c ∉ C vegetable , l ∈ L smart_greenhouse , t ≤ 2 x_{c,l,t} = 0, \quad \forall c \notin C_{\text{vegetable}}, \ l \in L_{\text{smart\_greenhouse}}, \ t \leq 2 xc,l,t=0,∀c∈/Cvegetable, l∈Lsmart_greenhouse, t≤2
(3) 市场需求约束
每季作物的总产量不得超过市场需求:
∑ l x c , l , t ⋅ p c , l , t ≤ d c , t , ∀ c , t \sum_{l} x_{c,l,t} \cdot p_{c,l,t} \leq d_{c,t}, \quad \forall c, t l∑xc,l,t⋅pc,l,t≤dc,t,∀c,t
(5) 非负性约束
种植面积必须为非负:
x c , l , t ≥ 0 , ∀ c , l , t x_{c,l,t} \geq 0, \quad \forall c, l, t xc,l,t≥0,∀c,l,t