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

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;


http://www.kler.cn/a/295044.html

相关文章:

  • 在vscode中开发运行uni-app项目
  • 基于YOLO11/v10/v8/v5深度学习的煤矿传送带异物检测系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
  • Agilent安捷伦N9912A 6G手持式射频分析仪
  • CLIP论文CLIP 改进工作串讲
  • 基于 EventBridge + DashVector 打造 RAG 全链路动态语义检索能力
  • 将Notepad++添加到右键菜单【一招实现】
  • 图论篇--代码随想录算法训练营第五十天打卡| 深度优先搜索理论基础,98. 所有可达路径,广度优先搜索理论基础
  • 数字化转型专家讲师培训师唐兴通中欧国际工商学院数字化转型战略与实现路径AIGC人工智能数字化战略数字商业模式创新
  • 【数据库中级】1_DBeaver操作数据库
  • 【微信小程序】搭建项目步骤 + 引入Tdesign UI
  • Flink SQL 中常见的数据类型
  • 开源网安引领AIGC+开发安全,智能防护铸就软件安全新高度
  • 【Springboot基础知识】
  • 基于 rt-thread的I2C操作EEPROM(AT24C02)
  • 如何在mac上玩使命召唤手游?苹果电脑好玩的第一人称射击游戏推荐
  • 【linux学习指南】Linux编译器 gcc和g++使用
  • python 中使用tkinter构建一个图片的剪切器-附源码
  • 漫谈设计模式 [15]:观察者模式
  • 9. 相机控件OrbitControls
  • C++11线程池、多线程编程(附源码)
  • 信息熵|atttion矩阵的注意力熵
  • 设计并用Java实现一个简易的规则引擎
  • Python | Leetcode Python题解之第392题判断子序列
  • 【leetcode详解】爬楼梯:DP入门典例(附DP通用思路 同类进阶练习)
  • 使用Protocol Buffers传输数据
  • 在vscode中用virtual env的方法