【2023年数学建模国赛】C题代码与技术文档分享

news2024/11/25 10:44:29

2023年数学建模国赛C题

  • 第一问代码
    • code1_Q1_1.m
    • Code1_Q1_2.m
    • Code1_Q1_3.m
    • 实验结果
  • 技术文档
    • 问题分析
    • 假设
    • 符号说明
    • 1 第一问
      • 1.1分布检验模型的建立
      • 1.2 相关性模型的建立
      • 1.3各种类蔬菜的销量分布及相关关系
  • 写在最后

第一问代码

code1_Q1_1.m

clc
clear
D=xlsread('合成表1','合成表1、2');
kind_u=unique(D(:,6));
kind_num=size(kind_u,1);%记录蔬菜的种类数
table=zeros(365*4,6);
for k=1:size(kind_u,1) %遍历每一种菜
    temp_day=D(1,3);
    temp=1;
    for i=1:size(D,1) %遍历每一行
        if D(i,6)==kind_u(k,1) %如果是要找的那种菜
            if D(i,3)~=temp_day %如果到第二天了
                temp=temp+1;
                temp_day=D(i,3);
            end
            table(temp,k)=table(temp,k)+D(i,7);
        end
    end
end


%% 箱线图
d1=table(table(:,1)~=0,1);
d2=table(table(:,2)~=0,2);
d3=table(table(:,3)~=0,3);
d4=table(table(:,4)~=0,4);
d5=table(table(:,5)~=0,5);
d6=table(table(:,6)~=0,6);
data=[d1;d2;d3;d4;d5;d6];
g1 = repmat({'花叶类'},size(d1,1),1);
g2 = repmat({'花菜类'},size(d2,1),1);
g3 = repmat({'水生根茎类'},size(d3,1),1);
g4 = repmat({'茄类'},size(d4,1),1);
g5 = repmat({'辣椒类'},size(d5,1),1);
g6 = repmat({'食用菌'},size(d6,1),1);
g = [g1; g2; g3; g4; g5; g6];
h=boxplot(data,g,'Colors','k','Symbol','o');
% hTitle = title('Miles per Gallon by Vehicle Origin');
hXLabel = xlabel('蔬菜分类');
hYLabel = ylabel('单日销量');
% 线宽
set(h,'LineWidth',1.5)
% 坐标轴美化
set(gca, 'Box', 'on', ...                                % 边框
'LineWidth', 1,...                                       % 线宽
'XGrid', 'off', 'YGrid', 'off', ...                      % 网格
'TickDir', 'in', 'TickLength', [.015 .015], ...          % 刻度
'XMinorTick', 'off', 'YMinorTick', 'off', ...            % 小刻度
'XColor', [.1 .1 .1],  'YColor', [.1 .1 .1])             % 坐标轴颜色
% 字体和字号
set(gca, 'FontName', '宋体')
% set([hXLabel, hYLabel], 'FontName', 'Times New Roman')
set(gca, 'FontSize', 12)
set([hXLabel, hYLabel], 'FontSize', 15)
% set(hTitle, 'FontSize', 11, 'FontWeight' , 'bold')
% 背景颜色
set(gcf,'Color',[1 1 1])

%箱子颜色
color=[0/255,96/255,115/255;
    9/255,147/255,150/255;
    145/255,211/255,192/255;
    235/255,215/255,165/255;
    238/255,155/255,0/255;
    204/255,102/255,2/255;
    188/255,62/255,3/255;
    174/255,32/255,18/255;
    155/255,34/255,39/255];
h = findobj(gca,'Tag','Box');
for j=1:length(h)
   patch(get(h(j),'XData'),get(h(j),'YData'),color(j,:),'FaceAlpha',.5);
