Lab 3 ready

This commit is contained in:
Dario Mantegazza 2020-11-22 20:40:02 +01:00
parent d694984e42
commit 9f61b503d1
2 changed files with 233 additions and 7 deletions

File diff suppressed because one or more lines are too long

View file

@ -60,7 +60,8 @@ class TSPSolver:
improver = self.algorithms[i] improver = self.algorithms[i]
self.solution = self.available_improvers[improver](self.solution, self.problem_instance) self.solution = self.available_improvers[improver](self.solution, self.problem_instance)
if self.check_if_solution_is_valid(): if self.check_if_solution_is_valid():
print(f"Error the solution of {self.algorithm_name} with {improver} for problem {self.problem_instance.name} is not valid") print(
f"Error the solution of {self.algorithm_name} with {improver} for problem {self.problem_instance.name} is not valid")
if return_value: if return_value:
return False return False
@ -83,10 +84,10 @@ class TSPSolver:
def check_if_solution_is_valid(self): def check_if_solution_is_valid(self):
rights_values = np.sum( rights_values = np.sum(
[self.check_validation(i, self.solution[:-1]) for i in np.arange(self.problem_instance.nPoints)]) [self.check_validation(i, self.solution[:-1]) for i in np.arange(self.problem_instance.nPoints)])
# rights_values = np.sum( # rights_values = np.sum(
# [1 if np.sum(self.solution[:-1] == i) == 1 else 0 for i in np.arange(self.problem_instance.nPoints)]) # [1 if np.sum(self.solution[:-1] == i) == 1 else 0 for i in np.arange(self.problem_instance.nPoints)])
# return rights_values == self.problem_instance.nPoints return rights_values == self.problem_instance.nPoints
def check_validation(self, node, solution): def check_validation(self, node, solution):
if np.sum(solution == node) == 1: if np.sum(solution == node) == 1:
@ -106,6 +107,13 @@ class TSPSolver:
if return_value: if return_value:
return total_length return total_length
def pass_and_check_if_solution_is_valid(self, solution):
rights_values = np.sum(
[self.check_validation(i, solution[:-1]) for i in np.arange(self.problem_instance.nPoints)])
# rights_values = np.sum(
# [1 if np.sum(solution[:-1] == i) == 1 else 0 for i in np.arange(self.problem_instance.nPoints)])
return rights_values == self.problem_instance.nPoints
def _gap(self): def _gap(self):
self.evaluate_solution(return_value=False) self.evaluate_solution(return_value=False)
self.gap = np.round( self.gap = np.round(