This commit is contained in:
2025-10-09 16:12:00 +08:00
parent 693905ab12
commit 53fee436b4

View File

@@ -0,0 +1,44 @@
/*
* Copyright 2018 the original author or authors.
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
* applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
* OF ANY KIND, either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*/
package com.gitee.drinkjava2.frog.brain;
/**
* Cell is a basic node of brain 3d array
*
* 从效率的角度出发Cell以及Cell上的Line这两个对象都不实际创建因为Java中对象的操作比数组慢得多
* 所以Cell这个类里只放一些文档或静态方法编程时采用数组来代替Cell对象或Line对象 属于Cell和Line对象的方法通常直接实作在Gene类里。
*
*
* 关于Cell和Line的特性(假想)
* Cell相当于一个脑神经元细胞的细胞主体部分是Line(树突、轴突)的根基因只到Cell级别Line作为Cell的属性存在。
* Cell激活后给每个树突轴突Line)发送能量(此处能量可以不守恒,由它的上层计算机系统注入能量即熵)。
*
* Line主要功能是能量传递 但也有可能长久保存能量
* cell和line有由基因来决定的各种属性如传送给间隔时间、 阀值、能量下降曲线、能量扣除值、能量输出值等属性它们的组合cell-Line, Line-Line)非常复杂。 分裂和遗传算法的主要任务就是找出cell和Line的空间分布组合。
* 目前编程先只考虑Cell-Line这种组合暂不考虑Line-Line这种空间组合
* ======== Line可以是无状态或有状态的 =========
* 如果不保存能量Line就是无状态的甚至可以不需要给Line分配内存
* 打个比方比如
* "6叉Line属性"会对四周的细胞发送能量“特长上Line属性”会对上方100个细胞间隔的细胞发送能量这些个行为实际上并不需要创建Line对象给它分配内存而是成了Cell的一种行为。物理上必须用树突轴突来实
* 现的功能,用电脑来模拟时可以直接用方法行为来代替。
*
* 但是当Line是有状态时情况就不同了必须给它分配内存空间一个细胞有多个line所以要占用海量的内存。有状态Line可以实现复杂的逻辑可以把能量保存在line上实现记忆功能。
*
* 总体来说脑是简单的决定它结构的熵并不多一颗人类受精卵约包含750MB的信息所以受精卵里并不记录每个细胞、每个连线的位置而是大致决定有多少种类细胞每类细胞上有相似的连线然后交给分裂算法来
* 生成海量的细胞但是这个脑的复杂性与细胞数量无关这个复杂性即熵量仅仅是由这750MB还要去除与脑结构不相关的其它部分的信息来决定的脑本身的复杂度可能定义为"约50MB信息控制的100亿细胞的分形结构"。
*
* @author Yong Zhu
* @since 1.0
*/
public class Cell {
}