2021年五一杯数学建模A题(疫苗生产调度问题)详细分析

目录

一、基本介绍

1.1 题目描述

1.2 待解决问题

二、问题分析与求解

2.1 问题一分析与求解

2.2 问题二分析与求解

2.3 问题三分析与求解

 2.4 问题四分析与求解

2.5 问题五分析与求解

三、完整代码

四、总结


一、基本介绍

1.1 题目描述

新冠肺炎肆虐全球, 给世界带来了深重的灾难。各国为控制疫情纷纷研发新冠疫苗。假定疫苗 生产需要经过 CJ1 工位、 CJ2 工位、 CJ3 工位以及 CJ4 工位等 4 个工艺流程。每个工艺流程一次性 均能处理 100 剂疫苗,  100 剂疫苗装进一个加工箱一起送进工位的设备进行处理。而且, 只有按  CJ1-CJ2-CJ3-CJ4 的顺序在 4 个工位都进行了加工以后, 才算完成生产。为防止疫苗包装出现混 乱,某疫苗生产公司生产部门规定,每个工位不能同时生产不同类型的疫苗,疫苗生产不允许插队, 即进入第一个工位安排的每类疫苗的生产顺序一旦确定就要一直保持不变, 而且前一种类型的疫苗 离开某个工位后,后一种类型的疫苗才能进入这个工位。

现有 YM1-YM10  10 种不同类型的疫苗需要生产。为安全起见,每种类型每箱(内装疫苗 100 剂) 疫苗在每个工位上均进行了 50 次模拟生产。发现, 由于生产设备、疫苗纯化等多种原因, 每个工位生产不同类型的每箱疫苗所需的时间并不稳定,详细的数据见附件 1

1.2 待解决问题

(1)请对每箱疫苗在所有工位上的生产时间进行均值、方差、最值、概率分布等统计分析,  以方便疫苗生产公司管理者能够直观的掌握每个工位生产疫苗的能力水平,为疫苗生产提供参考。

(2)某国疫苗检测部门紧急需要 YM1-YM10  100 剂疫苗进行检测。为赶时间,疫苗生 产公司需要对疫苗的生产顺序进行规划, 以便能在最短时间内交付, 以每个工位生产每箱疫苗平均 时间为依据。请建立数学模型, 制定疫苗生产顺序, 初始时刻为 00:00 ,计算生产总时间,并将结 果填入表 1

(3)在实际生产中, 每个工位生产每种疫苗的所需时间具有随机性。如果要求该公司疫苗 交货总时间比问题 2 的总时间缩短 5%,请建立数学模型, 以最大的概率完成这个任务为目标, 定生产顺序, 并给出缩短的时间比例与最大概率之间的关系。

(4)现在该疫苗生产公司接收了 10 种类型疫苗不同规模的生产任务(见附件 2)。由于生  产机器需要检修和维护,每个工位每天生产的时间不能超过 16 小时。为避免疫苗错误包装,要求  每种类型疫苗的生产任务不可以拆分, 即同种类型疫苗生产全部完成之后才能生产另外类型的疫苗。 请建立数学模型,在可靠性为 90%的前提下安排生产方案, 至少多少天可以完成任务?

(5)如果该疫苗生产公司计划在 100 天内选择部分数量的疫苗进行生产,每个工位每天生 产的时间不能超过 16 小时,每种类型疫苗的生产任务可以适当拆分,即每种类型的疫苗可以只完 成一部分。 以最大销售额为目标,请建立数学模型安排生产计划。

二、问题分析与求解

2.1 问题一分析与求解

第一问是从50次时间统计出均值、方差作为正太分布的参数,最值即是公式中的x区间范围。首先对数据进行预处理,再使用MATLAB计算均值、方差、最大值、最小值、峰度和偏度等指标,并使用描述统计、推断统计等方法分析数据特征,设计制作折线图(见图 1)和概率分布直方图,为生产公司管理者提供直观的信息。

正态分布公式如下:

