Пример #1
0
    def __init__(self,
                 motorValues=range(-4, 4 + 1),
                 sparsity=0.02,
                 encoderResolution=0.5,
                 bmParams=None):
        super(PositionBehaviorModel, self).__init__(motorValues=motorValues)
        self.encoderResolution = encoderResolution
        bmParams = bmParams or {}

        numMotorColumns = len(self.motorValues)
        bmParams["numMotorColumns"] = numMotorColumns
        self.bm = BehaviorMemory(**bmParams)

        self.sensorN = self.bm.numSensorColumns
        self.sensorW = int(self.sensorN * sparsity) + 1

        self.sensorEncoder = CoordinateEncoder(w=self.sensorW, n=self.sensorN)
Пример #2
0
class PositionBehaviorModel(Model):
    def __init__(self,
                 motorValues=range(-4, 4 + 1),
                 sparsity=0.02,
                 encoderResolution=0.5,
                 bmParams=None):
        super(PositionBehaviorModel, self).__init__(motorValues=motorValues)
        self.encoderResolution = encoderResolution
        bmParams = bmParams or {}

        numMotorColumns = len(self.motorValues)
        bmParams["numMotorColumns"] = numMotorColumns
        self.bm = BehaviorMemory(**bmParams)

        self.sensorN = self.bm.numSensorColumns
        self.sensorW = int(self.sensorN * sparsity) + 1

        self.sensorEncoder = CoordinateEncoder(w=self.sensorW, n=self.sensorN)

    def update(self, sensorValue, motorValue, goalValue=None):
        motorPattern = set([self.motorValues.index(motorValue)])

        scale = 100
        radius = int(self.encoderResolution * scale)
        sensorInput = (numpy.array([int(sensorValue * scale)]), radius)
        sensorPattern = set(
            self.sensorEncoder.encode(sensorInput).nonzero()[0])

        goalPattern = set()
        if goalValue is not None:
            goalInput = (numpy.array([int(goalValue * scale)]), radius)
            goalPattern = set(
                self.sensorEncoder.encode(goalInput).nonzero()[0])

        self.bm.compute(motorPattern, sensorPattern, goalPattern)

        if goalValue is not None:
            return self.decodeMotor()

    def decodeMotor(self):
        idx = self.bm.motor.argmax()
        return self.motorValues[idx]
Пример #3
0
class PositionBehaviorModel(Model):

  def __init__(self, motorValues=range(-4, 4+1),
               sparsity=0.02, encoderResolution=0.5, bmParams=None):
    super(PositionBehaviorModel, self).__init__(motorValues=motorValues)
    self.encoderResolution = encoderResolution
    bmParams = bmParams or {}

    numMotorColumns = len(self.motorValues)
    bmParams["numMotorColumns"] = numMotorColumns
    self.bm = BehaviorMemory(**bmParams)

    self.sensorN = self.bm.numSensorColumns
    self.sensorW = int(self.sensorN * sparsity) + 1

    self.sensorEncoder = CoordinateEncoder(w=self.sensorW, n=self.sensorN)


  def update(self, sensorValue, motorValue, goalValue=None):
    motorPattern = set([self.motorValues.index(motorValue)])

    scale = 100
    radius = int(self.encoderResolution * scale)
    sensorInput = (numpy.array([int(sensorValue * scale)]), radius)
    sensorPattern = set(self.sensorEncoder.encode(sensorInput).nonzero()[0])

    goalPattern = set()
    if goalValue is not None:
      goalInput = (numpy.array([int(goalValue * scale)]), radius)
      goalPattern = set(self.sensorEncoder.encode(goalInput).nonzero()[0])

    self.bm.compute(motorPattern, sensorPattern, goalPattern)

    if goalValue is not None:
      return self.decodeMotor()


  def decodeMotor(self):
    idx = self.bm.motor.argmax()
    return self.motorValues[idx]
Пример #4
0
  def __init__(self, motorValues=range(-4, 4+1),
               sparsity=0.02, encoderResolution=0.5, bmParams=None):
    super(PositionBehaviorModel, self).__init__(motorValues=motorValues)
    self.encoderResolution = encoderResolution
    bmParams = bmParams or {}

    numMotorColumns = len(self.motorValues)
    bmParams["numMotorColumns"] = numMotorColumns
    self.bm = BehaviorMemory(**bmParams)

    self.sensorN = self.bm.numSensorColumns
    self.sensorW = int(self.sensorN * sparsity) + 1

    self.sensorEncoder = CoordinateEncoder(w=self.sensorW, n=self.sensorN)