Ejemplo n.º 1
0
    def updateValue(self):
        self.rawImportance = self.__calculateRawImportance()
        intraStringHappiness = self.__calculateIntraStringHappiness()
        self.intraStringUnhappiness = 100.0 - intraStringHappiness

        interStringHappiness = 0.0
        if self.correspondence:
            interStringHappiness = self.correspondence.totalStrength
        self.interStringUnhappiness = 100.0 - interStringHappiness

        averageHappiness = (intraStringHappiness + interStringHappiness) / 2
        self.totalUnhappiness = 100.0 - averageHappiness

        if self.clampSalience:
            self.intraStringSalience = 100.0
            self.interStringSalience = 100.0
        else:
            from formulas import weightedAverage
            self.intraStringSalience = weightedAverage(
                ((self.relativeImportance, 0.2), (self.intraStringUnhappiness,
                                                  0.8)))
            self.interStringSalience = weightedAverage(
                ((self.relativeImportance, 0.8), (self.interStringUnhappiness,
                                                  0.2)))
        self.totalSalience = (self.intraStringSalience +
                              self.interStringSalience) / 2.0
        logging.info('Set salience of %s to %f = (%f + %f)/2', self.__str__(),
                     self.totalSalience, self.intraStringSalience,
                     self.interStringSalience)
Ejemplo n.º 2
0
    def updateValue(self):
        self.rawImportance = self.__calculateRawImportance()
        intraStringHappiness = self.__calculateIntraStringHappiness()
        self.intraStringUnhappiness = 100.0 - intraStringHappiness

        interStringHappiness = 0.0
        if self.correspondence:
            interStringHappiness = self.correspondence.totalStrength
        self.interStringUnhappiness = 100.0 - interStringHappiness

        averageHappiness = (intraStringHappiness + interStringHappiness) / 2
        self.totalUnhappiness = 100.0 - averageHappiness

        if self.clampSalience:
            self.intraStringSalience = 100.0
            self.interStringSalience = 100.0
        else:
            from formulas import weightedAverage
            self.intraStringSalience = weightedAverage((
                (self.relativeImportance, 0.2),
                (self.intraStringUnhappiness, 0.8)))
            self.interStringSalience = weightedAverage((
                (self.relativeImportance, 0.8),
                (self.interStringUnhappiness, 0.2)))
        self.totalSalience = (self.intraStringSalience +
                              self.interStringSalience) / 2.0
        logging.info('Set salience of %s to %f = (%f + %f)/2',
                     self.__str__(), self.totalSalience,
                     self.intraStringSalience, self.interStringSalience)
Ejemplo n.º 3
0
 def updateInternalStrength(self):
     if not (self.descriptor and self.relation):
         self.internalStrength = 0.0
         return
     averageDepth = (self.descriptor.conceptualDepth +
                     self.relation.conceptualDepth) / 2.0
     averageDepth **= 1.1
     # see if the object corresponds to an object
     # if so, see if the descriptor is present (modulo slippages) in the
     # corresponding object
     changedObjects = [o for o in workspace.initial.objects if o.changed]
     changed = changedObjects[0]
     sharedDescriptorTerm = 0.0
     if changed and changed.correspondence:
         targetObject = changed.correspondence.objectFromTarget
         slippages = workspace.slippages()
         slipnode = self.descriptor.applySlippages(slippages)
         if not targetObject.described(slipnode):
             self.internalStrength = 0.0
             return
         sharedDescriptorTerm = 100.0
     conceptual_height = (100.0 - self.descriptor.conceptualDepth) / 10.0
     sharedDescriptorWeight = conceptual_height ** 1.4
     depthDifference = 100.0 - abs(self.descriptor.conceptualDepth -
                                   self.relation.conceptualDepth)
     weights = ((depthDifference, 12),
                (averageDepth, 18),
                (sharedDescriptorTerm, sharedDescriptorWeight))
     self.internalStrength = weightedAverage(weights)
     if self.internalStrength > 100.0:
         self.internalStrength = 100.0
Ejemplo n.º 4
0
 def updateInternalStrength(self):
     if not (self.descriptor and self.relation):
         self.internalStrength = 0.0
         return
     averageDepth = (self.descriptor.conceptualDepth +
                     self.relation.conceptualDepth) / 2.0
     averageDepth **= 1.1
     # see if the object corresponds to an object
     # if so, see if the descriptor is present (modulo slippages) in the
     # corresponding object
     changedObjects = [o for o in workspace.initial.objects if o.changed]
     changed = changedObjects[0]
     sharedDescriptorTerm = 0.0
     if changed and changed.correspondence:
         targetObject = changed.correspondence.objectFromTarget
         slippages = workspace.slippages()
         slipnode = self.descriptor.applySlippages(slippages)
         if not targetObject.described(slipnode):
             self.internalStrength = 0.0
             return
         sharedDescriptorTerm = 100.0
     conceptual_height = (100.0 - self.descriptor.conceptualDepth) / 10.0
     sharedDescriptorWeight = conceptual_height**1.4
     depthDifference = 100.0 - abs(self.descriptor.conceptualDepth -
                                   self.relation.conceptualDepth)
     weights = ((depthDifference, 12), (averageDepth, 18),
                (sharedDescriptorTerm, sharedDescriptorWeight))
     self.internalStrength = weightedAverage(weights)
     if self.internalStrength > 100.0:
         self.internalStrength = 100.0