%部分程序如下:
for i = 1:40%提取矩阵数据YM = x(count:count+4,:);  % 求均值,并存入y第一列y(i,1) = mean(YM(:));% 求方差,并存入y第二列y(i,2) = var(YM(:));% 求最大值,并存入y第三列y(i,3) = max(YM(:));% 求最小值,并存入y第四列y(i,4) = min(YM(:));% 求偏度,并存入y第五列y(i,5) = skewness(YM(:));% 求峰度,并存入y第六列y(i,6) = kurtosis(YM(:));% 概率分布,画图subplot(4,10,i)  %将图按行列号分布histogram(YM(:)) %画直方图set(gca,'fontname','宋体','FontSize',14)title({['YM',num2str(ceil(i/4)),'-CJ',num2str(mod(i,4))]})grid oncount=count+5;
end

画出各工位的频率分布直方图,可以看出除去某些异常值之后,大致是满足正态分布的,严谨点的话可以画出YM1-YM10各工位的正态分布函数,我会把半成品代码贴在下面~,我当时觉得第一问没必要做这么多,就没弄了,整了个半成品,就注释掉了。

%MATLAB
% for i = 1:40
%     figure
% %     subplot(10,4,i)
%     hold on
%     m=[];
%     m=minzhi(i)-10:0.1:maxzhi(i)+10;
%     n=[];
%     n=exp(-((m-A(i)).^2)./(2*A(i)*A(i)))./(sqrt(2*pi)*S(i));
%     plot(m,n,'b--')
%     m=[];
%     m=minzhi(i):0.1:maxzhi(i);
%     n=[];
%     n=exp(-((m-A(i)).^2)./(2*A(i)*A(i)))./(sqrt(2*pi)*S(i));
%     plot(m,n,'r-')
%     plot([minzhi(i),minzhi(i)],[0,exp(-((minzhi(i)-A(i)).^2)./(2*A(i)*A(i)))./(sqrt(2*pi)*S(i))],'r--')
%     plot([maxzhi(i),maxzhi(i)],[0,exp(-((maxzhi(i)-A(i)).^2)./(2*A(i)*A(i)))./(sqrt(2*pi)*S(i))],'r--')
%     title({['YM',num2str(ceil(i/4)),'—CJ',num2str(mod(i,4)),'正态分布函数:']
%         ['exp(-(x-',num2str(A(i)),'^2)/(2×',num2str(A(i)),'^2))/(sqrt(2*pi)*',num2str(S(i)),')']})
% end

2.2 问题二分析与求解

每种疫苗必须按照CJ1-CJ2-CJ3-CJ4依次加工,题目没有说几条生产线,那么就默认1条,第二问YM1-YM10各100剂已知,疫苗生产也不允许插队,就是说之后的工位也是按第一个工位的加工顺序加工疫苗。那么第二问就直接通过randperm函数生成随机序列就好。加工过程主要有两种增大时间成本的情况:第一种是YM2在CJ1加工完成后YM1还在CJ2上加工,第二种是YM1在CJ2加工完成后,YM2还在CJ1上加工。

造成了等待时间和空挡时间,因此就需要找到一个最优的加工排序方法,在第二问每种疫苗在不同工位的加工时间以附件1中平均时间为依据。
遗传算法流程图如下:

  为了直观,画个甘特图模拟一下各疫苗各工位的生产情况,画的有点丑,没有知乎大神那么牛。

function x=jiaocha(x,n,a)
if nargin < 3a=0.3;%未设置交叉率则默认为0.3
end
y=x(end:-1:1);
b=randi(n); %生成随机交叉点
if rand<a   x=[x(b:end),x(1:b-1)];
end
​
function selchrom=bianyi(selchrom,n,a)
if nargin < 3a=0.7;%未设置变异率则默认为0.7
end
for i=1:length(selchrom)if rand<ab=randi(n);d=selchrom(i);c=find(selchrom==b);selchrom(i)=b;selchrom(c)=d;end
End

2.3 问题三分析与求解

利用所给的50次模拟生产数据,拟合出每种疫苗在各个工位上的正态函数曲线,将生产时间与概率联系在一起,考虑到实际生产过程中各个工位生产每剂疫苗所需时间具有随机性,引入蒙特卡洛模拟方法,结合在第二问的基础上使总时间缩短5%这一约束条件,借助MATLAB软件求解

