查看完整版本 : 我的象棋程式新模式:超級快增強模式

xianrenb 2018-10-27 02:58 PM

我的象棋程式新模式:超級快增強模式

先來分享對局,是我的象棋程式超級快增強模式。
限時 20 分鐘/ 40 着。

車馬象士將士象馬車 紅 黑
|+++++++|    
|砲+/+\+砲| 帥 將
卒+卒+卒+卒+卒 仕 士
+-------+ 相 象
+-------+ 傌 馬
兵+兵+兵+兵+兵 俥 車
|炮+\+/+炮| 炮 砲
|+++++++| 兵 卒
俥傌相仕帥仕相傌俥    

1:傌八進九
2:象3進5
3:相三進五
4:馬2進4
5:仕六進五
6:車1平3
7:傌二進三
8:砲8平6
9:俥一平三
10:馬8進9

+-車士將士象-車 紅 黑
|++馬++++|    
|砲+/象砲+#馬 帥 將
卒+卒+卒+卒+卒 仕 士
+-------+ 相 象
+-------+ 傌 馬
兵+兵+兵+兵+兵 俥 車
傌炮+\相/傌炮| 炮 砲
|+++仕+++| 兵 卒
俥-相/帥仕俥-+    

11:兵三進一
12:車9平8
13:傌三進四
14:卒9進1
15:俥九進一
16:士6進5
17:兵九進一
18:車8進5
19:俥九平六
20:砲2平4

+-車士將/象-+ 紅 黑
|++馬士+++|    
|#+砲象砲+#馬 帥 將
卒+卒+卒+卒+# 仕 士
+-------卒 相 象
兵----傌兵車+ 傌 馬
#+兵+兵+#+兵 俥 車
傌炮+\相/+炮| 炮 砲
|++俥仕+++| 兵 卒
+-相/帥仕俥-+    

21:傌九進八
22:卒7進1
23:傌八進九
24:卒7進1
25:俥三進四
26:車8平7
27:相五進三
28:馬9進8
29:傌四進三
30:馬8進9

+-車士將/象-+ 紅 黑
|++馬士+++|    
|#+砲象砲+#| 帥 將
傌+卒+卒+傌+# 仕 士
+-------卒 相 象
兵-----相-+ 傌 馬
#+兵+兵+#+馬 俥 車
|炮+\+/+炮| 炮 砲
|++俥仕+++| 兵 卒
+-相/帥仕--+    

31:傌三退一
32:馬9進7
33:炮八平五
34:馬7退5
35:炮二進七
36:砲6退2
37:炮二退七
38:砲6進2
39:俥六進二
40:馬5進7

+-車士將/象-+ 紅 黑
|++馬士+++|    
|#+砲象砲+#| 帥 將
傌+卒+卒+#+# 仕 士
+-------傌 相 象
兵-----相-+ 傌 馬
#+兵俥#+#+# 俥 車
|#+\炮/馬炮| 炮 砲
|+++仕+++| 兵 卒
+-相/帥仕--+    

41:炮二進七
42:士5退6
43:傌一進三
44:砲6平8
45:仕五進四
46:砲8進7
47:仕四後進五
48:砲4平1
49:傌三進五
50:馬7進6

+-車士將士象炮+ 紅 黑
|++馬++++|    
砲#+/傌\+#| 帥 將
傌+卒+卒+#+# 仕 士
+-------+ 相 象
兵-----相-+ 傌 馬
#+兵俥#+#+# 俥 車
|#+\炮仕+#| 炮 砲
|+++仕+++| 兵 卒
+-相/帥馬-砲+    

51:帥五平四
52:將5進1
53:傌五退七
54:砲1平5
55:俥六進五
56:將5退1
57:傌七進五
58:士4進5
59:傌五進三

+-車\將士象炮+ 紅 黑
|++俥士+傌+|    
|#+/+\+#| 帥 將
傌+#+卒+#+# 仕 士
+-------+ 相 象
兵-----相-+ 傌 馬
#+兵+#+#+# 俥 車
|#+\炮仕+#| 炮 砲
|+++仕+++| 兵 卒
+-相/-帥-砲+    

(紅勝)

xianrenb 2018-10-27 03:12 PM

