【问题标题】:matlab crossover genetic algorithm [duplicate]matlab交叉遗传算法
【发布时间】:2013-07-17 21:01:30
【问题描述】:

我正在尝试实现遗传算法。我正在尝试实现单阶交叉。我无法这样做。请帮忙!

假设这是我的人口

new_pop =

0000011001
0000011001
0000000100
0000011001
0000011001
0000010001

我想从这个集合中随机选择 2 个父母并进行单次交叉。我上面给出的集合是有序的,也就是说,更健康的个体被放置在上面。如何进行单阶交叉?

任何帮助将不胜感激!

【问题讨论】:

标签: matlab genetic-algorithm


【解决方案1】:

以下是帮助您入门的内容:

%Randomly choose 2 individuals

n = size(new_pop, 1);
l = size(new_pop, 2);

breeders = new_pop(randperm(n,2),:);

%Choose a crossover point

cp = randperm(l, 1);

%Crossover

b1 = [breeders(1, 1:cp), breeders(2, cp+1:end)];
b2 = [breeders(2, 1:cp), breeders(1, cp+1:end)];

【讨论】:

  • 我编辑了你的答案!请检查!
  • 您好,您能告诉我如何以这样的方式选择,以便选择更健康的父母的可能性更高!
  • 所以你想知道如何从一个被选中的概率与大小成正比的向量中挑选一个元素?我建议您尝试解决问题,如果无法解决,请作为新问题提出。
  • 还是谢谢你。我明白了!
  • @roni 当然,如果这有帮助,那么请考虑接受它是正确的吗?
猜你喜欢
  • 2014-08-12
  • 2016-08-31
  • 2015-07-03
  • 2016-09-16
  • 1970-01-01
  • 2011-10-11
  • 2015-07-15
  • 2019-08-19
相关资源
最近更新 更多