当前位置: 首页 > news >正文

2024年高教社杯数学建模国赛C题超详细解题思路分析

本次国赛预测题目难度,选题人数如下所示

难度评估 A:B:C= 1.8:1.3:1

          D:E=1.5:1

选题人数 A:B:C= 1:1.5:2.8

          D:E=0.5:1.2

C题一直以来都是竞赛难度最低、选题人数最多的一道本科生选题,近三年C题的选题人数一直都是总参赛队伍的一半左右,2023年六万支参赛队伍,C题选题队数2.8万。今年初步预计应该也是在3万左右。基于如此多的选题人数,本次我们将给大家带来两个版本的解题思路【思路、模型、代码完全不同】,下面进行第一版本的思路介绍

近年来,国赛在任何题目的数据预处理环节都设置了5-15分不等的数据预处理分值,因此数据预处理是必须进行的环节。数据预处理不仅仅是异常值、缺失值的处理,数据整合、数据可视化、描述性分析均是数据预处理工作。对于本次,我们可以进行异常值处理、数据整合、数据可视化、描述性分析进行数据的呈现。

数据预处理

  1. 异常值检测:题目中存在极端异常的数据,例如无论是亩产量还是种植成本存在极端数据,无论该数据是否真实我们都需要进行说明,以确保数据真实。
  2. 数据可视化、描述性分析:我们可以对题目给出的数据进行初步分析,以便后续建模,例如我们可以进行一些数据的可视化工作。

 

求解思路

使用线性规划或整数规划,通过优化算法求解各地块每年应种植的作物组合,以达到收益最大化的目标。

针对问题1(1)和问题1(2)的不同假设,分别优化种植策略,并填入相应的模板文件。

创新点与改进点

在模型中引入种植密度的约束,确保实际操作中的田间管理合理性,这在标准线性规划问题中较为少见。

不仅优化单一年的收益,而是优化未来7年的种植方案,确保作物轮作和收益的长远稳定。

问题二:考虑不确定性的最优种植方案

问题二在问题一的基础上,引入了未来销售量、种植成本和产量的波动,进一步增加了问题的复杂性。

1. 不确定性因素的引入
不确定性建模:
  1. 销售量变化:假设销售量在±5%波动,小麦和玉米的销售量以5%-10%的年增长率变化。
  2. 亩产量波动:每年由于气候等因素,作物产量会在±10%之间变化。
  3. 种植成本增长:假设种植成本每年增长5%。
  4. 价格变化:粮食类作物的价格基本稳定,而蔬菜价格每年增长5%左右,食用菌价格每年下降1%-5%。
模型调整:
  • 建立一个随机规划模型或使用蒙特卡洛模拟,通过模拟销售量、产量、成本和价格的不确定性,进行多次情景分析,求得不确定条件下的最优种植方案。

具体来讲;

目标: 在引入不确定性因素(产量、价格、销售量和成本波动)的情况下,最大化期望收益。

期望收益最大化:

考虑作物

 的销售量、产量和价格的不确定性,我们的目标是最大化期望收益:

 

 

问题三:农作物替代性和互补性分析

问题三要求在问题二的基础上,进一步考虑不同作物之间的替代性、互补性,以及销售量、价格和种植成本之间的相关性。

1. 引入作物之间的替代性和互补性
替代性和互补性分析:
  • 可以通过协方差矩阵或者相关性系数来量化不同农作物之间的替代性和互补性。
    • 替代性:例如某些豆类和谷物可能在市场上具有替代关系。
    • 互补性:例如某些作物轮作可能会提升土壤肥力,使其互补性增强。
模型调整:
  • 在问题二的基础上,加入农作物的替代性和互补性约束。通过引入相关系数矩阵调整种植方案,使整体组合效益更高。
目标函数:
  • 目标依然是收益最大化,但需要在作物选择上综合考虑它们之间的替代性和互补性,从而优化整个系统的收益。
求解方法:
  • 采用多目标优化模型,在最大化收益的同时,最小化作物之间的替代冲突,增强互补性。可以使用多目标优化算法如遗传算法或基于Pareto前沿的优化方法。
创新点与改进点
  • 利用作物间的相互作用来优化种植组合,增加实际种植策略的复杂度和现实性。
  • 通过协方差矩阵的引入,使模型不仅是静态收益最大化,而是通过综合分析作物间的复杂关系,提高整体收益。

% MATLAB Code for Data Visualization

% Data for visualization (Example data from the table you provided)

crops = {'黄豆', '黑豆', '红豆', '绿豆', '爬豆'}; % 作物名称

yield_per_acre = [400, 500, 400, 350, 415]; % 亩产量/斤

cost_per_acre = [400, 400, 350, 350, 350]; % 种植成本/(元/亩)

% For simplicity, we'll average the min and max sales price for each crop

sales_price_min = [2.5, 6.5, 7.5, 6.0, 6.0]; % 销售单价下限/(元/斤)

