def main(): if len(sys.argv) >= 4: groups = int(sys.argv[1]) size = int(sys.argv[2]) weeks = int(sys.argv[3]) timeout = int(sys.argv[4]) if len(sys.argv) == 5 else 600 start = time() solution = get_solution(groups, size, weeks, timeout = timeout) print(sgp.repr_solution(sgp.normalize_solution(solution))) print(time() - start, 'seconds') else: max_groups = 9 max_size = 9 max_weeks = 9 # eigentlich sollte man hier gucken, ob alles gelöst wurde, allerdings wird das zu meinen Lebzeiten wohl nicht mehr fertig werden while True: for size in range(2, max_size): for groups in range(3, max_groups): for weeks in range(2, min(groups * size - 2, max_weeks)): print('SGP({}, {}, {}): '.format(groups, size, weeks), end='') # wurde schon eine Lösung gefunden? if already_solved(groups, size, weeks): print('already solved') else: solution = get_solution(groups, size, weeks) # brich ab, wenn keine Lösung gefunden ist, ansonsten Versuch es mit mehr wochen if sgp.violations(solution)[0] > 0: print('Failed!') break else: print('Done')
def save_state(solver): if solver.solution and sgp.violations(solver.solution)[0] == 0: with open(solution_filename(solver.groups, solver.size, solver.weeks), 'w') as f: f.write(sgp.repr_solution(solver.solution)) json.dump(solver.pool, open(state_filename(solver.groups, solver.size, solver.weeks), 'w'))