国赛失败,说多了都是泪,太累了,感觉是我这19年来经历过的压力最大最无力的三天。

不过确实学到了很多,尤其是对于接口的理解。

这几天精神状态都不太好,今晚调整一下,明早去打球,接下来开学前的几天不再搞高强度的了,确实累了,就写这么多吧p

///// 这里放一下比赛写的文档吧,算是小小纪念一下

this is a test document by donotknow.
this is our 2024 MCM travel.
目标:选择合适的农作物,制定策略
条件:1201亩 34块
平旱地,梯田,山坡地 每年一季
水浇地 每年一季水稻 or 两季蔬菜
每个大棚 0.6亩 作用:每年都可以种植两季作物。
16个普通大棚适宜每年种植一季蔬菜和一季食用菌
4个智慧大棚适宜每年种植两季蔬菜。
同一地块(含大棚)每季可以合种不同的作物。

要求:
1.小于亩产量
1.每种作物在同一地块(含大棚)都不能连续重茬种植
2.每个地块(含大棚)的所有土地三年内至少种植一次豆类作物
3.每种地块只能种植相应的作物

**以上六个约束条件中后两个约束条件可以不考虑**

数据集:
excel1:地块名称 地块类型 地块面积/亩 说明
excel2:sheet1 种植地块(同地块名称)作物编号 作物名称 作物类型
种植面积/亩 种植季次
sheet2 序号 作物编号 作物名称 地块类型 种植季次 亩产量/斤
种植成本/(元/亩) 销售单价/(元/斤)

问题1 :假设:各种农作物的销售量、种植成本、亩产量和销售价格不变

问题一可以采用线性规划模型,有41作物,34个地块
决策变量
目标:实现利益最大化(W) max(W)
第一情况(pi)pi<=pibefore
变量:
作物名称:变量名:i范围:1,2,3,......,41
季度:变量名: s 范围:1,2,3,4,5,...,14季
地块名称:变量名:k 范围:1,2,...,34
亩数:x
接口:
作物类型(作物名称)
地块类型(作物名称)
地块类型(地块名称)
#
地块面积(地块名称)
亩产量(作物名称,地块名称)
种植成本(作物名称)
销售单价(作物名称)
find亩数(季度, 作物名称, 地块名称)
作物售量(作物名称,亩数,地块名称)
作物产量(作物名称,季度,亩数)
单个作物总亩数(作物名称)
接口:
三个约束条件对应三个函数
1. 约束条件一(季度,地块名称 ):
lis_豆类=[黄豆,黑豆,红豆,绿豆,爬豆,豇豆刀豆芸豆]
if 季度 > 5:
for i in range(季度-5, 季度+1):
find亩数(i,for j in lis_豆类,地块名称).any
2. 约束条件二(作物名称,地块名称,季度):
通过find亩数函数()查找到上一季度亩数,
if 季度 > 1:
if find亩数 > 0:
return false
else
3.约束条件三(作物名称, 地块名称):
if interface3(地块名称) in interface2(作物名称):
return true
else:
return false
求当前情况的利润,和之前保存的最高利润比较,如果更高,保存
找出最优方案(利润最高):
总利润w=亩数乘利润
使w最大
q
q
4.约束条件四(地块名称,作物名称):
if 地块类型(地块名称) in [平旱地,梯田,山坡地]:
if 作物类型(作物名称) in [粮食(豆类), 粮食] and 作物名称 != “水稻”:
return true
return false
5.约束条件五(地块名称,作物名称,季度):
if地块类型(地块名称) == “水浇地”:
if 季度 % 2 == 0:
if 作物名称 == 水稻:
return !find (地块名称, 季度-1, for 作物名称 in [水稻,豇豆刀豆芸豆土豆西红柿茄子菠菜 青椒菜花包菜油麦菜小青菜黄瓜生菜 辣椒空心菜黄心菜芹菜大白菜白萝卜红萝卜]
if 作物类型(作物名称) in 【蔬菜(豆类),蔬菜】:
return!find(地块名称,季度 -1,水稻】
return true
6.约束条件六(地块名称,作物名称,季度):
if 地块类型(地块名称) == “水浇地”:
if 季度%2 == 1:
if 作物类型(作物名称) in 【蔬菜(豆类),蔬菜】:
if 作物名称 in 【大白菜,白萝卜,红萝卜】:
return false
if 季度 % 2 == 0:
if 作物类型(作物名称)not in 【大白菜,白萝卜,红萝卜】:
return false
return true
7.约束条件七(地块名称,作物名称,季度):
if 地块类型(地块名称) == “普通大棚”:
if 季度%2 == 1:
if 作物类型(作物名称) in 【蔬菜(豆类),蔬菜】:
if 作物名称 in 【大白菜,白萝卜,红萝卜】:
return false
else:
return false
if 季度 % 2 == 0:
if 作物名称 not in 【榆黄菇香菇白灵菇羊肚菌】:
return false
return true
8. 约束条件八(地块名称,作物名称):
if 地块类型(地块名称) == “智慧大棚”:
if 作物名称 in 【大白菜,白萝卜,红萝卜】:
return false
return true

模型:地块 >> 季度 >> 作物类型 >> 种植亩数
地块:54个地块
季度:14个季度
作物类型:41种
种植亩数:x

### 总利润 = 总收入 - 总成本

总成本 = 种植成本(作物名称)* 单个作物总亩数(作物名称)
总收入 =
接口函数:
interface1:输出作物类型(输入作物名称)
interface2:输出地块类型(列表)(作物名称)
interface3:输出地块类型(地块名称)
interface4:输出亩产量(作物名称,地块名称,季度)
interface5:输出种植成本(作物名称)
interface6:输出销售单价(作物名称)
interface7:输出地块面积(地块名称)
# interface8:输出find亩数(季度, 作物名称, 地块名称)
interface9:作物售量(作物名称)
interface10:种植季次(数字s)
interface11:地块名称(数字k)
interface12:作物名称(数字i)
interface13:作物产量(地块名称,作物名称,季度,亩数)
interface14:单个作物总亩数(作物名称)
interface15:地块类型(数字k)