matlab在锁具装箱问题中的应用

Matlab在锁具装箱问题中的应用某厂生产一种弹子锁具,每个锁具的钥匙有 5个槽,每个槽的高度从 {1, 2, 3, 4, 5, 6}6个数(单位略)中任取一个,由于工艺及其他原因,制造锁具时对 5个槽的高度有两个限定:至少有 3个不同的数;相邻两槽的高度之差不能为 5。满足以上条件制造出来的所有互不相同的锁具称为一批。从顾客的利益出发,自然希望在每批锁具中 “一把钥匙开一把锁 ”。但是在当前工艺条件下,对于同一批中两个锁是否能够互开,有一下实验结果:若二者相对应的 5个槽的高度中有 4个相同,另一个槽的高度差为 1,则可能互开;在其他情形下,不可能互开。 原来,销售部门在一批锁具中随意地取 60个装成一箱出售。团体顾客往往购买几箱到几十箱,他们抱怨购买的锁具会出现互开的情形。现聘你为顾问,回答并解决以下问题:① 每一批锁具有多少个?装多少箱?② 为销售部门提出一种方案,包括如何装箱(仍是 60个锁具一箱),如何给箱子以标志,出售时如何利用这些标志,使团体顾客不再或减少抱怨。③ 采取你提出的方案,团体顾客的购买量不超过多少箱,就可以保证一定不会出现互开的情形。④ 按照原来的装箱方,需找可能的开对总数。一、 每批锁的把数第一问完全是一个数学问题,首先可以求出有 5个槽、每个槽有 6个高度的所有可能的个数为 n1=65=7776,为了满足题目中提出的至少有三个不同的高度,且相邻高度差不应为 5的要求,我们应该减去不满足要求的锁具。在具体求每批锁的个数以及可以装多少箱时,既可以用排列组合法也可以编程用计算机求解。这里我们用 Matlab编程求解。我们对 5个钥匙槽的高度进行五重循环,并将判断条件设置为 5个槽的高度中至少有 3个不同的数且相邻两槽的高度之差不能为 5,进行判断。将满足判断条件的累加起来,最后输出即可得到一批锁具总数的大小。可以装的箱数用锁具总数除于 60即可得到。程序如下:s=0;n=5;for j1=1:n+1 for j2=1:n+1 for j3=1:n+1 for j4=1:n+1 for j5=1:n+1 a1=j1;a2=j2;a3=j3;a4=j4;a5=j5; amax=max([a1,a2,a3,a4,a5] ); amin=min([a1,a2,a3,a4,a5] ); numbers=(amax-a1)*(a1-amin)+(amax-a2)*(a2-amin)+(amax-a3)*(a3-amin)+(amax-a4)*(a4-amin)+(amax-a5)*(a5-amin); neighbours=max([abs(a1-a2),abs(a2-a3),abs(a3-a4),abs(a4-a5)]); if numbers>0.5 if neighbours=2 end end end end end end count nbox=count/60二、 装箱方案我们采用理论分析和计算机编程相结合的方法来解决这一问题。( 1)对锁具进行分类:当两个锁相对应的 5个槽的高度中有 4个相同 ,另一个槽的高度差为 1时 ,它们可以互开。我们发现了下面的规律:在一批锁具中 ,设能够互开的两锁具的槽高排列分别为 h1h2h3h4h5 和 h' 1 h' 2 h' 3 h' 4 h' 5,则其各槽高度之和 H=必然具有不同的奇偶性 .证明:因为互开的两个锁具有四个槽高度相同 ,仅有一个槽高度差 1,那么高度之和 H= 和 H' =和 H' =必为两个相邻的自然数 ,而两个相邻的自然数中 ,必有一个为奇数 ,另一个为偶数 .根据以上规律 ,我们把锁具按钥匙槽高度之和 H的奇偶分为两类 ,H为奇数的属于奇类( Q) ,H为偶数的属于偶类( P) .这样 ,能够互开的锁具一定分属于奇类和偶类,奇类或偶类中的锁具均不能互开。( 2)求解奇类和偶类中锁具的个数:这里用 Matlab编程求解。我们只须在求解每批锁的把数的程序的基础上稍做修改,完成对每个锁具槽高之和的统计,并确定其奇偶性,槽和为奇数的累加到 Q中,和为偶数的累加到 P中,最后将 Q和 P分别输出即可得到奇类和偶类中锁具的个数。程序如下:Q=0;P=0;for h1=1:6 a(1)= h1; for h2=1:6 a(2)= h2; for h3=1:6 a(3)= h3; for h4=1:6 a(4)= h4; for h5=1:6 a(5)= h5; s=0;flag=1; b=sort(a); c=diff(a);d=diff(b); for i=1:4 if d(i)~=0 s=s+1; end if abs(c(i))==5 flag=0; end end if s>=2 else Q=Q+1; end end end end end endendQP装箱的标记:生产锁具过程中记录每个钥匙槽的高度,从而确定 H的奇偶性 ,将生产出来的锁具分奇类和偶类。将奇类和偶类分别装箱,并做 “奇 ”和 “偶 ”的标志。由于每箱 60个,故奇类和偶类均可装 49箱。这样 ,销售部门可以根据所做标记尽量只选同类的箱子售给团体顾客,就可以使他们不再或减少抱怨。而且只要他们一次购买的箱数不超过 49箱 (即 2940个锁具 ),我们就可以保证他们的锁具一定不会有互开现象。但按槽高之和的奇偶分类是不是最优方案,即能否找到更好的分类装箱方案,使不可互开的锁具个数大于 2940。三、寻找互开对总数的程序如下:Q=0;P=0;hukaiduishu=0;for h1=1:6 a(1)= h1; for h2=1:6 a(2)= h2; for h3=1:6 a(3)= h3; for h4=1:6 a(4)= h4; for h5=1:6 a(5)= h5; s=0;flag=1; b=sort(a); c=diff(a);d=diff(b);

