Fixes bugs with multi-formula distributions

This commit is contained in:
LSaldyt
2017-11-19 14:29:09 -07:00
parent 06c5625f75
commit 98c2b497a6
3 changed files with 28 additions and 24 deletions

Binary file not shown.

View File

@ -70,9 +70,6 @@ class Copycat(object):
def run(self, initial, modified, target, iterations): def run(self, initial, modified, target, iterations):
self.workspace.resetWithStrings(initial, modified, target) self.workspace.resetWithStrings(initial, modified, target)
answers = {}
for formula in ['original', 'best', 'sbest', 'pbest', 'meta', 'pmeta', 'none']:
self.temperature.useAdj(formula)
answers = {} answers = {}
for i in range(iterations): for i in range(iterations):
answer = self.runTrial() answer = self.runTrial()
@ -88,9 +85,9 @@ class Copycat(object):
for answer, d in answers.items(): for answer, d in answers.items():
d['avgtemp'] = d.pop('sumtemp') / d['count'] d['avgtemp'] = d.pop('sumtemp') / d['count']
d['avgtime'] = d.pop('sumtime') / d['count'] d['avgtime'] = d.pop('sumtime') / d['count']
print('The formula {} provided:'.format(formula)) #print('The formula {} provided:'.format(formula))
print('Average difference: {}'.format(self.temperature.getAverageDifference())) #print('Average difference: {}'.format(self.temperature.getAverageDifference()))
pprint(answers) #pprint(answers)
return answers return answers

View File

@ -5,6 +5,12 @@ from pprint import pprint
class Problem: class Problem:
def __init__(self, initial, modified, target, iterations, distributions=None, formulas=None): def __init__(self, initial, modified, target, iterations, distributions=None, formulas=None):
self.formulas = formulas 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.initial = initial
self.modified = modified self.modified = modified
self.target = target self.target = target
@ -14,8 +20,7 @@ class Problem:
self.distributions = self.solve() self.distributions = self.solve()
else: else:
self.distributions = distributions self.distributions = distributions
if formulas is not None: print(self.formulas)
assert hasattr(Copycat().workspace, 'temperature')
def test(self, comparison, expected=None): def test(self, comparison, expected=None):
print('-' * 120) print('-' * 120)
@ -41,8 +46,8 @@ class Problem:
copycat = Copycat() copycat = Copycat()
answers = dict() answers = dict()
if self.formulas == None: if self.formulas == None:
if hasattr(copycat.workspace, 'temperature'): if hasattr(copycat, 'temperature'):
formula = copycat.workspace.temperature.getAdj() formula = copycat.temperature.getAdj()
else: else:
formula = None formula = None
answers[formula] = copycat.run(self.initial, answers[formula] = copycat.run(self.initial,
@ -50,12 +55,14 @@ class Problem:
self.target, self.target,
self.iterations) self.iterations)
else: else:
print(self.formulas)
for formula in self.formulas: for formula in self.formulas:
copycat.temperature.useAdj(formula) copycat.temperature.useAdj(formula)
answers[formulas] = copycat.run(self.initial, answers[formula] = copycat.run(self.initial,
self.modified, self.modified,
self.target, self.target,
self.iterations) self.iterations)
print('Done with {}'.format(formula))
return answers return answers
def generate(self): def generate(self):