diff --git a/copycat/codeletMethods.py b/copycat/codeletMethods.py index d563eec..a497410 100644 --- a/copycat/codeletMethods.py +++ b/copycat/codeletMethods.py @@ -155,7 +155,6 @@ def breaker(ctx, codelet): for structure in breakObjects: breakProbability = temperature.getAdjustedProbability( structure.totalStrength / 100.0) - #breakProbability = structure.totalStrength / 100.0 if random.coinFlip(breakProbability): return for structure in breakObjects: diff --git a/copycat/copycat.py b/copycat/copycat.py index 4957292..a9a4a1e 100644 --- a/copycat/copycat.py +++ b/copycat/copycat.py @@ -68,11 +68,10 @@ class Copycat(object): def run(self, initial, modified, target, iterations): self.workspace.resetWithStrings(initial, modified, target) - self.temperature.useAdj('original') + #self.temperature.useAdj('original') #self.temperature.useAdj('entropy') - #self.temperature.useAdj('inverse') # 100 weight - #self.temperature.useAdj('150-weight') - #self.temperature.useAdj('200-weight') + self.temperature.useAdj('inverse') # 100 weight + #self.temperature.useAdj('alt_inverse') # 100 weight, equal probs at 100 answers = {} for i in range(iterations): answer = self.runTrial() diff --git a/copycat/temperature.py b/copycat/temperature.py index 075a032..be2f32f 100644 --- a/copycat/temperature.py +++ b/copycat/temperature.py @@ -24,26 +24,24 @@ def _entropy(temp, prob): return -f * math.log2(f) def _inverse_prob(temp, prob): - # Temperature, potentially clamped iprob = 1 - prob return (temp / 100) * iprob + ((100 - temp) / 100) * prob -def _create_weighted_inverse_prob(weight): - def _inner_weighted_prob(temp, prob): - iprob = 1 - prob - return (temp / weight) * iprob + ((weight - temp) / weight) * prob - return _inner_weighted_prob +def _alt_inverse_prob(temp, prob): + if temp == 100: + return .5 + iprob = 1 - prob + return (temp / 100) * iprob + ((100 - temp) / 100) * prob class Temperature(object): def __init__(self): self.reset() self.adjustmentType = 'inverse' self._adjustmentFormulas = { - 'original' : _original, - 'entropy' : _entropy, - 'inverse' : _inverse_prob, - '200-weight' : _create_weighted_inverse_prob(200), - '150-weight' : _create_weighted_inverse_prob(150) + 'original' : _original, + 'entropy' : _entropy, + 'inverse' : _inverse_prob, + 'alt_inverse' : _alt_inverse_prob } def reset(self):