当前位置: 首页 > 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;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux 一个简单的中断信号实现
  • 力扣100题——子串
  • 经验笔记:SSL证书
  • Stream插件相关的用法
  • 操作系统概述及特征
  • 回溯——7.子集II
  • 【蓝桥杯嵌入式(一)程序框架和调度器】
  • 《机器学习》 基于SVD的矩阵分解 推导、案例实现
  • AI基础 L1 Introduction to Artificial Intelligence
  • k8s技术架构
  • 多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测
  • 【论文阅读】语义通信安全研究综述(2024)
  • Simulink:循环计数器 Counter Free-Running
  • echarts进度
  • LabVIEW焊缝视觉识别系统
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • create-react-app项目添加less配置
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • laravel 用artisan创建自己的模板
  • nodejs:开发并发布一个nodejs包
  • Object.assign方法不能实现深复制
  • Promise初体验
  • uni-app项目数字滚动
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • XForms - 更强大的Form
  • 简单基于spring的redis配置(单机和集群模式)
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • postgresql行列转换函数
  • 阿里云ACE认证学习知识点梳理
  • 积累各种好的链接
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (1)STL算法之遍历容器
  • (C++17) optional的使用
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (排序详解之 堆排序)
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)winform之ListView
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • @javax.ws.rs Webservice注解
  • @SpringBootApplication 注解
  • @SuppressLint(NewApi)和@TargetApi()的区别