Files
2016-05-18 22:57:06 +02:00

143 lines
3.2 KiB
C++

#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;
};
}
}
}
}