end
% c = get(gca, 'Children'); %获取子对象(6个色块和点)
% %图注
% % hleg1 = legend(c(1:2:5,:), 'MSE','MAE','MAPE');
% % 绘制参照线
% Y=h(1,1).YData;
% X=h(1,1).XData;
% Y=unique(Y);
% X=unique(X);
% for i=1:size(Y,2)
%     line([0,X(1)],[Y(i),Y(i)],'Color','red','LineStyle','--','LineWidth',0.8);
%     hold on
% end
% c = get(gca, 'Children'); %获取子对象(6个色块和点)
% Ymax=unique(c(11,1).Children(33,1).YData);
% Xmax=min(c(11,1).Children(33,1).XData);
% Ymean=unique(c(11,1).Children(9,1).YData);
% Ymin=unique(c(11,1).Children(25,1).YData);
% line([0,X(1)],[Ymean,Ymean],'Color','red','LineStyle','--','LineWidth',0.8)
% hold on
% line([0,Xmax],[Ymax,Ymax],'Color','red','LineStyle','--','LineWidth',0.8)
% hold on
% line([0,Xmax],[Ymin,Ymin],'Color','red','LineStyle','--','LineWidth',0.8)
% hold on

Code1_Q1_2.m

clc
clear
D=xlsread('合成表1','合成表1、2');
kind_u=unique(D(:,6));
kind_num=size(kind_u,1);%记录蔬菜的种类数
table=zeros(12,6);
for k=1:size(kind_u,1) %遍历每一种菜
    for m=1:12 %遍历每一个月
        for i=1:size(D,1) %遍历每一行
            if D(i,6)==kind_u(k,1) %如果是要找的那种菜
                if D(i,2)==m
                    table(m,k)=table(m,k)+D(i,3);
                end
            end
        end
    end
end

d1=table(table(:,1)~=0,1);
d2=table(table(:,2)~=0,2);
d3=table(table(:,3)~=0,3);
d4=table(table(:,4)~=0,4);
d5=table(table(:,5)~=0,5);
d6=table(table(:,6)~=0,6);
data=[d1;d2;d3;d4;d5;d6];
g1 = repmat({'花叶类'},size(d1,1),1);
g2 = repmat({'花菜类'},size(d2,1),1);
g3 = repmat({'水生根茎类'},size(d3,1),1);
g4 = repmat({'茄类'},size(d4,1),1);
g5 = repmat({'辣椒类'},size(d5,1),1);
g6 = repmat({'食用菌'},size(d6,1),1);
g = [g1; g2; g3; g4; g5; g6];
plot()
% hTitle = title('Miles per Gallon by Vehicle Origin');
hXLabel = xlabel('月份');
hYLabel = ylabel('月销量');

set(gca, 'FontName', '宋体')
% set([hXLabel, hYLabel], 'FontName', 'Times New Roman')
set(gca, 'FontSize', 12)
set([hXLabel, hYLabel], 'FontSize', 15)
% set(hTitle, 'FontSize', 11, 'FontWeight' , 'bold')
% 背景颜色
set(gcf,'Color',[1 1 1])
%箱子颜色
color=[0/255,96/255,115/255;
    9/255,147/255,150/255;
    145/255,211/255,192/255;
    235/255,215/255,165/255;
    238/255,155/255,0/255;
    204/255,102/255,2/255;
    188/255,62/255,3/255;
    174/255,32/255,18/255;
    155/255,34/255,39/255];

Code1_Q1_3.m

clc
clear
D=xlsread('合成表1','合成表1、2');
kind_u=unique(D(:,6));
kind_num=size(kind_u,1);%记录蔬菜的种类数
table=zeros(12,6);
for k=1:size(kind_u,1) %遍历每一种菜
    for m=1:12 %遍历每一个月
        for i=1:size(D,1) %遍历每一行
            if D(i,6)==kind_u(k,1) %如果是要找的那种菜
                if D(i,2)==m %如果是要找的那个月
                    if D(i,9)==2
                        table(m,k)=table(m,k)+1;
                    end
                end
            end
        end
    end
end

