Documents usages of temperature
This commit is contained in:
@ -72,6 +72,7 @@ def __structureVsStructure(structure1, weight1, structure2, weight2):
|
||||
"""Return true if the first structure comes out stronger than the second."""
|
||||
ctx = structure1.ctx
|
||||
random = ctx.random
|
||||
# TODO: use entropy
|
||||
temperature = ctx.temperature
|
||||
structure1.updateStrength()
|
||||
structure2.updateStrength()
|
||||
@ -111,6 +112,7 @@ def __fightIncompatibles(incompatibles, structure, name,
|
||||
|
||||
def __slippability(ctx, conceptMappings):
|
||||
random = ctx.random
|
||||
# TODO: use entropy
|
||||
temperature = ctx.temperature
|
||||
for mapping in conceptMappings:
|
||||
slippiness = mapping.slippability() / 100.0
|
||||
@ -124,6 +126,7 @@ def __slippability(ctx, conceptMappings):
|
||||
@codelet('breaker')
|
||||
def breaker(ctx, codelet):
|
||||
random = ctx.random
|
||||
# TODO: use entropy
|
||||
temperature = ctx.temperature
|
||||
workspace = ctx.workspace
|
||||
# TODO: use entropy
|
||||
@ -161,6 +164,7 @@ def chooseRelevantDescriptionByActivation(ctx, workspaceObject):
|
||||
|
||||
def similarPropertyLinks(ctx, slip_node):
|
||||
random = ctx.random
|
||||
# TODO: use entropy
|
||||
temperature = ctx.temperature
|
||||
result = []
|
||||
for slip_link in slip_node.propertyLinks:
|
||||
@ -216,6 +220,7 @@ def top_down_description_scout(ctx, codelet):
|
||||
def description_strength_tester(ctx, codelet):
|
||||
coderack = ctx.coderack
|
||||
random = ctx.random
|
||||
# TODO: use entropy
|
||||
temperature = ctx.temperature
|
||||
description = codelet.arguments[0]
|
||||
description.descriptor.buffer = 100.0
|
||||
@ -301,6 +306,7 @@ def rule_scout(ctx, codelet):
|
||||
coderack = ctx.coderack
|
||||
random = ctx.random
|
||||
slipnet = ctx.slipnet
|
||||
# TODO: use entropy
|
||||
temperature = ctx.temperature
|
||||
workspace = ctx.workspace
|
||||
assert workspace.numberOfUnreplacedObjects() == 0
|
||||
@ -339,6 +345,7 @@ def rule_scout(ctx, codelet):
|
||||
# "union of this and distinguishing descriptors"
|
||||
assert objectList
|
||||
# use conceptual depth to choose a description
|
||||
# TODO: use entropy
|
||||
weights = [
|
||||
temperature.getAdjustedValue(node.conceptualDepth)
|
||||
for node in objectList
|
||||
@ -350,6 +357,7 @@ def rule_scout(ctx, codelet):
|
||||
objectList += [changed.replacement.relation]
|
||||
objectList += [changed.replacement.objectFromModified.getDescriptor(
|
||||
slipnet.letterCategory)]
|
||||
# TODO: use entropy
|
||||
# use conceptual depth to choose a relation
|
||||
weights = [
|
||||
temperature.getAdjustedValue(node.conceptualDepth)
|
||||
@ -364,6 +372,7 @@ def rule_scout(ctx, codelet):
|
||||
def rule_strength_tester(ctx, codelet):
|
||||
coderack = ctx.coderack
|
||||
random = ctx.random
|
||||
# TODO: use entropy
|
||||
temperature = ctx.temperature
|
||||
rule = codelet.arguments[0]
|
||||
rule.updateStrength()
|
||||
@ -465,6 +474,7 @@ def top_down_bond_scout__direction(ctx, codelet):
|
||||
def bond_strength_tester(ctx, codelet):
|
||||
coderack = ctx.coderack
|
||||
random = ctx.random
|
||||
# TODO: use entropy
|
||||
temperature = ctx.temperature
|
||||
bond = codelet.arguments[0]
|
||||
__showWhichStringObjectIsFrom(bond)
|
||||
@ -747,6 +757,7 @@ def group_strength_tester(ctx, codelet):
|
||||
coderack = ctx.coderack
|
||||
random = ctx.random
|
||||
slipnet = ctx.slipnet
|
||||
# TODO: use entropy
|
||||
temperature = ctx.temperature
|
||||
# update strength value of the group
|
||||
group = codelet.arguments[0]
|
||||
@ -869,6 +880,7 @@ def __getCutoffWeights(bondDensity):
|
||||
def rule_translator(ctx, codelet):
|
||||
coderack = ctx.coderack
|
||||
random = ctx.random
|
||||
# TODO: use entropy
|
||||
temperature = ctx.temperature
|
||||
workspace = ctx.workspace
|
||||
assert workspace.rule
|
||||
@ -946,6 +958,7 @@ def important_object_correspondence_scout(ctx, codelet):
|
||||
assert objectFromInitial is not None
|
||||
descriptors = objectFromInitial.relevantDistinguishingDescriptors()
|
||||
# choose descriptor by conceptual depth
|
||||
# TODO: use entropy
|
||||
weights = [temperature.getAdjustedValue(n.conceptualDepth) for n in descriptors]
|
||||
slipnode = random.weighted_choice(descriptors, weights)
|
||||
assert slipnode
|
||||
@ -997,6 +1010,7 @@ def important_object_correspondence_scout(ctx, codelet):
|
||||
def correspondence_strength_tester(ctx, codelet):
|
||||
coderack = ctx.coderack
|
||||
random = ctx.random
|
||||
# TODO: use entropy
|
||||
temperature = ctx.temperature
|
||||
workspace = ctx.workspace
|
||||
correspondence = codelet.arguments[0]
|
||||
|
||||
@ -68,6 +68,7 @@ class Coderack(object):
|
||||
self.postBottomUpCodelets()
|
||||
|
||||
def probabilityOfPosting(self, codeletName):
|
||||
# TODO: use entropy
|
||||
temperature = self.ctx.temperature
|
||||
workspace = self.ctx.workspace
|
||||
if codeletName == 'breaker':
|
||||
@ -156,6 +157,7 @@ class Coderack(object):
|
||||
|
||||
def __postBottomUpCodelets(self, codeletName):
|
||||
random = self.ctx.random
|
||||
# TODO: use entropy
|
||||
temperature = self.ctx.temperature
|
||||
probability = self.probabilityOfPosting(codeletName)
|
||||
howMany = self.howManyToPost(codeletName)
|
||||
@ -288,6 +290,7 @@ class Coderack(object):
|
||||
|
||||
def chooseCodeletToRun(self):
|
||||
random = self.ctx.random
|
||||
# TODO: use entropy
|
||||
temperature = self.ctx.temperature
|
||||
assert self.codelets
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ class Reporter(object):
|
||||
def report_slipnet(self, slipnet):
|
||||
pass
|
||||
|
||||
def report_temperature(self, temperature):
|
||||
def report_temperature(self, temperature): #TODO: use entropy
|
||||
pass
|
||||
|
||||
def report_workspace(self, workspace):
|
||||
@ -28,19 +28,19 @@ class Copycat(object):
|
||||
self.coderack = Coderack(self)
|
||||
self.random = Randomness(rng_seed)
|
||||
self.slipnet = Slipnet()
|
||||
self.temperature = Temperature()
|
||||
self.temperature = Temperature() # TODO: use entropy
|
||||
self.workspace = Workspace(self)
|
||||
self.reporter = reporter or Reporter()
|
||||
|
||||
def mainLoop(self, lastUpdate):
|
||||
currentTime = self.coderack.codeletsRun
|
||||
self.temperature.tryUnclamp(currentTime)
|
||||
self.temperature.tryUnclamp(currentTime) # TODO: use entropy
|
||||
# Every 15 codelets, we update the workspace.
|
||||
if currentTime >= lastUpdate + 15:
|
||||
self.workspace.updateEverything()
|
||||
self.coderack.updateCodelets()
|
||||
self.slipnet.update(self.random)
|
||||
self.temperature.update(self.workspace.getUpdatedTemperature())
|
||||
self.temperature.update(self.workspace.getUpdatedTemperature()) # TODO: use entropy
|
||||
lastUpdate = currentTime
|
||||
self.reporter.report_slipnet(self.slipnet)
|
||||
self.coderack.chooseAndRunCodelet()
|
||||
@ -53,14 +53,14 @@ class Copycat(object):
|
||||
"""Run a trial of the copycat algorithm"""
|
||||
self.coderack.reset()
|
||||
self.slipnet.reset()
|
||||
self.temperature.reset()
|
||||
self.temperature.reset() # TODO: use entropy
|
||||
self.workspace.reset()
|
||||
lastUpdate = float('-inf')
|
||||
while self.workspace.finalAnswer is None:
|
||||
lastUpdate = self.mainLoop(lastUpdate)
|
||||
answer = {
|
||||
'answer': self.workspace.finalAnswer,
|
||||
'temp': self.temperature.last_unclamped_value,
|
||||
'temp': self.temperature.last_unclamped_value, # TODO: use entropy
|
||||
'time': self.coderack.codeletsRun,
|
||||
}
|
||||
self.reporter.report_answer(answer)
|
||||
@ -73,11 +73,11 @@ class Copycat(object):
|
||||
answer = self.runTrial()
|
||||
d = answers.setdefault(answer['answer'], {
|
||||
'count': 0,
|
||||
'sumtemp': 0,
|
||||
'sumtemp': 0, # TODO: use entropy
|
||||
'sumtime': 0
|
||||
})
|
||||
d['count'] += 1
|
||||
d['sumtemp'] += answer['temp']
|
||||
d['sumtemp'] += answer['temp'] # TODO: use entropy
|
||||
d['sumtime'] += answer['time']
|
||||
|
||||
for answer, d in answers.items():
|
||||
|
||||
@ -63,7 +63,7 @@ class CursesReporter(Reporter):
|
||||
coderackHeight = height - upperHeight - answersHeight
|
||||
self.focusOnSlipnet = focus_on_slipnet
|
||||
self.fpsGoal = fps_goal
|
||||
self.temperatureWindow = SafeSubwindow(window, height, 5, 0, 0)
|
||||
self.temperatureWindow = SafeSubwindow(window, height, 5, 0, 0) # TODO: use entropy (entropyWindow)
|
||||
self.upperWindow = SafeSubwindow(window, upperHeight, width-5, 0, 5)
|
||||
self.coderackWindow = SafeSubwindow(window, coderackHeight, width-5, upperHeight, 5)
|
||||
self.answersWindow = SafeSubwindow(window, answersHeight, width-5, upperHeight + coderackHeight, 5)
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
import math
|
||||
|
||||
|
||||
class Temperature(object):
|
||||
def __init__(self):
|
||||
self.reset()
|
||||
@ -47,6 +46,8 @@ class Temperature(object):
|
||||
"""
|
||||
|
||||
def getAdjustedProbability(self, value):
|
||||
# TODO: use entropy
|
||||
|
||||
"""
|
||||
This function returns the probability for a decision.
|
||||
Copied above.
|
||||
|
||||
@ -2,6 +2,7 @@ import unittest
|
||||
|
||||
from .copycat import Copycat
|
||||
|
||||
# TODO: update test cases to use entropy
|
||||
|
||||
def pnormaldist(p):
|
||||
table = {
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
|
||||
def __chooseObjectFromList(ctx, objects, attribute):
|
||||
# TODO: use entropy
|
||||
random = ctx.random
|
||||
temperature = ctx.temperature
|
||||
weights = [
|
||||
|
||||
@ -2,7 +2,6 @@ from .description import Description
|
||||
from .formulas import weightedAverage
|
||||
from .workspaceStructure import WorkspaceStructure
|
||||
|
||||
|
||||
class WorkspaceObject(WorkspaceStructure):
|
||||
# pylint: disable=too-many-instance-attributes
|
||||
def __init__(self, workspaceString):
|
||||
|
||||
Reference in New Issue
Block a user