用matlab画钥匙,Matlab在锁具装箱问题中的应用.ppt

《Matlab在锁具装箱问题中的应用.ppt》由会员分享,可在线阅读,更多相关《Matlab在锁具装箱问题中的应用.ppt(10页珍藏版)》请在人人文库网上搜索。

1、Matlab在锁具装箱问题中的应用,某厂生产一种弹子锁具,每个锁具的钥匙有5个槽,每个槽的高度从1,2,3,4,5,6 6个数(单位略)中任取一个,由于工艺及其他原因,制造锁具时对5个槽的高度有两个 限定:至少有3个不同的数;相邻两槽的高度之差不能为5。满足以上条件制造出来的所 有互不相同的锁具称为一批。 从顾客的利益出发,自然希望在每批锁具中“一把钥匙开一把锁”。但是在当前工艺条件 下,对于同一批中两个锁是否能够互开,有一下实验结果:若二者相对应的5个槽的高度 中有4个相同,另一个槽的高度差为1,则可能互开;在其他情形下,不可能互开。 原来,销售部门在一批锁具中随意地取60个装成一箱出售。团。

2、体顾客往往购买几箱到几十 箱,他们抱怨购买的锁具会出现互开的情形。现聘你为顾问,回答并解决以下问题: 每一批锁具有多少个?装多少箱? 为销售部门提出一种方案,包括如何装箱(仍是60个锁具一箱),如何给箱子以标志, 出售时如何利用这些标志,使团体顾客不再或减少抱怨。 采取你提出的方案,团体顾客的购买量不超过多少箱,就可以保证一定不会出现互开的 情形。 按照原来的装箱方,需找可能的开对总数。,一、每批锁的把数 第一问完全是一个数学问题,首先可以求出有5个槽、每个槽有6个高度的所有 可能的个数为n1=65=7776,为了满足题目中提出的至少有三个不同的高度,且相邻 高度差不应为5的要求,我们应该减去。

3、不满足要求的锁具。在具体求每批锁的个数以 及可以装多少箱时,既可以用排列组合法也可以编程用计算机求解。这里我们用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; ama。

4、x=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 numbers0.5 if neighbours4.5 s=s+1; end end end end end end end s,方法一:,方法二:,cou。

5、nt=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=0.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 end end end end end end count nbox=count/60,二、装箱方案 我们采用理论分析和计算机编程相结合的方法来解决这。

6、一问题。 (1)对锁具进行分类: 当两个锁相对应的5个槽的高度中有4个相同,另一个槽的高度差为1时,它们可以互开。我们发现了下面的规律: 在一批锁具中,设能够互开的两锁具的槽高排列分别为h1h2h3h4h5 和h1 h2 h3 h4 h5,则其各槽高度之和H=,必然具有不同的奇偶性. 证明:因为互开的两个锁具有四个槽高度相同,仅有一个槽高度差1,那么高度之和H= 和H=,和H=,必为两个相邻的自然数,而两个相邻的自然数中,必有一个为奇数,另一个为偶数. 根据以上规律,我们把锁具按钥匙槽高度之和H的奇偶分为两类,H为奇数的属于奇类(Q),H为偶数的属于偶类(P).这样,能够 互开的锁具一定分属于。

7、奇类和偶类,奇类或偶类中的锁具均不能互开。 (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=di。

8、ff(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 end end end end end end end Q P,装箱的标记: 生产锁具过程中记录每个钥匙槽的高度,从而确定H的奇偶性,将生产出来的锁具 分奇类和偶类。 将奇类和偶类分别装箱,并做“奇”和“偶”的标志。由于每箱60个,故奇类和偶类均 可装49箱。 这样,销售部门可以根据所做标记尽量只选同类的箱子售给团体顾客,就可以使 他们不再或减少抱怨。而且只要他们一次购买的箱数不超过49箱(即2940个锁具),我们 就可以保证。

9、他们的锁具一定不会有互开现象。 但按槽高之和的奇偶分类是不是最优方案,即能否找到更好的分类装箱方案,使不可 互开的锁具个数大于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); for i=1:4 if d(i)=0 s=s+1; end if abs(c(i)=5 flag=0; end end if s=2 end end end end end endend,for i=1:Q for t=1:P y=ji(i,:)-ou(t,:); if sum(y)=1|sum(y)=-1 u=0; for l=1:5 if y(l)=0 u=u+1; end end if u=4 hukaiduishu=hukaiduishu+1; end end end End hukaiduishu,* 次数:1357533 已用完,请联系开发者。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值