2014年国赛高教杯数学建模D题储药柜的设计解题全过程文档及程序

2014年国赛高教杯数学建模

D题 储药柜的设计

  储药柜的结构类似于书橱,通常由若干个横向隔板和竖向隔板将储药柜分割成若干个储药槽(如图1所示)。为保证药品分拣的准确率,防止发药错误,一个储药槽内只能摆放同一种药品。药品在储药槽中的排列方式如图2所示。药品从后端放入,从前端取出。一个实际储药柜中药品的摆放情况如图3所示。
  为保证药品在储药槽内顺利出入,要求药盒与两侧竖向隔板之间、与上下两层横向隔板之间应留2mm的间隙,同时还要求药盒在储药槽内推送过程中不会出现并排重叠、侧翻或水平旋转。在忽略横向和竖向隔板厚度的情况下,建立数学模型,给出下面几个问题的解决方案。
  1. 药房内的盒装药品种类繁多,药盒尺寸规格差异较大,附件1中给出了一些药盒的规格。请利用附件1的数据,给出竖向隔板间距类型最少的储药柜设计方案,包括类型的数量和每种类型所对应的药盒规格。
  2. 药盒与两侧竖向隔板之间的间隙超出2mm的部分可视为宽度冗余。增加竖向隔板的间距类型数量可以有效地减少宽度冗余,但会增加储药柜的加工成本,同时降低了储药槽的适应能力。设计时希望总宽度冗余尽可能小,同时也希望间距的类型数量尽可能少。仍利用附件1的数据,给出合理的竖向隔板间距类型的数量以及每种类型对应的药品编号。
  3. 考虑补药的便利性,储药柜的宽度不超过2.5m、高度不超过2m,传送装置占用的高度为0.5m,即储药柜的最大允许有效高度为1.5m。药盒与两层横向隔板之间的间隙超出2mm的部分可视为高度冗余,平面冗余=高度冗余×宽度冗余。在问题2计算结果的基础上,确定储药柜横向隔板间距的类型数量,使得储药柜的总平面冗余量尽可能地小,且横向隔板间距的类型数量也尽可能地少。
  4. 附件2给出了每一种药品编号对应的最大日需求量。在储药槽的长度为1.5m、每天仅集中补药一次的情况下,请计算每一种药品需要的储药槽个数。为保证药房储药满足需求,根据问题3中单个储药柜的规格,计算最少需要多少个储药柜。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

整体求解过程概述(摘要)

  本文针对自动补药药柜的设计进行研究。
  针对问题一,在只考虑储药柜竖向隔板的最小间距种类,在满足安全送药的四个条件,即侧间距2mm,无并排,无侧翻,无水平旋转下,建立单目标优化模型,并设计区间无重叠聚类算法,实现最少间距种类的求解,由程序得到最少四类列宽的分类,分别为
19mm,34mm,46mm,58mm
  针对问题二,我们将总宽度冗余,与列间距类型数量作为目标,建立双目标规划模型。基于分层求解多目标规划模型方法,我们在问题一得到的4个不同类型的基础上,首先建立冗余权重模型,首先计算出各中药盒宽度在原始4种分类基础上的加权冗余,并按照其加权冗余累积贡献率排序,根据累积贡献率,我们讨论了90%和95%下,根据列宽优化算法,计算出新的列宽分类,经过加权冗余度和列宽类数的分析,我们确定在新增3类情况下的最优解。列宽分别为19mm,22mm,34mm,37mm,46mm,47mm,58mm并且给出相应的药盒编号。
  针对问题三,我们将平面总冗余度,与行间距类型最小作为目标,在以药柜给定规格为约束条件下,建立双目标规划模型。在问题二的基础上,我们通过对分布分析法,先按照比列均衡的思想确定药柜一行放置76个药槽,在此基础上为了尽量减少平面冗余,我们按照高相近归类方法,得到药柜至少需要26行,并且计算出高大致需要以下9类。
        34mm,41mm,47mm,54mm,60mm,72mm,85mm,101mm,125mm
  针对问题四,在药槽长度1.5米的条件下,我们首先计算出每一种药盒在药槽长度方向上能的个数。因此确定同一种要需要的药槽数量。又因为每天仅集中补药一次,所以设计的储药槽个数一次性能放药盒的个数大于该需求量的最大值才能满足。

