cellular encoding

This commit is contained in:
2016-05-18 22:57:06 +02:00
parent 86def08f41
commit 237c7741d2
11 changed files with 1032 additions and 0 deletions

View File

@@ -0,0 +1,143 @@
#pragma once
#include "./Instruction.h"
#include "../Cell.h"
#include "../CelularEncoding.h"
namespace NeuralNetworks {
namespace ConstructiveAlgorithms {
namespace CelularEncoding {
namespace Instruction{
class IncBias : public Instruction{
public:
virtual void run(Cell &cell, CelularEncoding &, const std::vector<double> &) override {
cell.setBias(cell.getBias()+1.0);
cell.setCodePointer(cell.getCodePointer()->c1);
}
virtual std::size_t numberOfNodes() const override {
return 1;
}
virtual std::string toString() const override {
return "IncBias";
}
};
class DecBias : public Instruction{
public:
virtual void run(Cell &cell, CelularEncoding &, const std::vector<double> &) override {
cell.setBias(cell.getBias()-1.0);
cell.setCodePointer(cell.getCodePointer()->c1);
}
virtual std::size_t numberOfNodes() const override {
return 1;
}
virtual std::string toString() const override {
return "DecBias";
}
};
class MulBias : public Instruction{
public:
virtual void run(Cell &cell, CelularEncoding &, const std::vector<double> &) override {
cell.setBias(cell.getBias()*2.0);
cell.setCodePointer(cell.getCodePointer()->c1);
}
virtual std::size_t numberOfNodes() const override {
return 1;
}
virtual std::string toString() const override {
return "MulBias";
}
};
class DivBias : public Instruction{
public:
virtual void run(Cell &cell, CelularEncoding &, const std::vector<double> &) override {
cell.setBias(cell.getBias()*0.5);
cell.setCodePointer(cell.getCodePointer()->c1);
}
virtual std::size_t numberOfNodes() const override {
return 1;
}
virtual std::string toString() const override {
return "DivBias";
}
};
class SetBiasZero : public Instruction{
public:
SetBiasZero(bool terminal = true) : _nodes(terminal ? 0 : 1) {
}
virtual void run(Cell &cell, CelularEncoding &, const std::vector<double> &) override {
cell.setBias(0.0);
cell.setCodePointer(cell.getCodePointer()->c1);
}
virtual std::size_t numberOfNodes() const override {
return _nodes;
}
virtual std::string toString() const override {
return "SetBiasZero";
}
protected:
std::size_t _nodes;
};
class SetBiasOne : public Instruction{
public:
SetBiasOne(bool terminal = true) : _nodes(terminal ? 0 : 1) {
}
virtual void run(Cell &cell, CelularEncoding &, const std::vector<double> &) override {
cell.setBias(1.0);
cell.setCodePointer(cell.getCodePointer()->c1);
}
virtual std::size_t numberOfNodes() const override {
return _nodes;
}
virtual std::string toString() const override {
return "SetBiasZero";
}
protected:
std::size_t _nodes;
};
class SetBiasMinusOne : public Instruction{
public:
SetBiasMinusOne(bool terminal = true) : _nodes(terminal ? 0 : 1) {
}
virtual void run(Cell &cell, CelularEncoding &, const std::vector<double> &) override {
cell.setBias(-1.0);
cell.setCodePointer(cell.getCodePointer()->c1);
}
virtual std::size_t numberOfNodes() const override {
return _nodes;
}
virtual std::string toString() const override {
return "SetBiasZero";
}
protected:
std::size_t _nodes;
};
}
}
}
}