d1=table(table(:,1)~=0,1);
d2=table(table(:,2)~=0,2);
d3=table(table(:,3)~=0,3);
d4=table(table(:,4)~=0,4);
d5=table(table(:,5)~=0,5);
d6=table(table(:,6)~=0,6);
data=[d1;d2;d3;d4;d5;d6];
g1 = repmat({'花叶类'},size(d1,1),1);
g2 = repmat({'花菜类'},size(d2,1),1);
g3 = repmat({'水生根茎类'},size(d3,1),1);
g4 = repmat({'茄类'},size(d4,1),1);
g5 = repmat({'辣椒类'},size(d5,1),1);
g6 = repmat({'食用菌'},size(d6,1),1);
g = [g1; g2; g3; g4; g5; g6];
plot()
% hTitle = title('Miles per Gallon by Vehicle Origin');
hXLabel = xlabel('月份');
hYLabel = ylabel('月销量');

set(gca, 'FontName', '宋体')
% set([hXLabel, hYLabel], 'FontName', 'Times New Roman')
set(gca, 'FontSize', 12)
set([hXLabel, hYLabel], 'FontSize', 15)
% set(hTitle, 'FontSize', 11, 'FontWeight' , 'bold')
% 背景颜色
set(gcf,'Color',[1 1 1])
%箱子颜色
color=[0/255,96/255,115/255;
    9/255,147/255,150/255;
    145/255,211/255,192/255;
    235/255,215/255,165/255;
    238/255,155/255,0/255;
    204/255,102/255,2/255;
    188/255,62/255,3/255;
    174/255,32/255,18/255;
    155/255,34/255,39/255];

实验结果

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

技术文档

问题分析

对于问题一,要求分析分析蔬菜各品类及单品销售量的分布规律及相互关系。该问题可以拆分成三个角度进行剖析。1)各种类蔬菜的销售量分布、蔬菜种类与销售量之间的关系;2)各种类蔬菜的销售量的月份分布、各种类蔬菜销售量与月份之间的相关关系;3)各种类蔬菜的销售时间分布、销售时间与退货量之间的相关关系。对于每一角度,先利用箱线图及折线图表述分布特诊,再进行分布检验,最后选取相应的相关性分析方法进行计算。

对于问题二,首先要分析各种类蔬菜的销售总量与成本加成定价之间的关系,实质上就是求销售总量与成本利润率之间的关系。对于该问题,建立集成拟合模型对每一蔬菜单品拟合多项式函数,以表征销量与成本利润率之间的关系。其次,需要给出各蔬菜品类未来一周的日补货总量和定价策略,在获取销量与成本利润率之间的关系模型后,通过成本利润率即可求出销量。因此,构建以最大化商超收益为目标,以各蔬菜单品的成本利润率为决策变量的线性规划模型(LP)。对于约束条件中的最大销量约束,基于ARIMA算法对蔬菜需求量进行预测,并取预测值作为最大销量约束。并基于遗传算法(GA)对LP模型进行求解。

对于问题三,实质上为在问题二的基础上增加对于销售空间及最小陈列量的限制。为此,在问题二的LP的基础上调整相应限制条件,限制销售空间及最小陈列量。在求解阶段设计0编码机制以适应销售空间限制,并设计不可行解的修复机制保持染色体的合法性。

对于问题四,需要对相关数据的采集进行设计。该问可以从“是否存在会员折扣”“各商品最佳保存时长”“退货原因”等角度入手进行分析。

假设

1、假设市场价格完全有供需关系决定,不受政策管控影响,物价的上限及下限不受限制。
2、假设不出现突发不可抗灾害导致的囤粮等情况的发生。
3、同种菜品的供货质量稳定不变。
4、近期损耗率不发生大幅波动。
5、菜品批发价格不发生大幅波动。

符号说明

在这里插入图片描述

1 第一问

1.1分布检验模型的建立

在进行相关性检验之前,需要先对数据的分布进行检验。Kolmogorov-Smirnov分布检验常被用于大规模样本的检测,而Shapiro–Wilk分布检验常被用于小规模样本的检测。
Kolmogorov-Smirnov分布检验模型可被描述如下:
原假设():数据服从正态分布;
备择假设():数据不服从正态分布。
在这里插入图片描述
在这里插入图片描述