模型假设:

  1.假设每次从后端放入的药品都正立平稳放入;
  2.假设药盒水平旋转时中心点在一条直线上;
  3.假设药盒旋转角度超过90°时才为水平旋转;
  4.假设每个药槽都有药盒放入;
  5.假设一天中仅有的一次药品补给是在药店下班前或者下班后一次性补给完成;

问题重述:

  药柜的结构与书柜相似,若干个横向隔板和竖向隔板将储药柜分割成若干个储药槽,横向隔板决定所放药品的高度,竖向隔板决定所放药品的宽度,为了方便使用和保证药品分拣的准确率,防止发药错误,一个储药槽内只能摆放同一种药品,要求药盒与两侧竖向隔板之间、与上下两层横向隔板之间应留2mm的间隙,同时还要求药盒在储药槽内推送过程中不会出现并排重叠、侧翻或水平旋转。为了更好的在实际中运用,在忽略横向和竖向隔板厚度的情况下,建立数学优化模型,给出下面几个问题的解决方案。
  问题一:因为药盒尺寸规格差异较大,根据提供的数据,设计药柜的竖向隔板间距类型最小种类数的数量和每种类型所对应的药盒规格。
  问题二:宽度冗余是药盒与两侧竖向隔板之间的间隙超出2mm的部分,当适当增加竖向隔板间距类型的数量可以减少宽度冗余,但增加竖向隔板间距类型会增加储药柜的加工成本,通过对问题一中的最佳设计求解方案,设计出合理的竖向隔板间距类型数量以及每种类型对应的药盒编号,使得总宽度冗余尽可能小,同时也希望间距的类型数量尽可能少。
  问题三:为了考虑拿药的方便性和补药的便利性,储药柜的尺寸要具有合理性和可行性,规定储药柜的宽度不超过2.5m,高度不超过2m,储药柜允许的最大有效高度为1.5m。药盒与两层横向隔板之间的间隙超过2mm的部分叫做高度冗余,可以得出平面冗余=高度冗余×宽度冗余,在问题二中计算结果的基础上,确定储药柜横向隔板间距的类型数量,使得储药柜的总平面余量尽可能地小,且横向隔板间距的类型数量也尽可能地少。
  问题四:由附件2可得每一种药品编号对应的最大日需求量。已知储药槽的宽度不超过2.5m,有效高度不超过1.5m,长度为1.5m,每天补药仅一次,请计算每一种药品需要的储药槽个数。为了保证药房储药满足需求,计算稀少需要多少个储药柜。

模型的建立与求解整体论文缩略图

在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:

function [t,g]=gaodu(A) %%%按照76列一行的节点计算
H=A(:,3);
B=sort(H,'ascend');
g=B(76:76:1919)+2;for  i=1:25t(i)=sum(A(:,3)<=g(i)-2);
end
for i=2:25t(25+2-i)=t(25+2-i)-t(25+1-i);
end
function  t=gfl(C)%%%%高分类程序[m,n]=size(C);
t=0;
i=2;
while i<=99p=1;a=zeros(7,1);
while p==1|i>99a=a+C(1:7,i);bb=sum(a.*C(1:7,1));if sum(a.*C(1:7,1))<=2500i=i+1;elset=t+1;g(t)=C(8,i-1);p=0;end
end
end
function w=lv(x)
%UNTITLED7 Summary of this function goes here
%   Detailed explanation goes here
for i=1:47;w(i)=x(i,1)./sum(x(:,1))
end   end
function B = jryl( A )
%UNTITLED5 Summary of this function goes here
%   Detailed explanation goes here
[m,n]=size(A);for i=1:mif A(i,1)<=15&A(i,1)>=10B(i,2)=(19-A(i,1)-4)*A(i,3);B(i,1)=A(i,1);elseif A(i,1)<=27&A(i,1)>=16B(i,2)=(31-A(i,1)-4)*A(i,3);B(i,1)=A(i,1);elseif A(i,1)<=35&A(i,1)>=28B(i,2)=(39-A(i,1)-4)*A(i,3);B(i,1)=A(i,1);elseif A(i,1)<=45&A(i,1)>=36B(i,2)=(49-A(i,1)-4)*A(i,3);B(i,1)=A(i,1);elseif A(i,1)<=56&A(i,1)>=46B(i,2)=(60-A(i,1)-4)*A(i,3);B(i,1)=A(i,1);end
end
end
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