sales_price_max = [4.0, 8.5, 9.0, 8.0, 7.5]; % 销售单价上限/(元/斤)

average_sales_price = (sales_price_min + sales_price_max) / 2; % 平均销售单价

% Bar plot for yield per acre and cost per acre

figure;

subplot(1, 2, 1);

bar(yield_per_acre);

set(gca, 'xticklabel', crops);

title('Yield per Acre for Different Crops');

ylabel('Yield (斤/亩)');

xlabel('Crops');

grid on;

% Bar plot for cost per acre

subplot(1, 2, 2);

bar(cost_per_acre);

set(gca, 'xticklabel', crops);

title('Cost per Acre for Different Crops');

ylabel('Cost (元/亩)');

xlabel('Crops');

grid on;

% Scatter plot for average sales price and yield per acre

figure;

scatter(average_sales_price, yield_per_acre, 100, 'filled');

title('Average Sales Price vs Yield per Acre');

xlabel('Average Sales Price (元/斤)');

ylabel('Yield per Acre (斤/亩)');

grid on;

text(average_sales_price, yield_per_acre, crops, 'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'right');

% 数据输入,作物名称,亩产量,种植成本和销售单价范围

crop_names = {'黄豆', '黑豆', '红豆', '绿豆', '爬豆'}; % 作物名称

yield_per_acre = [400, 500, 400, 350, 415]; % 亩产量

cost_per_acre = [400, 400, 350, 350, 350]; % 种植成本

price_range_min = [2.5, 6.5, 7.5, 6.0, 6.0]; % 销售单价(最小值)

price_range_max = [4.0, 8.5, 9.0, 8.0, 7.5]; % 销售单价(最大值)

% 绘制亩产量柱状图

figure;

bar(yield_per_acre);

set(gca, 'XTickLabel', crop_names);

xlabel('作物名称');

ylabel('亩产量(斤)');

title('不同作物的亩产量');

% 绘制种植成本柱状图

figure;

bar(cost_per_acre);

set(gca, 'XTickLabel', crop_names);

xlabel('作物名称');

ylabel('种植成本(元/亩)');

title('不同作物的种植成本');

% 绘制销售单价范围柱状图

figure;

hold on;

bar(price_range_min, 'FaceColor', [0.2, 0.6, 0.5]);

bar(price_range_max, 'FaceColor', [0.5, 0.2, 0.8]);

set(gca, 'XTickLabel', crop_names);

xlabel('作物名称');

ylabel('销售单价(元/斤)');

title('不同作物的销售单价范围');

legend({'最低单价', '最高单价'});

hold off;

相关文章:

2024年高教社杯数学建模国赛C题超详细解题思路分析

本次国赛预测题目难度,选题人数如下所示 难度评估 A:B:C 1.8:1.3:1 D:E1.5:1 选题人数 A:B:C 1:1.5:2.8 D:E0.5:1.2 C题一直以来都是竞赛难度最低、选题人数最多的一道本科生选题,近三年C题的选题人数一直都是总参赛队伍的一半左右,2023年…...

深度学习(七)-计算机视觉基础

计算机视觉 计算机视觉在广义上是和图像相关的技术总称。包括图像的采集获取,图 像的压缩编码,图像的存储和传输,图像的合成,三维图像重建,图像增强,图像修复,图像的分类和识别,目…...

机器人笛卡尔空间轨迹规划原理与MATLAB实现

机器人笛卡尔空间轨迹规划是指在给定的笛卡尔坐标系(通常是三维空间坐标系)中规划机器人的末端执行器(如抓手、焊枪等)的移动路径。这种规划方式直观且易于理解,因为它直接关联到任务空间中机器人的位置和姿态。下面将…...

数据结构:树与二叉树

1、树的基本概念 1.1树的定义 树是n个结点的有限集。 若n0,称为空树;若n>0称为非空树,非空树有且仅有一个称之为根的结点。 除根结点以外的其余结点可分成m个互不相交的有限集T1,T2,......Tm,每个有限集合本身又是一棵树,并…...

BUUCTF—[网鼎杯 2020 朱雀组]phpweb

题解 打开题目是这样子的。 啥也不管抓个包看看,从它返回的信息判断出func后面的是要调用的函数,p后面的是要执行的内容。 那我们直接执行个系统命令看看,可以看到返回了hack,估计是做了过滤。 funcsystem&pls 直接读取源码…...

什么是CDN及其如何影响SEO?

有没有想过,为什么你的网站在谷歌搜索结果的后几页徘徊,即使你已经优化了每一个网页? 有时候, 慢速的网站性能可能是罪魁祸首。 如果这个问题引起了你的共鸣,那么你可能想要探索一下内容分发网络(Content…...

python实现粒子群算

博客目录 引言 什么是粒子群算法(PSO)?粒子群算法的应用场景为什么使用粒子群算法? 粒子群算法的原理 粒子群算法的基本概念粒子位置和速度的更新规则粒子群算法的流程粒子群算法的特点与优势 粒子群算法的实现步骤 初始化粒子群…...

【Unity案例】搭建射击系统与UI

上期将基础的移动系统搭建完毕后就可以开始搭建更加复杂的系统部分了 前排提示,由于一开始仅思考如何完成操作相关功能,以至于到后面重构稍微有些困难,继续写下去恐成屎山,故在搭完射击和武器UI后不再继续泛化到敌人和敌人状态机…...

Python使用zdppy_mysql操作MySQL和MariaDB数据库快速入门教程

zdppy_mysql 使用python操作MySQL 项目开源地址:https://github.com/zhangdapeng520/zdppy_mysql 安装 pip install zdppy_mysql使用教程 连接MySQL import zdppy_mysql from config import host, username, password, database, port# 连接数据库 db zdppy_…...

union 的正确食用方法

0.前情提要 (很久)之前上编译原理时,一次实验课需要补充完善一个用 c 写的词法分析器;而这个分析器在定义语法树结点时使用了 union 存储语言中不同表达式的类型标签或值本身。因为当时刚好学完了 cpp,拿着锤子看啥都…...

汇编语言在虚拟机中输出“Hello World!”

1.软件 Nasmide64.exe(李忠老师编写) Fixvhdw64.exe(李忠老师编写) VirtualBox虚拟机(免费 开源) 2.过程 01.Fixvhdw64.exe输入以下代码: mov ax,0xb800 mov ds,ax mov byte [0x00],H mov byte [0x02],e mov byte [0x04],l mov byte [0x06],l mov byte [0x08],o mov byte…...

JVM类的加载和类的加载器

JVM类的加载和类的加载器 一.类的加载过程 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于…...

MLM:多模态大型语言模型的简介、微调方法、发展历史及其代表性模型、案例应用之详细攻略

MLM:多模态大型语言模型的简介、微调方法、发展历史及其代表性模型、案例应用之详细攻略 目录 相关文章 AI之MLM:《MM-LLMs: Recent Advances in MultiModal Large Language Models多模态大语言模型的最新进展》翻译与解读 MLM之CLIP:CLIP…...

Java健康养老智慧相伴养老护理小程序系统源码代办陪诊陪护更安心

健康养老,智慧相伴 —— 养老护理小程序,代办陪诊陪护更安心 🌈【开篇:智慧养老,新时代的温馨守护】🌈 在这个快节奏的时代,我们总希望能给予家人更多的关爱与陪伴,尤其是家中的长…...

Python | Leetcode Python题解之第390题消除游戏

题目&#xff1a; 题解&#xff1a; class Solution:def lastRemaining(self, n: int) -> int:a1 1k, cnt, step 0, n, 1while cnt > 1:if k % 2 0: # 正向a1 stepelse: # 反向if cnt % 2:a1 stepk 1cnt >> 1step << 1return a1...

Github 2024-09-01 开源项目月报 Top16

根据Github Trendings的统计,本月(2024-09-01统计)共有16个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目9TypeScript项目5Dart项目2C项目1Jupyter Notebook项目1Rust项目1开发者职业成长指南 创建周期:2670 天开发语言:TypeScript协议类…...

C++ 继承(二)

目录 1. 实现一个不能被继承的类 2. 友元与继承 3.继承与静态成员 4.多继承及其菱形继承问题 (1). 继承模型 (2). 虚继承 (2.1)虚继承解决数据冗余和二义性的原理 (3). 多继承中指针偏移问题 (4). IO库中的菱形虚拟继承 5. 继承和组合 1. 实现一个不能被继承的类 方法1…...

第 2 章:AJAX 的使用

AJAX 的使用 核心对象&#xff1a;XMLHttpRequest&#xff0c;AJAX 的所有操作都是通过该对象进行的。 1. 使用步骤 创建 XMLHttpRequest 对象 var xhr new XMLHttpRequest(); 设置请求信息 xhr.open(method, url);//可以设置请求头&#xff0c;一般不设置 xhr.setReques…...

ROS——视觉抓取

纲要 视觉抓取中的关键技术 内参标定 物体识别定位 抓取姿态分析 运动规划 外参标定 任意两个位姿之间的关系 眼在外 眼在内 手眼标定流程 robot 部分 标定效果 视觉抓取例程 grasping_demo.cpp 获取两个坐标系之间变换关系:waitForTransform 、 LookupTransform 求相…...

EPLAN2022基础教程

EPLAN2022软件介绍 EPLAN是一款专业的电气设计和绘图软件&#xff0c;它可以帮助我创建和管理电气项目&#xff0c;生成各种报表和文档&#xff0c;与其他软件和系统进行交互&#xff0c;优化工程流程和质量。与传统的CAD绘图对比&#xff0c;EPLAN更适合绘制电气原理图。 下…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...