本技術(shù)涉及計算機科學(xué),特別是涉及一種蒙特卡洛樹搜索方法、裝置及計算機設(shè)備。
背景技術(shù):
1、蒙特卡洛樹搜索(monte?carlo?tree?search,mcts)算法是一種基于蒙特卡洛采樣的機器人路徑規(guī)劃、智能導(dǎo)航等多個技術(shù)領(lǐng)域中均有廣泛應(yīng)用。
2、蒙特卡洛樹搜索算法包括選擇、擴展、模擬、反向傳播四個階段。通常情況下,蒙特卡洛樹搜索算法的迭代次數(shù)越多,搜索樹的節(jié)點數(shù)量越多,最終的搜索結(jié)果則更加優(yōu)越。但迭代次數(shù)的增加也意味著需要進行更多的計算,將顯著增加執(zhí)行時間。傳統(tǒng)技術(shù)中的蒙特卡洛樹搜索算法通常使用串行方法執(zhí)行,即使將不同階段分配至處理器的不同核心中執(zhí)行,后序階段也仍需等待前序階段執(zhí)行完成,處理器執(zhí)行效率較低。
技術(shù)實現(xiàn)思路
1、基于此,有必要針對上述技術(shù)問題,提供一種能夠提高處理器執(zhí)行效率的蒙特卡洛樹搜索方法、裝置及計算機設(shè)備。
2、第一方面,本技術(shù)提供了一種蒙特卡洛樹搜索方法。所述方法包括:
3、獲取待搜索根節(jié)點的第一狀態(tài)信息;
4、控制第一線程池中的至少一個空閑線程,基于所述第一狀態(tài)信息確定擴展子節(jié)點,并基于所述擴展子節(jié)點的第二狀態(tài)信息,生成所述擴展子節(jié)點的模擬任務(wù);
5、控制第二線程池中的至少一個空閑線程,執(zhí)行所述模擬任務(wù)并生成反向傳播任務(wù),所述反向傳播任務(wù)包括模擬獎勵值;
6、控制所述第一線程池中的至少一個空閑線程,執(zhí)行所述反向傳播任務(wù),并根據(jù)所述模擬獎勵值更新所述第二狀態(tài)信息,所述第一線程池中的至少一個空閑線程以及所述第二線程池中的至少一個空閑線程分別分配至處理器的相應(yīng)核心且由所述處理器并行執(zhí)行;
7、重復(fù)執(zhí)行上述步驟,直至滿足預(yù)設(shè)搜索條件后,基于所述第二狀態(tài)信息確定搜索結(jié)果。
8、在其中一個實施例中,所述第二狀態(tài)信息包括所述擴展子節(jié)點的模擬次數(shù)以及當(dāng)前獎勵值;所述執(zhí)行所述反向傳播任務(wù),并根據(jù)所述模擬獎勵值更新所述第二狀態(tài)信息包括:
9、每執(zhí)行一次反向傳播任務(wù)后,將相應(yīng)擴展子節(jié)點的模擬次數(shù)加1,作為更新后的模擬次數(shù);
10、基于所述當(dāng)前獎勵值與所述模擬獎勵值之和,以及所述更新后的模擬次數(shù),確定更新后的當(dāng)前獎勵值。
11、在其中一個實施例中,所述根據(jù)所述模擬獎勵值更新所述第二狀態(tài)信息還包括:
12、每執(zhí)行一次反向傳播任務(wù)后,獲取第一原子變量以及第二原子變量,其中,所述第一原子變量的第一存儲位用于存儲所述擴展子節(jié)點的模擬次數(shù),所述第一原子變量的第二存儲位用于存儲所述擴展子節(jié)點的當(dāng)前累計獎勵值,所述第二原子變量的第一存儲位用于存儲整數(shù)1,所述第二原子變量的第二存儲位用于存儲所述模擬獎勵值;
13、基于接收到的原子變量累加命令,將所述第二原子變量累加至所述第一原子變量,得到更新后的第一原子變量,所述更新后的第一原子變量的第一存儲位用于存儲所述更新后的模擬次數(shù),所述更新后的第一原子變量的第二存儲位用于存儲所述更新后的當(dāng)前獎勵值。
14、在其中一個實施例中,在所述根據(jù)所述模擬獎勵值更新所述第二狀態(tài)信息之后,所述基于所述第一狀態(tài)信息確定擴展子節(jié)點包括:
15、獲取所述更新后的模擬次數(shù)、所述更新后的當(dāng)前獎勵值;
16、基于所述第一狀態(tài)信息、所述更新后的模擬次數(shù)、所述更新后的當(dāng)前獎勵值確定所述擴展子節(jié)點。
17、在其中一個實施例中,所述獲取所述更新后的模擬次數(shù)、所述更新后的當(dāng)前獎勵值包括:
18、獲取第一原子變量以及存儲變量,其中,所述第一原子變量的第一存儲位用于存儲所述更新后的模擬次數(shù),所述第一原子變量的第二存儲位用于存儲更新后的當(dāng)前獎勵值;
19、基于接收到的原子變量讀取指令,讀取所述第一原子變量的第一存儲位的第一數(shù)據(jù),以及讀取所述第一原子變量的第二存儲位的第二數(shù)據(jù);
20、分別將所述第一數(shù)據(jù)、所述第二數(shù)據(jù)復(fù)制至所述存儲變量的第一存儲位以及第二存儲位;
21、讀取所述存儲變量的第一存儲位以及第二存儲位,確定所述更新后的模擬次數(shù)、所述更新后的當(dāng)前獎勵值。
22、在其中一個實施例中,所述基于所述第二狀態(tài)信息確定搜索結(jié)果包括:
23、將所述更新后的模擬次數(shù)最大的擴展子節(jié)點作為目標(biāo)搜索節(jié)點;
24、將所述待搜索根節(jié)點至所述目標(biāo)搜索節(jié)點的執(zhí)行動作,作為所述搜索結(jié)果。
25、在其中一個實施例中,所述重復(fù)執(zhí)行上述步驟,直至滿足預(yù)設(shè)搜索條件包括:
26、每執(zhí)行一次反向傳播任務(wù)后,將當(dāng)前迭代次數(shù)加1;
27、在所述根據(jù)所述模擬獎勵值更新所述第二狀態(tài)信息后,判斷所述當(dāng)前迭代次數(shù)是否等于預(yù)設(shè)迭代次數(shù);
28、若是,則確定滿足所述預(yù)設(shè)搜索條件。
29、在其中一個實施例中,所述基于所述擴展子節(jié)點的第二狀態(tài)信息,生成所述擴展子節(jié)點的模擬任務(wù)包括:
30、基于所述第二狀態(tài)信息,確定至少一個可選執(zhí)行動作;
31、在所述至少一個可選執(zhí)行動作中,確定一個未執(zhí)行動作;
32、基于所述未執(zhí)行動作確定模擬節(jié)點,并生成所述模擬任務(wù)。
33、第二方面,本技術(shù)還提供了一種蒙特卡洛樹搜索裝置。所述裝置包括:
34、狀態(tài)信息獲取模塊,用于獲取待搜索根節(jié)點的第一狀態(tài)信息;
35、任務(wù)生成執(zhí)行模塊,用于第一線程池中的至少一個空閑線程,基于所述第一狀態(tài)信息確定擴展子節(jié)點,并基于所述擴展子節(jié)點的第二狀態(tài)信息,生成所述擴展子節(jié)點的模擬任務(wù);
36、反向傳播任務(wù)執(zhí)行模塊,用于第二線程池中的至少一個空閑線程,執(zhí)行所述模擬任務(wù)并生成反向傳播任務(wù),所述反向傳播任務(wù)包括模擬獎勵值;
37、所述任務(wù)生成執(zhí)行模塊,還用于所述第一線程池中的至少一個空閑線程,執(zhí)行所述反向傳播任務(wù),并根據(jù)所述模擬獎勵值更新所述第二狀態(tài)信息;
38、搜索結(jié)果確定模塊,用于滿足預(yù)設(shè)搜索條件后,基于所述第二狀態(tài)信息確定搜索結(jié)果。
39、第三方面,本技術(shù)還提供了一種計算機設(shè)備。所述計算機設(shè)備包括存儲器和處理器,所述存儲器存儲有計算機程序,所述處理器執(zhí)行所述計算機程序時實現(xiàn)上述第一方面中任一所述蒙特卡洛樹搜索方法的步驟。
40、上述蒙特卡洛樹搜索方法、裝置及計算機設(shè)備,通過獲取待搜索根節(jié)點的第一狀態(tài)信息;控制第一線程池中的至少一個空閑線程,基于所述第一狀態(tài)信息確定擴展子節(jié)點,并基于所述擴展子節(jié)點的第二狀態(tài)信息,生成所述擴展子節(jié)點的模擬任務(wù);控制第二線程池中的至少一個空閑線程,執(zhí)行所述模擬任務(wù)并生成反向傳播任務(wù),所述反向傳播任務(wù)包括模擬獎勵值;控制所述第一線程池中的至少一個空閑線程,執(zhí)行所述反向傳播任務(wù),并根據(jù)所述模擬獎勵值更新所述第二狀態(tài)信息,所述第一線程池中的至少一個空閑線程以及所述第二線程池中的至少一個空閑線程分別分配至處理器的相應(yīng)核心且由所述處理器并行執(zhí)行;重復(fù)執(zhí)行上述步驟,直至滿足預(yù)設(shè)搜索條件后,基于所述第二狀態(tài)信息確定搜索結(jié)果。
41、本技術(shù)實施例提供的蒙特卡洛樹搜索方法,通過第一線程池中的至少一個空閑線程執(zhí)行擴展子節(jié)點、生成模擬任務(wù)以及反向傳播任務(wù),通過第二線程池中的至少一個空閑線程執(zhí)行模擬任務(wù),且第一線程池中的至少一個空閑線程以及所述第二線程池中的至少一個空閑線程分別分配至處理器的相應(yīng)核心且由所述處理器并行執(zhí)行,能夠有效提高處理器的執(zhí)行效率,并顯著減少在選擇、擴展、模擬和反向傳播階段的處理器開銷。另一方面,本技術(shù)通過將選擇、擴展、模擬和反向傳播階段進行解耦,還能夠增強蒙特卡洛樹搜索的可擴展性。
42、本技術(shù)的一個或多個實施例的細節(jié)在以下附圖和描述中提出,以使本技術(shù)的其他特征、目的和優(yōu)點更加簡明易懂。