import ecole
class DualBoundImprovement(ecole.reward.RewardFunction):
def before_reset(self, model):
self.prev_dual_bound = None
def extract(self, model, done):
current_dual_bound = model.as_pyscipopt().getDualbound()
reward = 0
if self.prev_dual_bound is not None:
reward = current_dual_bound - self.prev_dual_bound
self.prev_dual_bound = current_dual_bound
return reward