當我和我的妻子搬進我們家時,我的首要任務之一就是將舊燈開關換成常用房間的新燈開關。一旦我弄清楚它是如何完成的,它看起來很簡單:轉到電路盒,關閉特定房間的斷路器並更換開關。
一切似乎都很好,直到我做了一個觸目驚心發現其中一個開關(我們不確定它控制了什麼)在關閉斷路器到那個房間後仍然有電源運行。我去商店買了一個電路測試儀...... 但是那個開關仍然需要更換。我可以立刻關閉所有30個斷路器,但我真的很好奇哪個斷路器控制器可以切換。

那麼現在怎麼辦?
最簡單的方法似乎是一次嘗試一個電路,直到我能確定哪個電路控制開關。當然,開關和插座位於不同的樓層,所以這仍然顯得乏味。如果我很幸運,我會立即關閉正確的電路。但如果我運氣不好,30條線路意味著許多上下樓梯。
二分搜索?
我可以進行二進制搜索,其中一半電路打開,一半關閉,找出交換機所屬的組,並重複此過程,直到我切換到一個開關。然而,快速的互聯網搜索顯示有可能二電路需要設置為關閉,這樣我才能最終切換該開關。一次一個方法甚至不會幫助我。
我有信心我只需要關閉一個電路,但如果不是這樣的話怎麼辦?這聽起來像我可以做一個設計的實驗,但我沒有典型的隨機噪聲概念,我的反應本質上是二進制的(開關電源與否)。我真正想要的是具有以下功能的設計:
如果它只是一個電路,請告訴我它究竟是哪一個。如果它是兩個迴路,請告訴我一個方向,因為我知道我已經看到兩個斷路器關閉的情況(並沒有關閉所有開關,這不是特別有用)。在盡可能少的測試中實現前兩點。事實證明,我只能進行八次測試,其中每次運行/測試都有一些開關,其中一些關閉。
怎麼樣?
在 2014年探索峰會 ,John Sall的全體演講展示了明年3月在JMP 12中發布的一些精彩新功能的預覽。我個人最喜歡的是能源部新的JMP Pro 12平台用於覆蓋陣列,由DOE開發團隊的最新成員Joseph Morgan實施。
覆蓋陣列?
為了一個力量 Ť 給出任何一個覆蓋數組 Ť 列,每個可能的級別組合發生至少一次 。 例如,對於具有級別為A1和A2的列(因子)A以及具有級別B1和B2的列B的雙覆蓋陣列,每對(A1,B1),(A1,B2),(A2,B1),(A2,B2)必須出現在設計中。
因此,如果我有一個強度為2的覆蓋陣列,其中因子代表具有開/關水平的開關,我知道對於任何一對開關,在實驗的某個地方我看到兩個開關都開啟,一個開啟和關閉一個,以及兩個都關閉。
對於那些熟悉DOE的人來說,這聽起來可能類似於正交數組的定義。關鍵的區別在於正交陣列要求每個組合發生完全相同的次數,而覆蓋陣列只需要發生每個組合。事實證明,如果我有30個因子,X1-X30,代表具有開/關設置的電路,最小強度2覆蓋陣列僅有8次運行。對於這種特殊情況,第一次測試將所有開關設置為“on”,因此我真的只需要七次測試。這種情況下的正交數組需要32次運行。
覆蓋陣列經常用於軟件測試,它們有助於確保沒有軟件故障 Ť - 因素組合。覆蓋陣列有助於實現這一目標,而成本只是窮舉測試的一小部分。早在2006年就已經使用覆蓋陣列來測試JMP的部件。
在這種情況下它是如何工作的?
假設我有八個強度2覆蓋陣列,並記錄每次運行時開關是否有電。我只顯示下圖中的前幾個因素,但我的實際數據表是X30。

這只是對JMP 12中的內容的預覽,但在這個例子中,我可以說電路X1是罪魁禍首。當X1打開時,燈開關始終工作,而當X1關閉時,燈開關不工作。任何其他破壞者都不是這種情況。我現在不僅可以更換開關,還解決了實際控制它的電路之謎。
最後的想法
在這個例子中,樓梯上的一些額外的行程可能看起來不是什麼大不了的事,但你可以想像一個測試可能非常昂貴的例子,所以每次保存都會產生很大的不同。特別是隨著因素數量的增加,如果您無法訪問用於覆蓋陣列的軟件,則可能會錯過太多可能性。如果我有更多的開關,比如100,200或500怎麼辦?您可能認為覆蓋數組太大而無法處理。上述案例的運行規模分別為10,11和13 - 太棒了!
當明年3月發布JMP 12時,您可以期待更多關於覆蓋陣列的信息!