SlideShare a Scribd company logo
1 of 27
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

Similar to Using Ms Excel Google Sheets.pptx

241525第三章初等代数运算命令与例题
241525第三章初等代数运算命令与例题241525第三章初等代数运算命令与例题
241525第三章初等代数运算命令与例题gwadhysys
 
ncuma_pylab.pptx
ncuma_pylab.pptxncuma_pylab.pptx
ncuma_pylab.pptxNCU MCL
 
Test(p1~p5)
Test(p1~p5)Test(p1~p5)
Test(p1~p5)Sam Chen
 
Test(p1~p5)
Test(p1~p5)Test(p1~p5)
Test(p1~p5)Sam Chen
 
龍騰[掌握]數學C複習講義
龍騰[掌握]數學C複習講義龍騰[掌握]數學C複習講義
龍騰[掌握]數學C複習講義lungtengtech
 
C1 discrete time signals and systems in the time-domain
C1 discrete time signals and systems in the time-domainC1 discrete time signals and systems in the time-domain
C1 discrete time signals and systems in the time-domainPei-Che Chang
 
指考乙公式
指考乙公式指考乙公式
指考乙公式zoayzoay
 
Aaex6 group2(中英夾雜)
Aaex6 group2(中英夾雜)Aaex6 group2(中英夾雜)
Aaex6 group2(中英夾雜)Shiang-Yun Yang
 
指考甲公式
指考甲公式指考甲公式
指考甲公式zoayzoay
 
福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx
福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx
福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptxyantingguo2008
 
康軒 國中數學 3下 課本ppt 1-2 二次函數的最大值、最小值
康軒 國中數學 3下 課本ppt 1-2 二次函數的最大值、最小值康軒 國中數學 3下 課本ppt 1-2 二次函數的最大值、最小值
康軒 國中數學 3下 課本ppt 1-2 二次函數的最大值、最小值Jimmy Ma
 

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

Hermite.pdf
Hermite.pdfHermite.pdf
Hermite.pdf
 
Ch8
Ch8Ch8
Ch8
 
Ch8 教學
Ch8 教學Ch8 教學
Ch8 教學
 
241525第三章初等代数运算命令与例题
241525第三章初等代数运算命令与例题241525第三章初等代数运算命令与例题
241525第三章初等代数运算命令与例题
 
Ch5
Ch5Ch5
Ch5
 
1 2指數函數
1 2指數函數1 2指數函數
1 2指數函數
 
Pseudo Random Code
Pseudo Random CodePseudo Random Code
Pseudo Random Code
 
ncuma_pylab.pptx
ncuma_pylab.pptxncuma_pylab.pptx
ncuma_pylab.pptx
 
Test(p1~p5)
Test(p1~p5)Test(p1~p5)
Test(p1~p5)
 
Test(p1~p5)
Test(p1~p5)Test(p1~p5)
Test(p1~p5)
 
0331
03310331
0331
 
龍騰[掌握]數學C複習講義
龍騰[掌握]數學C複習講義龍騰[掌握]數學C複習講義
龍騰[掌握]數學C複習講義
 
C1 discrete time signals and systems in the time-domain
C1 discrete time signals and systems in the time-domainC1 discrete time signals and systems in the time-domain
C1 discrete time signals and systems in the time-domain
 
指考乙公式
指考乙公式指考乙公式
指考乙公式
 
Aaex6 group2(中英夾雜)
Aaex6 group2(中英夾雜)Aaex6 group2(中英夾雜)
Aaex6 group2(中英夾雜)
 
指考甲公式
指考甲公式指考甲公式
指考甲公式
 
福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx
福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx
福建省福州大学2019年暑假物理竞赛夏令营-物理奥赛进阶之路:0-1+微积分初步+40张ppt.pptx
 
康軒 國中數學 3下 課本ppt 1-2 二次函數的最大值、最小值
康軒 國中數學 3下 課本ppt 1-2 二次函數的最大值、最小值康軒 國中數學 3下 課本ppt 1-2 二次函數的最大值、最小值
康軒 國中數學 3下 課本ppt 1-2 二次函數的最大值、最小值
 
