RLPark 1.0.0
Reinforcement Learning Framework in Java

TileCodersNoHashing.java

Go to the documentation of this file.
00001 package rlpark.plugin.rltoys.algorithms.representations.tilescoding;
00002 
00003 import java.util.ArrayList;
00004 import java.util.List;
00005 
00006 import rlpark.plugin.rltoys.algorithms.representations.discretizer.DiscretizerFactory;
00007 import rlpark.plugin.rltoys.algorithms.representations.tilescoding.hashing.Identity;
00008 import rlpark.plugin.rltoys.math.ranges.Range;
00009 import rlpark.plugin.rltoys.math.vector.BinaryVector;
00010 
00011 public class TileCodersNoHashing extends TileCoders {
00012   private static final long serialVersionUID = -5352847170450739533L;
00013   private final List<Identity> identities = new ArrayList<Identity>();
00014 
00015   public TileCodersNoHashing(int inputSize, double min, double max) {
00016     this(buildRanges(inputSize, min, max));
00017   }
00018 
00019   public TileCodersNoHashing(Range... ranges) {
00020     this(createDefaultDiscretizer(ranges), ranges.length);
00021   }
00022 
00023   public TileCodersNoHashing(DiscretizerFactory discretizerFactory, int nbInputs) {
00024     super(discretizerFactory, nbInputs);
00025   }
00026 
00027   @Override
00028   protected int computeVectorSize() {
00029     int vectorSize = 0;
00030     for (int i = 0; i < tileCoders.size(); i++) {
00031       TileCoder tileCoder = tileCoders.get(i);
00032       Identity identity = identities.get(i);
00033       vectorSize += identity.memorySize() * tileCoder.nbTilings();
00034     }
00035     return vectorSize;
00036   }
00037 
00038   @Override
00039   protected void activateIndexes(double[] inputs, BinaryVector vector) {
00040     int indexOffset = 0;
00041     for (int i = 0; i < tileCoders.size(); i++) {
00042       TileCoder tileCoder = tileCoders.get(i);
00043       Identity identity = identities.get(i);
00044       int[] activeTiles = tileCoder.updateActiveTiles(identity, inputs);
00045       for (int j = 0; j < activeTiles.length; j++) {
00046         activeTiles[j] += indexOffset;
00047         indexOffset += identity.memorySize();
00048       }
00049       setFeatureOn(vector, activeTiles);
00050     }
00051   }
00052 
00053   @Override
00054   protected void addTileCoder(TileCoder tileCoder) {
00055     super.addTileCoder(tileCoder);
00056     identities.add(new Identity(tileCoder.tilings()[0]));
00057   }
00058 }
 All Classes Namespaces Files Functions Variables Enumerations
Zephyr
RLPark