]
from kaggle_environments import make env = make("chess", debug=True)
from Chessnut import Game initial_fen = env.state[0]['observation']['board'] game=Game(env.state[0]['observation']['board'])
पर्यावरण के लिए एक आवरण बनाना
]
]
class EnvCust: def __init__(self): self.env = make("chess", debug=True) self.game=Game(env.state[0]['observation']['board']) print(self.env.state[0]['observation']['board']) self.action_space=game.get_moves(); self.obs_space=(self.env.state[0]['observation']['board']) def get_action(self): return Game(self.env.state[0]['observation']['board']).get_moves(); def get_obs_space(self): return fen_to_board(self.env.state[0]['observation']['board']) def step(self,action): reward=0 g=Game(self.env.state[0]['observation']['board']); if(g.board.get_piece(Game.xy2i(action[2:4]))=='q'): reward=7 elif g.board.get_piece(Game.xy2i(action[2:4]))=='n' or g.board.get_piece(Game.xy2i(action[2:4]))=='b' or g.board.get_piece(Game.xy2i(action[2:4]))=='r': reward=4 elif g.board.get_piece(Game.xy2i(action[2:4]))=='P': reward=2 g=Game(self.env.state[0]['observation']['board']); g.apply_move(action) done=False if(g.status==2): done=True reward=10 elif g.status == 1: done = True reward = -5 self.env.step([action,'None']) self.action_space=list(self.get_action()) if(self.action_space==[]): done=True else: self.env.step(['None',random.choice(self.action_space)]) g=Game(self.env.state[0]['observation']['board']); if g.status==2: reward=-10 done=True self.action_space=list(self.get_action()) return self.env.state[0]['observation']['board'],reward,done
] कुल 64 वर्ग हैं, इसलिए मैंने प्रत्येक चाल के लिए 64*64 अद्वितीय अनुक्रमित होने का फैसला किया।
]तंत्रिका नेटवर्क संरचना
आयात मशाल एनएन के रूप में टार्च को आयात करें इष्टतम के रूप में टार्च को आयात करें क्लास DQN (NN.MODULE): def __init __ (स्व): सुपर (dqn, स्व) .__ init __ () self.conv_layers = nn.ceptiential ( nn.conv2d (12, 32, kernel_size = 3, स्ट्राइड = 1, पैडिंग = nn.relu (), nn.conv2d (32, 64, kernel_size = 3, स्ट्राइड = 1, पैडिंग = 1), nn.relu () ) self.fc_layers = nn.cepentiential ( nn.flatten (), nn.linear (64 * 8 * 8, 256), nn.relu (), nn.linear (256, 128), nn.relu (), nn.linear (128, 4096) ) डीईएफ फॉरवर्ड (सेल्फ, एक्स): x = x.unsqueeze (0) x = self.conv_layers (x) x = self.fc_layers (x) X रिटर्न करें पूर्वानुमान (स्व, राज्य, वैध_एक्ट_इंडिस): Torch.no_grad () के साथ: q_values = self.forward (राज्य) q_values = q_values.squeeze (0) मान्य_क्यू_वैल्यूज़ = q_values [मान्य_एक्ट_इंडिस] BEST_ACTION_RELATIVE_INDEX = VAIL_Q_VALUES.ARGMAX ()। आइटम () max_q_value = ralid_q_values.argmax () best_action_index = ralid_action_indices [best_action_relative_index] MAX_Q_VALUE, BEST_ACTION_INDEX लौटें] एजेंट को लागू करना
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3