1.2 相关性模型的建立

在这里插入图片描述
在这里插入图片描述

1.3各种类蔬菜的销量分布及相关关系

在这里插入图片描述

写在最后

下面是学姐自己整理的完整代码与运行结果,需要的同学欢迎咨询~

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

通过实例学习:使用Spring Cache实现实际场景的缓存策略

文章目录 前言一、Spring Cache 常用注解1.Cacheable:2.CachePut:3.CacheEvict:4.CacheConfig:5.EnableCathing: 二、使用步骤1.引入依赖2.配置3.EnableCaching的使用:4.Cacheable的使用:5.CachePut的使用&…

c语言练习46:模拟实现strncpy

模拟实现strncpy 模拟实现&#xff1a; #include<stdio.h> char* my_strncpy(char*dest,char*src,size_t num) {char* ret dest;size_t i 0;for (i 0; i < num; i) {*dest *src;dest;src;}*dest \0;return ret; } int main() {char aim[50] { 0 };char src[] …

03_kafka-eagle 监控

文章目录 安装修改 kafka-server-start.sh修改 kafka-run-class.sh问题eagle 日志报错mysql 报错 时区问题 kafka-eagle 监控 安装 download.kafka-eagle.org &#xff1a; https://github.com/smartloli/kafka-eagle-bin/archive/v3.0.1.tar.gzhttps://docs.kafka-eagle.org/…

C语言“牵手”lazada商品详情数据方法,lazada商品详情API接口,lazadaAPI申请指南

lazada是东南亚最大的自营式电商企业&#xff0c;在线销售计算机、手机及其它数码产品、家电、汽车配件、服装与鞋类、奢侈品、家居与家庭用品、化妆品与其它个人护理用品、食品与营养品、书籍与其它媒体产品、母婴用品与玩具、体育与健身器材以及虚拟商品等。 lazada平台的商…

C基础-数组