[quote]原帖由 [i]xianrenb[/i] 於 2018-10-27 02:58 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=489602226&ptid=27810094][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
先來分享對局,是我的象棋程式超級快增強模式。
限時 20 分鐘/ 40 着。

車馬象士將士象馬車 紅 黑
|+++++++|    
|砲+/+\+砲| 帥 將
卒+卒+卒+卒+卒 仕 士
+-------+ 相 象
+-------+ 傌 馬
兵+兵+兵+兵+兵 俥 車
|炮+\+/+炮| 炮 砲
|+++++++| 兵 卒
俥傌相仕帥仕相傌俥    

1:傌八進 ... [/quote]

試過超級快模式的方式後,我就在想如何可以把等效分支減到盡。
最終就想到超級快增強模式出來。
後來,又發現原來我的算法,在現有參數配置/記憶體限制下,並不能有效發揮威力。
所以又改良了這兩種算法,使現有/較差的設定下,都可以走出良好的效果。

然而,又發現了時限短的話,走出的棋或會出問題。
要發揮威力的話,看來要用到每着約 30 秒級的設定。
或許有較多記憶體的話,可以用較好的設定,時限就不必這樣長也可以有好的表現。

不論如何,每着 30 秒級就是走出 1 樓的效果。
我看如果說當中有走差棋的話,也算是無好棋可走,逼着亂走而成的了。

xianrenb 2018-10-28 09:49 AM

[quote]原帖由 [i]xianrenb[/i] 於 2018-10-27 03:12 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=489602797&ptid=27810094][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]


試過超級快模式的方式後,我就在想如何可以把等效分支減到盡。
最終就想到超級快增強模式出來。
後來,又發現原來我的算法,在現有參數配置/記憶體限制下,並不能有效發揮威力。
所以又改良了這兩種算法,使現有/較差的設定下,都可以走出良好的效果。

然而,又發現了時限短的話,走出的棋或會出問題。
要發揮威力的話,看來要用到每着約 30 秒級的設定。
或許有較多記憶體的話,可以用較好的 ... [/quote]

經過測試,發現改良後的兩種算法/模式,變成已能解一般殘局。
只是不如正常模式那樣好。
這兩種模式,看來已夠全面了。

catjoke 2018-10-28 02:21 PM

閣下不覺得啲車 躲在死角睡覺嗎?
頭卅回合,離奇貪食兵
其實要另外加運算計法:
以前這版有提及過黑白棋的思考模式,
其中一點就是令自己的選擇去到最多!而且令對手的選擇減到最少!
相部車且上仕,極不通順的睡覺。
橫車長期宅相田,不上河頭,也是怪異!

舉個例:
31: 俥六進三 補相兼高頭車
就不會進炮將軍完,又退回原位
甚至思考棄炮,馬食中象跳槽入殺!

一直強調,對局是找出對方的價值觀漏洞,再將它擴大化成局。

xianrenb 2018-10-28 03:17 PM

[quote]原帖由 [i]catjoke[/i] 於 2018-10-28 02:21 PM 發表 [url=https://www.discuss.com.hk/redirect.php?goto=findpost&pid=489648130&ptid=27810094][img]https://www.discuss.com.hk/images/common/back.gif[/img][/url]
閣下不覺得啲車 躲在死角睡覺嗎?
頭卅回合,離奇貪食兵
其實要另外加運算計法:
以前這版有提及過黑白棋的思考模式,
其中一點就是令自己的選擇去到最多!而且令對手的選擇減到最少!
相部車且上仕,極不通順的睡覺。
橫車長期宅相田,不上河頭,也是怪異!

舉個例:
31: 俥六進三 補相兼高頭車
就不會進炮將軍完,又退回原位
甚至思考棄炮,馬食中象跳槽入殺!

一直強調,對局是 ... [/quote]

這次電腦對電腦,或許對於有經驗的棋手來說走得不太好。
但是我可以解釋,為何我覺得這個算法,其實已做得相當不錯。

首先,程式的 NPS 值大約是 50,000 ~ 100,000 。
因為用的電腦語言/環境會間中進行所謂的(記憶體)垃圾收集。
不知何故,誇張時可用大約一半時間,甚至更多來進行這件事。
算起來, 30 秒的時間,只可分析約 30 * 50,000 = 1,500,000 個局面左右。
這個數字,其實對比用 C/C++ 寫的象棋引擎來說,可能只是一兩秒的事。

我的程式的超級快增強模式,大約等效分支數是 2 。
即是前面數字,大約最多做到 log(1,500,000)/log(2) ~= 20.5 級/層 。
但同時這種級數,最差/最短的分支,只可以做到 4 層左右。
而且,因為設定/記憶體的限制,這個最壞情況,看來很容易發生。

所以,這個程式的表現也就可以說是,會確保 4 着內的變化是不敗的、保本的。
當然同時,對於會加深的分支,會找最佳變化。
而且也並不差:最深有約 20 層效果。

說回棋局,第 31 着的選擇不走車六進三,就是說這個分支沒有特別加深,甚至可能得最差的 3 、 4 層分析。
所以算出的變化/分數,不如馬三退一去卒保相那樣直接簡單。
頁: [1]
查看完整版本: 我的象棋程式新模式:超級快增強模式