【2024数模国赛赛题思路公开】国赛C题第二套思路丨附可运行代码丨无偿自提

2024年国赛C题第二套解题思路

 第一问:2024~2030年农作物的最优种植方案

 【问题分析】

题目要求为某乡村在2024~2030年制定农作物的最优种植方案,目的是最大化收益,并需考虑两种销售情况:

1. 超过预期销售量的部分滞销,造成浪费;

2. 超过预期销售量的部分以2023年价格的50%降价出售。

我们需要根据耕地面积、农作物亩产量、销售价格、种植成本等因素建立数学模型来计算最优种植方案。

 模型变量定义

1. 决策变量:表示第t年在第i个地块种植第j种作物的面积。

2. 参数:

    Ai:第 i 个地块的面积。

  Pj:第 j种作物的亩产量(可以为每年不变或根据具体情况使用波动模型)。

  Sj:第 j种作物的销售价格。

  Cj:第 j 种作物的种植成本。

  Dtj:第j 种作物在第t年的预期销售量。   

Rj:第 j种作物的减产风险,考虑不能重茬种植的影响。

3. 目标函数:

    我们的目标是最大化总收益,即所有作物的种植收益减去种植成本。

 建模过程

 1. 基本模型(不考虑超产滞销和降价的情况)

首先,假设作物的销售量不会超过预期,模型为一个标准的线性规划问题:

约束条件:

1. 地块面积限制:对于每个地块 i,总种植面积不能超过该地块面积:

2. 每种作物的面积非负:

3. 不同作物的种植区域不能重叠,且需考虑重茬约束:

 可以使用二元变量来引入该约束。

 2. 超过销售量部分滞销或降价的处理

滞销情况: 

对于滞销部分,只需在目标函数中引入一个限制,当产量超过预期销售量时,超过部分的收入为0

降价情况: 

如果超过部分可以按50%降价出售,则产量大于预期销售量的部分按降价后的价格计算收益:

 3. 不确定性和风险因素

 气候波动:通过引入随机变量模拟作物亩产量的年际变化(如设定为±10%)。

 市场波动:可以引入预期销售量的年增长(如玉米和小麦5%~10%的年增长率),并设定作物销售价格的波动。

 种植风险:对于作物连续种植,考虑减产风险。

 智能优化算法设计

为了求解上述模型,我可以采用智能优化算法,如遗传算法(Genetic Algorithm, GA)或粒子群算法(Particle Swarm Optimization, PSO)来求解。

遗传算法(GA)思路

1. 编码:将每年的种植方案表示为个体(染色体),编码方式为每个作物在各地块的种植面积。

2. 初始种群生成:随机生成满足地块面积约束和不重茬约束的种植方案。

3. 适应度函数:以目标函数(收益最大化)作为适应度函数。

4. 选择、交叉、变异:通过选择、交叉和变异操作生成新的种植方案。交叉操作模拟不同方案之间的组合,变异操作对某些地块的种植方案进行微调。

5. 终止条件:迭代到一定代数或适应度函数不再显著变化时,算法终止。

该问题可以通过线性规划结合智能优化算法求解。模型主要考虑作物的销售限制、滞销和降价机制,并引入不确定性和风险因素优化种植策略。智能优化算法如遗传算法可以在复杂约束下找到接近最优的解。

【Python代码】

