Я сейчас смотрю на этот пример
class TravellingSalesmanProblem(Annealer):
"""Test annealer with a travelling salesman problem.
"""
# pass extra data (the distance matrix) into the constructor
def __init__(self, state, distance_matrix):
self.distance_matrix = distance_matrix
super(TravellingSalesmanProblem, self).__init__(state) # important!
Клонировано из simanneal
Если я решу изменить конструктор
def __init__(self, state, distance_matrix):
self.state = state
super(TravellingSalesmanProblem, self).__init__(distant_matrix)
Так выглядит класс Anealer
class Annealer(object):
__metaclass__ = abc.ABCMeta
# defaults
Tmax = 25000.0
Tmin = 2.5
steps = 50000
updates = 100
copy_strategy = 'deepcopy'
user_exit = False
save_state_on_exit = False
# placeholders
best_state = None
best_energy = None
start = None
def __init__(self, initial_state=None, load_state=None):
if initial_state is not None:
self.state = self.copy_state(initial_state)
elif load_state:
self.load_state(load_state)
else:
raise ValueError('No valid values supplied for neither \
initial_state nor load_state')
signal.signal(signal.SIGINT, self.set_user_exit)
У него тоже есть куча других методов, но это заняло бы слишком много места.
Как новый экземпляр TravellingSalesmanProblem будет отличаться от предыдущего