1.一维数组的创建和初始化 int main() {// int arr1[10];int n 0;scanf("%d",&n);//int count 10;int arr2[n]; //局部的变量&#xff0c;这些局部的变量或者数组是存放在栈区的&#xff0c;存放在栈区上的数组&#xff0c;如果不初始化的话&#xff0c;默认…

heap堆结构以及堆排序

堆的定义 堆&#xff08;heap&#xff09;是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质&#xff1a; 堆中某个结点的值总是不大于或不小于其父结点的值&#xff1b; 堆总是一棵完全二叉树。 将根结点最大的堆叫做…

YOLO目标检测——复杂场景人员行人数据集+已标注voc格式标签下载分享

实际项目应用&#xff1a;安防监控、人群管理、自动驾驶、城市规划、人机交互等等数据集说明&#xff1a;YOLO目标检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;图片格式为jpg&#xff0c;分为训练集和验证集。标注说明&#xff1a;使用…

kubernetes(K8S)笔记

文章目录 大佬博客简介K8SDocker VS DockerDockerK8S简介K8S配合docker相比较单纯使用docker 大佬博客 Kubernetes&#xff08;通常缩写为K8s&#xff09;是一个用于自动化容器化应用程序部署、管理和扩展的开源容器编排平台。它的构造非常复杂&#xff0c;由多个核心组件和附加…

【Java基础篇 | 类和对象】--- 聊聊什么是内部类

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 本专栏旨在分享学习Java的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 前言 当一个事物的内部&…

分享日常电脑遇到msvcr110.dll丢失的解决方法

最近&#xff0c;我在尝试运行一款新的软件时&#xff0c;突然遇到了一个错误提示&#xff0c;提示说缺少msvcr110.dll文件&#xff0c;导致软件无法启动。在使用电脑过程中&#xff0c;我们常常会遇到一些系统文件丢失的问题。其中&#xff0c;msvcr110.dll是Windows操作系统中…

10分钟从实现和使用场景聊聊并发包下的阻塞队列

上篇文章12分钟从Executor自顶向下彻底搞懂线程池中我们聊到线程池&#xff0c;而线程池中包含阻塞队列 这篇文章我们主要聊聊并发包下的阻塞队列 阻塞队列 什么是队列&#xff1f; 队列的实现可以是数组、也可以是链表&#xff0c;可以实现先进先出的顺序队列&#xff0c;…

【矩阵分解】PCA - 主成分分析中的数学原理

前言 本文主要对PCA主成分分析中的数学原理进行介绍&#xff0c;将不涉及或很少涉及代码实现或应用&#xff0c;阅读前请确保已了解基本的机器学习相关知识。 文章概述 PCA主成分分析属于矩阵分解算法中的入门算法&#xff0c;通过分解特征矩阵来实现降维。 本文主要内容&a…

【PowerQuery】Excel 一分钟以内刷新PowerQuery数据

当需要进行刷新的周期如果小于一分钟,采用数据自动刷新就无法实现自动刷新的目标。那就没有办法了吗?当然不是,这里就是使用VBA来实现自动刷新。这里实现VBA刷新的第一步就是将当前的Excel 保存为带有宏的Excel 文件,如果不带宏则无法运行带有宏代码的Excel文件,保存过程如…

JAVA中的String类中的一些常用方法

目录 字符串比较方法&#xff1a; boolean equals(Object anObject)&#xff1a; int compareTo(String s)&#xff1a; int compareToIgnoreCase(String str) 字符串查找方法&#xff1a; char charAt(int index)&#xff1a; int indexOf(int ch)&#xff1a; int inde…

sqlserver2012性能优化配置:设置性能相关的服务器参数

前言 sqlserver2012 长时间运行的话会将服务器的内存占满 解决办法 通过界面设置 下图中设置最大服务器内存 通过执行脚本设置 需要先开发开启高级选项配置才能设置成功 设置完成之后将高级选择配置关闭&#xff0c;还原成跟之前一样 --可以配置高级选项 EXEC sp_conf…

MySQL--数据库基础

数据库分类 数据库大体可以分为 关系型数据库 和 非关系型数据库 常用数据类型 数值类型&#xff1a; 分为整型和浮点型&#xff1a; 字符串类型 日期类型

【SpringMVC】一行代码完成文件上传JRebel的使用

目录 引言 一、JRebel的使用 1.1.安装JReble 1.2.反向代理工具 1.3.离线使用 二、文件上传 2.1.公共文件跳转 2.2.添加依赖 2.3.配置文件上传解析器 2.4.图片路径配置Tomcat 2.5.前端代码 2.6.文件上传实现 三、文件下载 3.1.Controller层 3.2.前端代码 四、多文…

Jetsonnano B01 笔记4:UART 通信配置及编程

今日继续我的Jetsonnano学习之路&#xff0c;今日学习使用Jetson硬件驱动之UART串口通信&#xff1a; 目录 简议串口通信&#xff1a; 硬件连接&#xff1a; 串口配置&#xff1a; 安装串口函数库&#xff1a; 设置权限&#xff1a; Python代码配置&#xff1a; 下载测试…

机器学习实战-系列教程5:手撕线性回归4之非线性回归(项目实战、原理解读、源码解读)

11、非线性模型 当得到一个回归方程会&#xff0c;得到一条直线来拟合这个数据的统计规律&#xff0c;但是实际中用这样的简单直线很显然并不能拟合出统计规律&#xff0c;所谓线性回归比如两个变量之间关系就直接用一条直线来拟合&#xff0c;2个变量和一个1个变量的关系就用…

PDF 工具箱

PDF 工具箱 V9.0.0.1 程序&#xff1a;VB.net 运行库&#xff1a;NET Framework 4.5 功能简介&#xff1a; 1、PDF文件多文件合并&#xff0c;可调整顺序。 2、PDF文件拆分&#xff0c;将每页拆分成独立的PDF文件。 3、PDF文件添加水印&#xff0c;文字或图片水印&…