import random
import numpy as np
from deap import base, creator, tools, algorithms定义问题的常量
NUM_YEARS = 7   从2024到2030
NUM_CROPS = 5   作物的种类数
NUM_FIELDS = 34   地块数量耕地面积、预期销售量、销售价格和成本的模拟数据(需根据具体数据修改)
field_areas = [random.randint(20, 100) for _ in range(NUM_FIELDS)]   每个地块的面积
crop_yields = [random.uniform(2, 5) for _ in range(NUM_CROPS)]   每亩产量
crop_prices = [random.uniform(1, 10) for _ in range(NUM_CROPS)]   销售价格
crop_costs = [random.uniform(0.5, 2) for _ in range(NUM_CROPS)]   种植成本
expected_sales = [random.uniform(100, 200) for _ in range(NUM_CROPS)]   预期销售量定义个体的适应度(最大化收益)
creator.create("FitnessMax", base.Fitness, weights=(1.0,))
creator.create("Individual", list, fitness=creator.FitnessMax)初始化个体,每个个体代表一个种植方案
def init_individual():每个地块随机分配不同作物的种植面积return [random.uniform(0, field_areas[i]) for i in range(NUM_FIELDS  NUM_CROPS  NUM_YEARS)]评价函数,计算收益
def evaluate(individual):total_profit = 0for t in range(NUM_YEARS):for i in range(NUM_FIELDS):for j in range(NUM_CROPS):crop_area = individual[t  NUM_FIELDS  NUM_CROPS + i  NUM_CROPS + j]crop_yield = crop_area  crop_yields[j]sales = min(crop_yield, expected_sales[j])  crop_prices[j]if crop_yield > expected_sales[j]:sales += (crop_yield  expected_sales[j])  (crop_prices[j]  0.5)   降价销售cost = crop_area  crop_costs[j]profit = sales  costtotal_profit += profitreturn total_profit,初始化种群
toolbox = base.Toolbox()
toolbox.register("individual", tools.initIterate, creator.Individual, init_individual)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)遗传算法操作:选择、交叉和变异
toolbox.register("mate", tools.cxTwoPoint)
toolbox.register("mutate", tools.mutGaussian, mu=0, sigma=0.1, indpb=0.2)
toolbox.register("select", tools.selTournament, tournsize=3)
toolbox.register("evaluate", evaluate)运行遗传算法
def main():pop = toolbox.population(n=100)   初始化种群hof = tools.HallOfFame(1)   记录最优解stats = tools.Statistics(lambda ind: ind.fitness.values)stats.register("avg", np.mean)stats.register("min", np.min)stats.register("max", np.max)algorithms.eaSimple(pop, toolbox, cxpb=0.5, mutpb=0.2, ngen=100, stats=stats, halloffame=hof, verbose=True)return hof[0]   返回最优解if __name__ == "__main__":best_solution = main()print("Best solution found:", best_solution)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/878788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp微信小程序开发踩坑日记:Pinia持久化报错Cannot read property ‘localStorage‘ of undefined

