正交表入门
DOE學習-正交表
原文地址: https://blog.csdn.net/laomai/article/details/1929302
1 .基本概念
??? 在科研和生產實踐中,人們往往要做許多次實驗來進行某項研究。實驗條件一般包括很多因素,當因素的值不同時,實驗的結果也不一樣。如果想把每個因素的每個值都要實驗一遍,總實驗數就等于各因素的值的個數的乘積,而這個數往往很大,超過了可接受的成本。
例如,假設某個實驗的結果由A,B,C,D四個因素的取值決定,每個因素都有10個不同的取值,那么如果想把每個取值都考慮到的話,我們需要做 10*10*10*10=10000次實驗。為了減少實驗數目,必須對實驗方法進行設計,們必須選出那些最有代表性的例子。實驗設計就是DOE(Design of Experiments)。而正交表法(Orthogonal Array Testing Strategy)是最基本的一種實驗設計方法。正交表是一種篩選實驗用例的方法。在介紹其具體內容前,我們先引入幾個基本概念。
⑴因素個數Factors,以后在本文中用F代替,一個因素就對應著正交表中的一列。
⑵水平數Levels,以后簡寫為L。他的含義就是每個因素可取值的個數,注意這里我們不關心每個具體的值是多少,關心的是其個數。變量的具體取值我們稱做水平值,在與水平數不發生混淆的情況下,簡稱水平,用變量名+編號表示。比如,一個因素A可能有三個水平,則可記為A1,A2,A3.
⑶強度Strength,以后簡寫為S:強度是構造正交表的一個最重要的指標,正交表的核心性質就是a):在正交表中后S個因素的每個水平值要相互碰一次且只碰一次。b):任給兩條正交表中的記錄,它倆不存在完全相同的S列。c):正交表的記錄數等于最后S列的水平數的乘積。強度具體取多少由實驗者決定.給定了強度S以后,最終的正交表記錄數就是最后S列的水平數的乘積。
⑷次數(Runs):最后生成的正交表的記錄數,一條(行)記錄也就是一次實驗。
⑸正交表的符號表示:先以字母L打頭,下標r表示記錄數,括號中為具有相同水平數的因子數的項的連乘積。
Lr(Levelsfactors×Levelsfactors×…×Levelsfactors)
給幾個具體例子:
⑴設有3個因素A,B,C,每個因素的水平數均為3時,生成的正交表為L27(33)(取強度等于3的情況),記錄數27=3*3*3
?????? ⑵設有5因素,每個因素的水平數分別2,2,2,3,3時,不同強度S的生成正交表分別為
s=2時,結果為L9(23×32),記錄數為最后兩個變量的水平數乘積3*3=9
s=3時,結果為L18(23×32),記錄數為最后三個變量的水平數乘積2*3*3=18
2. 手工構造正交表
看一個具體例子:設有4個變量A,B,C,D,前三個變量的水平數為3,最后一個變量的水平數為4,那么,根據不同的強度,可得到不同的正交表。
強度s=2時,得到的原始正交表L12(33×4)如下所示:
記錄號??A????B????C???D
1:????1??????1??????1??????1
2:????1??????2??????2??????2
3:????1??????3??????3??????3
4 :????2??????1??????2??????3
5:????2??????2??????1??????4
6:????3??????1??????3??????2
7:????3??????3??????2??????1
8:????0??????2??????3??????1
9:????0??????3??????1??????2
10:???0??????0??????1??????3
11:???0??????0??????2??????4
12:???0??????0??????3??????4
可以看出C的每個水平值與D的每個水平值各碰一次且僅碰一次。而A、B的每個水平出現的次數也很均勻。并且任何在相同位置的兩列組成的有序數對沒有重復值。
上面這個表的具體構造過程是:
1、首先要算出4個因素的所有水平值的笛卡爾積,也就是把所有因素的水平值都互相碰一遍,這樣一共是3*3*3*4=108條記錄。
我們用編號“1111”、“1112”、“1113”、“1114”、“1121”.....“3334”來代表這108條記錄。每一位上的數字代表該列因素所取的水平值。
2、現在從這128記錄中過濾出符合S維正交性的記錄(預先透漏。符合條件的記錄數要比12少,呵呵)。下面就是過濾的具體過程:
3、將第一條記錄“1111”寫到正交表中。
4、考察笛卡爾積中的第二條記錄“1112”,注意正交表的核心屬性之一就是:正交表的任意兩條記錄不能有S列完全相同。而1112的前兩列是"11",與第一條的記錄前兩列"11"重復,所以要把1112淘汰掉,同理,所有以"11"開頭的記錄都要被淘汰掉。
5、考慮以"12"開頭的第一條記錄"1211",這個記錄的最后兩列是"11",與第一列的最后兩列重復。也要被淘汰。
6、類似的,所有含有字符串"11XX","1X1X","X11X","XX11","X1X1","1XX1"(X代表該列的任意水平值)的記錄都要被淘汰掉,因為他們都和第一行的記錄有2列是重復的。
7、經過上面的過濾,可以得到正交表的第二條記錄是"1222",這個字符串的任何兩列都與第一行的"1111"的對應兩列不完全相同。
8、同樣的,正交表的第三條記錄要和前兩條記錄的任何兩列都沒有重復值,根據這個原則,"1223"(與第二條記錄的有相同的前兩列)、"1311"(與第一條記錄有相同的后兩列)等都要被淘汰掉。
第三條記錄應該是“1333”。第4條記錄到第7條記錄的選拔過程與之類似。
9、到記錄"3321"為止,我們從4因素笛卡爾積的108記錄里得到了7條記錄符合正交性。
10、讀者可以自行驗證:從記錄"3322"起到"3334"止,再沒有符合正交性的記錄,而題意要求得到12條記錄,那么剩下的5條記錄是怎么得到的呢?請繼續往下看。
11、現在考慮后三個因素構成的笛卡爾積,這個笛卡爾積有3*3*4=36條記錄,用編號
“0111”到“0334”表示(注意這里是考慮后三列,所以第一列用0填充了),現在繼續從這36條記錄中記錄選取符合S維正交性的記錄,那么與前面的過程4-8類似,我們可以看到“0111”到“0224”都不符合正交性,而“0231”和正交表的前7條記錄沒有重復的2列,所以把"0231"作為第8條記錄,
12、請讀者自行驗證,過濾出了“0231”,"0312"兩條記錄后,后三列的笛卡爾積中再沒有正交性的記錄了。
13、現在遍歷后兩列組成的笛卡爾積,用編號"0011"到"0034"表示,在這個笛卡爾積的3*4=12條記錄中,恰好有3條記錄“0013”“0024”“0034”與前面各行都沒有重復的兩列。
至此,原始正交表的12條記錄全部構造完畢。
為了保持取值的均勻性,我們用因素的水平值循環填充為0的項。要求填充之后同一因素的每個水平值的出現次數基本相等,最多相差一次。因此,填充的原則是:填充時優先選取本列中出現次數最少的水平值,如果次數一樣,則選擇編號最小的那個水平值。
得到最終的正交表為
??????A??????B?????C?????D
?1:????1??????1??????1??????1
2:????1??????2??????2??????2
3:????1??????3??????3??????3
4:????2??????1??????2??????3
5:????2??????2??????1??????4
6:????3??????1??????3??????2
7:????3??????3??????2??????1
8 :????2??????2??????3??????1
9 :? ? 3????3??????1??????2
10 :? ?1?? ??1??????1??????3
11 :? ?2?? ??2??????2??????4
12 :? ?3?? ??3??????3??????4
紅色數字就是我們用水平值循環填充后的結果。
類似的我們可以得到強度為3的正交表L36(33×4),
記錄數為4*3*3=36.
????A???? B????C????D
1:????1??????1??????1??????1
2:????1??????1??????2??????2
3:????1??????1??????3??????3
4:????1??????2??????1??????2
5:????1??????2??????2??????1
6:????1??????2??????3??????4
7:????1??????3??????1??????3
8:????1??????3??????2??????4
9:????1??????3??????3??????1
10:???2??????1??????1??????2
11:???2??????1??????2??????1
12:???2??????1??????3??????4
13:???2??????2??????1??????1
14 :???2??????2??????2??????2
15:???2??????2??????3??????3
16:???2??????3??????1??????4
17:???2??????3??????2??????3
18:???2??????3??????3??????2
19:???3??????1??????1??????3
20:???3??????1??????2??????4
21:???3??????1??????3??????1
22:???3??????2??????1??????4
23:???3??????2??????2??????3
24:???3??????2??????3??????2
25:???3??????3??????1??????1
26:???3??????3??????2??????2
27:???3??????3??????3??????3
28:???0??????1??????1??????4
29:???0??????1??????2??????3
30:???0??????1??????3??????2
31 :???0??????2??????1??????3
32:???0??????2??????2??????4
33:???0??????2??????3??????1
34:???0??????3??????1??????2
35:???0??????3??????2??????1
36:???0??????3??????3??????4
讀者可自行填充其中的0項,得到最后的結果
3. 正交表的基本數學性質
?????? 設正交表的強度為S,則正交表有以下數學性質
?????? 1、??正交性:從上面的構造過程中可以看出,正交性具體體現在:
⑴在最后S列中,每列因素的一個水平值與其他列中的每個水平值相碰一次且只碰一次。換句話說,最后S列構成的子表是滿的。因此,正交表的記錄個數=最后S列的水平數的乘積。
⑵在從正交表中任取S列,得到一個子集,該子集中沒有完全相同的記錄(即正交表任何兩條記錄都不能有完全相同的S列)。這是構造正交表的核心原則。
(3)構造正交表時,我們要依次遍歷:所有N列構成的笛卡爾積、右邊N-1列構成的笛卡爾積、右邊N-2列構成的笛卡爾積、一直遍歷到右邊S列構成的笛卡爾積,每次都要對笛卡爾積中的每條記錄進行檢查,看看它與正交表中的某條已有記錄是否有S列完全相同,是的話就淘汰掉。所以檢查的核心算法是:
設X為笛卡爾積中的待檢查記錄,Y為正交表中的已有記錄。設定一個記數器C=0,
將X與Y按位比較,當X與Y的某列相等時,計數器加1.
當計數器C的值大于等于強度S時,X被淘汰;如果X與Y的各位均比較完后,C<S,則將X加入正交表中。
2、?均勻性:每個因素的水平值在表中的出現的次數是基本均勻的,對最后S列中的每一列,每個水平值出現的次數相等。
總結
- 上一篇: 常用 ASCII 码整理
- 下一篇: 看拉扎维《模拟CMOS集成电路设计》的一