%部分程序如下
%遗传算法
Chromosome=600;%染色体数
chrom=[];%生成初始种群
mt=50;%蒙塔卡罗模拟次数
F=[];%储存初始种群时间
TE=[]; %储存
for i=1:Chromosome%生成1 到 10 没有重复元素的整数随机排列,作为初始种群%未知数为10种疫苗的顺序chrom(i,:)=randperm(10);%由于此处代码与问题二的一部分,为了减少篇幅,将其封装为fitness函数for kk=1:mt[TE,B]=fitness(A,S,minzhi,maxzhi,chrom(i,:));F(i,kk)=TE;%最后CJ4加工结束时刻,单位分钟BB{i,kk}=B;end
end%%以当前最优序列算最大概率,蒙塔卡罗模拟100不同缩短时间对应的最大概率
Y=[];
for kk=1:1000[G,~,D1,D2]=fitness(A,S,minzhi,maxzhi,bestx);%G返回CJ4结束时间,D1返回YM1-YM10在CJ1-CJ4上的加工时间,D2为对应的概率Y=[Y;1-G/184.7786,mean(mean(D2))];
endx=-0.1:0.01:0.1;
js=[];
for i=1:length(x)-1js=[js,length(find(Y(find(Y(:,1)>=x(i)),1)<x(i+1)))];
end
js=js./sum(js);

 2.4 问题四分析与求解

该问在问题三模型的基础上增加两个约束条件:完成各种疫苗不同规模的生产任务、每个工位每天生产的时间小于等于 16 小时。此问题中唯一影响总时间的是生产时间的随机性,利用生产时间的概率密度函数,建立所给天数与完成任务可靠性的函数关系式。在可靠性为 90%的前提下安排生产方案,以一天的时间为单位离散化时间,建立差分方程模型,利用Python即可求得结果。

#部分程序
#将附件二要求生产数分成小份,以100剂为一箱
YMnum = [1000, 500, 600, 1000, 1200, 1600, 1800, 800, 600, 900]
YM_ave = YMave_list[0]
YM_std = YMstd_list[0]CJ_time = [0, 0, 0, 0]
day_count = 0
print(YM_ave)
print(YM_std )mcm = list()for k in range(10000):#共计生产10000箱疫苗T = list()T.append(np.random.normal(YMave_list[0][0], YMstd_list[0][0], 1)[0])for i in range(1, 4):T.append(np.random.normal(YMave_list[0][0], YMstd_list[0][0], 1)[0] + T[i - 1])a = Time_Sum(T, YM_ave, YM_std, 1000)for i in range(1, 10):Time_Sum(T, YMave_list[i], YMstd_list[i], YMnum[i])mcm.append(T[3] / 960)mcm.sort()

2.5 问题五分析与求解

以最大销售额为目标函数重新规划各种疫苗类型的生产量,工位生产时间和公司生产计划天数为约束条件,以各类型疫苗价格和生产数量序列和出厂价格为决策变量,建立单目标组合优化模型。利用遗传算法迭代寻优,可以对任务进行拆分,将任务拆分并编号,同时记录疫苗种类,可以通过randperm产生随机序列,程序中将算目标函数的for循环改为while循环,终止条件为>100天,目标函数改为销售额。

三、完整代码

2021年五一杯A题(疫苗生产调度问题)可运行程序.zip_生产调度问题

四、总结

数学建模的趣味就是几乎没有正确答案,解法多种多样,没有绝对的好方法,只要自己用着舒服就OK,上述是我对于这道题的一些粗浅的看法,可能有一些忽略的因素,欢迎各位巨佬指点。

在学习中成功、在学习中进步!我们一起学习不放弃~

记得三连哦~ 你们的支持是我最大的动力!!欢迎大家阅读往期文章哈~

小编联系方式如下,欢迎各位巨佬沟通交流,代码什么的加小编私聊哦~

