def __init__(self, groups, size, weeks, poolsize = 25, pool = None, timeout = 600, max_learning = 30):
    self.groups = groups
    self.size = size
    self.weeks = weeks

    self.stop_time = time() + timeout
    if pool:
      # check if pool is okay
      for v, solution in pool:
        assert len(solution) == weeks
        for week in solution:
          assert len(week) == groups
          for group in week:
            assert len(group) == size
      self.pool = pool
    else:
      self.pool = [ (lambda sigma: (sgp.violations(sigma)[0], sigma))(sgp.generateSolution(groups, size, weeks)) for i in range(poolsize) ]
    self.max_learning = max_learning
    self.solution = None
    self.done = False
 def setUp(self):
   self.solution = sgp.generateSolution(5, 4, 5)#[[[1,2,3], [4,5,6]], [[1,2,3], [4,5,6]]]
   self.tabu = [
     { (1, 2): 2, (1, 3): 2},
     { (1, 2): 2, (1, 3): 1},
   ]