Ejemplo n.º 5
0
 def updateInternalStrength(self):
     relatedBondAssociation = self.groupCategory.getRelatedNode(slipnet.bondCategory).degreeOfAssociation()
     bondWeight = relatedBondAssociation ** 0.98
     length = len(self.objectList)
     if length == 1:
         lengthFactor = 5.0
     elif length == 2:
         lengthFactor = 20.0
     elif length == 3:
         lengthFactor = 60.0
     else:
         lengthFactor = 90.0
     lengthWeight = 100.0 - bondWeight
     weightList = ((relatedBondAssociation, bondWeight), (lengthFactor, lengthWeight))
     self.internalStrength = formulas.weightedAverage(weightList)
Ejemplo n.º 6
0
 def updateInternalStrength(self):
     relatedBondAssociation = self.groupCategory.getRelatedNode(
         slipnet.bondCategory).degreeOfAssociation()
     bondWeight = relatedBondAssociation**0.98
     length = len(self.objectList)
     if length == 1:
         lengthFactor = 5.0
     elif length == 2:
         lengthFactor = 20.0
     elif length == 3:
         lengthFactor = 60.0
     else:
         lengthFactor = 90.0
     lengthWeight = 100.0 - bondWeight
     weightList = ((relatedBondAssociation, bondWeight), (lengthFactor,
                                                          lengthWeight))
     self.internalStrength = formulas.weightedAverage(weightList)
Ejemplo n.º 7
0
 def updateTemperature(self):
     logging.debug('updateTemperature')
     workspace.assessTemperature()
     ruleWeakness = 100.0
     if workspace.rule:
         workspace.rule.update_strength()
         ruleWeakness = 100.0 - workspace.rule.total_strength
     values = ((workspace.totalUnhappiness, 0.8), (ruleWeakness, 0.2))
     slightly_above_actual_temperature = formulas.actualTemperature + 0.001
     logging.info('actualTemperature: %f' % slightly_above_actual_temperature)
     formulas.actualTemperature = formulas.weightedAverage(values)
     logging.info('unhappiness: %f, weakness: %f, actualTemperature: %f' % (
         workspace.totalUnhappiness + 0.001, ruleWeakness + 0.001, formulas.actualTemperature + 0.001))
     if temperature.clamped:
         formulas.actualTemperature = 100.0
     logging.info('actualTemperature: %f' % (formulas.actualTemperature + 0.001))
     temperature.update(formulas.actualTemperature)
     if not self.clampTemperature:
         formulas.Temperature = formulas.actualTemperature
     temperature.update(formulas.Temperature)
Ejemplo n.º 8
0
 def updateTemperature(self):
     logging.debug('updateTemperature')
     workspace.assessTemperature()
     ruleWeakness = 100.0
     if workspace.rule:
         workspace.rule.updateStrength()
         ruleWeakness = 100.0 - workspace.rule.totalStrength
     values = ((workspace.totalUnhappiness, 0.8), (ruleWeakness, 0.2))
     above_actual_temperature = formulas.actualTemperature + 0.001
     logging.info('actualTemperature: %f', above_actual_temperature)
     formulas.actualTemperature = formulas.weightedAverage(values)
     logging.info('unhappiness: %f, weakness: %f, actualTemperature: %f',
                  workspace.totalUnhappiness + 0.001, ruleWeakness + 0.001,
                  formulas.actualTemperature + 0.001)
     if temperature.clamped:
         formulas.actualTemperature = 100.0
     logging.info('actualTemperature: %f',
                  formulas.actualTemperature + 0.001)
     temperature.update(formulas.actualTemperature)
     if not self.clampTemperature:
         formulas.Temperature = formulas.actualTemperature
     temperature.update(formulas.Temperature)
Ejemplo n.º 9
0
 def updateTotalStrength(self):
     """Recalculate the total strength based on internal and external strengths"""
     weights = ((self.internalStrength, self.internalStrength),
                (self.externalStrength, 100 - self.internalStrength))
     strength = formulas.weightedAverage(weights)
     self.totalStrength = strength
Ejemplo n.º 10
0
 def updateTotalStrength(self):
     """Recalculate the total strength based on internal and external strengths"""
     weights = ((self.internalStrength, self.internalStrength), (self.externalStrength, 100 - self.internalStrength))
     strength = formulas.weightedAverage(weights)
     self.totalStrength = strength