【机器学习】金融预测 —— 风险管理与股市预测

我的主页&#xff1a;2的n次方_ 在金融领域&#xff0c;机器学习&#xff08;ML&#xff09;已经成为了不可或缺的工具。金融预测&#xff0c;尤其是风险管理和股市预测&#xff0c;涉及海量数据和复杂模式的分析&#xff0c;而这些正是机器学习擅长处理的领域。通过分析历…

Sentinel最全笔记,详细使用步骤教程清单

一、Sentinel的基本功能 1、流量控制 流量控制在网络传输中是一个常用的概念&#xff0c;它用于调整网络包的发送数据。然而&#xff0c;从系统稳定性角度考虑&#xff0c;在处理请求的速度上&#xff0c;也有非常多的讲究。任意时间到来的请求往往是随机不可控的&#xff0c;…

[单master节点k8s部署]37.微服务(一)springCloud 微服务

微服务架构的一个重要特点是&#xff0c;它与开发中使用的具体编程语言或技术栈无关。每个微服务都可以使用最适合其功能需求的语言或技术来实现。例如&#xff0c;一个微服务可以用Java编写&#xff0c;另一个微服务可以用Python、Go、Node.js等编写。微服务架构允许这种灵活性…

数据结构-C语言顺序栈功能实现

栈 栈&#xff1a;类似于一个容器&#xff0c;如我们生活中的箱子&#xff0c;我们向箱子里放东西&#xff0c;那么最先放的东西是最后才能拿出来的 代码实现 #include <stdio.h> #include <stdlib.h>#define MAX_SIZE 100typedef struct {int* base; // 栈底指针…

通过PyTorch 手写数字识别 入门神经网络 详细讲解

通过PyTorch 手写数字识别 入门神经网络 数据集 MNIST数据集中有手写数字图片7万张&#xff0c;划分训练集6万张&#xff0c;划分测试集1万张。 每张图片都会有一张标签&#xff0c;也就是代表着图片的真实值&#xff08;真实含义&#xff09;。 概念 计算机是如何读取图片的…

多态常见面试问题

1、什么是多态&#xff1f; 多态&#xff08;Polymorphism&#xff09;是面向对象编程中的一个重要概念&#xff0c;它允许同一个接口表现出不同的行为。在C中&#xff0c;多态性主要通过虚函数来实现&#xff0c;分为编译时多态&#xff08;静态多态&#xff09;和运行时多态…

【Spring AI】Java实现类似langchain的第三方函数调用_原理与详细示例

Spring AI 介绍 &#xff1a;简化Java AI开发的统一接口解决方案 在过去&#xff0c;使用Java开发AI应用时面临的主要困境是没有统一且标准的封装库&#xff0c;导致开发者需要针对不同的AI服务提供商分别学习和对接各自的API&#xff0c;这增加了开发难度与迁移成本。而Sprin…

【数据结构】邻接表

一、概念 邻接表是一个顺序存储与链式存储相结合的数据结构&#xff0c;用于描述一个图中所有节点之间的关系。 若是一个稠密图&#xff0c;我们可以选择使用邻接矩阵&#xff1b;但当图较稀疏时&#xff0c;邻接矩阵就显得比较浪费空间了&#xff0c;此时我们就可以换成邻接…

机器人的应用 基于5G的变电站智慧管控系统

背景概述 一、电力行业面临的挑战与变革 随着全球工业化和信息化的快速发展&#xff0c;电力行业作为国民经济的基础性行业&#xff0c;其重要性日益凸显。然而&#xff0c;随着电力网络的不断扩展和复杂化&#xff0c;变电站和开关站作为电力传输与分配的关键节点&#xff0…

Excel中Ctrl+e的用法

重点&#xff1a;想要使用ctrle&#xff0c;前提是整合或拆分后的结果放置的单元格必须和被提取信息的单元格相邻&#xff0c;且被提取信息的单元格也必须相连。 下图为错误示例 这样则可以使用ctrle 1、信息整合 2、提取信息 3、添加符号 4、信息顺序调换 5、数字提取 crtle还…