int[] arr=new int[]{4,8,3,2,6,5,1};
int[] index= new int[]{6,4,5,0,3,0,2,6,3,1};
String QQ = "";for (int i : index){QQ +=arr[i];
}
System.out.println("小编的QQ:" + QQ);

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

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

相关文章

Spring Boot EasyPoi导出Excel下载

Java关于excel的操作 Java Excel俗称jxl&#xff0c;可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件&#xff0c;现在基本没有更新了 Apache POI是Apache基金组织Jakarta项目的子项目&#xff0c;它包括一系列的API&#xff0c;可以操作多种格式的Mic…

2021年华中杯A题(马赛克瓷砖选色问题)详细分析

目录 一、基本介绍 1.1 题目描述 1.2 待解决问题 二、问题分析与求解 2.1 问题一分析与求解 2.2 问题二分析与求解 2.3 问题三分析与求解 三、完整代码 四、总结 一、基本介绍 1.1 题目描述 马赛克瓷砖是一种尺寸较小&#xff08;常见规格为边长不超过 5cm&#xff09…

计算机无法连接无线信号,win7系统连接无线信号时提示Windows无法连接到路由器名称的四种解决方法...

现如今网络发展速度非常快&#xff0c;无线网络已经普及了&#xff0c;使用率高了遇到的问题也就多了。比如有时候笔记本win7系统连接无线信号时出现“Windows无法连接到路由器名称”(如下图所示)&#xff0c;该如何解决此问题呢&#xff1f;下面脚本之家的小编介绍几种解决方法…

数据采集与清洗基础习题(四)Pandas初体验,头歌参考答案

数据采集习题参考答案&#xff0c;会持续更新&#xff0c;点个关注防丢失。 创作不易&#xff0c;一键三连给博主一个支持呗。 为了方便查找&#xff0c;已按照头歌重新排版&#xff0c;朋友们按照头歌所属门类查找实训哦&#xff0c;该篇为Pandas。 文章目录 实训一&#…

全国计算机准考证打印2015年,甘肃2015下半年全国计算机等级考试准考证打印时间...

甘肃2015下半年全国计算机等级考试准考证打印时间一、打印准考证考生可在考前2周之内登陆全省统一报名网站自主打印准考证&#xff0c;或到考点现场领取准考证。二、考试时间下半年&#xff1a;2015年9月19日至21日&#xff0c;分批进行。考试具体时间、地点均以“准考证”为准…

TOPSIS与模糊Borda 的组合应用(以第二届大湾区杯和国赛为案例)

目录 一、TOPSIS&#xff08;优劣解距离法&#xff09;简介 二、TOPSIS&#xff08;优劣解距离法&#xff09;主要步骤 &#xff08;1&#xff09;数据进行标准化 &#xff08;2&#xff09;构建决策矩阵 &#xff08;3&#xff09;构造加权规范阵 &#xff08;4&#xf…

Spring Boot 页面国际化

internationalization详解 国际化&#xff08;internationalization&#xff09;是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言&#xff0c;国家/地区和文化相关的元素。换言之&#xff0c;应用程序的功能和代码设计考虑在不同地区运行的…

唯美计算机语言,唯美精辟的语句

1、当泪水一滴滴的掉落在我的手上&#xff0c;那时竟想为何我非你不可&#xff01;2、原来再美好的承诺&#xff0c;最终还是会被现实打败。3、明明不是陌生人&#xff0c;却装的&#xff0c;比陌生人&#xff0c;还要陌生。4、如果我是个瘦子&#xff0c;伤心时我还可以数数排…

不到30的成本,还不赶紧造起来——盘点软著申请小知识

今年上半年的时候跟着老师做项目&#xff0c;为了学习应付中期报告&#xff0c;就自己写了一个小软件&#xff0c;然后申请了一个软著&#xff0c;至于为啥要头铁的自己上呢&#xff0c;因为想要拿独立著作权&#xff0c;那当然是没有报销的啦~&#xff0c;这里有同学就要问啦&…

Linux系统安装及配置——Centos-7-X86_64-DVD-2009

