Python數(shù)據(jù)分析之鎖具裝箱問題

問題重述

某廠生產(chǎn)一種彈子鎖二鳄,其槽數(shù)高度可以用1到6中取5個來表示蛇摸。其限制條件是:至少在5個中有3個不同的數(shù);相鄰槽的高度相差不能為5垄琐。在實際試驗中,發(fā)現(xiàn)若二鎖對應5個槽的高度中有4個相同经柴,另一個差1則可能互開此虑,否則,不可能互開口锭。如果60個鎖具裝一箱朦前,求一批鎖的多少及裝箱數(shù),并要求提出一種方案鹃操,使團體顧客減少或不再抱怨韭寸,并對于所提出的方案,求出其最大無互開的箱數(shù)荆隘,并衡量原來隨機裝箱時恩伺,顧客抱怨互開的程度。

問題分析

  1. 鎖具個數(shù)
    首先把鎖具及裝箱問題抽象成數(shù)學概念椰拒,以5個數(shù)字的一個符合條件的組合或組成一個列表數(shù)據(jù)結構來代表一個相應的鎖具晶渠,例如[1,2,3,4,5]代表一個鎖具。利用排除法的思想燃观,通過Python語言褒脯,把問題分為所有可能的組合A6^5,存儲到列表結構中缆毁;再通過集合的概念番川,剔除列表中相同槽高,只保留一個脊框,如果個數(shù)小于3颁督,則不符合要求,進行剔除浇雹;最后沉御,剔除減去相鄰差為5的列表。
  2. 裝箱方案設計
    歸類法:把一批鎖具分成兩類或按其指數(shù)之和分為8~27共20類昭灵,其中組合,[1,1,1,2,3]為最小吠裆,其數(shù)字和為8聂儒;[6,6,6,5,4]為最大,其數(shù)字和為27硫痰;所以共有(27-8+1)=20個數(shù)組來表示,在裝箱時可依:
    d9→d11→…→d27→d 8→d10→d12→… →d27

    d8→d10→…→d26→d9→ …→d26
    二者類似,其中di表示5槽數(shù)字和為i的所有組合窜护。
    事實上效斑,對于一數(shù)組來說,其各位數(shù)之和相同柱徙,所以其本身顯然不可能有互開現(xiàn)象缓屠。對于其它情況可用下法來鑒別:利用Python中的Numpy第三方庫進行列表向量化運算,兩個列表相減护侮,再進行求和敌完,絕對值為1則二者可能互開;否則不可能互開羊初,記數(shù)字和為i的數(shù)組di滨溉,另一組數(shù)據(jù)為d_i^',則有以下結論:
    d_i^'∩d_((i+1))≠?
    d_i^'∩d_((i))=?
    d_i^'∩d_((i+j))=?
    可知:
    d_26^'∩d_27≠?
    d_8^'∩d_27≠?
    而對數(shù)字和全為偶或全為奇的數(shù)組間一定不互開长赞,所以以上設計符合要求晦攒。
  3. 顧客抱怨定量度量
    對于原來隨機裝箱時,求其顧客的不滿意程度得哆。定量表示時脯颜,我們認為可用下列量來表示:
    A:一定量中出現(xiàn)的互開鎖具數(shù);
    B:一定量中可能互開的概率贩据;
    C:用計算機模擬仿真隨機裝箱過程栋操,隨機抽點進行計算。

建模與求解

1.鎖具個數(shù)
利用排除法的思想饱亮,通過Python語言矾芙,逐步剔除不符合要求的鎖具,可得有5880個鎖具近上,每60個一箱蠕啄,可裝98箱,代碼如下:

lists = [1,2,3,4,5,6]
list_alls = []
for list_1 in lists:
    for list_2 in lists:
        for list_3 in lists:
            for list_4 in lists:
                for list_5 in lists:
                    list_alls.append([list_1,list_2,list_3,list_4,list_5])
print(len(list_alls))
list_deletes_1 = []
for list_all in list_alls:
    counts = list(set(list_all))
    if len(counts) <= 2:
        pass
    else:
        list_deletes_1.append(list_all)
