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)
def __slippability(conceptMappings): for mapping in conceptMappings: slippiness = mapping.slippability() / 100.0 probabilityOfSlippage = formulas.temperatureAdjustedProbability( slippiness) if formulas.coinFlip(probabilityOfSlippage): return True return False
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)
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
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
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)
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)
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)
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)
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)
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()