HarmonyOS NEXT 应用开发实战(三、ArkUI页面底部导航TabBar的实现)

在开发HarmonyOS NEXT应用时&#xff0c;TabBar是用户界面设计中不可或缺的一部分。本文将通过代码示例&#xff0c;带领大家一同实现一个常用的TabBar&#xff0c;涵盖三个主要的内容页&#xff1a;首页、知乎日报和我的页面。以模仿知乎日报的项目为背景驱动&#xff0c;设定…

解决ubuntu 下 VS code 无法打开点击没反应问题

从Ubuntu 22.04 升级到ubuntu 24.04 后&#xff0c;发现Vsode无法打开&#xff0c;不论是点击图标&#xff0c;还是terminator里面运行code 可执行程序&#xff0c;均没有反应。debug如下: 提示权限不够。 解决方案&#xff1a; sudo sysctl -w kernel.apparmor_restrict_unp…

C语言题目练习2

前面我们知道了单链表的结构及其一些数据操作&#xff0c;今天我们来看看有关于单链表的题目~ 移除链表元素 移除链表元素&#xff1a; https://leetcode.cn/problems/remove-linked-list-elements/description/ 这个题目要求我们删除链表中是指定数据的结点&#xff0c;最终返…

C语言 | Leetcode C语言题解之第460题LFU缓存

题目&#xff1a; 题解&#xff1a; /* 数值链表的节点定义。 */ typedef struct ValueListNode_s {int key;int value;int counter;struct ValueListNode_s *prev;struct ValueListNode_s *next; } ValueListNode;/* 计数链表的节点定义。 其中&#xff0c;head是数值链表的头…

腾讯云Android 与 iOS 相关

移动端&#xff08;Android/iOS&#xff09;支持哪几种系统音量模式&#xff1f; 支持2种系统音量类型&#xff0c;即通话音量类型和媒体音量类型&#xff1a; 通话音量&#xff1a;手机专门为通话场景设计的音量类型&#xff0c;使用手机自带的回声抵消功能&#xff0c;音质…

谷歌浏览器 文件下载提示网络错误

情况描述&#xff1a; 谷歌版本&#xff1a;129.0.6668.90 (正式版本) &#xff08;64 位&#xff09; (cohort: Control)其他浏览器&#xff0c;比如火狐没有问题&#xff0c;但是谷歌会下载失败&#xff0c;故推断为谷歌浏览器导致的问题小文件比如1、2M会成功&#xff0c;大…

【LeetCode】动态规划—95. 不同的二叉搜索树 II(附完整Python/C++代码)

动态规划—95. 不同的二叉搜索树 II 题目描述前言基本思路1. 问题定义二叉搜索树的性质&#xff1a; 2. 理解问题和递推关系递归构造思想&#xff1a;状态定义&#xff1a;递推公式&#xff1a;终止条件&#xff1a; 3. 解决方法递归 动态规划方法&#xff1a;伪代码&#xff…

如何使用vscode的launch.json来debug调试

1、创建一个launch.json文件 选择Python Debugger&#xff0c;再选择Python文件&#xff0c;创建处理如下 默认有下面五个参数 "name": "Python Debugger: Current File","type": "debugpy","request": "launch"…

金九银十软件测试面试题(800道)

今年你的目标是拿下大厂offer&#xff1f;还是多少万年薪&#xff1f;其实这些都离不开日积月累的过程。 为此我特意整理出一份&#xff08;超详细笔记/面试题&#xff09;它几乎涵盖了所有的测试开发技术栈&#xff0c;非常珍贵&#xff0c;人手一份 肝完进大厂 妥妥的&#…

【LeetCode】动态规划—123. 买卖股票的最佳时机 III(附完整Python/C++代码)

动态规划—123. 买卖股票的最佳时机 III 题目描述前言基本思路1. 问题定义2. 理解问题和递推关系状态定义&#xff1a;状态转移公式&#xff1a;初始条件&#xff1a; 3. 解决方法动态规划方法伪代码&#xff1a; 4. 进一步优化5. 小总结 Python代码Python代码解释 C代码C代码解…