热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

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

matlab在锁具装箱问题中的应用Matlab在锁具装箱问题中的应用某厂生产一种弹子锁具,每个锁具的钥匙有5个槽,每个槽的高度从{1,2&

41528d3028836879cd698677c3999917.gifmatlab在锁具装箱问题中的应用

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);



推荐阅读
  • 本文介绍了基于c语言的mcs51单片机定时器计数器的应用教程,包括定时器的设置和计数方法,以及中断函数的使用。同时介绍了定时器应用的举例,包括定时器中断函数的编写和频率值的计算方法。主函数中设置了T0模式和T1计数的初值,并开启了T0和T1的中断,最后启动了CPU中断。 ... [详细]
  • 添加环境光使正方体显示更真实
    本文介绍了如何给正方体添加环境光以使其显示更真实。通过在代码中加入环境光的计算,可以让物体的背光部分不再完全黑色,从而增加物体的真实感。代码中使用了顶点属性、光照颜色、光照方向、环境光等参数来计算物体的漫反射,并将计算结果与顶点颜色相乘得到最终的颜色。通过调整环境光的参数,可以达到不同的光照效果。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 本文讨论了如何使用GStreamer来删除H264格式视频文件中的中间部分,而不需要进行重编码。作者提出了使用gst_element_seek(...)函数来实现这个目标的思路,并提到遇到了一个解决不了的BUG。文章还列举了8个解决方案,希望能够得到更好的思路。 ... [详细]
  • Title: Extracting Title, Keywords, and Summary from Content
    Summary: This task requires extracting the title, keywords, and summary from a given content. The title should be more than 30 characters long, the keywords should be at least 10, and the summary should be between 150 and 200 words. ... [详细]
  • Introduction(简介)Forbeingapowerfulobject-orientedprogramminglanguage,Cisuseda ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • Python中程序员的面试题有哪些
    小编给大家分享一下Python中程序员的面试题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有 ... [详细]
  • pytorch Dropout过拟合的操作
    这篇文章主要介绍了pytorchDropout过拟合的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • mysql 学习笔记07日期相关函数01
    函数基本介绍:基本使用:使用日期函数插入数据:2.date函数的举例:data_add函数举例:data_s ... [详细]
  • 现在的现象是:重定向到https://open.weixin.qq.com/connect/oauth2/authorize进行授权,直接停留在这个页面上没有返回,参数反复比对过,没有问 ... [详细]
  • 【Vue基础】监听属性watch
    Vue监听属性是watch,我们可以通过watch来响应数据的变化。代码示例: ... [详细]
author-avatar
啊健oo
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有