【发布时间】:2016-09-06 14:28:35
【问题描述】:
我正在做一个项目,探索在建筑中使用遗传算法,我们使用进化方法在 3d 中创建 Voronoi 镶嵌。这是使用用于 openFrameworks (c++) 的 ofxVoro++ 完成的。
我们的基因组染色体是 3D 点的向量(列表)。我们已经实现了单点和两点交叉和突变,它以一定的概率随机化这些点。在我见过的大多数例子中,基因组是二进制编码的,我认为这会导致突变和交叉以不同的方式发挥作用。
所以我的问题是:二进制编码还有其他好处(速度除外)吗?您将如何在 c++ 中处理这种编码/解码?从二进制到 3d 点列表。
最好的问候, 弗雷德
【问题讨论】:
-
考虑到计算机上的所有内容都是二进制编码的,您已经这样做了。将染色体视为由 3d 点组成仅意味着所有操作都会产生位序列,这些位序列是浮点数/定点数的合法表示。
-
在人工智能方面需要帮助? area51.stackexchange.com/proposals/93481/…
-
没有。您不必使用二进制编码。使用任何你想要的东西。只需确保您有适当的变异和交叉运算符即可。
标签: c++ genetic-algorithm openframeworks voronoi evolutionary-algorithm