Ppt 51-77
Ppt 51-77Ppt 51-77
Ppt 51-77
 
Ppt 51-77
Ppt 51-77Ppt 51-77
Ppt 51-77
 

More from Chen Jian Yuan

More from Chen Jian Yuan (19)

Using Google Sheets statistics functions
Using Google Sheets statistics functionsUsing Google Sheets statistics functions
Using Google Sheets statistics functions
 
Art of War from Business Prespective.pptx
Art of War from Business Prespective.pptxArt of War from Business Prespective.pptx
Art of War from Business Prespective.pptx
 
Time Management
Time ManagementTime Management
Time Management
 
Audit Of Imprest Petty Cash
Audit Of Imprest Petty CashAudit Of Imprest Petty Cash
Audit Of Imprest Petty Cash
 
Putrajaya.ppt
Putrajaya.pptPutrajaya.ppt
Putrajaya.ppt
 
Pemandu Pelancong
Pemandu PelancongPemandu Pelancong
Pemandu Pelancong
 
Langkawi Cable Car
Langkawi Cable CarLangkawi Cable Car
Langkawi Cable Car
 
Marine Parks
Marine ParksMarine Parks
Marine Parks
 
Kuala Lumpur Part 1
Kuala Lumpur Part 1Kuala Lumpur Part 1
Kuala Lumpur Part 1
 
Kl A Brief History
Kl  A Brief HistoryKl  A Brief History
Kl A Brief History
 
Malaysia At A Glance
Malaysia At A GlanceMalaysia At A Glance
Malaysia At A Glance
 
Malaysia Toursim Centre
Malaysia Toursim CentreMalaysia Toursim Centre
Malaysia Toursim Centre
 
Perak
PerakPerak
Perak
 
Muzium Negara
Muzium NegaraMuzium Negara
Muzium Negara
 
Taman Negara
Taman NegaraTaman Negara
Taman Negara
 
Menara Kuala Lumpur
Menara Kuala LumpurMenara Kuala Lumpur
Menara Kuala Lumpur
 
Malaysia My Second Home Programme
Malaysia My Second Home ProgrammeMalaysia My Second Home Programme
Malaysia My Second Home Programme
 
One Malaysia
One MalaysiaOne Malaysia
One Malaysia
 
Step By Step Showing Atm Scam
Step By Step Showing Atm ScamStep By Step Showing Atm Scam
Step By Step Showing Atm Scam
 

Recently uploaded

加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制bairnshajjes
 
Grade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptxGrade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptxPriscilleXu
 
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书kathrynalvarez364
 
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...黑客 接单【TG/微信qoqoqdqd】
 
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单jakepaige317
 
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书kathrynalvarez364
 
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制kathrynalvarez364
 

Recently uploaded (7)

加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
加急代办一个日本鹿儿岛纯心女子大学学位记🌈学习成绩单电子版定制🌈仿制荷兰大学毕业证🌈日语JLPT证书定制
 
Grade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptxGrade 6 Lesson 7 Environment Protection.pptx
Grade 6 Lesson 7 Environment Protection.pptx
 
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
布莱德福德大学毕业证制作/英国本科学历如何认证/购买一个假的香港中文大学专业进修学院硕士学位证书
 
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
我了解到黑客在某些领域拥有卓越的技术能力,特别是在处理系统漏洞方面。在当前的情境下,如果我想要改变我的毕业成绩,他们的帮助或许是我唯一可行的选择。【微 t...
 
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
日本九州齿科大学毕业证制作🚩定制本科卒业证书🚩哪里可以购买假美国西南基督复临安息日会大学成绩单
 
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
澳洲圣母大学毕业证制作/加拿大硕士学历代办/购买一个假的中央警察大学硕士学位证书
 
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
哪里可以购买日本神奈川县立保健福祉大学学位记/录取通知书可以制作吗/补办马来西亚大学文凭/CIA证书定制
 

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