in 1_synthetic-qa-generation/reasoningplaning/evolve.py [0:0]
def genPrm(self, question: str, answer: str) -> List:
self.resetPrmState()
logger.info(f"Running genPrm for question: '{question}'\n")
# Initialization
initial_node = Nde(solution_prefix=question, parent=None)
self.expected_answer = answer
self.mct.root = initial_node
self.mct.addNode(initial_node)
self.numSrched = 0
# Monte Carlo Estimation for initial_node
self.monteCarloEstimation(initial_node)
# Main loop
while self.numSrched < self.maxSrch and self.numOfTtlBranches < self.maxBranches and not self.candidatePool.is_empty():
# Selection Phase
selected_node, selected_branch = self.selectionPhase()
if selected_node is None or selected_branch is None:
# logger.info("No more candidates to explore. Terminating search.\n")
break
self.expansionPhaseBinSrch(selected_node, selected_branch)
# Maintenance Phase
self.maintenancePhase(selected_node)
# Increment search count
self.numSrched += 1
if self.saveAsTree:
data = self.collectTreeStructure()
else:
data = self.collectSolutionPrefixes()
return data