diff --git a/.distributions b/.distributions index 3f59c8f..25f566f 100644 Binary files a/.distributions and b/.distributions differ diff --git a/copycat/copycat.py b/copycat/copycat.py index cfa4258..d910fb8 100644 --- a/copycat/copycat.py +++ b/copycat/copycat.py @@ -71,26 +71,23 @@ class Copycat(object): self.workspace.resetWithStrings(initial, modified, target) answers = {} - for formula in ['original', 'best', 'sbest', 'pbest', 'meta', 'pmeta', 'none']: - self.temperature.useAdj(formula) - answers = {} - for i in range(iterations): - answer = self.runTrial() - d = answers.setdefault(answer['answer'], { - 'count': 0, - 'sumtemp': 0, # TODO: use entropy - 'sumtime': 0 - }) - d['count'] += 1 - d['sumtemp'] += answer['temp'] # TODO: use entropy - d['sumtime'] += answer['time'] + for i in range(iterations): + answer = self.runTrial() + d = answers.setdefault(answer['answer'], { + 'count': 0, + 'sumtemp': 0, # TODO: use entropy + 'sumtime': 0 + }) + d['count'] += 1 + d['sumtemp'] += answer['temp'] # TODO: use entropy + d['sumtime'] += answer['time'] - for answer, d in answers.items(): - d['avgtemp'] = d.pop('sumtemp') / d['count'] - d['avgtime'] = d.pop('sumtime') / d['count'] - print('The formula {} provided:'.format(formula)) - print('Average difference: {}'.format(self.temperature.getAverageDifference())) - pprint(answers) + for answer, d in answers.items(): + d['avgtemp'] = d.pop('sumtemp') / d['count'] + d['avgtime'] = d.pop('sumtime') / d['count'] + #print('The formula {} provided:'.format(formula)) + #print('Average difference: {}'.format(self.temperature.getAverageDifference())) + #pprint(answers) return answers diff --git a/copycat/problem.py b/copycat/problem.py index bf335e5..6f23777 100644 --- a/copycat/problem.py +++ b/copycat/problem.py @@ -5,6 +5,12 @@ from pprint import pprint class Problem: def __init__(self, initial, modified, target, iterations, distributions=None, formulas=None): self.formulas = formulas + if formulas is not None: + assert hasattr(Copycat(), 'temperature') + else: + if hasattr(Copycat(), 'temperature'): + self.formulas = set(Copycat().temperature.adj_formulas()) + print(self.formulas) self.initial = initial self.modified = modified self.target = target @@ -14,8 +20,7 @@ class Problem: self.distributions = self.solve() else: self.distributions = distributions - if formulas is not None: - assert hasattr(Copycat().workspace, 'temperature') + print(self.formulas) def test(self, comparison, expected=None): print('-' * 120) @@ -41,8 +46,8 @@ class Problem: copycat = Copycat() answers = dict() if self.formulas == None: - if hasattr(copycat.workspace, 'temperature'): - formula = copycat.workspace.temperature.getAdj() + if hasattr(copycat, 'temperature'): + formula = copycat.temperature.getAdj() else: formula = None answers[formula] = copycat.run(self.initial, @@ -50,12 +55,14 @@ class Problem: self.target, self.iterations) else: + print(self.formulas) for formula in self.formulas: copycat.temperature.useAdj(formula) - answers[formulas] = copycat.run(self.initial, + answers[formula] = copycat.run(self.initial, self.modified, self.target, self.iterations) + print('Done with {}'.format(formula)) return answers def generate(self):