diff --git a/copycat/codelet.py b/copycat/codelet.py index 65d4f94..edb4ed8 100644 --- a/copycat/codelet.py +++ b/copycat/codelet.py @@ -3,7 +3,6 @@ class Codelet(object): self.name = name self.urgency = urgency self.arguments = [] - self.pressure = None self.timeStamp = timestamp def __repr__(self): diff --git a/copycat/coderack.py b/copycat/coderack.py index 3674755..df1eb4b 100644 --- a/copycat/coderack.py +++ b/copycat/coderack.py @@ -5,7 +5,6 @@ import random import codeletMethods import formulas from codelet import Codelet -from coderackPressure import CoderackPressures from temperature import temperature from workspace import workspace @@ -74,7 +73,6 @@ def howManyToPost(workspace, codeletName): class Coderack(object): def __init__(self, slipnet): self.slipnet = slipnet - self.pressures = CoderackPressures() self.reset() self.runCodelets = {} self.postings = {} @@ -116,7 +114,6 @@ class Coderack(object): self.codelets = [] self.codeletsRun = 0 temperature.clamped = True - self.pressures.reset() def updateCodelets(self): if self.codeletsRun > 0: @@ -125,7 +122,6 @@ class Coderack(object): def post(self, codelet): self.postings[codelet.name] = self.postings.get(codelet.name, 0) + 1 - self.pressures.addCodelet(codelet) self.codelets += [codelet] if len(self.codelets) > 100: oldCodelet = self.chooseOldCodelet() @@ -178,7 +174,6 @@ class Coderack(object): def removeCodelet(self, codelet): self.codelets.remove(codelet) - self.pressures.removeCodelet(codelet) def newCodelet(self, name, oldCodelet, strength, arguments=None): #logging.debug('Posting new codelet called %s' % name) @@ -188,7 +183,6 @@ class Coderack(object): newCodelet.arguments = [arguments] else: newCodelet.arguments = oldCodelet.arguments - newCodelet.pressure = oldCodelet.pressure self.post(newCodelet) # pylint: disable=too-many-arguments diff --git a/copycat/coderackPressure.py b/copycat/coderackPressure.py deleted file mode 100644 index 229b7d7..0000000 --- a/copycat/coderackPressure.py +++ /dev/null @@ -1,115 +0,0 @@ -import logging -from formulas import Temperature -from slipnet import slipnet - - -class CoderackPressure(object): - def __init__(self, name): - self.name = name - - def reset(self): - self.values = [] - self.codelets = [] - - -def _codelet_index(codelet): - name_indices = { - 'bottom-up-bond-scout': 0, - 'top-down-bond-scout--category': { - slipnet.successor: 1, - slipnet.predecessor: 2, - None: 3 - }, - 'top-down-bond-scout--direction': { - slipnet.left: 4, - slipnet.right: 5, - None: 3, - }, - 'top-down-group-scout--category': { - slipnet.successorGroup: 6, - slipnet.predecessorGroup: 7, - None: 8, - }, - 'top-down-group-scout--direction': { - slipnet.left: 9, - slipnet.right: 10, - None: -1, - }, - 'group-scout--whole-string': 11, - 'replacement-finder': 12, - 'rule-scout': 13, - 'rule-translator': 14, - 'bottom-up-correspondence-scout': 15, - 'important-object-correspondence-scout': 16, - 'breaker': 17, - } - i = name_indices.get(codelet.name, -1) - try: - return int(i) - except (TypeError, ValueError): - try: - node = codelet.arguments[0] - return i[node] - except KeyError: - return i[None] - - -class CoderackPressures(object): - def __init__(self): - self.pressures = [ - CoderackPressure('Bottom Up Bonds'), - CoderackPressure('Top Down Successor Bonds'), - CoderackPressure('Top Down Predecessor Bonds'), - CoderackPressure('Top Down Sameness Bonds'), - CoderackPressure('Top Down Left Bonds'), - CoderackPressure('Top Down Right Bonds'), - CoderackPressure('Top Down Successor Group'), - CoderackPressure('Top Down Predecessor Group'), - CoderackPressure('Top Down Sameness Group'), - CoderackPressure('Top Down Left Group'), - CoderackPressure('Top Down Right Group'), - CoderackPressure('Bottom Up Whole Group'), - CoderackPressure('Replacement Finder'), - CoderackPressure('Rule Codelets'), - CoderackPressure('Rule Translator'), - CoderackPressure('Bottom Up Correspondences'), - CoderackPressure('Important Object Correspondences'), - CoderackPressure('Breakers'), - ] - self.reset() - - def calculatePressures(self): - scale = (100.0 - Temperature + 10.0) / 15.0 - values = map( - lambda pressure: sum(c.urgency ** scale for c in pressure.codelets), - self.pressures - ) - totalValue = sum(values) or 1.0 - values = [value / totalValue for value in values] - self.maxValue = max(values) - for pressure, value in zip(self.pressures, values): - pressure.values += [value * 100.0] - for codelet in self.removedCodelets: - if codelet.pressure: - codelet.pressure.codelets.remove(codelet) - self.removedCodelets = [] - - def reset(self): - self.maxValue = 0.001 - self.removedCodelets = [] - for pressure in self.pressures: - pressure.reset() - - def addCodelet(self, codelet): - i = _codelet_index(codelet) - if i >= 0: - codelet.pressure = self.pressures[i] - if codelet.pressure: - codelet.pressure.codelets += [codelet] - logging.info('Add %s: %d', codelet.name, i) - - def removeCodelet(self, codelet): - self.removedCodelets += [codelet] - - def numberOfPressures(self): - return len(self.pressures) diff --git a/copycat/copycat.py b/copycat/copycat.py index 79399fd..ad8091b 100644 --- a/copycat/copycat.py +++ b/copycat/copycat.py @@ -18,7 +18,6 @@ def mainLoop(lastUpdate): coderack.updateCodelets() slipnet.update() workspace.updateTemperature() - coderack.pressures.calculatePressures() lastUpdate = currentTime logging.debug('Number of codelets: %d', len(coderack.codelets)) coderack.chooseAndRunCodelet()