Esempio n. 1
0
def rule_strength_tester(codelet):
    rule = codelet.arguments[0]
    rule.updateStrength()
    probability = formulas.temperatureAdjustedProbability(
        rule.totalStrength / 100.0)
    assert random.random() <= probability
    coderack.newCodelet('rule-builder', codelet, rule.totalStrength, rule)
Esempio n. 2
0
def __slippability(conceptMappings):
    for mapping in conceptMappings:
        slippiness = mapping.slippability() / 100.0
        probabilityOfSlippage = formulas.temperatureAdjustedProbability(
            slippiness)
        if formulas.coinFlip(probabilityOfSlippage):
            return True
    return False
Esempio n. 3
0
def description_strength_tester(codelet):
    description = codelet.arguments[0]
    description.descriptor.buffer = 100.0
    description.updateStrength()
    strength = description.totalStrength
    probability = formulas.temperatureAdjustedProbability(strength / 100.0)
    assert formulas.coinFlip(probability)
    coderack.newCodelet('description-builder', codelet, strength)
Esempio n. 4
0
 def lengthDescriptionProbability(self):
     length = len(self.objectList)
     if length > 5:
         return 0.0
     cubedlength = length**3
     fred = cubedlength * (100.0 - slipnet.length.activation) / 100.0
     probability = 0.5**fred
     value = formulas.temperatureAdjustedProbability(probability)
     if value < 0.06:
         value = 0.0  # otherwise 1/20 chance always
     return value
Esempio n. 5
0
 def lengthDescriptionProbability(self):
     length = len(self.objectList)
     if length > 5:
         return 0.0
     cubedlength = length ** 3
     fred = cubedlength * (100.0 - slipnet.length.activation) / 100.0
     probability = 0.5 ** fred
     value = formulas.temperatureAdjustedProbability(probability)
     if value < 0.06:
         value = 0.0  # otherwise 1/20 chance always
     return value
Esempio n. 6
0
def group_strength_tester(codelet):
    # update strength value of the group
    group = codelet.arguments[0]
    __showWhichStringObjectIsFrom(group)
    group.updateStrength()
    strength = group.totalStrength
    probability = formulas.temperatureAdjustedProbability(strength / 100.0)
    assert random.random() <= probability
    # it is strong enough - post builder  & activate nodes
    group.groupCategory.getRelatedNode(slipnet.bondCategory).buffer = 100.0
    if group.directionCategory:
        group.directionCategory.buffer = 100.0
    coderack.newCodelet('group-builder', codelet, strength)
Esempio n. 7
0
def bond_strength_tester(codelet):
    bond = codelet.arguments[0]
    __showWhichStringObjectIsFrom(bond)
    bond.updateStrength()
    strength = bond.totalStrength
    probability = formulas.temperatureAdjustedProbability(strength / 100.0)
    logging.info('bond strength = %d for %s', strength, bond)
    assert formulas.coinFlip(probability)
    bond.facet.buffer = 100.0
    bond.sourceDescriptor.buffer = 100.0
    bond.destinationDescriptor.buffer = 100.0
    logging.info("succeeded: posting bond-builder")
    coderack.newCodelet('bond-builder', codelet, strength)
Esempio n. 8
0
 def singleLetterGroupProbability(self):
     numberOfSupporters = self.numberOfLocalSupportingGroups()
     if not numberOfSupporters:
         return 0.0
     if numberOfSupporters == 1:
         exp = 4.0
     elif numberOfSupporters == 2:
         exp = 2.0
     else:
         exp = 1.0
     support = self.localSupport() / 100.0
     activation = slipnet.length.activation / 100.0
     supportedActivation = (support * activation)**exp
     return formulas.temperatureAdjustedProbability(supportedActivation)
Esempio n. 9
0
 def singleLetterGroupProbability(self):
     numberOfSupporters = self.numberOfLocalSupportingGroups()
     if not numberOfSupporters:
         return 0.0
     if numberOfSupporters == 1:
         exp = 4.0
     elif numberOfSupporters == 2:
         exp = 2.0
     else:
         exp = 1.0
     support = self.localSupport() / 100.0
     activation = slipnet.length.activation / 100.0
     supportedActivation = (support * activation) ** exp
     return formulas.temperatureAdjustedProbability(supportedActivation)
Esempio n. 10
0
def correspondence_strength_tester(codelet):
    correspondence = codelet.arguments[0]
    objectFromInitial = correspondence.objectFromInitial
    objectFromTarget = correspondence.objectFromTarget
    assert objectFromInitial in workspace.objects
    assert (objectFromTarget in workspace.objects or
            correspondence.flipTargetObject and
            not workspace.target.equivalentGroup(
                objectFromTarget.flipped_version()))
    correspondence.updateStrength()
    strength = correspondence.totalStrength
    probability = formulas.temperatureAdjustedProbability(strength / 100.0)
    assert random.random() <= probability
    # activate some concepts
    for mapping in correspondence.conceptMappings:
        mapping.initialDescriptionType.buffer = 100.0
        mapping.initialDescriptor.buffer = 100.0
        mapping.targetDescriptionType.buffer = 100.0
        mapping.targetDescriptor.buffer = 100.0
    coderack.newCodelet('correspondence-builder', codelet,
                        strength, correspondence)
Esempio n. 11
0
def breaker():
    probabilityOfFizzle = (100.0 - formulas.Temperature) / 100.0
    assert not formulas.coinFlip(probabilityOfFizzle)
    # choose a structure at random
    structures = [s for s in workspace.structures if
                  isinstance(s, (Group, Bond, Correspondence))]
    assert structures
    structure = random.choice(structures)
    __showWhichStringObjectIsFrom(structure)
    breakObjects = [structure]
    if isinstance(structure, Bond):
        if structure.source.group:
            if structure.source.group == structure.destination.group:
                breakObjects += [structure.source.group]
    # try to break all objects
    for structure in breakObjects:
        breakProbability = formulas.temperatureAdjustedProbability(
            structure.totalStrength / 100.0)
        if formulas.coinFlip(breakProbability):
            return
    for structure in breakObjects:
        structure.break_the_structure()