def __init__(self, name, program, mustTrain=False): if isinstance(program, str): try: program = parseTower(program) except: eprint("Parse failure:") eprint(program) assert False self.original = program plan = executeTower(program) elif isinstance(program, Program): self.original = program plan = executeTower(program) else: plan = program self.original = program state, self.plan = program.evaluate([])(_empty_tower)(TowerState()) self.hand = state.hand super(SupervisedTower, self).__init__(name, arrow(ttower, ttower), [], features=[]) self.specialTask = ("supervisedTower", {"plan": self.plan}) self.image = None self.handImage = None self.mustTrain = mustTrain
def logLikelihood(self, e, timeout=None): from dreamcoder.domains.tower.tower_common import centerTower yh = executeTower(e, timeout) if yh is not None and centerTower(yh) == centerTower(self.plan): return 0. return NEGATIVEINFINITY