matlab在锁具装箱问题中的应用,matlab在锁具装箱问题中的应用相关推荐

  1. matlab中的single是什么类型_MATLAB 中cell数据类型的使用方法

    讲真,我觉得最好的说明文档是MATLAB 帮助文档.但是由于朋友们可能看英文费劲,或者更喜欢看我的用"人话"讲解MATLAB用法.下面我从一个MATLAB深度用户的角度来讲解一下M ...

  2. 如何matlab导入邻接矩阵,“excel如何做矩阵“matlab中读取excle中的邻接矩阵

    怎么在excel中使用矩阵函数 在excel中使用矩阵: 1.矩阵乘法运算择G3:H4,公式:=MMULT(A3:B4,D3:E4) 按Ctrl Shift Enter键,即输组公式. 2.阵的逆矩阵 ...

  3. MATLAB从入门到精通-如何在MATLAB中实现各种特殊上标?

    前言 MATLAB作为最强大的数学工具之一,其应用及其广泛,对初学者来说经常会遇到一些问题.最近遇到同学提出的字母上标问题,要求在字母正上方标注横线或者尖角,在数学中这是常见的标识方法,但在MATLA ...

  4. 为什么matlab生成的exe文件只能在matlab中打开,在电脑的其他地方打不开?

    为什么matlab生成的exe文件只能在matlab中打开,在电脑的其他地方打不开? 2014-11-09 20:20147****3349 | 浏览 448 次  操作系统 在同一个电脑里,在mat ...

  5. python中numpy与matlab的对应关系

    详见以下两篇博文 (1) python中numpy与matlab的对应关系​​​​​​​ (2)https://blog.csdn.net/ouening/article/details/546679 ...

  6. 数字图像处理 中值滤波 MATLAB实验

    一.原理_中值滤波 中值滤波的基本思想是将图像中每个像素的灰度值用其邻域内像素灰度的中值代替,它是一种非线性平滑滤波算法. 设加噪图像为 f(x,y) ,经中值滤波处理后的图像为g(x,y) ,则: ...

  7. 怎么把matlab中的图导出,matlab的数据能保存到excel表格-如何将matlab 中输出的图形保存到Excel中去,详细点...

    怎样将MATLAB中的数据输出到excel中 数据保存到excel文件 xlswrite(xlsfile, data, sheet, range); % sheet 和 range可以不指定 如: x ...

  8. 在matlab中xt( ),编译matlab的s函数(compiling s-functions for matlab)

    编译matlab的s函数(compiling s-functions for matlab) 我一直在尝试使用我的c ++代码在matlab中创建一个s函数块.我正在使用以下mexopts.bat文件 ...

  9. matlab在电气信息类专业中的应用,MATLAB在电气信息类专业中的应用(高等学校应用型特色规划...

    第1章 matlab语言总览 1.1 matlab简介 1.1.1 matlab概况 1.1.2 matlab基本工作界面 1.2 matlab的工作环境 1.3 matlab入门 1.4 matla ...

最新文章

  1. Hibernate一对一关联映射配置
  2. 如何从PostgreSQL json中提取数组
  3. 图解Win7下安装Oracle 12c
  4. 使用react的好处_react的优点是什么呀-问答-阿里云开发者社区-阿里云
  5. 惊呆了!竟然还有这样的操作!
  6. 如何优雅地测量一只猫的体积?
  7. c语言饿结构_C语言的四种程序结构
  8. HDU2521 反素数【因子数量+打表+水题】
  9. bsxfun 的理解
  10. python免费教程视频-微软推出 Python 免费在线教程视频
  11. 每秒上百万次的跨数据中心写操作,Uber是如何使用Cassandra处理的?
  12. paip.从HTML select 获取数据
  13. 全面接触PDF:最好用的PDF软件汇总(2010-12-07更新)
  14. GIS应用实例--模型预测、多元回归、空间自相关分析
  15. java fckeditor下载_FCKEditor的使用
  16. RocketMQ(十)RocketMQ事务消息
  17. Chrome浏览器屏蔽百度推广
  18. 微信定位和HTML5定位
  19. 新手如何学习Java以及学习java的步骤
  20. nagios 的安装

热门文章

  1. IT项目管理第八次作业
  2. 企业微信如何使用文件盘上传下载查看文件?
  3. postgral中转义特殊符号
  4. 有了金刚钻,不惧瓷器活 | 在数据文件上轻松使用 SQL
  5. “国创榴韵”鲁南书画名家交流活动在国创书画院举办
  6. python chrome headless_使用Python控制Headless Chrome
  7. linux中yum安装splunk,Splunk tips
  8. 敖然:数字化手段要与业务需求深度结合|2021全球数字价值峰会
  9. Vuex中的mutations
  10. 一、授权(公众号授权给第三方/用户授权给公众号)