Random 如何生成和编码(用于GA),随机的,严格的,有N片叶子的二元根树?

Random 如何生成和编码(用于GA),随机的,严格的,有N片叶子的二元根树?,random,binary-tree,Random,Binary Tree,首先,我是一名工程师,而不是计算机科学家,所以我为任何滥用术语和对CS背景的普遍无知提前道歉 以下是我问题的动机背景: 我正在考虑编写一个遗传算法优化器来帮助设计功率分配器网络(也称为波束形成网络,简称BFN)。BFN旨在将功率分配给天线阵列中的N个辐射单元中的每一个。已指定传送到每个辐射元件的总输入功率的分数。从拓扑上讲,BFN是一个严格的二叉有根树。树的每个(N-1)内部节点表示不相等的二进制功率分配器的输入端口。树的N片叶子是功率分配器输出。给定一个特定的功分器拓扑,仍然可以自由地将功分器

首先,我是一名工程师,而不是计算机科学家,所以我为任何滥用术语和对CS背景的普遍无知提前道歉

以下是我问题的动机背景: 我正在考虑编写一个遗传算法优化器来帮助设计功率分配器网络(也称为波束形成网络,简称BFN)。BFN旨在将功率分配给天线阵列中的N个辐射单元中的每一个。已指定传送到每个辐射元件的总输入功率的分数。从拓扑上讲,BFN是一个严格的二叉有根树。树的每个(N-1)内部节点表示不相等的二进制功率分配器的输入端口。树的N片叶子是功率分配器输出。给定一个特定的功分器拓扑,仍然可以自由地将功分器输出以任意顺序映射到阵列输入。有N个!输出的这种排列。在选择所需的顺序时,有几个注意事项: 1) 每个二进制耦合器的功率比应在指定的值范围内。 2) 应选择订购,以简化连接功率分配器的传输线的机械布线

BFN的输出N的数目可以在例如6到22的范围内

我已经写了一个遗传算法优化器,给定一个特定的BFN拓扑和所需的阵列输入功率分布,它将搜索整个BFN!BFN输出的排列,以产生符合功率比和良好机械布线的设计

我现在想推广我的程序,自动生成并搜索可能的BFN拓扑空间。据我所知,对于N个输出(二叉树的叶子),可以构造$C{N-1}$不同的拓扑,其中$C_N$是加泰罗尼亚数

我想知道如何以一种与染色体描述相一致的方式对一棵具有N片叶子的任意树进行编码,以便在遗传算法中使用。与此相关的还有生成填充初始群体的随机实例的需要,以及对这类染色体实施交叉和突变操作的需要。欢迎提出任何建议。请尽量减少你的答复中CS术语的数量,因为我不太可能熟悉它

提前感谢,,
彼得

哇,你真走运。Eric Lippert就在两周前…:)

树是一种特殊类型的图。图形可以表示为连接矩阵

连接矩阵回答了“节点x是否连接到节点y”的问题。有n行和n列,对应于每个节点。行/列x/y交点上的1表示连接(可用于加权方案)

当然,矩阵可以用元数据“行的长度”重写为向量

我建议以某种方式生成二叉树,例如,tzaman提到的Lippert方法,然后转换为矩阵形式,并在矩阵上定义GA运算符