SlideShare a Scribd company logo
Using Ms Excel or
Google Sheets
 Convolution Neural Network
 Hidden Layer
 Search for NP problem
https://www.linkedin.com/in/a111chen @2022
Convolution Neural Network
Objective:
1) Find the Xn using the Kernel, Convolution, Relu and Pooling
2) Find the Wn using the Matrix, Linest or Solver Method
3) What if Xn have correlation with each other?
Why:
1) To evaluate the pattern of the data
2) To predict the outcome for the new data from existing approximate
function f(x) = W0X0 + W1X1 + W2X2 + …. WnXn, with X0 = 1 (Bias)
1 1
1 1
1 1
1
1 1
1 1
1 1
1
1 -1 -1
-1 1 -1
-1 -1 1
1 -1 1
-1 1 -1
1 -1 1
-1 -1 1
-1 1 -1
1 -1 -1
0.333333 0 0.222222 0 0.333333 0
0 0.333333 0 0.333333 0 0.111111
0.222222 0 0.555556 0 0.222222 0
0 0.333333 0 0.333333 0 0.111111
0.333333 0 0.222222 0 0.333333 0
0 0.111111 0 0.111111 0 0.333333
0.333333 0 0 0 0 0
0 0.333333 0 0 0 0.111111
0 0 0.111111 0 0 0
0 0 0 0.333333 0 0
0 0 0 0 0.333333 0
0 0.111111 0 0 0 0.333333
0 0 0 0 0.333333 0
0 0 0 0.333333 0 0
0 0 0.111111 0 0 0
0 0.333333 0 0 0 0.111111
0.333333 0 0 0 0 0
0 0 0 0.111111 0 0
0.333333 0 0.111111
0 0.333333 0
0.111111 0 0.333333
0.333333 0.333333 0.333333
0.333333 0.555556 0.222222
0.333333 0.222222 0.333333
0 0.333333 0.333333
0.333333 0.111111 0.111111
0.333333 0.111111 0
0.333333 0.333333
0.333333 0.333333
0.555556 0.555556
0.555556 0.555556
0.333333 0.333333
0.333333 0.111111
Input Kernel Convolution & Relu Pooling (Xn)
MAX(0,SUMPRODUCT($Kernel,Input)/9) MAX(Convolution&Relu) from 2x2 box
Find the Xn using the Kernel, Convolution, Relu and Pooling
11 3 0 1 2
0 4 2 0 1
3 2 7 1 0
4 0 4 10 1
2 5 1 3 14
Matrix Xn:
5 x 5
W1
W2
W3
W4
W5
Matrix Wn:
5 x 1
45
30
15
20
92
Matrix WnXn:
5 x 1
X =
Matrix Wn = MMULT( MINVERSE(Matrix Xn), Matrix WnXn)
1.423902
6.895467
-0.62519
1.313663
3.668504
=
W1
W2
W3
W4
W5
Find the Wn using the Matrix Method
11 3 0 1 2
0 4 2 0 1
3 2 7 1 0
4 0 4 10 1
2 5 1 3 14
Matrix Xn:
5 x 5
W1
W2
W3
W4
W5
Matrix Wn:
5 x 1
45
30
15
20
92
Matrix WnXn:
5 x 1
X =
Matrix Wn = Reverse order of TRANSPOSE(LINEST(Matrix WnXn, Matrix Xn, False, False))
1.423902
6.895467
-0.62519
1.313663
3.668504
=
W1
W2
W3
W4
W5
Find the Wn using the Linest Method
11 3 0 1 2
0 4 2 0 1
3 2 7 1 0
4 0 4 10 1
2 5 1 3 14
Matrix Xn:
5 x 5
W1
W2
W3
W4
W5
Matrix Wn:
5 x 1
45
30
15
20
92
Matrix WnXn:
5 x 1
X =
Using solver
1) Matrix Wn put random number => Changing Variables
2) Predict Matrix WnXn = MMULT(Matrix Wn, Matrix Xn)
3) Error^2 = SUMXMY2(Predict Matrix WnXn,Matrix
WnXn) => Set Objective Min
W1X1
W2X2
W3X3
W4X4
W5X5
Predict Matrix WnXn :
5 x 1
1.423904
6.895465
-0.62518
1.313662
3.668504
W1
W2
W3
W4
W5
Find the Wn using the Solver Method
Helper Matrix
=
SUMXMY2
0.5
0.5
0.3
0.1
0.5 0.5 0.3 0.1
Matrix A: 4 x 1 Matrix B: 1 x 4 Matrix C: 4 x 4
X
Find Matrix C
=
Matrix C = MMULT(Matrix A, Matrix B)
Matrix C = MMULT(Matrix A, TRANSPOSE(Matrix A))
?
0.25 0.25 0.15 0.05
0.25 0.25 0.15 0.05
0.15 0.15 0.09 0.03
0.05 0.05 0.03 0.01
Matrix C: 4 x 4
1.00 -0.02 0.09 0.50
-0.02 1.00 -0.74 0.10
0.09 -0.74 1.00 0.54
0.50 0.10 0.54 1.00
Array D:
Correlation
W1
W2
W3
W4
Array C:
Weighted
16.54872
20.07137
15.4287
15.44397
Array B:
SD
17.865
23.2375
13.5875
17.81
Array A:
Return
Using solver Find Optimal for Weighted
1) Array C put random number => Changing Variables
2) Predict Portfolio SD = SQRT(SUMPRODUCT(MMULT(Array C,
TRANSPOSE(Array C)), MMULT(Array B, TRANSPOSE(Array B
)),Array D))
3) Predict Portfolio Return = SUMPRODUCT(Array C, Array A)
4) Risk free rate = 2.02
5) Sharpe ratio = (Predict Portfolio SD – Risk free rate) /
Predict Portfolio Return => Set Objective Max
W1
W2
W3
W4
0.3
0.5
0.2
0
=
What if Xn have correlation with each other?
Hidden Layer
Objective:
1. Table or Array (Table, {}) is useful for later check back the error more
faster and look organise
2. (Randombetween) for random number between top and bottom.
3. (Mod) for rotation in circle like 24hour will go back to 0,
4. For String (mid, left, right, concat, textjoin, substitute, len, find)
5. Calculate using (If, Sumifs, Countifs, Let, and, or) with criteria
6. Lookup data using (Index, Match, Vlookup , Choose , Filter , Unique)
for value between two array or table column
7. (Sequence) for generate a list of sequential numbers in an array
Why:
1. To understand and calculate the China ancient mathematic
2. From simple to complex layer using table, formula, and array
formula.
Step 1
Possible Simulate Predict Error^2
5 70.8% 75.0% 17.64
9 29.2% 25.0% 17.64
Step 2
Possible Simulate Predict Error^2
4 48.9% 50.0% 1.21
8 51.1% 50.0% 1.21
Step 3
Possible Simulate Predict Error^2
4 51.3% 50.0% 1.69
8 48.7% 50.0% 1.69
Step 4
Possible Simulate Predict Error^2
6 5.5% 6.3% 0.56
7 29.2% 31.3% 4.20
8 44.2% 43.8% 0.20
9 21.1% 18.8% 5.52
Total 100.0% 100.0% 10.49
少 老 Total
阴 43.8% 6.3% 50.0%
阳 31.3% 18.8% 50.0%
Total 75.0% 25.0% 100.0%
Step 1
[@Bal0] = 50 -1 = 49
[@L1] = RANDBETWEEN(1,[@Bal0])
[@Pos1] =3+MOD([@L1]-2,4)+MOD([@Bal0]-[@L1]-1,4)
Step 2
[@Bal1]=[@Bal0]-[@Pos1]
[@L2] =RANDBETWEEN(1,[@Bal1])
[@Pos2] =3+MOD([@L2]-2,4)+MOD([@Bal1]-[@L2]-1,4)
Step 3
[@Bal2]=[@Bal1]-[@Pos2]
[@L3] =RANDBETWEEN(1,[@Bal2])
[@Pos3] =3+MOD([@L3]-2,4)+MOD([@Bal2]-[@L3]-1,4)
Step 4
[@Pos4] =([@Bal2]-[@Pos3])/4
Simple : Possibility of 易经占卜
After simulate for 1000 times
Note: Mod without Zero
1) MOD(n-1,d)+1
2) If(MOD(n,d) = 0, d,
MOD(n,d))
0 1 2 3 4 5 6 7
000 001 010 011 100 101 110 111
坤(地) 震(雷) 坎(水) 兌(泽) 艮(山) 離(火) 巽(風) 乾(天)
←上卦
↓下卦
02.坤為地
(kūn)
16.雷地豫
(yù)
08.水地比
(bǐ)
45.泽地萃
(cuì)
23.山地剥
(bō)
35.火地晋
(jìn)
20.風地观
(guān)
12.天地否
(pǐ)
坤(地)
24.地雷復
(fù)
51.震為雷
(zhèn)
03.水雷屯
(zhūn)
17.泽雷随
(suí)
27.山雷頤
(yí)
21.火雷噬嗑
(shì kè)
42.風雷益
(yì)
25.天雷无妄
(wú wàng)
震(雷)
07.地水師
(shī)
40.雷水解
(xiè)
29.坎為水
(kǎn)
47.泽水困
(kùn)
04.山水蒙
(méng)
64.火水未济
(wèi jì)
59.風水渙
(huàn)
06.天水訟
(sòng)
坎(水)
19.地泽臨
(lín)
54.雷泽歸妹
(guī mèi)
60.水泽節
(jié)
58.兌為泽
(duì)
41.山泽損
(sǔn)
38.火泽睽
(kuí)
61.風泽中孚
(zhōng fú)
10.天泽履
(lǚ)
兌(泽)
15.地山謙
(qiān)
62.雷山小過
(xiǎo guò)
39.水山蹇
(jiǎn)
31.泽山咸
(xián)
52.艮為山
(gèn)
56.火山旅
(lǚ)
53.風山漸
(jiàn)
33.天山遯
(dùn)
艮(山)
36.地火明夷
(míng yí)
55.雷火丰
(fēng)
63.水火既济
(jì jì)
49.泽火革
(gé)
22.山火賁
(bì)
30.離為火
(lí)
37.風火家人
(jiā rén)
13.天火同人
(tóng rén)
離(火)
46.地風升
(shēng)
32.雷風恒
(héng)
48.水風井
(jǐng)
28.泽風大過
(dà guò)
18.山風蠱
(gŭ)
50.火風鼎
(dǐng)
57.巽為風
(xùn)
44.天風姤
(gòu)
巽(風)
11.地天泰
(tài)
34.雷天大壯
(dà zhuàng)
05.水天需
(xū)
43.泽天夬
(guài)
26.山天大畜
(dà chù)
14.火天大有
(dà yǒu)
09.風天小畜
(xiǎo chù)
01.乾為天
(qián)
乾(天)
No Pos4 本卦 互卦 变卦 错卦 综卦
6 7 1 0 1 0 1
5 8 0 1 0 1 0
4 7 1 0 1 0 0
3 8 0 1 0 1 1
2 8 0 0 0 1 0
1 7 1 0 1 0 1
上卦 5 2 5 2 4
下卦 1 4 1 6 5
卦
21.火雷噬嗑
(shì kè)
39.水山蹇
(jiǎn)
21.火雷噬嗑
(shì kè)
48.水風井
(jǐng)
22.山火賁
(bì)
本卦=IF(ISEVEN([@Pos4]),0,1)
互卦 = Pos4{5,4,3,4,3,2}
变卦=IF(OR([@Pos4]=6,[@Pos4]=9),[@错卦],[@本卦])
错卦=IF(ISEVEN([@本卦]),1,0)
综卦=INDEX([本卦],[@No])
上卦=BIN2DEC(LEFT(TEXTJOIN("",TRUE,Table1[本卦]),3))
下卦=BIN2DEC(RIGHT(TEXTJOIN("",TRUE,Table1[本卦]),3))
卦 = =INDEX(64卦,下卦+1,上卦+1)
64卦 = 8 x 8
Example
Simple : 易经占卜
Collect the date of 24节气 from
website from year 1900 Into table
Medium : Convert Calendar date to 八字
天干 = {甲乙丙丁戊己庚辛壬癸}
地支 = {子丑寅卯辰巳午未申酉戌亥}
天干日数 = {0246802468}
年 月 日 时
1986 2 10 10
Step 1 : calculate 年
年的参数=COUNTIFS(Table2[Date],"<="&DATE(年,月,日),Table2[节气],"立春")+36
年天干 =MID(天干,MOD(年的参数-1,10)+1,1)
年地支=MID(地支,MOD(年的参数-1,12)+1,1)
年柱=CONCAT(年天干,年地支)
Step 2 : calculate 月
月的参数=COUNTIFS(Table2[Date],"<="&DATE(年,月,日))+13
月天干=MID(天干,MOD(月的参数-1,10)+1,1)
月地支 =MID(地支,MOD(月的参数-1,12)+1,1)
月柱=CONCAT(月天干,月地支)
年 月 日 时
丙寅 庚寅 乙酉 辛巳
Step 3 : calculate 日
日的参数=DATE(年,月,日)-DATE(1900,1,1)+12-IF(DATE(年,月,日)>DATE(1900,2,29),2,0)
日天干=MID(天干,MOD(日的参数-1,10)+1,1)
日地支=MID(地支,MOD(日的参数-1,12)+1,1)
日柱=CONCAT(日天干,日地支)
Step 4 : calculate 时
时的参数=MOD(IF(ISEVEN(时),时,时+1),24)/2+1+MID(天干日数,FIND(日天干,天干),1)
时天干=MID(天干,MOD(时的参数-1,10)+1,1)
时地支=MID(地支,MOD(IF(ISEVEN(时),时,时+1),24)/2+1,1)
时柱=CONCAT(时天干,时地支)
Note:
If use google sheet =1
If use ms excel = 2
Input:
Output:
Adjust according to
your 24节气table
大运
=IF(IF(命=“男”,“阳”,“阴”)=IF(ISODD(FIND(年天
干,天干)),"阳","阴"), "顺排","逆排")
起运数
=ABS(ROUND((INDEX(Table2[Date],IF(大运=“顺
排”, MATCH(DATE(年,月,日),
Table2[Date],1)+1,MATCH(DATE(年,月,
日),Table2[Date],1)))-DATE(年,月,日))/3,0))
1
Note:
“IF” can use inside other
formula to shorten
2
3
主客 生克
土土 同我
火火 同我
木木 同我
水水 同我
金金 同我
土木 克我
火水 克我
木金 克我
水土 克我
金火 克我
土火 生我
火木 生我
木水 生我
水金 生我
金土 生我
土水 我克
火金 我克
木土 我克
水火 我克
金木 我克
土金 我生
火土 我生
木火 我生
水木 我生
金水 我生
Result(F
) 十神(F) 简(F)
同同我 比肩 比
异同我 劫财 劫
同我生 食神 食
异我生 伤官 伤
同我克 偏财 才
异我克 正财 财
同克我 七杀 杀
异克我 正官 官
同生我 偏印 枭
异生我 正印 印
Table1 : 天干 (F)
地支 (F)
Medium : Convert 八字 to 十神
1
地支 阴阳 五行 藏干
子 阳 水 癸
丑 阴 土 己癸辛
寅 阳 木 甲丙戊
卯 阴 木 乙
辰 阳 土 戊乙癸
巳 阴 火 丙戊庚
午 阳 火 丁己
未 阴 土 己丁乙
申 阳 金 庚壬戊
酉 阴 金 辛
戌 阳 土 戊辛丁
亥 阴 水 壬甲
天干 阴阳 五行
甲 阳 木
乙 阴 木
丙 阳 火
丁 阴 火
戊 阳 土
己 阴 土
庚 阳 金
辛 阴 金
壬 阳 水
癸 阴 水
五行生克(F) 十神(F) 2 x 5 = 10
Result
(V)
=CONCAT(IF(日天干阴阳=[@阴阳],"同","
异"),VLOOKUP(CONCAT(日天干五行,
[@五行]),五行生克,2,FALSE))
十神 (V) =VLOOKUP([@Result],十神,2,FALSE)
简 (V) =VLOOKUP([@Result],十神,3,FALSE)
天干 = {甲乙丙丁戊己庚辛壬癸}
日天干参数 =FIND(日天干,天干)
日天干阴阳 =INDEX(Table1[阴阳],日天干参数)
日天干五行 =INDEX(Table1[五行],日天干参数)
Note:
(F)= Fixed
(V)=Dynamic
年 运 转
1924 4 8
1944 5 0
1964 6 1
1984 7 2
2004 8 3
2024 9 4
2044 1 5
2064 2 6
2084 3 7
4 9 2
3 5 7
8 1 6
7 3 5
6 8 1
2 4 9
度 向 坐 宅 Col
0 子 午 坎 2
7.5 癸 丁 坎 3
22.5 丑 未 艮 1
37.5 艮 坤 艮 2
52.5 寅 申 艮 3
67.5 甲 庚 震 1
82.5 卯 酉 震 2
97.5 乙 辛 震 3
112.5 辰 戌 巽 1
127.5 巽 乾 巽 2
142.5 巳 亥 巽 3
157.5 丙 壬 离 1
172.5 午 子 离 2
187.5 丁 癸 离 3
202.5 未 丑 坤 1
217.5 坤 艮 坤 2
232.5 申 寅 坤 3
247.5 庚 甲 兑 1
262.5 酉 卯 兑 2
277.5 辛 乙 兑 3
292.5 戌 辰 乾 1
307.5 乾 巽 乾 2
322.5 亥 巳 乾 3
337.5 壬 丙 坎 1
352.5 子 午 坎 2
巽 离 坤
震 兑
艮 坎 乾
宅(F) 转(F)
1 2 3
1 阳 阴 阴 5
2 阴 阳 阳 6
3 阳 阴 阴 7
4 阴 阳 阳 8
5 阴 阳 阳 0
6 阴 阳 阳 1
7 阳 阴 阴 2
8 阴 阳 阳 3
9 阳 阴 阴 4
坐
向
100
6 1 8
7 5 3
2 4 9
4 9 2
3 5 7
8 1 6
1
6
阳图(F)
阴图(F)
1
2
3
后天八卦(F)
Medium : 飞星布局
MOD(N+九运 -1,9)+1
6 5 0
1 3
4 2 7
110 101 000
001 011
100 010 111
巽 离 坤
震 兑
艮 坎 乾
后天八卦(F)
Note:
=DEC2BIN(N,3)
洛书(F)
坐(V)
向(V)
阴阳=Index(宅,Row,Col)
转 =Index(转,Row)
=MOD(IF(坐="阳",阳图
,阴图)+ 转 -1,9)+1
=MOD(IF(向="阳",阳图
,阴图)+ 转 -1,9)+1
九运(F)
坐向(F)
巽 离 坤
震 兑
艮 坎 乾
4 9 2
3 5 7
8 1 6
宅
宅卦(V)
乾 1
兑 2
艮 3
离 4
坎 5
坤 6
震 7
巽 8
NNN 伏位
YYN 五鬼
NYY 天医
YNN 生气
YYY 延年
NYN 绝命
NNY 祸害
YNY 六煞
6 金
7 金
9 火
3 木
4 木
1 水
2 土
5 土
8 土
中(V) 八个方位(V)
主客 Result action
土土 当令 旺
火火 当令 旺
木木 当令 旺
水水 当令 旺
金金 当令 旺
土木 克我 煞
火水 克我 煞
木金 克我 煞
水土 克我 煞
金火 克我 煞
土火 生我 生
火木 生我 生
木水 生我 生
水金 生我 生
金土 生我 生
土水 我克 死
火金 我克 死
木土 我克 死
水火 我克 死
金木 我克 死
土金 我生 泄
火土 我生 泄
木火 我生 泄
水木 我生 泄
金水 我生 泄
爻一样 = N
爻不一样 = Y
后天八卦(F)
年 元
1864 上
1924 中
1984 下
2044 上
2104 中
2164 下
命卦(V)
Medium : 八宅风水
宅卦转到0度
X
1
0度
乾
MOD(N+宅卦转 -1,9)+1
6 金
7 金
9 火
3 木
4 木
1 水
2 土
5 土
8 土
NNN 伏位
YYN 五鬼
NYY 天医
YNN 生气
YYY 延年
NYN 绝命
NNY 祸害
YNY 六煞
宅卦转(F)
2
3
4
五行生克(F)
三元(F)
宅(V)
九宫格(F)
甲子 甲戌 甲申 甲午 甲辰 甲寅
乙丑 乙亥 乙酉 乙未 乙巳 乙卯
丙寅 丙子 丙戌 丙申 丙午 丙辰
丁卯 丁丑 丁亥 丁酉 丁未 丁巳
戊辰 戊寅 戊子 戊戌 戊申 戊午
己巳 己卯 己丑 己亥 己酉 己未
庚午 庚辰 庚寅 庚子 庚戌 庚申
辛未 辛巳 辛卯 辛丑 辛亥 辛酉
壬申 壬午 壬辰 壬寅 壬子 壬戌
癸酉 癸未 癸巳 癸卯 癸丑 癸亥
甲
乙
丙
丁
戊
己
庚
辛
壬
癸
Row =MATCH(LEFT(时),天干,0)
Col =MATCH(时,INDEX(60甲子,Row,0),0)
符头 =INDEX(INDEX(60甲子,1,0),,柱)
旬首 =INDEX(天干,Col+4)
宫 天盘星图(F) 天盘门图 (F) 八诈门图 (阳) (F)
八诈门图 (阴)
(F)
No
1 天蓬 休门 值符 值符 1
8 天任 生门 滕蛇 九天 2
3 天冲 伤门 太阴 九地 3
4 天辅 杜门 六合 玄武 4
9 天英 景门 勾陈 白虎 5
2 天芮 死门 朱雀 六合 6
7 天柱 惊门 九地 太阴 7
6 天心 开门 九天 滕蛇 8
5 天芮 死门 朱雀 六合 9
60甲子 天干
=INDEX(range,0,n) // entire column
=INDEX(range,n,0) // entire row
Complex : 奇门遁甲
Table 5:宫
Table 4:阳遁,阴遁
Total = 2 x 9 x 60 = 1080 possibility
值符宫 =MATCH(值符,Table5[天盘星图(F)],0)
值使宫 =MATCH(值使,Table5[天盘门图 (F)],0)
星宫 =MATCH(星,Table5[宫],0)
门宫 =MATCH(门,Table5[宫],0)
值符 =INDEX(Table4[天盘星图(v)],Col)
值使 =INDEX(Table4[天盘门图(v)],Col)
星 =IF(遁="阳",MOD(阳星+局-2,9)+1,
MOD(阴星+局-2,9)+1)
门 =IF(遁="阳",MOD(阳门+局-2,9)+1,
MOD(阴门+局-2,9)+1)
阳星 =CHOOSE(Row,CHOOSE(Col,1,2,3,4,5,6
),
9,8,7,1,2,3,4,5,6)
阴星 =CHOOSE(Row,CHOOSE(Col,1,9,8,7,6,5
),
2,3,4,1,9,8,7,6,5)
阳门 =MOD((Col-1)*10+Row-1,9)+1
阴门 =CHOOSE(MOD((Col-1)*10+Row-1,9)+1,
顺序(V) =INDEX([顺序(F)],IF(遁="阳",MOD([@阳
遁]-局,9)+1,MOD([@阴遁]+局-2,9)+1))
天盘星图(V) =INDEX([天盘星图(F)],IF(遁="阳
",MOD([@阳遁]+局-2,9)+1,MOD([@阴
遁]+局-2,9)+1))
天盘门图(V) =INDEX([天盘门图(F)],IF(遁="阳
",MOD([@阳遁]+局-2,9)+1,MOD([@阴
遁]+局-2,9)+1))
地盘奇子(V) =INDEX(Table4[顺序(V)],[@宫])
天盘奇子(V) =INDEX([地盘奇子(v)],MOD([@No]+值符宫-星宫-
1,8)+1)
天盘星图(V) =INDEX([天盘星图(F)],MOD([@No]+值符宫-星宫-
1,8)+1)
天盘门图(V) =INDEX([天盘门图 (F)],MOD([@No]+值使宫-门宫-
1,8)+1)
八诈门图(V) =INDEX(IF(遁="阳",[八诈门图 (阳) (F)],[八诈门图 (阴)
(F)]),MOD([@No]-星宫,8)+1)
阳遁 阴遁 顺序(F) 天盘星图(F) 天盘门图(F)
1 1 戊 天蓬 休门
2 9 己 天芮 死门
3 8 庚 天冲 伤门
4 7 辛 天辅 杜门
5 6 壬 天芮 死门
6 5 癸 天心 开门
7 4 丁 天柱 惊门
8 3 丙 天任 生门
9 2 乙 天英 景门
时
遁, 局
时
遁, 局, 时
宫
遁, 局, 时,宫
1
2
3
4
5
No 地盘(F) 昼夜(F) 顺逆(F) 顺(F) 逆(F)
1 子 夜 顺 贵 贵
2 丑 夜 顺 蛇 后
3 寅 夜 顺 朱 阴
4 卯 昼 顺 合 玄
5 辰 昼 顺 勾 常
6 巳 昼 逆 青 白
7 午 昼 逆 空 空
8 未 昼 逆 白 青
9 申 昼 逆 常 勾
10 酉 夜 逆 玄 合
11 戌 夜 逆 阴 朱
12 亥 夜 顺 后 蛇
No 天干(F) 地盘(F) 昼贵(F) 夜贵(F)
1 甲 寅 丑 未
2 乙 辰 子 申
3 丙 巳 亥 酉
4 丁 未 亥 酉
5 戊 巳 丑 未
6 己 未 子 申
7 庚 申 丑 未
8 辛 戌 午 寅
9 壬 亥 巳 卯
10 癸 丑 巳 卯
11 空
12 空
月支参数(V) =MATCH(月支;Table2[地盘];0)
时支参数(V) =MATCH(时支;Table2[地盘];0)
月将加时(V) =月支参数-时支参数
日干参数(V) =MATCH(日干;Table3[天干];0)
昼贵参数(V) =MATCH(INDEX(Table3[昼贵];日干
参数);Table2[天盘];0)
夜贵参数(V) =MATCH(INDEX(Table3[夜贵];日干
参数);Table2[天盘];0)
昼贵顺逆(V) =INDEX(Table2[顺逆];昼贵参数)
夜贵顺逆(V) =INDEX(Table2[顺逆];夜贵参数)
昼夜(V) =INDEX(Table2[昼夜];时支参数)
Table 2:
Table 3:
天盘(V) =INDEX([地盘];MOD([@No]+月将加时-
1;12)+1)
昼贵(V) =INDEX(IF(昼贵顺逆="顺
";[顺];[逆]);MOD([@No]-昼贵参数;12)+1)
夜贵(V) =INDEX(IF(夜贵顺逆="顺
";[顺];[逆]);MOD([@No]-夜贵参数;12)+1)
昼夜合(V)=IF(昼夜="昼";CONCATENATE([@夜
贵];[@昼贵]);CONCATENATE([@昼
贵];[@夜贵]))
4 3 2 1
A =INDEX(Table2[昼
夜合]; MATCH(B4;
Table2[天盘];0))
=INDEX(Table2[
昼夜合];
MATCH(B3;
Table2[天盘];0))
=INDEX(Table2[昼
夜合]; MATCH(B2;
Table2[天盘];0))
=INDEX(Table2[昼夜
合]; MATCH(B1;
Table2[天盘];0))
B =MID(天盘;
FIND(C14;地盘);1)
=MID(天盘;
FIND(C14;地盘);1)
=MID(天盘;
FIND(C14;地盘);1)
=MID(天盘;
FIND(INDEX(Table3[
地盘];日干参数);地
盘);1)
C =B3 =日支 =B1 =日干
甲子转(V) =LET(r;FIND(日干;天
干);m;MATCH(CONCAT(日干;日
支);INDEX(甲子60;r;0);0);m*10-9)
六甲旬遁
旬空 (V)
=INDEX(Table2[地盘];MOD([@No]+
甲子转-2;12)+1)
主客 Result 六亲
土土 兄弟
火火 兄弟
木木 兄弟
水水 兄弟
金金 兄弟
土木 克我 妻财
火水 克我 妻财
木金 克我 妻财
水土 克我 妻财
金火 克我 妻财
土火 子孙
火木 子孙
木水 子孙
水金 子孙
金土 子孙
土水 我克 官鬼
火金 我克 官鬼
木土 我克 官鬼
水火 我克 官鬼
金木 我克 官鬼
土金 父母
火土 父母
木火 父母
水木 父母
金水 父母
九宗法
初传
中传
末传
月将与占时相同
月将与占时相冲
四课中有上克下,下贼上,上神遥克日干者和日干遥
克上神
四课中既无下贼上克,又无遥克
九宗法+六亲
九宗法+昼夜合
九宗法+六甲旬遁旬空
1
2
3
Complex : 大六壬
=INDEX(三传;MATCH(MIN(
九宗法);九宗法;0)
四课:
三转:
No 涉害
1 水
2 土水
3 木木
4 木
5 土木
6 火火土
7 火
8 土火土
9 金金
10 金
11 土金
12 水水
上 34 =C13
上下五行 35 =VLOOKUP(CONCATENATE(C28;C27);五行生
克;2;FALSE)
上日干阴阳 36 =IF(AND(C35<>"";C29=日干阴阳);"阴阳";"")
涉害 37 =LET(x;FIND(C13;天盘)-FIND(C13;地盘);
m;SEQUENCE(IF(x+1<=0;x+12+1;x+1);1;FIND(C13;地
盘);1); r;VLOOKUP(IF(m>12;m-12;m);
Table1;2;FALSE); z;TEXTJOIN("";TRUE;r);
IF(C35="";"";LEN(z)-LEN(SUBSTITUTE(z;C28;""))))
孟 38 =LET(m;CONCAT(MID(天盘;FIND(孟;地盘);1));
IF(C37="";"";LEN(m)-LEN(SUBSTITUTE(m;C13;""))))
仲 39 =LET(m;CONCAT(MID(天盘;FIND(仲;地盘);1));
IF(C37="";"";LEN(m)-LEN(SUBSTITUTE(m;C13;""))))
四课上日干五行
40
=VLOOKUP(CONCATENATE(日干五行;C27);五行生
克;2;FALSE)
四课上日干阴阳
41
=IF(AND(C40<>"";C29=日干阴阳);"阴阳";"")
下贼上 上克下
我克 = C 克我 = D Total = E
上下
45
=LET(m;四课
#;COUNTIFS(INDEX(m;2;0);我克克我))
=SUM(C45#)
阴阳
46
=LET(m;四课#;
COUNTIFS(INDEX(m;2;0);我克克我;
INDEX(m;3;0);阴阳))
=SUM(C46#)
涉害
47
=LET(m;四课#;
COUNTIFS(INDEX(m;2;0);我克克我;
INDEX(m;3;0);阴阳;
INDEX(m;4;0);涉害))
=SUM(C47#)
孟
48
=LET(m;四课#; IF(C46#>0;
COUNTIFS(INDEX(m;2;0);我克克
我;INDEX(m;3;0);阴
阳;INDEX(m;5;0);1);
COUNTIFS(INDEX(m;2;0);我克克
我;INDEX(m;5;0);1)))
=SUM(C48#)
仲
49
=LET(m;四课#;IF(C46#>0;
COUNTIFS(INDEX(m;2;0);我克克
我;INDEX(m;3;0);阴
阳;INDEX(m;6;0);1);
COUNTIFS(INDEX(m;2;0);我克克
我;INDEX(m;6;0);1)))
=SUM(C49#)
遥克
50
=LET(m;四课#;
COUNTIFS(INDEX(m;7;0);我克克我))
=SUM(C50#)
阴阳
51
=LET(m;四课
#;COUNTIFS(INDEX(m;7;0);我克克
我;INDEX(m;8;0);阴阳))
=SUM(C51#)
Unique
52
LET(m;四课#;
COUNTIFS(IN
DEX(m;1;0);"
><"&""))
四课#
四课A#
我克 =F44 克我 =G44
上下
45
=LET(m;四课#; r;INDEX(m;2;0)=F44;
IF(C45=1;FILTER(INDEX(m;1;0);r;"");""))
阴阳
46
=LET(m;四课#;
r;(INDEX(m;2;0)=F44)*(INDEX(m;3;0)=阴
阳);
IF(C46=1; FILTER(INDEX(m;1;0);r);""))
涉害
47
=LET(m;四课#;
r;(INDEX(m;2;0)=F44)*(INDEX(m;3;0)=阴
阳)*(INDEX(m;4;0)=涉害);
IF(C47=1; FILTER(INDEX(m;1;0);r);""))
孟
48
=LET(m;四课#;
r;(INDEX(m;2;0)=F44)*(INDEX(m;5;0)=1)
;
IF(C48=1;FILTER(INDEX(m;1;0);IF(C46>0
; r*(INDEX(m;3;0)=阴阳);r);"");""))
仲
49
=LET(m;四课#;
r;(INDEX(m;2;0)=F44)*(INDEX(m;6;0)=1)
;IF(C49=1;FILTER(INDEX(m;1;0);IF(C46>
0; r*(INDEX(m;3;0)=阴阳);r);"");""))
遥克
50
=LET(m;四课#; r;INDEX(m;7;0)=F44;
IF(C50=1; FILTER(INDEX(m;1;0);r);""))
阴阳
51
=LET(m;四课#;
r;(INDEX(m;7;0)=F44)*(INDEX(m;8;0)=阴
阳);
IF(C51=1; FILTER(INDEX(m;1;0);r);""))
Unique
52
C D E F
13 =MID(天盘;
FIND(C14;地盘);1)
=MID(天盘;
FIND(C14;地盘);1)
=MID(天盘;
FIND(C14;地盘);1)
=MID(天盘;
FIND(INDEX(Table3[
地盘];日干参数);地
盘);1)
14 =D13 =日支 =F13 =日干
孟# 巳 申 亥 寅
仲# 午 酉 子 卯
Table1
:
上五行 27 =MID(地盘五行;FIND(C13;地盘);1)
下五行 28 =MID(地盘五行;FIND(C14;地盘);1)
日干五行 =MID(天干五行;日干参数;1)
上阴阳 29 =MID(地盘阴阳;FIND(C13;地盘);1)
下阴阳 30 =MID(地盘阴阳;FIND(C14;地盘);1)
日干阴阳 =MID(天干阴阳;日干参数;1)
日干刑 =MID(刑;FIND(F13;地盘);1)
天干五行(F) 木木火火土土金金水水
地盘五行(F) 水土木木土火火土金金土水
天干阴阳(F) 阳阴阳阴阳阴阳阴阳阴
地盘阴阳(F) 阳阴阳阴阳阴阳阴阳阴阳阴
四课
Sequence
combine
with
Vlookup
涉害47=LET(m;四课#;MAX(INDEX(m;4;0)))
2
刑(F) 卯戌巳子自申自丑寅自未自
冲(F) 午未申酉戌亥子丑寅卯辰巳
驿马(F) 寅亥申巳寅亥申巳寅亥申巳
天干合(F) 未申戌亥丑寅辰巳未巳
地支合(F) 辰巳午未申酉戌亥子丑寅卯
NoName Category Criteria 初传 中传 末传
1 辛卯-3 Error =IF(CONCAT(日干;日支;“-”;FIND(“子”;天盘))=“辛卯-3“;[@No];"") 丑 亥 酉
2 戊戌-7 Error =IF(CONCAT(日干;日支;“-”;FIND(“子”;天盘))=“戊戌-7“; [@No];"") 巳 亥 巳
3 不虞格 伏吟法 =LET(m;四课A#;x;INDEX(m;1;3);
IF(AND(月将加时=0;x=1); [@No];""))
=LET(m;四课#;FILTER(INDEX(m;1;0);INDEX(m;2;0)<>"";"")) =LET(m;MID(刑;FIND([@初传];天
盘);1);IF(m="自"; 日支天盘;m))
=LET(m;FIND([@中传];天盘);
MID(IF(MID(刑;m;1)="自";冲;刑);m;1))
4 自任格 伏吟法 =LET(m;四课A#;x;INDEX(m;1;3);
IF(AND(月将加时=0;x=0;日干阴阳="阳";日干刑<>"自"); [@No];""))
=日干天盘 =LET(m;MID(刑;FIND([@初传];天
盘);1);IF(m="自";日支天盘;m))
=LET(m;FIND([@中传];天盘);IF(MID(
刑;m;1)="自";MID(冲;m;1);MID(刑;m;1)))
5 自信格 伏吟法 =LET(m;四课A#;x;INDEX(m;1;3);
IF(AND(月将加时=0;x=0;日干阴阳="阴";日干刑<>"自"); [@No];""))
=日支天盘 =LET(m;MID(刑;FIND([@初传];天
盘);1);IF(m="自"; 日干天盘;m))
=LET(m;FIND([@中传];天盘);IF(MID(
刑;m;1)="自";MID(冲;m;1);MID(刑;m;1)))
6 杜传格 伏吟法 =LET(m;四课A#;x;INDEX(m;1;3);
IF(AND(月将加时=0;x=0;日干刑="自"); [@No];""))
=日干天盘 =日支天盘 =MID(刑;FIND([@中传];IF(MID(刑;
FIND([@中传];天盘);1)="自";冲;天盘));1)
7 无依格 反吟法 =IF(AND(ABS(月将加时)=6;COUNTBLANK(Criteria9to18)<10); [@No];"") =INDEX(初传9to18;MATCH(MIN(Criteria9to18);Criteria9to18;0)) =MID(冲;FIND([@初传];地盘);1) =MID(冲;FIND([@中传];地盘);1)
8 无亲格 反吟法 =IF(AND(ABS(月将加时)=6;COUNTBLANK(Criteria9to18)=10); [@No];"") =MID(驿马;FIND(日支;地盘);1) =日支天盘 =日干天盘
9 重审课 贼克法 =LET(m;四课A#;x;INDEX(m;1;1);y;INDEX(m;1;3);
IF(AND(x=1;y>0; y<=3); [@No];""))
=LET(m;四课A#;x;INDEX(m;1;4);x) =MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1)
10元首课 贼克法 =LET(m;四课A#;x;INDEX(m;1;2);y;INDEX(m;1;3);
IF(AND(x=1;y>0;y<=2); [@No];""))
=LET(m;四课A#;x;INDEX(m;1;5);x) =MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1)
11比用课 比用法 =LET(m;四课A#;x;INDEX(m;1;1);y;INDEX(m;2;1);IF(AND(x>1;y=1);
[@No];""))
=LET(m;四课A#;x;INDEX(m;2;4);x) =MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1)
12知一课 比用法 =LET(m;四课A#;x;INDEX(m;1;2);y;INDEX(m;2;2);IF(AND(x>1;y=1);
[@No];""))
=LET(m;四课A#;x;INDEX(m;2;5);x) =MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1)
13见机格 涉害法 =LET(m;四课A#;x;INDEX(m;4;1);y;INDEX(m;4;2);IF(OR(x=1;y=1);
[@No];""))
=LET(m;四课A#; x;INDEX(m;4;1); y;INDEX(m;4;4);
z;INDEX(m;4;5);IF(x=1;y;z))
=MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1)
14察微格 涉害法 =LET(m;四课A#;x;INDEX(m;5;1);y;INDEX(m;5;2);
IF(OR(x=1;y=1); [@No];""))
=LET(m;四课A#; x;INDEX(m;5;1); y;INDEX(m;5;4);
z;INDEX(m;5;5);IF(x=1;y;z))
=MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1)
15涉害格 涉害法 =LET(m;四课A#;x;INDEX(m;3;3);IF(x=1; [@No];"")) =LET(m;四课A#; x;INDEX(m;3;1); y;INDEX(m;3;4);
z;INDEX(m;3;5);IF(x=1;y;z))
=MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1)
16缀瑕格 涉害法 =LET(m;四课A#;x;INDEX(m;3;3);IF(x>1; [@No];"")) =IF(日干阴阳="阳";日干天盘;日支) =MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1)
17蒿矢格 遥克法 =LET(m;四课A#;x;INDEX(m;8;3);y;INDEX(m;6;2);z;INDEX(m;7;2);
IF(AND(x>=3;OR(y=1;AND(y>1;z=1))); [@No];""))
=LET(m;四课A#; x;INDEX(m;6;2); y;INDEX(m;6;5);
z;INDEX(m;7;5);IF(x=1;y;z))
=MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1)
18弹射格 遥克法 =LET(m;四课A#;x;INDEX(m;8;3);y;INDEX(m;6;1);z;INDEX(m;7;1);
IF(AND(x>=3;OR(y=1;AND(y>1;z=1))); [@No];""))
=LET(m;四课A#; x;INDEX(m;6;1); y;INDEX(m;6;4);
z;INDEX(m;7;4);IF(x=1;y;z))
=MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1)
19虎视格 昴星法 =LET(m;四课A#;x;INDEX(m;8;3);IF(AND(x=4;日干阴阳="阳"); [@No];"")) =MID(天盘;FIND("酉";地盘);1) =日支天盘 =日干天盘
20冬蛇掩
目格
昴星法 =LET(m;四课A#;x;INDEX(m;8;3);IF(AND(x=4;日干阴阳="阴"); [@No];"")) =MID(地盘;FIND("酉";天盘);1) =日干天盘 =日支天盘
21别责法 别责法 =LET(m;四课A#;x;INDEX(m;8;3);IF(x=3; [@No];"")) =LET(x;MID(天干合;FIND(日干;天干);1);y;MID(地支合;FIND(日支;
地盘);1);IF(日干阴阳="阳";MID(天盘;FIND(x;地盘);1);y))
=日干天盘 =日干天盘
22八专法 八专法 =LET(m;四课A#;x;INDEX(m;8;3);IF(x=2; [@No];"")) =LET(x;FIND(日干天盘;天盘)+2;y;FIND(日支天盘;地盘)-
2;z;MOD(IF(日干阴阳="阳";x;y)-1;12)+1;MID(天盘;z;1))
=日干天盘 =日干天盘
九宗法
Search for NP problem
Objective:
1. Declare, Read and Write for the Array, Collection and Dictionary
2. Apply at Snake and Ladder game using do loop
3. Apply at Sudoku Solver using Back tracking Search
4. Apply at Tic Tac Toe using Search from game play
5. Apply at Monte Carlo Tree Search
6. Check the accuracy between actual with prediction
Why:
1. Reduce the interaction between worksheet function and VBA sub
procedure, then the speed will be more faster
2. To searching the best possible solution for solving NP problem
Array
Public arrA As Variant
ReDim arrA(1 To 8, 1 To 8)
arrA = Range(“A1:H8")
For row = 1 to 8
For col = 1 to 8
arrA(row,col) = cells(row,col)
Next
Next
Cells(13, "D").Resize(8, 8) = arrA
Collection with Class and Array
Set oColl = New clsMarkovChain
oColl.Board = Board
oColl.PlayerColor = PlayerColor
oColl.Position = Position
collA.Add oColl
Public collA As Collection
Public oColl As clsMarkovChain
ReDim arrt(1 To LastCol)
For i = 1 To collA.Count
Set oColl = collA(i)
arrA(i) = oColl.Board & "," &
oColl.PlayerColor &
oColl.Position & "," & result
Next
Cells(13, “D").Resize(1, collA.Count) = arrA
Enable Mircosoft Scripting Runtime
Dim dictA As New Scripting.Dictionary
For i = 1 To LastRow
If dictA.Exists(arrA(i, Col)) = True Then
dictA(arrA(i, Col)) = dictA(arrA(i, Col)) + 1
Else
dictA.Add arrA(i,Col), 1
End If
Next
ReDim arrA(1 To dictA.Count, 1 To 2)
Row = 1
For Each key In dictA
arrA(row, 1) = key
arrA(row, 2) = dictA(key)
row = row + 1
Next
Cells(13, “D").Resize(row-1,2) = arrA
Dictionary with Array
Snake and Ladder
From To Up/Down
1 38 Ladder
4 14 Ladder
9 31 Ladder
16 6 Snake
21 42 Ladder
28 84 Ladder
36 44 Ladder
47 26 Snake
49 11 Snake
51 67 Ladder
56 53 Snake
64 60 Snake
71 91 Ladder
80 100 Ladder
87 24 Snake
93 73 Snake
95 75 Snake
98 78 Snake
Start 0
Last 100
r = 0
Check = False
Do
'Add dice number
Randomize
Dice = Int((6 * Rnd) + 1)
Start = Start + Dice
'If more than 100
If Start > 100 Then Start = 200 - Start
'If hit the snake and ladder
For i = 1 To 18
If SnakeLadder(i, 1) = Start Then Start = SnakeLadder(i, 2)
Next
r = r + 1
If start = last Then Check = True
Loop Until Check = True
Find how many turn to finish the game? Looping
Input Data
Dice is
random from
1 to 6
Note: Random Integer Range
Int ((upperbound - lowerbound + 1) * Rnd + lowerbound)
Sudoku Solver
Constraint Propagation Search (Back Tracking)
(2) Hidden Single
IF(OR(COUNTIF(INDIRECT("Row"&[@Row]&"_"),N)=1,COUN
TIF(INDIRECT("Col"&[@Col]),N)=1,COUNTIF(INDIRECT("Bo
x"&[@Box]),N)=1),"",1)
N= 1, 2,3,4,5,6,7,8,9
=IF(COUNTIFS(INDIRECT("Table1[["&[@No]&"]:["&[@No]&"
]]"),[@Sum],Table1[N],N)=1,N,"")
No = Col, Row, Box
Sum = A to I, 1 to 9, A to I
N=1,2,3,4,5,6,7,8,9
(1) Naked Single
(1) Create a new copy of values for each recursive call to
search. The alternative is to keep track of each change to
values and undo the change when we hit a dead end.
Variable ordering (which square do we try first?)
• From Top to Bottom and Left to Right (Box1)
Value ordering (which digit do we try first for the square?)
• From Left to Right (Len1)
If Box1 = 1 And Len1 = 0 Then
MsgBox "Unsolvable Sudoku", vbExclamation
End If
If Len1 <= 0 Then
Range(Cells(Row1 + 1, 11), Cells(Row1 + 9, 20)).Clear
Range(Cells(Row0 + 1, 11), Cells(Row0 + 9, 20)).Copy Range("InputCopy")
Range(Cells(Box1 + 2, 22), Cells(Box1 + 2, 23)).Clear
Cells(Box1 + 1, 24) = Cells(Box1 + 1, 24) + 1
Cells(Box1 + 2, 24) = 1
Call FillLeftNumber
Else
Range(Cells(Row1 + 1, 11), Cells(Row1 + 9, 20)).Copy Range("InputCopy")
Cells(Box1 + 2, 24) = Cells(Box1 + 2, 24) + 1
Call FillLeftNumber
End If
(3) Fill Only One Possible
Tic Tac Toe
Create a Winner Determiner Function Search from game play
(1) Check Row, Column, Diagonal got
Win, Loss and Draw
(2) Check the number of empty
space for Row, Column and Diagonal
1. Collect the game play dataset in (Board,
Policy, Result)= Markov decision process
2. Check the empty space or legal move
got Player 1 Win, Player -1 Win and
Draw (for End game)
3. For the current state, check the win
possibility from the game play dataset
for Player 1 win, Player -1 win or Draw
for each policy (w/n) (for Middle game)
4. Calculate the win rate = (2)Empty space
+ (3)Dataset
5. Select the highest win rate, if got more
than one highest win rate, then
randomly select the highest win rate
1 2 3
Row 0 0 0
Col 0 0 0
Dia 0 0
Matrix to check empty space,
Win, Loss and Draw
Monte Carlo Tree Search (Simulation and Rollup)
1. Calculate the UCT
UCT(row, col) = w/n + C * Sqr(Log(N) / n), with C=Sqr(2)
1.1 If have prediction, suggestion PUCT
PUCT(row, col) = w/n + (PredictValue – w/n)/n + C *
PredictPolicy * Sqr(N) / (1 + n),
with C = Log((N+19652+1)/19652) + 2.5
2. Convert to List for Legal Move and UCT
i = 1
For row = 1 To 8
For col = 1 To 8
If LegalMove(row, col) <> "" Then
LegalMoveA(i) = LegalMove(row, col)
UCT(i) = UCT(row, col)
i = i + 1
End If
Next
Next
4. Extract the Max Value of UCT for the Legal Move
For i = 1 To col
If GetMaxValue <= UCT(i) Then GetMaxValue = UCT(i)
Next
j = 1
For i = 1 To col
If UCT(i) = GetMaxValue Then
LegalMoveA(j) = LegalMoveA(i)
j = j + 1
End If
Next
6. Random Select if Max Value of UCT is more than One
If j > 2 Then
Randomize
j = Int(1 + Rnd * (j - 1))
Position = LegalMoveA(j)
End If
3. Only One Legal Move
If i = 2 Then Position = LegalMoveA(1)
5. Only One Max Value of UCT
If j = 2 Then Position = LegalMoveA(1)
Predict from
Convolution Neural
Network or other
Evaluation
Observation Actual Training Predicted Classification
1 1 1 TP
2 0 0 TN
3 1 1 TP
4 1 0 FN
5 1 1 TP
6 1 0 FN
7 0 0 TN
8 0 0 TN
9 0 0 TN
10 0 1 FP
TP 3
FP 1
FN 2
TN 4
Precision (P) TP/(TP – FP) 0.75
Recall (R) TP/(TP – FN) 0.6
Accuracy (TP+TN)/(TP+FP+FN+TN) 0.7
F1 score 2*P*R/(P+R) 0.666666667
False positive rate (FPR) FP/(FP+TN) 0.2
True positive rate (TPR) TP/(TP+FN) 0.6
Check the accuracy
Root Mean Squared Error (RMSE).
=SQRT(SUMXMY2(Actual Training, Predicted)/No of Observation)
= 0.547722558
No d/dx equal
1 c 0
2 x^n n * x^(n-1)
3 a^x a^x * In a
4 a^u a^u * u' * In a
5 c * u c * u'
6 u * v u' * v + u * v'
7 u / v (v * u' - u * v') / v^2
8 f(g[u]) f'(g[u]) * g'[u] * u'
9 f(g[x]) f'(g[x]) * g'[x]
10 f(x)^ n n * f(x) ^ (n-1) * f'(x)
11 log a
(u)
u' / (u * In a)
12 In (u) u'/u
13 x^x x^x * (In x + 1)
c = constant
u = function
u' = d/dx [function]
v = function
v' = d/dx [function]
chain rule
In (y) = 1/y, if In (x) = 1/x
Logarithmic ,
Step 1: Both side "In",
Step 2: follow u * v,
Step 3: multiply y to the d/dx
The derivative of a function
An idea wants to be shared. And,
in the sharing, it becomes more
complex, more interesting, and
more likely to work for more
people.
—adrienne maree brown, writer
and activist

More Related Content

PDF
【逆轉勝】數學學測總複習講義
PDF
Ch5 範例
PDF
机器学习V10baochang svm
PDF
Scilab introduction(Scilab 介紹)
PPT
equations equations are different things ppt
PDF
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
PDF
財團法人大學入學考試中心基金會 113學年度學科能力測驗試題 數學B考科數學B考科
PDF
S101-06高雄中學
【逆轉勝】數學學測總複習講義
Ch5 範例
机器学习V10baochang svm
Scilab introduction(Scilab 介紹)
equations equations are different things ppt
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
財團法人大學入學考試中心基金會 113學年度學科能力測驗試題 數學B考科數學B考科
S101-06高雄中學

Similar to Using Ms Excel Google Sheets.pptx (20)

PPT
第3章 离散系统的时域分析
PDF
Hermite.pdf
PDF
Ch8 教學
PDF
PPT
241525第三章初等代数运算命令与例题
PDF
ZIP
1 2指數函數
PDF
20250711大學入學考試中心基金會_114學年度分科測驗第一天數學甲考科試題
PDF
Pseudo Random Code
PPTX
ncuma_pylab.pptx
PDF
Test(p1~p5)
PDF
PDF
Test(p1~p5)
PDF
龍騰[掌握]數學C複習講義
PDF
C1 discrete time signals and systems in the time-domain
PDF
指考乙公式
PPTX
Aaex6 group2(中英夾雜)
PDF
指考甲公式
PPTX
福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx
PPT
康軒 國中數學 3下 課本ppt 1-2 二次函數的最大值、最小值
第3章 离散系统的时域分析
Hermite.pdf
Ch8 教學
241525第三章初等代数运算命令与例题
1 2指數函數
20250711大學入學考試中心基金會_114學年度分科測驗第一天數學甲考科試題
Pseudo Random Code
ncuma_pylab.pptx
Test(p1~p5)
Test(p1~p5)
龍騰[掌握]數學C複習講義
C1 discrete time signals and systems in the time-domain
指考乙公式
Aaex6 group2(中英夾雜)
指考甲公式
福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx
康軒 國中數學 3下 課本ppt 1-2 二次函數的最大值、最小值
Ad

More from Chen Jian Yuan (19)

PPTX
Using Google Sheets statistics functions
PPTX
Art of War from Business Prespective.pptx
PPT
Time Management
PPT
Audit Of Imprest Petty Cash
PPT
Putrajaya.ppt
PPT
Pemandu Pelancong
PPT
Langkawi Cable Car
PPT
Marine Parks
PPT
Kuala Lumpur Part 1
PPT
Kl A Brief History
PPT
Malaysia At A Glance
PPT
Malaysia Toursim Centre
PPT
PPT
Muzium Negara
PPT
Taman Negara
PPT
Menara Kuala Lumpur
PPT
Malaysia My Second Home Programme
PPT
One Malaysia
PPT
Step By Step Showing Atm Scam
Using Google Sheets statistics functions
Art of War from Business Prespective.pptx
Time Management
Audit Of Imprest Petty Cash
Putrajaya.ppt
Pemandu Pelancong
Langkawi Cable Car
Marine Parks
Kuala Lumpur Part 1
Kl A Brief History
Malaysia At A Glance
Malaysia Toursim Centre
Muzium Negara
Taman Negara
Menara Kuala Lumpur
Malaysia My Second Home Programme
One Malaysia
Step By Step Showing Atm Scam
Ad

Recently uploaded (20)

PPTX
学校原版加州大学戴维斯分校毕业证UCD毕业证原版一比一
PPTX
3分钟读懂拉夫堡大学毕业证LU毕业证学历认证
PPTX
学校原版弗吉尼亚大学毕业证UVA毕业证原版一比一
PPTX
3分钟读懂南威尔士大学毕业证UCB毕业证学历认证
PPTX
3分钟读懂加州大学欧文分校毕业证UCI毕业证学历认证
PPTX
3分钟读懂福特汉姆大学毕业证Fordham毕业证学历认证
PDF
黑客技术,安全提分不是梦!我们采用最新的数据破解和隐藏技术,精准定位并修改你的成绩,同时采用深度隐藏技术确保你的操作不被发现。价格实惠,流程快速,事后无痕...
PPTX
学校原版加州大学戴维斯分校毕业证UC Davis毕业证原版一比一
PDF
01_Course_Introduction(20210916課後更新).pdf
PPTX
3分钟读懂利物浦约翰摩尔大学毕业证LJMU毕业证学历认证
PPTX
3分钟读懂圣安德鲁斯大学毕业证StAnd毕业证学历认证
PPTX
3分钟读懂伦敦南岸大学毕业证LSBU毕业证学历认证
PPTX
3分钟读懂渥太华大学毕业证uOttawa毕业证学历认证
PPTX
3分钟读懂诺里奇艺术大学毕业证NUA毕业证学历认证
PPTX
ONU and OLT from Baudcom Jenny training PPT
PPTX
3分钟读懂纽曼大学毕业证Newman毕业证学历认证
PPTX
3分钟读懂渥太华大学毕业证UO毕业证学历认证
PPTX
Chinese conversation Chinese conversation
PPTX
学校原版肯塔基大学毕业证UK毕业证原版一比一
PPTX
3分钟读懂滑铁卢大学毕业证Waterloo毕业证学历认证
学校原版加州大学戴维斯分校毕业证UCD毕业证原版一比一
3分钟读懂拉夫堡大学毕业证LU毕业证学历认证
学校原版弗吉尼亚大学毕业证UVA毕业证原版一比一
3分钟读懂南威尔士大学毕业证UCB毕业证学历认证
3分钟读懂加州大学欧文分校毕业证UCI毕业证学历认证
3分钟读懂福特汉姆大学毕业证Fordham毕业证学历认证
黑客技术,安全提分不是梦!我们采用最新的数据破解和隐藏技术,精准定位并修改你的成绩,同时采用深度隐藏技术确保你的操作不被发现。价格实惠,流程快速,事后无痕...
学校原版加州大学戴维斯分校毕业证UC Davis毕业证原版一比一
01_Course_Introduction(20210916課後更新).pdf
3分钟读懂利物浦约翰摩尔大学毕业证LJMU毕业证学历认证
3分钟读懂圣安德鲁斯大学毕业证StAnd毕业证学历认证
3分钟读懂伦敦南岸大学毕业证LSBU毕业证学历认证
3分钟读懂渥太华大学毕业证uOttawa毕业证学历认证
3分钟读懂诺里奇艺术大学毕业证NUA毕业证学历认证
ONU and OLT from Baudcom Jenny training PPT
3分钟读懂纽曼大学毕业证Newman毕业证学历认证
3分钟读懂渥太华大学毕业证UO毕业证学历认证
Chinese conversation Chinese conversation
学校原版肯塔基大学毕业证UK毕业证原版一比一
3分钟读懂滑铁卢大学毕业证Waterloo毕业证学历认证

Using Ms Excel Google Sheets.pptx

  • 1. Using Ms Excel or Google Sheets  Convolution Neural Network  Hidden Layer  Search for NP problem https://www.linkedin.com/in/a111chen @2022
  • 2. Convolution Neural Network Objective: 1) Find the Xn using the Kernel, Convolution, Relu and Pooling 2) Find the Wn using the Matrix, Linest or Solver Method 3) What if Xn have correlation with each other? Why: 1) To evaluate the pattern of the data 2) To predict the outcome for the new data from existing approximate function f(x) = W0X0 + W1X1 + W2X2 + …. WnXn, with X0 = 1 (Bias)
  • 3. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 0.333333 0 0.222222 0 0.333333 0 0 0.333333 0 0.333333 0 0.111111 0.222222 0 0.555556 0 0.222222 0 0 0.333333 0 0.333333 0 0.111111 0.333333 0 0.222222 0 0.333333 0 0 0.111111 0 0.111111 0 0.333333 0.333333 0 0 0 0 0 0 0.333333 0 0 0 0.111111 0 0 0.111111 0 0 0 0 0 0 0.333333 0 0 0 0 0 0 0.333333 0 0 0.111111 0 0 0 0.333333 0 0 0 0 0.333333 0 0 0 0 0.333333 0 0 0 0 0.111111 0 0 0 0 0.333333 0 0 0 0.111111 0.333333 0 0 0 0 0 0 0 0 0.111111 0 0 0.333333 0 0.111111 0 0.333333 0 0.111111 0 0.333333 0.333333 0.333333 0.333333 0.333333 0.555556 0.222222 0.333333 0.222222 0.333333 0 0.333333 0.333333 0.333333 0.111111 0.111111 0.333333 0.111111 0 0.333333 0.333333 0.333333 0.333333 0.555556 0.555556 0.555556 0.555556 0.333333 0.333333 0.333333 0.111111 Input Kernel Convolution & Relu Pooling (Xn) MAX(0,SUMPRODUCT($Kernel,Input)/9) MAX(Convolution&Relu) from 2x2 box Find the Xn using the Kernel, Convolution, Relu and Pooling
  • 4. 11 3 0 1 2 0 4 2 0 1 3 2 7 1 0 4 0 4 10 1 2 5 1 3 14 Matrix Xn: 5 x 5 W1 W2 W3 W4 W5 Matrix Wn: 5 x 1 45 30 15 20 92 Matrix WnXn: 5 x 1 X = Matrix Wn = MMULT( MINVERSE(Matrix Xn), Matrix WnXn) 1.423902 6.895467 -0.62519 1.313663 3.668504 = W1 W2 W3 W4 W5 Find the Wn using the Matrix Method
  • 5. 11 3 0 1 2 0 4 2 0 1 3 2 7 1 0 4 0 4 10 1 2 5 1 3 14 Matrix Xn: 5 x 5 W1 W2 W3 W4 W5 Matrix Wn: 5 x 1 45 30 15 20 92 Matrix WnXn: 5 x 1 X = Matrix Wn = Reverse order of TRANSPOSE(LINEST(Matrix WnXn, Matrix Xn, False, False)) 1.423902 6.895467 -0.62519 1.313663 3.668504 = W1 W2 W3 W4 W5 Find the Wn using the Linest Method
  • 6. 11 3 0 1 2 0 4 2 0 1 3 2 7 1 0 4 0 4 10 1 2 5 1 3 14 Matrix Xn: 5 x 5 W1 W2 W3 W4 W5 Matrix Wn: 5 x 1 45 30 15 20 92 Matrix WnXn: 5 x 1 X = Using solver 1) Matrix Wn put random number => Changing Variables 2) Predict Matrix WnXn = MMULT(Matrix Wn, Matrix Xn) 3) Error^2 = SUMXMY2(Predict Matrix WnXn,Matrix WnXn) => Set Objective Min W1X1 W2X2 W3X3 W4X4 W5X5 Predict Matrix WnXn : 5 x 1 1.423904 6.895465 -0.62518 1.313662 3.668504 W1 W2 W3 W4 W5 Find the Wn using the Solver Method Helper Matrix = SUMXMY2
  • 7. 0.5 0.5 0.3 0.1 0.5 0.5 0.3 0.1 Matrix A: 4 x 1 Matrix B: 1 x 4 Matrix C: 4 x 4 X Find Matrix C = Matrix C = MMULT(Matrix A, Matrix B) Matrix C = MMULT(Matrix A, TRANSPOSE(Matrix A)) ? 0.25 0.25 0.15 0.05 0.25 0.25 0.15 0.05 0.15 0.15 0.09 0.03 0.05 0.05 0.03 0.01 Matrix C: 4 x 4
  • 8. 1.00 -0.02 0.09 0.50 -0.02 1.00 -0.74 0.10 0.09 -0.74 1.00 0.54 0.50 0.10 0.54 1.00 Array D: Correlation W1 W2 W3 W4 Array C: Weighted 16.54872 20.07137 15.4287 15.44397 Array B: SD 17.865 23.2375 13.5875 17.81 Array A: Return Using solver Find Optimal for Weighted 1) Array C put random number => Changing Variables 2) Predict Portfolio SD = SQRT(SUMPRODUCT(MMULT(Array C, TRANSPOSE(Array C)), MMULT(Array B, TRANSPOSE(Array B )),Array D)) 3) Predict Portfolio Return = SUMPRODUCT(Array C, Array A) 4) Risk free rate = 2.02 5) Sharpe ratio = (Predict Portfolio SD – Risk free rate) / Predict Portfolio Return => Set Objective Max W1 W2 W3 W4 0.3 0.5 0.2 0 = What if Xn have correlation with each other?
  • 9. Hidden Layer Objective: 1. Table or Array (Table, {}) is useful for later check back the error more faster and look organise 2. (Randombetween) for random number between top and bottom. 3. (Mod) for rotation in circle like 24hour will go back to 0, 4. For String (mid, left, right, concat, textjoin, substitute, len, find) 5. Calculate using (If, Sumifs, Countifs, Let, and, or) with criteria 6. Lookup data using (Index, Match, Vlookup , Choose , Filter , Unique) for value between two array or table column 7. (Sequence) for generate a list of sequential numbers in an array Why: 1. To understand and calculate the China ancient mathematic 2. From simple to complex layer using table, formula, and array formula.
  • 10. Step 1 Possible Simulate Predict Error^2 5 70.8% 75.0% 17.64 9 29.2% 25.0% 17.64 Step 2 Possible Simulate Predict Error^2 4 48.9% 50.0% 1.21 8 51.1% 50.0% 1.21 Step 3 Possible Simulate Predict Error^2 4 51.3% 50.0% 1.69 8 48.7% 50.0% 1.69 Step 4 Possible Simulate Predict Error^2 6 5.5% 6.3% 0.56 7 29.2% 31.3% 4.20 8 44.2% 43.8% 0.20 9 21.1% 18.8% 5.52 Total 100.0% 100.0% 10.49 少 老 Total 阴 43.8% 6.3% 50.0% 阳 31.3% 18.8% 50.0% Total 75.0% 25.0% 100.0% Step 1 [@Bal0] = 50 -1 = 49 [@L1] = RANDBETWEEN(1,[@Bal0]) [@Pos1] =3+MOD([@L1]-2,4)+MOD([@Bal0]-[@L1]-1,4) Step 2 [@Bal1]=[@Bal0]-[@Pos1] [@L2] =RANDBETWEEN(1,[@Bal1]) [@Pos2] =3+MOD([@L2]-2,4)+MOD([@Bal1]-[@L2]-1,4) Step 3 [@Bal2]=[@Bal1]-[@Pos2] [@L3] =RANDBETWEEN(1,[@Bal2]) [@Pos3] =3+MOD([@L3]-2,4)+MOD([@Bal2]-[@L3]-1,4) Step 4 [@Pos4] =([@Bal2]-[@Pos3])/4 Simple : Possibility of 易经占卜 After simulate for 1000 times Note: Mod without Zero 1) MOD(n-1,d)+1 2) If(MOD(n,d) = 0, d, MOD(n,d))
  • 11. 0 1 2 3 4 5 6 7 000 001 010 011 100 101 110 111 坤(地) 震(雷) 坎(水) 兌(泽) 艮(山) 離(火) 巽(風) 乾(天) ←上卦 ↓下卦 02.坤為地 (kūn) 16.雷地豫 (yù) 08.水地比 (bǐ) 45.泽地萃 (cuì) 23.山地剥 (bō) 35.火地晋 (jìn) 20.風地观 (guān) 12.天地否 (pǐ) 坤(地) 24.地雷復 (fù) 51.震為雷 (zhèn) 03.水雷屯 (zhūn) 17.泽雷随 (suí) 27.山雷頤 (yí) 21.火雷噬嗑 (shì kè) 42.風雷益 (yì) 25.天雷无妄 (wú wàng) 震(雷) 07.地水師 (shī) 40.雷水解 (xiè) 29.坎為水 (kǎn) 47.泽水困 (kùn) 04.山水蒙 (méng) 64.火水未济 (wèi jì) 59.風水渙 (huàn) 06.天水訟 (sòng) 坎(水) 19.地泽臨 (lín) 54.雷泽歸妹 (guī mèi) 60.水泽節 (jié) 58.兌為泽 (duì) 41.山泽損 (sǔn) 38.火泽睽 (kuí) 61.風泽中孚 (zhōng fú) 10.天泽履 (lǚ) 兌(泽) 15.地山謙 (qiān) 62.雷山小過 (xiǎo guò) 39.水山蹇 (jiǎn) 31.泽山咸 (xián) 52.艮為山 (gèn) 56.火山旅 (lǚ) 53.風山漸 (jiàn) 33.天山遯 (dùn) 艮(山) 36.地火明夷 (míng yí) 55.雷火丰 (fēng) 63.水火既济 (jì jì) 49.泽火革 (gé) 22.山火賁 (bì) 30.離為火 (lí) 37.風火家人 (jiā rén) 13.天火同人 (tóng rén) 離(火) 46.地風升 (shēng) 32.雷風恒 (héng) 48.水風井 (jǐng) 28.泽風大過 (dà guò) 18.山風蠱 (gŭ) 50.火風鼎 (dǐng) 57.巽為風 (xùn) 44.天風姤 (gòu) 巽(風) 11.地天泰 (tài) 34.雷天大壯 (dà zhuàng) 05.水天需 (xū) 43.泽天夬 (guài) 26.山天大畜 (dà chù) 14.火天大有 (dà yǒu) 09.風天小畜 (xiǎo chù) 01.乾為天 (qián) 乾(天) No Pos4 本卦 互卦 变卦 错卦 综卦 6 7 1 0 1 0 1 5 8 0 1 0 1 0 4 7 1 0 1 0 0 3 8 0 1 0 1 1 2 8 0 0 0 1 0 1 7 1 0 1 0 1 上卦 5 2 5 2 4 下卦 1 4 1 6 5 卦 21.火雷噬嗑 (shì kè) 39.水山蹇 (jiǎn) 21.火雷噬嗑 (shì kè) 48.水風井 (jǐng) 22.山火賁 (bì) 本卦=IF(ISEVEN([@Pos4]),0,1) 互卦 = Pos4{5,4,3,4,3,2} 变卦=IF(OR([@Pos4]=6,[@Pos4]=9),[@错卦],[@本卦]) 错卦=IF(ISEVEN([@本卦]),1,0) 综卦=INDEX([本卦],[@No]) 上卦=BIN2DEC(LEFT(TEXTJOIN("",TRUE,Table1[本卦]),3)) 下卦=BIN2DEC(RIGHT(TEXTJOIN("",TRUE,Table1[本卦]),3)) 卦 = =INDEX(64卦,下卦+1,上卦+1) 64卦 = 8 x 8 Example Simple : 易经占卜
  • 12. Collect the date of 24节气 from website from year 1900 Into table Medium : Convert Calendar date to 八字 天干 = {甲乙丙丁戊己庚辛壬癸} 地支 = {子丑寅卯辰巳午未申酉戌亥} 天干日数 = {0246802468} 年 月 日 时 1986 2 10 10 Step 1 : calculate 年 年的参数=COUNTIFS(Table2[Date],"<="&DATE(年,月,日),Table2[节气],"立春")+36 年天干 =MID(天干,MOD(年的参数-1,10)+1,1) 年地支=MID(地支,MOD(年的参数-1,12)+1,1) 年柱=CONCAT(年天干,年地支) Step 2 : calculate 月 月的参数=COUNTIFS(Table2[Date],"<="&DATE(年,月,日))+13 月天干=MID(天干,MOD(月的参数-1,10)+1,1) 月地支 =MID(地支,MOD(月的参数-1,12)+1,1) 月柱=CONCAT(月天干,月地支) 年 月 日 时 丙寅 庚寅 乙酉 辛巳 Step 3 : calculate 日 日的参数=DATE(年,月,日)-DATE(1900,1,1)+12-IF(DATE(年,月,日)>DATE(1900,2,29),2,0) 日天干=MID(天干,MOD(日的参数-1,10)+1,1) 日地支=MID(地支,MOD(日的参数-1,12)+1,1) 日柱=CONCAT(日天干,日地支) Step 4 : calculate 时 时的参数=MOD(IF(ISEVEN(时),时,时+1),24)/2+1+MID(天干日数,FIND(日天干,天干),1) 时天干=MID(天干,MOD(时的参数-1,10)+1,1) 时地支=MID(地支,MOD(IF(ISEVEN(时),时,时+1),24)/2+1,1) 时柱=CONCAT(时天干,时地支) Note: If use google sheet =1 If use ms excel = 2 Input: Output: Adjust according to your 24节气table 大运 =IF(IF(命=“男”,“阳”,“阴”)=IF(ISODD(FIND(年天 干,天干)),"阳","阴"), "顺排","逆排") 起运数 =ABS(ROUND((INDEX(Table2[Date],IF(大运=“顺 排”, MATCH(DATE(年,月,日), Table2[Date],1)+1,MATCH(DATE(年,月, 日),Table2[Date],1)))-DATE(年,月,日))/3,0)) 1 Note: “IF” can use inside other formula to shorten 2 3
  • 13. 主客 生克 土土 同我 火火 同我 木木 同我 水水 同我 金金 同我 土木 克我 火水 克我 木金 克我 水土 克我 金火 克我 土火 生我 火木 生我 木水 生我 水金 生我 金土 生我 土水 我克 火金 我克 木土 我克 水火 我克 金木 我克 土金 我生 火土 我生 木火 我生 水木 我生 金水 我生 Result(F ) 十神(F) 简(F) 同同我 比肩 比 异同我 劫财 劫 同我生 食神 食 异我生 伤官 伤 同我克 偏财 才 异我克 正财 财 同克我 七杀 杀 异克我 正官 官 同生我 偏印 枭 异生我 正印 印 Table1 : 天干 (F) 地支 (F) Medium : Convert 八字 to 十神 1 地支 阴阳 五行 藏干 子 阳 水 癸 丑 阴 土 己癸辛 寅 阳 木 甲丙戊 卯 阴 木 乙 辰 阳 土 戊乙癸 巳 阴 火 丙戊庚 午 阳 火 丁己 未 阴 土 己丁乙 申 阳 金 庚壬戊 酉 阴 金 辛 戌 阳 土 戊辛丁 亥 阴 水 壬甲 天干 阴阳 五行 甲 阳 木 乙 阴 木 丙 阳 火 丁 阴 火 戊 阳 土 己 阴 土 庚 阳 金 辛 阴 金 壬 阳 水 癸 阴 水 五行生克(F) 十神(F) 2 x 5 = 10 Result (V) =CONCAT(IF(日天干阴阳=[@阴阳],"同"," 异"),VLOOKUP(CONCAT(日天干五行, [@五行]),五行生克,2,FALSE)) 十神 (V) =VLOOKUP([@Result],十神,2,FALSE) 简 (V) =VLOOKUP([@Result],十神,3,FALSE) 天干 = {甲乙丙丁戊己庚辛壬癸} 日天干参数 =FIND(日天干,天干) 日天干阴阳 =INDEX(Table1[阴阳],日天干参数) 日天干五行 =INDEX(Table1[五行],日天干参数) Note: (F)= Fixed (V)=Dynamic
  • 14. 年 运 转 1924 4 8 1944 5 0 1964 6 1 1984 7 2 2004 8 3 2024 9 4 2044 1 5 2064 2 6 2084 3 7 4 9 2 3 5 7 8 1 6 7 3 5 6 8 1 2 4 9 度 向 坐 宅 Col 0 子 午 坎 2 7.5 癸 丁 坎 3 22.5 丑 未 艮 1 37.5 艮 坤 艮 2 52.5 寅 申 艮 3 67.5 甲 庚 震 1 82.5 卯 酉 震 2 97.5 乙 辛 震 3 112.5 辰 戌 巽 1 127.5 巽 乾 巽 2 142.5 巳 亥 巽 3 157.5 丙 壬 离 1 172.5 午 子 离 2 187.5 丁 癸 离 3 202.5 未 丑 坤 1 217.5 坤 艮 坤 2 232.5 申 寅 坤 3 247.5 庚 甲 兑 1 262.5 酉 卯 兑 2 277.5 辛 乙 兑 3 292.5 戌 辰 乾 1 307.5 乾 巽 乾 2 322.5 亥 巳 乾 3 337.5 壬 丙 坎 1 352.5 子 午 坎 2 巽 离 坤 震 兑 艮 坎 乾 宅(F) 转(F) 1 2 3 1 阳 阴 阴 5 2 阴 阳 阳 6 3 阳 阴 阴 7 4 阴 阳 阳 8 5 阴 阳 阳 0 6 阴 阳 阳 1 7 阳 阴 阴 2 8 阴 阳 阳 3 9 阳 阴 阴 4 坐 向 100 6 1 8 7 5 3 2 4 9 4 9 2 3 5 7 8 1 6 1 6 阳图(F) 阴图(F) 1 2 3 后天八卦(F) Medium : 飞星布局 MOD(N+九运 -1,9)+1 6 5 0 1 3 4 2 7 110 101 000 001 011 100 010 111 巽 离 坤 震 兑 艮 坎 乾 后天八卦(F) Note: =DEC2BIN(N,3) 洛书(F) 坐(V) 向(V) 阴阳=Index(宅,Row,Col) 转 =Index(转,Row) =MOD(IF(坐="阳",阳图 ,阴图)+ 转 -1,9)+1 =MOD(IF(向="阳",阳图 ,阴图)+ 转 -1,9)+1 九运(F) 坐向(F)
  • 15. 巽 离 坤 震 兑 艮 坎 乾 4 9 2 3 5 7 8 1 6 宅 宅卦(V) 乾 1 兑 2 艮 3 离 4 坎 5 坤 6 震 7 巽 8 NNN 伏位 YYN 五鬼 NYY 天医 YNN 生气 YYY 延年 NYN 绝命 NNY 祸害 YNY 六煞 6 金 7 金 9 火 3 木 4 木 1 水 2 土 5 土 8 土 中(V) 八个方位(V) 主客 Result action 土土 当令 旺 火火 当令 旺 木木 当令 旺 水水 当令 旺 金金 当令 旺 土木 克我 煞 火水 克我 煞 木金 克我 煞 水土 克我 煞 金火 克我 煞 土火 生我 生 火木 生我 生 木水 生我 生 水金 生我 生 金土 生我 生 土水 我克 死 火金 我克 死 木土 我克 死 水火 我克 死 金木 我克 死 土金 我生 泄 火土 我生 泄 木火 我生 泄 水木 我生 泄 金水 我生 泄 爻一样 = N 爻不一样 = Y 后天八卦(F) 年 元 1864 上 1924 中 1984 下 2044 上 2104 中 2164 下 命卦(V) Medium : 八宅风水 宅卦转到0度 X 1 0度 乾 MOD(N+宅卦转 -1,9)+1 6 金 7 金 9 火 3 木 4 木 1 水 2 土 5 土 8 土 NNN 伏位 YYN 五鬼 NYY 天医 YNN 生气 YYY 延年 NYN 绝命 NNY 祸害 YNY 六煞 宅卦转(F) 2 3 4 五行生克(F) 三元(F) 宅(V) 九宫格(F)
  • 16. 甲子 甲戌 甲申 甲午 甲辰 甲寅 乙丑 乙亥 乙酉 乙未 乙巳 乙卯 丙寅 丙子 丙戌 丙申 丙午 丙辰 丁卯 丁丑 丁亥 丁酉 丁未 丁巳 戊辰 戊寅 戊子 戊戌 戊申 戊午 己巳 己卯 己丑 己亥 己酉 己未 庚午 庚辰 庚寅 庚子 庚戌 庚申 辛未 辛巳 辛卯 辛丑 辛亥 辛酉 壬申 壬午 壬辰 壬寅 壬子 壬戌 癸酉 癸未 癸巳 癸卯 癸丑 癸亥 甲 乙 丙 丁 戊 己 庚 辛 壬 癸 Row =MATCH(LEFT(时),天干,0) Col =MATCH(时,INDEX(60甲子,Row,0),0) 符头 =INDEX(INDEX(60甲子,1,0),,柱) 旬首 =INDEX(天干,Col+4) 宫 天盘星图(F) 天盘门图 (F) 八诈门图 (阳) (F) 八诈门图 (阴) (F) No 1 天蓬 休门 值符 值符 1 8 天任 生门 滕蛇 九天 2 3 天冲 伤门 太阴 九地 3 4 天辅 杜门 六合 玄武 4 9 天英 景门 勾陈 白虎 5 2 天芮 死门 朱雀 六合 6 7 天柱 惊门 九地 太阴 7 6 天心 开门 九天 滕蛇 8 5 天芮 死门 朱雀 六合 9 60甲子 天干 =INDEX(range,0,n) // entire column =INDEX(range,n,0) // entire row Complex : 奇门遁甲 Table 5:宫 Table 4:阳遁,阴遁 Total = 2 x 9 x 60 = 1080 possibility 值符宫 =MATCH(值符,Table5[天盘星图(F)],0) 值使宫 =MATCH(值使,Table5[天盘门图 (F)],0) 星宫 =MATCH(星,Table5[宫],0) 门宫 =MATCH(门,Table5[宫],0) 值符 =INDEX(Table4[天盘星图(v)],Col) 值使 =INDEX(Table4[天盘门图(v)],Col) 星 =IF(遁="阳",MOD(阳星+局-2,9)+1, MOD(阴星+局-2,9)+1) 门 =IF(遁="阳",MOD(阳门+局-2,9)+1, MOD(阴门+局-2,9)+1) 阳星 =CHOOSE(Row,CHOOSE(Col,1,2,3,4,5,6 ), 9,8,7,1,2,3,4,5,6) 阴星 =CHOOSE(Row,CHOOSE(Col,1,9,8,7,6,5 ), 2,3,4,1,9,8,7,6,5) 阳门 =MOD((Col-1)*10+Row-1,9)+1 阴门 =CHOOSE(MOD((Col-1)*10+Row-1,9)+1, 顺序(V) =INDEX([顺序(F)],IF(遁="阳",MOD([@阳 遁]-局,9)+1,MOD([@阴遁]+局-2,9)+1)) 天盘星图(V) =INDEX([天盘星图(F)],IF(遁="阳 ",MOD([@阳遁]+局-2,9)+1,MOD([@阴 遁]+局-2,9)+1)) 天盘门图(V) =INDEX([天盘门图(F)],IF(遁="阳 ",MOD([@阳遁]+局-2,9)+1,MOD([@阴 遁]+局-2,9)+1)) 地盘奇子(V) =INDEX(Table4[顺序(V)],[@宫]) 天盘奇子(V) =INDEX([地盘奇子(v)],MOD([@No]+值符宫-星宫- 1,8)+1) 天盘星图(V) =INDEX([天盘星图(F)],MOD([@No]+值符宫-星宫- 1,8)+1) 天盘门图(V) =INDEX([天盘门图 (F)],MOD([@No]+值使宫-门宫- 1,8)+1) 八诈门图(V) =INDEX(IF(遁="阳",[八诈门图 (阳) (F)],[八诈门图 (阴) (F)]),MOD([@No]-星宫,8)+1) 阳遁 阴遁 顺序(F) 天盘星图(F) 天盘门图(F) 1 1 戊 天蓬 休门 2 9 己 天芮 死门 3 8 庚 天冲 伤门 4 7 辛 天辅 杜门 5 6 壬 天芮 死门 6 5 癸 天心 开门 7 4 丁 天柱 惊门 8 3 丙 天任 生门 9 2 乙 天英 景门 时 遁, 局 时 遁, 局, 时 宫 遁, 局, 时,宫 1 2 3 4 5
  • 17. No 地盘(F) 昼夜(F) 顺逆(F) 顺(F) 逆(F) 1 子 夜 顺 贵 贵 2 丑 夜 顺 蛇 后 3 寅 夜 顺 朱 阴 4 卯 昼 顺 合 玄 5 辰 昼 顺 勾 常 6 巳 昼 逆 青 白 7 午 昼 逆 空 空 8 未 昼 逆 白 青 9 申 昼 逆 常 勾 10 酉 夜 逆 玄 合 11 戌 夜 逆 阴 朱 12 亥 夜 顺 后 蛇 No 天干(F) 地盘(F) 昼贵(F) 夜贵(F) 1 甲 寅 丑 未 2 乙 辰 子 申 3 丙 巳 亥 酉 4 丁 未 亥 酉 5 戊 巳 丑 未 6 己 未 子 申 7 庚 申 丑 未 8 辛 戌 午 寅 9 壬 亥 巳 卯 10 癸 丑 巳 卯 11 空 12 空 月支参数(V) =MATCH(月支;Table2[地盘];0) 时支参数(V) =MATCH(时支;Table2[地盘];0) 月将加时(V) =月支参数-时支参数 日干参数(V) =MATCH(日干;Table3[天干];0) 昼贵参数(V) =MATCH(INDEX(Table3[昼贵];日干 参数);Table2[天盘];0) 夜贵参数(V) =MATCH(INDEX(Table3[夜贵];日干 参数);Table2[天盘];0) 昼贵顺逆(V) =INDEX(Table2[顺逆];昼贵参数) 夜贵顺逆(V) =INDEX(Table2[顺逆];夜贵参数) 昼夜(V) =INDEX(Table2[昼夜];时支参数) Table 2: Table 3: 天盘(V) =INDEX([地盘];MOD([@No]+月将加时- 1;12)+1) 昼贵(V) =INDEX(IF(昼贵顺逆="顺 ";[顺];[逆]);MOD([@No]-昼贵参数;12)+1) 夜贵(V) =INDEX(IF(夜贵顺逆="顺 ";[顺];[逆]);MOD([@No]-夜贵参数;12)+1) 昼夜合(V)=IF(昼夜="昼";CONCATENATE([@夜 贵];[@昼贵]);CONCATENATE([@昼 贵];[@夜贵])) 4 3 2 1 A =INDEX(Table2[昼 夜合]; MATCH(B4; Table2[天盘];0)) =INDEX(Table2[ 昼夜合]; MATCH(B3; Table2[天盘];0)) =INDEX(Table2[昼 夜合]; MATCH(B2; Table2[天盘];0)) =INDEX(Table2[昼夜 合]; MATCH(B1; Table2[天盘];0)) B =MID(天盘; FIND(C14;地盘);1) =MID(天盘; FIND(C14;地盘);1) =MID(天盘; FIND(C14;地盘);1) =MID(天盘; FIND(INDEX(Table3[ 地盘];日干参数);地 盘);1) C =B3 =日支 =B1 =日干 甲子转(V) =LET(r;FIND(日干;天 干);m;MATCH(CONCAT(日干;日 支);INDEX(甲子60;r;0);0);m*10-9) 六甲旬遁 旬空 (V) =INDEX(Table2[地盘];MOD([@No]+ 甲子转-2;12)+1) 主客 Result 六亲 土土 兄弟 火火 兄弟 木木 兄弟 水水 兄弟 金金 兄弟 土木 克我 妻财 火水 克我 妻财 木金 克我 妻财 水土 克我 妻财 金火 克我 妻财 土火 子孙 火木 子孙 木水 子孙 水金 子孙 金土 子孙 土水 我克 官鬼 火金 我克 官鬼 木土 我克 官鬼 水火 我克 官鬼 金木 我克 官鬼 土金 父母 火土 父母 木火 父母 水木 父母 金水 父母 九宗法 初传 中传 末传 月将与占时相同 月将与占时相冲 四课中有上克下,下贼上,上神遥克日干者和日干遥 克上神 四课中既无下贼上克,又无遥克 九宗法+六亲 九宗法+昼夜合 九宗法+六甲旬遁旬空 1 2 3 Complex : 大六壬 =INDEX(三传;MATCH(MIN( 九宗法);九宗法;0) 四课: 三转:
  • 18. No 涉害 1 水 2 土水 3 木木 4 木 5 土木 6 火火土 7 火 8 土火土 9 金金 10 金 11 土金 12 水水 上 34 =C13 上下五行 35 =VLOOKUP(CONCATENATE(C28;C27);五行生 克;2;FALSE) 上日干阴阳 36 =IF(AND(C35<>"";C29=日干阴阳);"阴阳";"") 涉害 37 =LET(x;FIND(C13;天盘)-FIND(C13;地盘); m;SEQUENCE(IF(x+1<=0;x+12+1;x+1);1;FIND(C13;地 盘);1); r;VLOOKUP(IF(m>12;m-12;m); Table1;2;FALSE); z;TEXTJOIN("";TRUE;r); IF(C35="";"";LEN(z)-LEN(SUBSTITUTE(z;C28;"")))) 孟 38 =LET(m;CONCAT(MID(天盘;FIND(孟;地盘);1)); IF(C37="";"";LEN(m)-LEN(SUBSTITUTE(m;C13;"")))) 仲 39 =LET(m;CONCAT(MID(天盘;FIND(仲;地盘);1)); IF(C37="";"";LEN(m)-LEN(SUBSTITUTE(m;C13;"")))) 四课上日干五行 40 =VLOOKUP(CONCATENATE(日干五行;C27);五行生 克;2;FALSE) 四课上日干阴阳 41 =IF(AND(C40<>"";C29=日干阴阳);"阴阳";"") 下贼上 上克下 我克 = C 克我 = D Total = E 上下 45 =LET(m;四课 #;COUNTIFS(INDEX(m;2;0);我克克我)) =SUM(C45#) 阴阳 46 =LET(m;四课#; COUNTIFS(INDEX(m;2;0);我克克我; INDEX(m;3;0);阴阳)) =SUM(C46#) 涉害 47 =LET(m;四课#; COUNTIFS(INDEX(m;2;0);我克克我; INDEX(m;3;0);阴阳; INDEX(m;4;0);涉害)) =SUM(C47#) 孟 48 =LET(m;四课#; IF(C46#>0; COUNTIFS(INDEX(m;2;0);我克克 我;INDEX(m;3;0);阴 阳;INDEX(m;5;0);1); COUNTIFS(INDEX(m;2;0);我克克 我;INDEX(m;5;0);1))) =SUM(C48#) 仲 49 =LET(m;四课#;IF(C46#>0; COUNTIFS(INDEX(m;2;0);我克克 我;INDEX(m;3;0);阴 阳;INDEX(m;6;0);1); COUNTIFS(INDEX(m;2;0);我克克 我;INDEX(m;6;0);1))) =SUM(C49#) 遥克 50 =LET(m;四课#; COUNTIFS(INDEX(m;7;0);我克克我)) =SUM(C50#) 阴阳 51 =LET(m;四课 #;COUNTIFS(INDEX(m;7;0);我克克 我;INDEX(m;8;0);阴阳)) =SUM(C51#) Unique 52 LET(m;四课#; COUNTIFS(IN DEX(m;1;0);" ><"&"")) 四课# 四课A# 我克 =F44 克我 =G44 上下 45 =LET(m;四课#; r;INDEX(m;2;0)=F44; IF(C45=1;FILTER(INDEX(m;1;0);r;"");"")) 阴阳 46 =LET(m;四课#; r;(INDEX(m;2;0)=F44)*(INDEX(m;3;0)=阴 阳); IF(C46=1; FILTER(INDEX(m;1;0);r);"")) 涉害 47 =LET(m;四课#; r;(INDEX(m;2;0)=F44)*(INDEX(m;3;0)=阴 阳)*(INDEX(m;4;0)=涉害); IF(C47=1; FILTER(INDEX(m;1;0);r);"")) 孟 48 =LET(m;四课#; r;(INDEX(m;2;0)=F44)*(INDEX(m;5;0)=1) ; IF(C48=1;FILTER(INDEX(m;1;0);IF(C46>0 ; r*(INDEX(m;3;0)=阴阳);r);"");"")) 仲 49 =LET(m;四课#; r;(INDEX(m;2;0)=F44)*(INDEX(m;6;0)=1) ;IF(C49=1;FILTER(INDEX(m;1;0);IF(C46> 0; r*(INDEX(m;3;0)=阴阳);r);"");"")) 遥克 50 =LET(m;四课#; r;INDEX(m;7;0)=F44; IF(C50=1; FILTER(INDEX(m;1;0);r);"")) 阴阳 51 =LET(m;四课#; r;(INDEX(m;7;0)=F44)*(INDEX(m;8;0)=阴 阳); IF(C51=1; FILTER(INDEX(m;1;0);r);"")) Unique 52 C D E F 13 =MID(天盘; FIND(C14;地盘);1) =MID(天盘; FIND(C14;地盘);1) =MID(天盘; FIND(C14;地盘);1) =MID(天盘; FIND(INDEX(Table3[ 地盘];日干参数);地 盘);1) 14 =D13 =日支 =F13 =日干 孟# 巳 申 亥 寅 仲# 午 酉 子 卯 Table1 : 上五行 27 =MID(地盘五行;FIND(C13;地盘);1) 下五行 28 =MID(地盘五行;FIND(C14;地盘);1) 日干五行 =MID(天干五行;日干参数;1) 上阴阳 29 =MID(地盘阴阳;FIND(C13;地盘);1) 下阴阳 30 =MID(地盘阴阳;FIND(C14;地盘);1) 日干阴阳 =MID(天干阴阳;日干参数;1) 日干刑 =MID(刑;FIND(F13;地盘);1) 天干五行(F) 木木火火土土金金水水 地盘五行(F) 水土木木土火火土金金土水 天干阴阳(F) 阳阴阳阴阳阴阳阴阳阴 地盘阴阳(F) 阳阴阳阴阳阴阳阴阳阴阳阴 四课 Sequence combine with Vlookup 涉害47=LET(m;四课#;MAX(INDEX(m;4;0))) 2 刑(F) 卯戌巳子自申自丑寅自未自 冲(F) 午未申酉戌亥子丑寅卯辰巳 驿马(F) 寅亥申巳寅亥申巳寅亥申巳 天干合(F) 未申戌亥丑寅辰巳未巳 地支合(F) 辰巳午未申酉戌亥子丑寅卯
  • 19. NoName Category Criteria 初传 中传 末传 1 辛卯-3 Error =IF(CONCAT(日干;日支;“-”;FIND(“子”;天盘))=“辛卯-3“;[@No];"") 丑 亥 酉 2 戊戌-7 Error =IF(CONCAT(日干;日支;“-”;FIND(“子”;天盘))=“戊戌-7“; [@No];"") 巳 亥 巳 3 不虞格 伏吟法 =LET(m;四课A#;x;INDEX(m;1;3); IF(AND(月将加时=0;x=1); [@No];"")) =LET(m;四课#;FILTER(INDEX(m;1;0);INDEX(m;2;0)<>"";"")) =LET(m;MID(刑;FIND([@初传];天 盘);1);IF(m="自"; 日支天盘;m)) =LET(m;FIND([@中传];天盘); MID(IF(MID(刑;m;1)="自";冲;刑);m;1)) 4 自任格 伏吟法 =LET(m;四课A#;x;INDEX(m;1;3); IF(AND(月将加时=0;x=0;日干阴阳="阳";日干刑<>"自"); [@No];"")) =日干天盘 =LET(m;MID(刑;FIND([@初传];天 盘);1);IF(m="自";日支天盘;m)) =LET(m;FIND([@中传];天盘);IF(MID( 刑;m;1)="自";MID(冲;m;1);MID(刑;m;1))) 5 自信格 伏吟法 =LET(m;四课A#;x;INDEX(m;1;3); IF(AND(月将加时=0;x=0;日干阴阳="阴";日干刑<>"自"); [@No];"")) =日支天盘 =LET(m;MID(刑;FIND([@初传];天 盘);1);IF(m="自"; 日干天盘;m)) =LET(m;FIND([@中传];天盘);IF(MID( 刑;m;1)="自";MID(冲;m;1);MID(刑;m;1))) 6 杜传格 伏吟法 =LET(m;四课A#;x;INDEX(m;1;3); IF(AND(月将加时=0;x=0;日干刑="自"); [@No];"")) =日干天盘 =日支天盘 =MID(刑;FIND([@中传];IF(MID(刑; FIND([@中传];天盘);1)="自";冲;天盘));1) 7 无依格 反吟法 =IF(AND(ABS(月将加时)=6;COUNTBLANK(Criteria9to18)<10); [@No];"") =INDEX(初传9to18;MATCH(MIN(Criteria9to18);Criteria9to18;0)) =MID(冲;FIND([@初传];地盘);1) =MID(冲;FIND([@中传];地盘);1) 8 无亲格 反吟法 =IF(AND(ABS(月将加时)=6;COUNTBLANK(Criteria9to18)=10); [@No];"") =MID(驿马;FIND(日支;地盘);1) =日支天盘 =日干天盘 9 重审课 贼克法 =LET(m;四课A#;x;INDEX(m;1;1);y;INDEX(m;1;3); IF(AND(x=1;y>0; y<=3); [@No];"")) =LET(m;四课A#;x;INDEX(m;1;4);x) =MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1) 10元首课 贼克法 =LET(m;四课A#;x;INDEX(m;1;2);y;INDEX(m;1;3); IF(AND(x=1;y>0;y<=2); [@No];"")) =LET(m;四课A#;x;INDEX(m;1;5);x) =MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1) 11比用课 比用法 =LET(m;四课A#;x;INDEX(m;1;1);y;INDEX(m;2;1);IF(AND(x>1;y=1); [@No];"")) =LET(m;四课A#;x;INDEX(m;2;4);x) =MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1) 12知一课 比用法 =LET(m;四课A#;x;INDEX(m;1;2);y;INDEX(m;2;2);IF(AND(x>1;y=1); [@No];"")) =LET(m;四课A#;x;INDEX(m;2;5);x) =MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1) 13见机格 涉害法 =LET(m;四课A#;x;INDEX(m;4;1);y;INDEX(m;4;2);IF(OR(x=1;y=1); [@No];"")) =LET(m;四课A#; x;INDEX(m;4;1); y;INDEX(m;4;4); z;INDEX(m;4;5);IF(x=1;y;z)) =MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1) 14察微格 涉害法 =LET(m;四课A#;x;INDEX(m;5;1);y;INDEX(m;5;2); IF(OR(x=1;y=1); [@No];"")) =LET(m;四课A#; x;INDEX(m;5;1); y;INDEX(m;5;4); z;INDEX(m;5;5);IF(x=1;y;z)) =MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1) 15涉害格 涉害法 =LET(m;四课A#;x;INDEX(m;3;3);IF(x=1; [@No];"")) =LET(m;四课A#; x;INDEX(m;3;1); y;INDEX(m;3;4); z;INDEX(m;3;5);IF(x=1;y;z)) =MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1) 16缀瑕格 涉害法 =LET(m;四课A#;x;INDEX(m;3;3);IF(x>1; [@No];"")) =IF(日干阴阳="阳";日干天盘;日支) =MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1) 17蒿矢格 遥克法 =LET(m;四课A#;x;INDEX(m;8;3);y;INDEX(m;6;2);z;INDEX(m;7;2); IF(AND(x>=3;OR(y=1;AND(y>1;z=1))); [@No];"")) =LET(m;四课A#; x;INDEX(m;6;2); y;INDEX(m;6;5); z;INDEX(m;7;5);IF(x=1;y;z)) =MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1) 18弹射格 遥克法 =LET(m;四课A#;x;INDEX(m;8;3);y;INDEX(m;6;1);z;INDEX(m;7;1); IF(AND(x>=3;OR(y=1;AND(y>1;z=1))); [@No];"")) =LET(m;四课A#; x;INDEX(m;6;1); y;INDEX(m;6;4); z;INDEX(m;7;4);IF(x=1;y;z)) =MID(天盘;FIND([@初传];地盘);1)=MID(天盘;FIND([@中传];地盘);1) 19虎视格 昴星法 =LET(m;四课A#;x;INDEX(m;8;3);IF(AND(x=4;日干阴阳="阳"); [@No];"")) =MID(天盘;FIND("酉";地盘);1) =日支天盘 =日干天盘 20冬蛇掩 目格 昴星法 =LET(m;四课A#;x;INDEX(m;8;3);IF(AND(x=4;日干阴阳="阴"); [@No];"")) =MID(地盘;FIND("酉";天盘);1) =日干天盘 =日支天盘 21别责法 别责法 =LET(m;四课A#;x;INDEX(m;8;3);IF(x=3; [@No];"")) =LET(x;MID(天干合;FIND(日干;天干);1);y;MID(地支合;FIND(日支; 地盘);1);IF(日干阴阳="阳";MID(天盘;FIND(x;地盘);1);y)) =日干天盘 =日干天盘 22八专法 八专法 =LET(m;四课A#;x;INDEX(m;8;3);IF(x=2; [@No];"")) =LET(x;FIND(日干天盘;天盘)+2;y;FIND(日支天盘;地盘)- 2;z;MOD(IF(日干阴阳="阳";x;y)-1;12)+1;MID(天盘;z;1)) =日干天盘 =日干天盘 九宗法
  • 20. Search for NP problem Objective: 1. Declare, Read and Write for the Array, Collection and Dictionary 2. Apply at Snake and Ladder game using do loop 3. Apply at Sudoku Solver using Back tracking Search 4. Apply at Tic Tac Toe using Search from game play 5. Apply at Monte Carlo Tree Search 6. Check the accuracy between actual with prediction Why: 1. Reduce the interaction between worksheet function and VBA sub procedure, then the speed will be more faster 2. To searching the best possible solution for solving NP problem
  • 21. Array Public arrA As Variant ReDim arrA(1 To 8, 1 To 8) arrA = Range(“A1:H8") For row = 1 to 8 For col = 1 to 8 arrA(row,col) = cells(row,col) Next Next Cells(13, "D").Resize(8, 8) = arrA Collection with Class and Array Set oColl = New clsMarkovChain oColl.Board = Board oColl.PlayerColor = PlayerColor oColl.Position = Position collA.Add oColl Public collA As Collection Public oColl As clsMarkovChain ReDim arrt(1 To LastCol) For i = 1 To collA.Count Set oColl = collA(i) arrA(i) = oColl.Board & "," & oColl.PlayerColor & oColl.Position & "," & result Next Cells(13, “D").Resize(1, collA.Count) = arrA Enable Mircosoft Scripting Runtime Dim dictA As New Scripting.Dictionary For i = 1 To LastRow If dictA.Exists(arrA(i, Col)) = True Then dictA(arrA(i, Col)) = dictA(arrA(i, Col)) + 1 Else dictA.Add arrA(i,Col), 1 End If Next ReDim arrA(1 To dictA.Count, 1 To 2) Row = 1 For Each key In dictA arrA(row, 1) = key arrA(row, 2) = dictA(key) row = row + 1 Next Cells(13, “D").Resize(row-1,2) = arrA Dictionary with Array
  • 22. Snake and Ladder From To Up/Down 1 38 Ladder 4 14 Ladder 9 31 Ladder 16 6 Snake 21 42 Ladder 28 84 Ladder 36 44 Ladder 47 26 Snake 49 11 Snake 51 67 Ladder 56 53 Snake 64 60 Snake 71 91 Ladder 80 100 Ladder 87 24 Snake 93 73 Snake 95 75 Snake 98 78 Snake Start 0 Last 100 r = 0 Check = False Do 'Add dice number Randomize Dice = Int((6 * Rnd) + 1) Start = Start + Dice 'If more than 100 If Start > 100 Then Start = 200 - Start 'If hit the snake and ladder For i = 1 To 18 If SnakeLadder(i, 1) = Start Then Start = SnakeLadder(i, 2) Next r = r + 1 If start = last Then Check = True Loop Until Check = True Find how many turn to finish the game? Looping Input Data Dice is random from 1 to 6 Note: Random Integer Range Int ((upperbound - lowerbound + 1) * Rnd + lowerbound)
  • 23. Sudoku Solver Constraint Propagation Search (Back Tracking) (2) Hidden Single IF(OR(COUNTIF(INDIRECT("Row"&[@Row]&"_"),N)=1,COUN TIF(INDIRECT("Col"&[@Col]),N)=1,COUNTIF(INDIRECT("Bo x"&[@Box]),N)=1),"",1) N= 1, 2,3,4,5,6,7,8,9 =IF(COUNTIFS(INDIRECT("Table1[["&[@No]&"]:["&[@No]&" ]]"),[@Sum],Table1[N],N)=1,N,"") No = Col, Row, Box Sum = A to I, 1 to 9, A to I N=1,2,3,4,5,6,7,8,9 (1) Naked Single (1) Create a new copy of values for each recursive call to search. The alternative is to keep track of each change to values and undo the change when we hit a dead end. Variable ordering (which square do we try first?) • From Top to Bottom and Left to Right (Box1) Value ordering (which digit do we try first for the square?) • From Left to Right (Len1) If Box1 = 1 And Len1 = 0 Then MsgBox "Unsolvable Sudoku", vbExclamation End If If Len1 <= 0 Then Range(Cells(Row1 + 1, 11), Cells(Row1 + 9, 20)).Clear Range(Cells(Row0 + 1, 11), Cells(Row0 + 9, 20)).Copy Range("InputCopy") Range(Cells(Box1 + 2, 22), Cells(Box1 + 2, 23)).Clear Cells(Box1 + 1, 24) = Cells(Box1 + 1, 24) + 1 Cells(Box1 + 2, 24) = 1 Call FillLeftNumber Else Range(Cells(Row1 + 1, 11), Cells(Row1 + 9, 20)).Copy Range("InputCopy") Cells(Box1 + 2, 24) = Cells(Box1 + 2, 24) + 1 Call FillLeftNumber End If (3) Fill Only One Possible
  • 24. Tic Tac Toe Create a Winner Determiner Function Search from game play (1) Check Row, Column, Diagonal got Win, Loss and Draw (2) Check the number of empty space for Row, Column and Diagonal 1. Collect the game play dataset in (Board, Policy, Result)= Markov decision process 2. Check the empty space or legal move got Player 1 Win, Player -1 Win and Draw (for End game) 3. For the current state, check the win possibility from the game play dataset for Player 1 win, Player -1 win or Draw for each policy (w/n) (for Middle game) 4. Calculate the win rate = (2)Empty space + (3)Dataset 5. Select the highest win rate, if got more than one highest win rate, then randomly select the highest win rate 1 2 3 Row 0 0 0 Col 0 0 0 Dia 0 0 Matrix to check empty space, Win, Loss and Draw
  • 25. Monte Carlo Tree Search (Simulation and Rollup) 1. Calculate the UCT UCT(row, col) = w/n + C * Sqr(Log(N) / n), with C=Sqr(2) 1.1 If have prediction, suggestion PUCT PUCT(row, col) = w/n + (PredictValue – w/n)/n + C * PredictPolicy * Sqr(N) / (1 + n), with C = Log((N+19652+1)/19652) + 2.5 2. Convert to List for Legal Move and UCT i = 1 For row = 1 To 8 For col = 1 To 8 If LegalMove(row, col) <> "" Then LegalMoveA(i) = LegalMove(row, col) UCT(i) = UCT(row, col) i = i + 1 End If Next Next 4. Extract the Max Value of UCT for the Legal Move For i = 1 To col If GetMaxValue <= UCT(i) Then GetMaxValue = UCT(i) Next j = 1 For i = 1 To col If UCT(i) = GetMaxValue Then LegalMoveA(j) = LegalMoveA(i) j = j + 1 End If Next 6. Random Select if Max Value of UCT is more than One If j > 2 Then Randomize j = Int(1 + Rnd * (j - 1)) Position = LegalMoveA(j) End If 3. Only One Legal Move If i = 2 Then Position = LegalMoveA(1) 5. Only One Max Value of UCT If j = 2 Then Position = LegalMoveA(1) Predict from Convolution Neural Network or other Evaluation
  • 26. Observation Actual Training Predicted Classification 1 1 1 TP 2 0 0 TN 3 1 1 TP 4 1 0 FN 5 1 1 TP 6 1 0 FN 7 0 0 TN 8 0 0 TN 9 0 0 TN 10 0 1 FP TP 3 FP 1 FN 2 TN 4 Precision (P) TP/(TP – FP) 0.75 Recall (R) TP/(TP – FN) 0.6 Accuracy (TP+TN)/(TP+FP+FN+TN) 0.7 F1 score 2*P*R/(P+R) 0.666666667 False positive rate (FPR) FP/(FP+TN) 0.2 True positive rate (TPR) TP/(TP+FN) 0.6 Check the accuracy Root Mean Squared Error (RMSE). =SQRT(SUMXMY2(Actual Training, Predicted)/No of Observation) = 0.547722558 No d/dx equal 1 c 0 2 x^n n * x^(n-1) 3 a^x a^x * In a 4 a^u a^u * u' * In a 5 c * u c * u' 6 u * v u' * v + u * v' 7 u / v (v * u' - u * v') / v^2 8 f(g[u]) f'(g[u]) * g'[u] * u' 9 f(g[x]) f'(g[x]) * g'[x] 10 f(x)^ n n * f(x) ^ (n-1) * f'(x) 11 log a (u) u' / (u * In a) 12 In (u) u'/u 13 x^x x^x * (In x + 1) c = constant u = function u' = d/dx [function] v = function v' = d/dx [function] chain rule In (y) = 1/y, if In (x) = 1/x Logarithmic , Step 1: Both side "In", Step 2: follow u * v, Step 3: multiply y to the d/dx The derivative of a function
  • 27. An idea wants to be shared. And, in the sharing, it becomes more complex, more interesting, and more likely to work for more people. —adrienne maree brown, writer and activist