插件默认使用 localStorage 实现持久化,小程序端不兼容,需要替换持久化 API import { defineStore } from pinia export const useCommonStore defineStore(pack-store, {state: (): State > ({wwInfo: {},globalData: {},timerLock: false, //是…

【LeetCode】05.最长回文子串

题目要求 解题思路 这一类型(回文子串)主要有两种解决方法,一种是动态规划,另一种是中心拓展算法。 动态规划: 本质问题就是在i-j区间是不是回文的。这样的话我们在 i 和 j 位置的值相等时,判断如下三种情…

SQL-多表查询

1、多表关系 一对多、多对一:在多的一方建立外键,指向一的一方。 多对多:至少两个外键,通过中间表维护。 一对一 2、多表查询概述 3、内连接 4、外连接 5、自连接 6、联合查询 7、子查询 8、多表查询案例 # 1、多表关系 #…

语音测试(一)ffmpeg视频转音频

视频转音频 下载ffmpeg工具进入bin目录cmd进入控制台输入命令 ffmpeg.exe -i ./视频.mp4 ./音频.wav命令说明 ffmpeg -i input.mp4 output.mkv FFmpeg 可能会尝试自动选择合适的编码器对视频和音频进行重新编码,以便适应 MKV 格式的要求ffmpeg -i input.mp4 -c c…

linux 内核代码学习(八)

总体目标:由于fedora10 linux发行版中自带的linux2.6.xx内核源码规模太庞大了,对于想通读内核源码的爱好者来说太困难了,因此选择了linux2.4.20内核来进行测试(最终是希望能够实现linux1.0内核的源码完全编译和测试)。…

Rust的数据类型

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust到底值不值得学,之一 -CSDN博客 Rust到底值不值得学,之二-CSDN博客 3.5 数据类型的定义和分类 在Rust…

C语言关键字用法实例详解——const(三)

C语言 文章目录 C语言前言一、const二、const和指针const int *p1 或 int const *p1int *const p2 三、函数参数总结 前言 这篇文章来看一看const关键字 一、const 有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定。 例如…

亚马逊逆袭:我是怎么让店铺从平庸到高增长的

今年的亚马逊Prime会员大促即将到来,对于各位卖家来说,这不仅代表着提升店铺主推商品排名、加速商品销量增长的机会,还意味着为年末其他大促活动提前引流获客的大好时机,绝对不容错过! 如果你的亚马逊店铺还是表现平平…

Matlab实现MPC算法

模型预测控制(Model Predictive Control, MPC)是一种先进的过程控制方法,它使用模型来预测系统未来的行为,并基于这些预测来优化控制动作。在Matlab中实现MPC算法通常涉及到使用Matlab的MPC Toolbox,我们可以考虑一个线…

DNN学习平台(GoogleNet、SSD、FastRCNN、Yolov3)

DNN学习平台(GoogleNet、SSD、FastRCNN、Yolov3) 前言相关介绍1,登录界面:2,主界面:3,部分功能演示如下(1)识别网络图片(2)GoogleNet分类&#xf…

【Qt】Qt和JavaScript使用QWebChannel交互

问题 问题一: 问题描述:运行时,Qt向Js端发送消息没有问题,Js端向Qt端发送消息时失败 报错:Cannot invoke unknown method of index -1 on object webTransport(0x…) 原因及解决办法:使用Qt 5.11.2编译生…

【基础】Three.js 自定义几何体和复制几何体

通过自定义顶点数据,可以创建任意的几何体。像threejs的长方体BoxGeometry、球体SphereGeometry等几何体都是基于BufferGeometry类构建的,它表示一个没有任何形状的空几何体。 1. 自定义点模型 通过javascript 类型化数组 Float32Array创建一组xyz坐标…

pycharm破解教程

下载pycharm https://www.jetbrains.com/pycharm/download/other.html 破解网站 https://hardbin.com/ipfs/bafybeih65no5dklpqfe346wyeiak6wzemv5d7z2ya7nssdgwdz4xrmdu6i/ 点击下载破解程序 安装pycharm 自己选择安装路径 安装完成后运行破解程序 等到Done图标出现 选择Ac…

IMU腕带评估轮椅用户运动健康

近期,美国的研究团队利用惯性测量单元(IMU)和机器学习来准确评估手动轮椅使用者的运动健康状况,这在康复训练和慢性病管理领域具有广阔的应用前景。 研究小组将运用高性能的IMU传感器固定到轮椅使用者佩戴的手腕带上,用…

内存序学习笔记(一)——表达式求值顺序

你知道为什么 i i 2 在 C17 前行为未定义吗? 你知道为什么 func(a(), b()) 中,a() 与 b() 的执行顺序为什么不是确定的吗? 这篇文章可以解答你的疑惑。 注:内容中包含作者自行理解的表述,请谨慎参考。 表达式求值 …

分享一套外链系统,付费进群系统

本系统特点,活码系统以及卡片系统,付费进群系统 分享一套外链系统其中带付费进群系统插件,前端做了美化

第90集《大佛顶首楞严经》

《大佛顶如来密因修正了义诸菩萨万行首楞严经》。监院法师慈悲,诸位法师,诸位同学,阿弥陀佛! 请大家打开讲义197面 子一、现化表法 诵持『楞严神咒』在整个修学《首楞严王三昧》的过程,它所扮演的角色有两个&#x…

全文索引与虚拟列索引需要注意的事项

在 MySQL 中,全文索引 (FULLTEXT) 与 UNION ALL 可以一起使用,但有一些限制和注意事项。 限制与问题: 全文索引不能直接在 UNION ALL 中使用:MySQL 不允许在多个查询的 UNION 或 UNION ALL 操作中使用 MATCH ... AGAINST&#xf…

记录一下idea的一些使用技巧和遇到的异常(持续更新)

技巧 自己的模板——live template 有些代码在项目中通常会被用到或会被重复使用,可以自己写一个模板存起来,要用的时候用快捷键生成就可以了。 在这里选择生效范围 现在,就有我们自己的模板了,一回车就自动生成 idea的全局配置…

蓄水池漂浮物识别摄像机

蓄水池是重要的水资源储备设施,但常常会受到漂浮物的影响,影响水质和使用效果。为了及时监测和清理蓄水池中的漂浮物,蓄水池漂浮物识别摄像机 被广泛应用于各类水库、湖泊等场所。这种摄像机结合了图像识别技术和人工智能算法,能够…