GXNA
Published:
前言
TNNA通过基本的元胞结构,可实现基本人工智能学习框架(包括一般性的神经元,树状及图状网络表达,元胞动态性,状态机…)。但是对于神经元的管理十分繁琐,而对于元胞控制,也十分不方便。在图学习的今天,将一个学习网络结构作为基于元胞自动机的二阶优化方式,是一个极为可信的发展方向。而神经元的管理(比如生灭),我们通过CELL的上级抽象NODE来管理——NODE如同树枝,他的末端生长了CELL;而TREE则为整个网络的支架,如同人的骨架,决定了NODE的生长——骨架构成一个整体分布,末端生出了NODE。由于NODE可生成NODE与CELL,而CELL不可生成CELL,所以NODE是一个树结构上的凌域图结构(也可以通过引入元胞结构进行进化);而CELL是纯粹的元胞过程,元胞生成及邻域联系构成了整个图结构上的数据流。
- 人工智能
元胞自动机
- 动态优化
- 动态储存
原理
数据结构
GXNA的基本单元相比而其中
template<typename Key,typename NodeKernel,typename NodeLink,typename NodeCtrl,typename CellKernel,typename CellTransform>
class CELL{
public:
typedef CELL<Key,NodeKernel,NodeLink,NodeCtrl,CellKernel,CellTransform> Self;
typedef NODE<Key,NodeKernel,NodeLink,NodeCtrl,CellKernel,CellTransform> Node;
typedef std::shared_ptr<Self> This;
typedef Node* Root;
typedef std::map<Self*,CellTransform> CellIO;
private:
std::pair<Root,NodeCtrl> _root;
Json::Value _args;
CellKernel _active;
std::pair<CellIO,CellIO> _relativity;
mutable std::tuple<GTNAStatus,std::thread,std::timed_mutex> _thread;
};
template<typename Key,typename NodeKernel,typename NodeLink,typename NodeCtrl,typename CellKernel,typename CellTransform>
class NODE{
public:
typedef CELL<Key,NodeKernel,NodeLink,NodeCtrl,CellKernel,CellTransform> Cell;
typedef NODE<Key,NodeKernel,NodeLink,NodeCtrl,CellKernel,CellTransform> Self;
typedef TREE<Key,NodeKernel,NodeLink,NodeCtrl,CellKernel,CellTransform> Tree;
typedef std::shared_ptr<Self> This;
typedef std::shared_ptr<Cell> Leaf;
typedef std::map<Self*,NodeLink> NodeIO;
typedef std::map<Cell*,NodeCtrl> CtrlIO;
private:
std::variant<std::map<Key,Leaf>,
std::map<Key,This>> _next;
std::variant<Tree*,Self*> _root;
Json::Value _args;
NodeKernel _active;
std::pair<NodeIO,NodeIO> _relativity;
mutable std::tuple<GTNAStatus,std::thread,std::timed_mutex> _thread;
};
template<typename Key,typename NodeKernel,typename NodeLink,typename NodeCtrl,typename CellKernel,typename CellTransform>
class TREE{
public:
typedef std::shared_ptr<NODE<Key,NodeKernel,NodeLink,NodeCtrl,CellKernel,CellTransform>> Node;
typedef TREE<Key,NodeKernel,NodeLink,NodeCtrl,CellKernel,CellTransform> Self;
typedef std::shared_ptr<Self> This;
private:
std::variant<std::map<Key,Node>,
std::map<Key,This>> _next;
Self* _root;
Json::Value _args;
};