RLPark 1.0.0
Reinforcement Learning Framework in Java

LTUAdaptive.java

Go to the documentation of this file.
00001 package rlpark.plugin.rltoys.algorithms.representations.ltu.units;
00002 
00003 import zephyr.plugin.core.api.monitoring.annotations.Monitor;
00004 
00005 public class LTUAdaptive extends LTUThreshold {
00006   private static final long serialVersionUID = 7927007001800685788L;
00007   public final double minFrequency;
00008   public final double maxFrequency;
00009   private final double frequencyLatencySpeed;
00010   @Monitor
00011   private double averageFrequency;
00012   @Monitor
00013   private final double thresholdStepSize;
00014 
00015 
00016   public LTUAdaptive(double minFrequency, double maxFrequency, double frequencyLatencySpeed, double thresholdStepSize) {
00017     assert minFrequency >= 0.0 && maxFrequency > minFrequency;
00018     this.minFrequency = minFrequency;
00019     this.maxFrequency = maxFrequency;
00020     this.thresholdStepSize = thresholdStepSize;
00021     this.averageFrequency = (minFrequency + maxFrequency) / 2.0;
00022     this.frequencyLatencySpeed = frequencyLatencySpeed;
00023   }
00024 
00025   public LTUAdaptive(int index, int[] inputs, byte[] weights, double minFrequency, double maxFrequency,
00026       double frequencyLatencySpeed, double thresholdStepSize) {
00027     super(index, inputs, weights);
00028     assert minFrequency >= 0.0 && maxFrequency > minFrequency;
00029     this.minFrequency = minFrequency;
00030     this.maxFrequency = maxFrequency;
00031     this.frequencyLatencySpeed = frequencyLatencySpeed;
00032     this.thresholdStepSize = thresholdStepSize;
00033   }
00034 
00035   @Override
00036   public boolean updateActivation() {
00037     boolean isActive = super.updateActivation();
00038     averageFrequency *= frequencyLatencySpeed;
00039     if (isActive)
00040       averageFrequency += 1 - frequencyLatencySpeed;
00041     if (averageFrequency > maxFrequency)
00042       threshold += thresholdStepSize;
00043     else if (averageFrequency < minFrequency)
00044       threshold -= thresholdStepSize;
00045     return isActive;
00046   }
00047 
00048   @Override
00049   public LTUAdaptive newLTU(int index, int[] inputs, byte[] weights) {
00050     return new LTUAdaptive(index, inputs, weights, minFrequency, maxFrequency, frequencyLatencySpeed, thresholdStepSize);
00051   }
00052 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark