143 lines
3.2 KiB
C++
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;
|
|
};
|
|
}
|
|
}
|
|
}
|
|
} |