print(len(list_deletes_1))
list_deletes_2 = []
for list_all_1 in list_deletes_1:
    if abs(list_all_1[0] - list_all_1[1]) == 5:
        pass
    elif abs(list_all_1[1] - list_all_1[2]) == 5:
        pass
    elif abs(list_all_1[2] - list_all_1[3]) == 5:
        pass
    elif abs(list_all_1[3] - list_all_1[4]) == 5:
        pass
    else:
        list_deletes_2.append(list_all_1)
print(len(list_deletes_2))

2.裝箱方案設計
首先證明d9→d11→…→d27→d 8→d10→d12→… →d27無互開現(xiàn)象戈锻。設其中某列表為[a,b,c,d,e](a+b+c+d+e=i為奇數(shù))歼跟,則(a±1)bcde,a(b±1)cde格遭,ab(c±1)de哈街,abc(d±1)e,abcd(e±1)拒迅,當篩選其含相鄰差為5或有位為0的不合條件項外骚秦,則可知
a+b+c+d+e±1=i(±1)
則其為偶數(shù)她倘,與d9→d27中任一元素(組合)都不可能相同,對于d8→d10→…→d26類似作箍。
由此可證明49箱為最大無互開箱數(shù)硬梁,也就是奇偶分箱方案。
3.顧客抱怨定量度量
利用Python計算所有可能互開對為22778胞得,平均互開系數(shù)α=0.001317,對于一箱互開個數(shù)約2.33荧止,二箱互開個數(shù)約9.42,代碼如下:

import random
i = 0
xiangjian_list = []
hukai_counts = []
list_randoms = random.sample(list_deletes_2,60)
for list_randoms_1 in list_randoms:
    i = i+1
    for list_randoms_2 in list_randoms[i:]:
        list_1 = [list_randoms_1[0] - list_randoms_2[0],list_randoms_1[1] - list_randoms_2[1],list_randoms_1[2] - list_randoms_2[2],list_randoms_1[3] - list_randoms_2[3],list_randoms_1[4] - list_randoms_2[4]]
        xiangjian_list.append(list_1)
for list_2 in xiangjian_list:
    if (list_2.count(0) == 4):
        if (list_2.count(1) == 1 | list_2.count(1) == 1):
            hukai_counts.append('a')
print(len(hukai_counts))
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市阶剑,隨后出現(xiàn)的幾起案子跃巡,更是在濱河造成了極大的恐慌,老刑警劉巖牧愁,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件素邪,死亡現(xiàn)場離奇詭異,居然都是意外死亡猪半,警方通過查閱死者的電腦和手機兔朦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來磨确,“玉大人烘绽,你說我怎么就攤上這事±睿” “怎么了安接?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長英融。 經(jīng)常有香客問我盏檐,道長,這世上最難降的妖魔是什么驶悟? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任胡野,我火速辦了婚禮,結果婚禮上痕鳍,老公的妹妹穿的比我還像新娘硫豆。我一直安慰自己,他們只是感情好笼呆,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布熊响。 她就那樣靜靜地躺著,像睡著了一般诗赌。 火紅的嫁衣襯著肌膚如雪汗茄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天铭若,我揣著相機與錄音洪碳,去河邊找鬼递览。 笑死,一個胖子當著我的面吹牛瞳腌,可吹牛的內(nèi)容都是我干的绞铃。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼嫂侍,長吁一口氣:“原來是場噩夢啊……” “哼儿捧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吵冒,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎西剥,沒想到半個月后痹栖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡瞭空,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年揪阿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咆畏。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡南捂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出旧找,到底是詐尸還是另有隱情溺健,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布钮蛛,位于F島的核電站鞭缭,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏魏颓。R本人自食惡果不足惜岭辣,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一轰坊、第九天 我趴在偏房一處隱蔽的房頂上張望渡贾。 院中可真熱鬧,春花似錦撑教、人聲如沸叹话。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驼壶。三九已至鹦肿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間辅柴,已是汗流浹背箩溃。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工瞭吃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涣旨。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓歪架,卻偏偏與公主長得像,于是被迫代替她去往敵國和親霹陡。 傳聞我的和親對象是個殘疾皇子和蚪,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容