def run(self): depth = 1 iter_num = 1 start = time.time() alg_name = 'randomized_greedy_search' with open(alg_name + '_' + datetime.now().strftime('%Y_%m_%d_%H_%M_%S') + '.csv', 'a') as file: file.write("Alg:\t{0}\n".format(alg_name)) file.write("Depth:\t{0}\n\n".format(depth)) file.write("Iteration;\tElapsed (s);\tQuality (-inf,1]\n") while True: changes_found = False generator = RandomChanges() for new_assignments in generator.iterate_chained(self.current_assignments, depth=depth): new_cost = self.cost(new_assignments) self.save_if_best_solution(new_assignments, new_cost) if self.current_cost < new_cost: self.current_assignments = new_assignments self.current_cost = new_cost changes_found = True break row = "{0};\t\t\t{1};\t{2}\n".format(iter_num, time.time() - start, self.current_cost) file.write(row) print row iter_num += 1 if not changes_found: break return self.current_assignments, self.current_cost, self.best_assignments, self.best_cost
def generate_next_assignments(self, assignments, temperature): depth = randint(1, self.get_max_depth(temperature)) return RandomChanges.chained(assignments, depth=depth), depth