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

news/2024/9/17 1:33:47/ 标签: 数学建模, 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.ppmy.cn/news/1522522.html

相关文章

ComfyUI 基础教程—— 应用 Controlnet 精准控制图像生成

一、前言 你是否有见过下面类似这样的图片: 看起来平平无奇,当你站远点看,或者把眼睛眯成一条缝了看,你会发现,这个图中藏有一些特别的元素。这就是利用了 Ai 绘画中的 ControlNet,实现对图片的相对更精…

高分辨率音频和传统音频区别

是不是很好奇高分辨率音频和传统音频区别在那里?什么场景更需要高分辨率音频?下面我们一起来理解一下。 高分辨率音频和传统音频主要区别在于其音质和数据的详细程度: 分辨率:高分辨率音频的采样率和比特深度高于传统音频。例如…

通过组合Self-XSS + CSRF得到存储型XSS

在一次漏洞赏金挖掘中,我在更改用户名的功能点出发现了一个XSS,在修改用户名的地方添加了一个简单的XSS payload并且刷新页面: 用户设置面板 XSS证明 但是问题是这个功能配置并不是公共的,造成XSS漏洞的唯一方法是告诉受害者将其…

【B题第二套完整论文已出】2024数模国赛B题第二套完整论文+可运行代码参考(无偿分享)

2024数模国赛B题完整论文 摘要: 随着电子产品制造业的快速发展,质量控制与成本优化问题成为生产过程中亟待解决的核心挑战。为应对生产环节中的质量不确定性及成本控制需求,本文结合抽样检测理论和成本效益分析,通过构建数学模型…

【最新】高效可用的Docker仓库源

1.背景 在安装k8s过程中,遇到了docker拉取镜像失败的问题,换了很多仓库源,要么是慢,要么是失效了。在不断踩坑过程中,居然发现了一个比较好用的仓库源:毫秒镜像,赶紧分享出来。如果哪天失效了&…

两种在wordpress网站首页调用woocommerce产品的方法

要在WordPress网站首页调用WooCommerce产品,您可以使用以下方法: 方法1:使用WooCommerce Shortcode WooCommerce提供了一个内置的shortcode,可以直接在WordPress页面或帖子中插入产品。要在首页显示指定数量的产品,请…

ELK笔记

要搞成这样就需要钱来买服务器 开发人员一般不会给服务器权限,不能到服务器上直接看日志,所以通过ELK看日志。不让开发登录服务器。即使你查出来是开发的问题,费时间,而且影响了业务了,就是运维的问题 开发也不能登录…

uni-app流式接受消息/文件

uni-app流式接受消息/文件 问题描述 今天利用fastgpt搭建了一个局域网进行访问Ai助理,在前端通过api接口进行请求,用于接收后端的发送的流式消息,那么前端可以进行流式的获取到这个消息,也可以进行直接进行在请求发送完成以后&a…

src/pyaudio/device_api.c:9:10: fatal error: portaudio.h: 没有那个文件或目录

(venv) shgbitaishgbitai-C9X299-PGF:~/pythonworkspace/ai-accompany$ pip install pyaudio sounddevice Collecting pyaudioDownloading PyAudio-0.2.14.tar.gz (47 kB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 47.1/47.1 kB 644.…

Linux中的Vim文本编辑器

Linux中的Vim是一个非常强大的文本编辑器,它提供了丰富的命令来支持各种文本编辑操作。以下是一个Vim常用命令的详细总结,涵盖了基本操作、编辑命令、移动光标、查找替换、保存退出等多个方面。 一、基本操作 启动Vim vim:直接启动Vim编辑器…

Rust模块std::thread

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust到底值不值得学,之一 -CSDN博客 Rust到底值不值得学,之二-CSDN博客 Rust多线程编程概述-CSDN博客 12.…

4 路由模式

路由模式 逻辑图 如果我们将生产环境的日志进行处理,而日志是分等级的,我们就按照 error waring info三个等级来讲解 一个消费者是处理【所有】(info,error,warning)的日志,用于做数据仓库&am…

简说目前市面上最流行的“AI Agentic”

背景 当吴恩达在布道完著名的Agent设计模式后 他于不久后又引领了AI界的开发们开始关注另一种高级开发模式,即"Agentic",吴恩达多次反复强调:“Agentic是比Agent更具未来”。 那么什么是Agentic呢? 什么是AI Agentic…

新换了电脑,电脑里常用的6款软件,下载回来继续用

新换了电脑,准备把之前电脑里常用的几款软件都下载回来继续用,独乐乐不如众乐乐,分享一下~ 1、Listen 1 一款开源、免费的音乐播放器,它能够整合多个主流音乐平台的资源,包括网易云音乐、QQ音乐、酷狗音乐、酷我音乐、…

[SWPUCTF 2021 新生赛]web方向(一到六题) 解题思路,实操解析,解题软件使用,解题方法教程

题目来源 NSSCTF | 在线CTF平台因为热爱,所以长远!NSSCTF平台秉承着开放、自由、共享的精神,欢迎每一个CTFer使用。https://www.nssctf.cn/problem [SWPUCTF 2021 新生赛]gift_F12 这个题目简单打开后是一个网页 我们一般按F12或者是右键查…

WorkPlus安全即时通讯:端到端加密开启信息保密新时代

在数字化时代,信息的保密性和安全性变得越发重要。企业和个人需要确保他们的敏感信息和机密通讯不会落入黑客或第三方的手中。为了满足这一需求,WorkPlus安全即时通讯平台应运而生。作为一款拥有端到端加密功能的通讯平台,WorkPlus着重于保护…

小米Vela:端侧AI推理框架

小米Vela是小米公司基于开源实时操作系统NuttX打造的物联网嵌入式软件平台。该平台旨在为各种物联网硬件提供统一的软件服务,支持丰富的组件和易用的框架,以打通碎片化的物联网应用场景。2024年8月在“开源中国开源世界”大会,小米对外公开超…

python 解析数据后保存到excel

openpyxl 特点: 支持读写Excel 2010 xlsx/xlsm/xltx/xltm文件格式。可以操作Excel的几乎所有功能,如样式、图表、图片等。适用于复杂的Excel操作,例如公式、数据验证和条件格式。社区支持较好,文档比较完善。 优点: 功…

MyBatis入门 – 动态SQL

MyBatis入门 – 动态SQL 1.动态SQL介绍 1.1 什么是动态SQL 在原先的JDBC中,开发者需要根据业务的不同要求手动拼接SQL语句,不仅增加开发的复杂度,同时也降低开发效率。而动态SQL则能够根据不同业务场景动态构建查询。动态SQL一般是根据用户…

Java网络编程入门

在现代软件开发中,网络编程是一项不可或缺的技能。Java提供了强大的网络编程支持,使得开发者能够轻松地创建网络应用程序。今天将介绍Java中的网络编程基础,重点讲解Socket和ServerSocket类的使用。 什么是Socket? Socket是网络通…