| 81 | return value |
| 82 | |
| 83 | def backpropagate(self, node: MCTSNode, value: float): |
| 84 | logger.debug(f"Starting backpropagation. Initial value: {value}") |
| 85 | while node: |
| 86 | node.visits += 1 |
| 87 | node.value += value |
| 88 | self.node_labels[id(node)] = f"Visits: {node.visits}\nValue: {node.value:.2f}" |
| 89 | logger.debug(f"Updated node. Visits: {node.visits}, New value: {node.value}") |
| 90 | node = node.parent |
| 91 | |
| 92 | def search(self, initial_state: DialogueState, num_simulations: int) -> DialogueState: |
| 93 | logger.debug(f"Starting MCTS search with {num_simulations} simulations") |