Experiments with alt inverse:

Equal probabilities for all items when temperature is equal to 100
This commit is contained in:
LSaldyt
2017-10-09 12:20:33 -06:00
parent 3bf417e38a
commit 27a55668be
3 changed files with 12 additions and 16 deletions

View File

@ -155,7 +155,6 @@ def breaker(ctx, codelet):
for structure in breakObjects: for structure in breakObjects:
breakProbability = temperature.getAdjustedProbability( breakProbability = temperature.getAdjustedProbability(
structure.totalStrength / 100.0) structure.totalStrength / 100.0)
#breakProbability = structure.totalStrength / 100.0
if random.coinFlip(breakProbability): if random.coinFlip(breakProbability):
return return
for structure in breakObjects: for structure in breakObjects:

View File

@ -68,11 +68,10 @@ 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)
self.temperature.useAdj('original') #self.temperature.useAdj('original')
#self.temperature.useAdj('entropy') #self.temperature.useAdj('entropy')
#self.temperature.useAdj('inverse') # 100 weight self.temperature.useAdj('inverse') # 100 weight
#self.temperature.useAdj('150-weight') #self.temperature.useAdj('alt_inverse') # 100 weight, equal probs at 100
#self.temperature.useAdj('200-weight')
answers = {} answers = {}
for i in range(iterations): for i in range(iterations):
answer = self.runTrial() answer = self.runTrial()

View File

@ -24,26 +24,24 @@ def _entropy(temp, prob):
return -f * math.log2(f) return -f * math.log2(f)
def _inverse_prob(temp, prob): def _inverse_prob(temp, prob):
# Temperature, potentially clamped
iprob = 1 - prob iprob = 1 - prob
return (temp / 100) * iprob + ((100 - temp) / 100) * prob return (temp / 100) * iprob + ((100 - temp) / 100) * prob
def _create_weighted_inverse_prob(weight): def _alt_inverse_prob(temp, prob):
def _inner_weighted_prob(temp, prob): if temp == 100:
iprob = 1 - prob return .5
return (temp / weight) * iprob + ((weight - temp) / weight) * prob iprob = 1 - prob
return _inner_weighted_prob return (temp / 100) * iprob + ((100 - temp) / 100) * prob
class Temperature(object): class Temperature(object):
def __init__(self): def __init__(self):
self.reset() self.reset()
self.adjustmentType = 'inverse' self.adjustmentType = 'inverse'
self._adjustmentFormulas = { self._adjustmentFormulas = {
'original' : _original, 'original' : _original,
'entropy' : _entropy, 'entropy' : _entropy,
'inverse' : _inverse_prob, 'inverse' : _inverse_prob,
'200-weight' : _create_weighted_inverse_prob(200), 'alt_inverse' : _alt_inverse_prob
'150-weight' : _create_weighted_inverse_prob(150)
} }
def reset(self): def reset(self):