伊莉討論區

標題: 中國象棋局面價值計算法 [打印本頁]

作者: blazesboy    時間: 2019-3-22 09:01 PM     標題: 中國象棋局面價值計算法

近來, 小弟花了點功夫修改了黃少龍的計算法. 大概的做法是先定立局面計算公式, 但當中的一些常數/參數還沒固定. 而把這些數值固定的方法, 是透過一百個已知優勢(大於+2分), 均勢, 或劣勢(小於-2分)的經典局面透過最優法擬合出來. 現將結果分享如下(當中的計算只應用於輪到我方走的局面).

局面價值 = 局面固有能 + 局面動能 + 局面控制勢能 + 局面威懾勢能
註: 這個新的計算方法對於人對象棋理解有相對高的聯繫, 而且計算比黃少龍的方法更簡單(當中的乘除數更方便心算), 甚至可以不用計算機大概估算出來. 對於一般愛好者在審局時(尤其是在看不棋局關鍵焦點時)有一定參考性.

1. 棋子的固有能:
兵、卒= 1 分,   仕/相、士/象 = 2 分,   馬、炮= 4 分,   車 = 8 分
這個是根據擬合出來的數值取其四捨五入的整數. 很神奇, 這跟黃少龍提出的數值一致!
局面的固有能為:  我方的現存強子總固有能 - 對方的現存強子總固有能

2. 動能:
黃少龍提出的計算法是考慮車, 馬和炮的最大動能都是一樣(=1).
但是小弟將這個最大值改成一個未知數後, 發覺車和馬的動能最大值大概為2, 而炮的動能最大值大概為1. 一個比較方便的計算方式如下: **
車 = 可走步數 x 0.1 (10分之一),
馬 = 可走步數 x 0.25 (4分之一),
炮 = 可走步數 x 0.05 (20分之一)
局面的動能為:  我方的現存強子總動能 - 對方的現存強子總動能
** 補註: 若改為只考慮"有效動能" (請看以下帖#10和#11), 車 = 可走步數 x 0.2, 馬 = 可走步數 x 0.5, 炮 = 可走步數 x 0.1

3. 控制勢能:
這裡的改動比較大.

我方棋子每點的控制 -- 對方九宮 = 0.5 分, 其他每個在對方藍框位置 = 0.1 分, 黃色範圍內的四個點 = 1 分
對方棋子每點的控制 -- 黃色範圍 = 0.5 分, 綠色範圍的四個點 = 0.5 分
局面的控制能為:  我方的所有控制點的總分 - 對方的所有控制點的總分
(多子對於同一點的控制只算作一點的分數)

4. 威懾勢能:
這裡的改動也比較大.
4a. 我方:
若現在局面我方可有吃子/兌子的著法, 因為我方有選擇權, 我們只考慮對我方有利的交換.
每一著法計算方法為"力子交換後我方所得的棋子固有能".
4b. 對方:
雖然現在的我方走棋, 但我們假想是變成對方走棋, 因為對方有選擇權, 對們只考慮對對方有利的交換.
每一著法計算方法為"力子交換後對方所得的棋子固有能".
局面的威懾勢能為:  我方的所有交換著法的總分 x 1 - 對方的所有交換著法的總分 x 0.5 ***
(因為對方不能立即走棋, 所以對方的權重參數(=0.5)比我方的數值(=1)要少.)

*** 補註: 若是用作評價一著棋的價值, 應改為: 局面的威懾勢能為:  我方的所有交換著法的總分 x 0.5 - 對方的所有交換著法的總分 x 1 (解釋請看帖#05和帖#09)
作者: whlam888    時間: 2019-5-19 01:29 PM

還是第一次看到將象棋字力用這些數據進行分析, 不知道是否有用和科學
作者: DaCar    時間: 2019-10-15 09:10 AM

不是很瞭解原理,先保留參考看看,謝謝分享。
作者: blazesboy    時間: 2019-12-1 07:10 AM

電腦已幫忙自我計算棋面得分,換句話說可實時反映棋局優劣壯況
作者: wuchongxian    時間: 2020-1-14 05:58 AM

先保留參考看看,謝謝分享
作者: blazingpeon    時間: 2020-1-30 03:36 PM

感謝分享~

                           
作者: nbvnbv0022    時間: 2020-3-5 08:02 PM

Is this a article for software engineer? I think it is differcult to calculator it when you playing chess.




歡迎光臨 伊莉討論區 (http://www8.eyny.com/) Powered by Discuz!