rpr*_*ndi 3 c++ artificial-intelligence genetic-algorithm data-structures
我需要实现为我的问题(大学项目)定制的遗传算法,并且第一个版本将其编码为短的矩阵(每个染色体的比特x人口大小).
这是一个糟糕的设计,因为我宣布一个简短但仅使用"0"和"1"值...但它只是一个原型,它按预期工作,现在是时候开发一个新的, 改良版.性能在这里很重要,但也很简单.
我研究过并提出:
对于染色体: - 字符串类(如"0100100010") - 布尔数组 - 向量(向量似乎针对布尔进行了优化) - Bitset(听起来最自然)
并为人口: - C数组[] - 矢量 - 队列
我倾向于选择矢量为chromossome和阵列为pop,但我想有任何有这个主题经验的人的意见.
提前致谢!
我猜你想要随机访问人群和基因.你说性能很重要,我将其解释为执行速度.因此,你可能最好使用vector<>染色体和vector<char>基因.原因vector<char>是bitset<>并且vector<bool>针对内存消耗进行了优化,因此速度很慢. vector<char>将以x8内存为代价提供更高的速度(假设char您的系统为= byte).所以如果你想要速度,那就去吧vector<char>.如果内存消耗是最重要的,那么使用vector<bool>或bitset<>. bitset<>这似乎是一个自然的选择,但是,请记住它是根据位数模板化的,这意味着a)基因的数量必须在编译时固定并且已知(我猜这是一个很大的没有 - no),和b)如果你使用不同的大小,你最终会使用bitset每种bitset方法的一个副本(虽然内联可能会否定这一点),即代码膨胀.总的来说,vector<bool>如果你不想要,我猜你会更好vector<char>.
如果你担心的美学vector<char>你可以typedef char gene;再使用vector<gene>,它看起来更自然.
A string就像一个vector<char>但更麻烦.
| 归档时间: |
|
| 查看次数: |
2832 次 |
| 最近记录: |