Quando mia moglie ed io ci trasferimmo nella nostra casa, uno dei miei primi compiti fu quello di scambiare i vecchi interruttori della luce con quelli nuovi nelle stanze usate di frequente. Una volta capito come è stato fatto, mi è sembrato abbastanza semplice: andare alla scatola del circuito, spegnere l'interruttore automatico per quella particolare stanza e sostituire gli interruttori.
Tutto sembrava a posto, finché non ho fatto un scioccante la scoperta che uno degli interruttori (non eravamo sicuri di cosa controllasse) continuava a funzionare con energia elettrica dopo aver spento l'interruttore in quella stanza. Sono andato dritto al negozio per prendere un tester di circuito ... ma quell'interruttore doveva ancora essere sostituito. Potrei spegnere tutti e 30 gli interruttori contemporaneamente, ma ero davvero curioso di sapere quale interruttore dovesse funzionare.

E ora?
L'approccio più semplice sembra essere quello di provare un circuito alla volta, fino a quando non riesco a capire quale circuito controlla l'interruttore. Naturalmente, l'interruttore e l'uscita sono su piani diversi, quindi questo sembra ancora noioso. Se divento fortunato, spengo immediatamente il circuito giusto. Ma se sono sfortunato, 30 circuiti significano molti viaggi su e giù per le scale.
Una ricerca binaria?
Potrei fare una ricerca binaria con metà dei circuiti su e metà di loro fuori, capire a quale gruppo appartiene l'interruttore e ripetere questo processo fino a quando non arriverò a un interruttore. Tuttavia, una rapida ricerca su Internet rivela che esiste una possibilità Due i circuiti devono essere disattivati in modo da poter finalmente passare a quell'interruttore. Il metodo one-to-one-time non mi aiuterà nemmeno con questo.
Sono fiducioso che ho solo bisogno di spegnere un circuito, ma cosa succede se non è il caso? Sembra che potrei fare un esperimento progettato, ma non ho la tipica nozione di rumore casuale, e la mia risposta è essenzialmente binaria (alimentazione allo switch o meno). Quello che voglio veramente è un design con queste caratteristiche:
Se è solo un circuito, dimmi esattamente quale è.Se sono due circuiti, datemi una direzione sapendo di aver visto un caso con entrambi gli interruttori spenti (e non tutti gli interruttori, che non è particolarmente utile).Ottieni i primi due punti nel minor numero possibile di test.Si scopre che posso farlo solo con otto test, in cui ogni serie / test ha alcuni degli interruttori accesi e alcuni di essi sono spenti.
Come?
A Discovery Summit 2014 Il discorso di John Sall in plenaria ha mostrato un'anteprima di alcune delle fantastiche nuove funzionalità che usciranno in JMP 12 il prossimo marzo. La mia preferita è la nuova piattaforma JMP Pro 12 in DOE per gli array di copertura, implementata da Joseph Morgan, il nuovo membro del team di sviluppo DOE.
Un array di copertura?
Per una forza t array di copertura, dato uno qualsiasi t colonne, si verifica ogni combinazione di livello possibile almeno una volta . Ad esempio, per un array con copertura 2 che ha colonna (fattore) A con livelli A1 e A2 e colonna B con livelli B1 e B2, ciascuna delle coppie (A1, B1), (A1, B2), (A2, B1), (A2, B2) dovrebbe apparire nel disegno.
Quindi, se avessi una matrice di copertura di forza 2 in cui i fattori rappresentano gli interruttori con livelli on / off, so che per qualsiasi coppia di interruttori, da qualche parte nell'esperimento ho visto entrambi gli interruttori, uno acceso e uno spento, e entrambi fuori.
Per chi ha familiarità con DOE, questo potrebbe sembrare simile alla definizione di un array ortogonale. La differenza fondamentale è che un array ortogonale richiede che ciascuna combinazione si verifichi esattamente lo stesso numero di volte, mentre un array di copertura richiede semplicemente che ciascuna combinazione si verifichi. A quanto pare, se ho 30 fattori, X1-X30, che rappresentano i circuiti con le impostazioni on / off, l'array di copertura più piccolo di forza 2 ha solo otto serie. In questo caso particolare, il primo test ha tutti gli interruttori impostati su "on", quindi avrei davvero bisogno solo di sette test. Un array ortogonale per questo caso richiederebbe 32 run.
Gli array di copertura vengono spesso utilizzati nei test del software, dove aiutano a garantire che non vi siano errori software dovuti a t -way combinazioni di fattori. Gli array di copertura aiutano a raggiungere questo risultato ad una frazione del costo dei test completi. Gli array di copertura sono stati utilizzati per testare parti di JMP già nel 2006.
Come funziona in questo caso?
Diciamo che ho l'array di copertura di forza 2 a otto giri e ho registrato se l'interruttore aveva o meno elettricità per ogni corsa. Sto solo mostrando i primi pochi fattori nella figura qui sotto, ma la mia tabella dati attuale va a X30.

Questa è solo un'anteprima di quello che arriverà in JMP 12, ma in questo esempio, posso dire che il circuito X1 è il colpevole. L'interruttore della luce funziona sempre quando X1 è attivo e non quando X1 è spento. Questo non è il caso per altri demolitori. Non solo ora posso cambiare l'interruttore, ho risolto il mistero di quale circuito effettivamente lo controlla.
Pensieri finali
In questo esempio, alcuni viaggi extra su per le scale potrebbero non sembrare un grosso problema, ma puoi immaginare esempi in cui un test può essere molto costoso, quindi ogni corsa salvata fa una grande differenza. In particolare con l'aumentare del numero di fattori, ci sono troppe possibilità che puoi perdere se non hai accesso al software per la copertura degli array. E se avessi molti più interruttori, diciamo 100, 200 o 500? Potresti pensare che un array di copertura diventerebbe troppo grande per affrontarlo. Le dimensioni della corsa per i casi di cui sopra sono 10, 11 e 13 rispettivamente - incredibile!
Puoi aspettarti di più sulla copertura degli array quando JMP 12 verrà rilasciato il prossimo marzo!