目录 1.下载 VMware Workstation软件 2.下载 Centos-7-X86_64-DVD-2009.iso 3.安装并配置 3.1打开VMware Workstation&#xff0c;选择创建新的虚拟机 3.2选择自定义&#xff0c;然后下一步 3.3下一步 3.4选择稍后安装操作系统&#xff0c;然后下一步 3.5选择Linux&am…

2018年12月份计算机,CPU天梯图2018年12月最新版 十二月台式电脑CPU性能排行

Helio&#xff0c;大家好&#xff0c;11月再见12月你好&#xff01;欢迎关注IT数码通带来的最新一期桌面CPU天梯图。距离上一次天梯图更新已经过去一个月时间了&#xff0c;伴随着12月份到来&#xff0c;新的天梯图需要进行更新和完善了。接下来“IT数码通”小编为大家带来了CP…

C语言程序的错误和警告

一段C语言代码&#xff0c;在编译、链接和运行的各个阶段都可能会出现问题。编译器只能检查编译和链接阶段出现的问题&#xff0c;而可执行程序已经脱离了编译器&#xff0c;运行阶段出现问题编译器是无能为力的。 如果我们编写的代码正确&#xff0c;运行时会提示没有错误&am…

计算机的集成显卡是什么意思,IGD、PEG、PCI的含义,我的电脑是集成显卡该选哪一项...

请详细介绍IGD&#xff0c;PEG&#xff0c;PCI的含义&#xff0c;我应该为计算机的集成显卡选择其中的一种。 ...请详细说明IGD&#xff0c;PEG&#xff0c;PCI的含义&#xff0c;如果我的计算机是集成显卡&#xff0c;则应该选择IGD&#xff0c;PEG&#xff0c;PCI的含义。展开…

Spring Boot 数据国际化

internationalization详解 国际化&#xff08;internationalization&#xff09;是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言&#xff0c;国家/地区和文化相关的元素。换言之&#xff0c;应用程序的功能和代码设计考虑在不同地区运行的…

没有bug队——加贝——Python 练习实例 21,22

21.题目&#xff1a; 猴子吃桃问题&#xff1a;猴子第一天摘下若干个桃子&#xff0c;当即吃了一半&#xff0c;还不瘾&#xff0c;又多吃了一个第二天早上又将剩下的桃子吃掉一半&#xff0c;又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时&…

没有bug队——加贝——Python 练习实例 23,24

23.题目&#xff1a;打印菱形 程序分析&#xff1a;先把图形分成两部分来看待&#xff0c;前四行一个规律&#xff0c;后三行一个规律&#xff0c;利用双重for循环&#xff0c;第一层控制行&#xff0c;第二层控制列。 注&#xff1a;将这个图形看成对称的&#xff0c;前面和后…

Spring Boot 之 itext导出pdf下载

Java操作pdf框架详解 itext是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本&#xff0c;表格&#xff0c;图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。 下载效果演示 po…

从您的计算机移除此产品,解决office提示“此操作只对目前安装的产品有效”的方法...

Office软件是我们所有微软系统预装版本中都会有的一个组件&#xff0c;有的用户在购买电脑之后由于不想使用这个软件等种种原因会选择将这个软件从电脑中卸载。卸载的方法有很多&#xff0c;我们常用的方法就是使用电脑中自带的卸载软件卸载这个程序&#xff0c;还有一种就是使…

没有bug队——加贝——Python 练习实例 25,26

我非常认真的告诉大家今天这是一篇水文&#xff0c;别看了 25.题目&#xff1a; 求12!3!...20!的和。 程序分析&#xff1a;此程序只是把累加变成了累乘。 s 0 l range(1,21) def op(x):r 1for i in range(1,x 1):r * ireturn r s sum(map(op,l)) print (1! 2! 3! …

符江职高计算机教什么,高县符江职高具体地址

摘要&#xff1a;学校地址 :宜宾市高县清福镇学府路22号 公交路线 高县:进入盛兴路&#xff0c;行驶300米-左转&#xff0c;进入朔村路&#xff0c;行驶540米-左转&#xff0c;进入汉胜路&#xff0c;行驶440米-请直走&#xff0c;进入富悦路&#xff0c;行驶200米-请直走&…