【问题标题】:never reach 100% in Genetic algorithm在遗传算法中永远不会达到 100%
【发布时间】:2019-07-24 12:50:12
【问题描述】:

我的主程序,我认为这一切都是正确的,谁能告诉我我的错误在哪里,我从来没有得到 100% 的适应度

我很沮丧,如果你知道,请回答我

void mutate(population *parent,int ratio){

for(unsigned int i=0; i<sizeof(parent[0].gen); i++){
    int condition = (rand()%11);
    int temp0 = (int)parent[0].gen[i];
    int temp1 = (int)parent[1].gen[i];

    if(condition < ratio){
        if(temp0+10 <127 ){
            parent[0].gen[i] = char(temp0 + 10);
            //cout<<temp0<<endl;
        }else{
            temp0 = temp0 + 10 - 80;
            parent[0].gen[i] = char(temp0);
           // cout<<(int)parent[0].gen[i]<<endl;
        }

        if(temp1+10 <127 ){
            parent[1].gen[i] = char(temp1 + 10);
            //cout<<temp0<<endl;
        }else{
            temp1 = temp1 + 10 - 80;
            parent[1].gen[i] = char(temp1);
        }
    }
}

这是我的变异示例代码,完整的程序如下图

GeneticAlgorithm_1 GeneticAlgorithm_1

【问题讨论】:

  • 我认为你需要多学习一些神经网络和遗传算法。获得 100% 的成功率是不可能的。
  • 请详细说明您认为应该达到 100% 的时间和原因。
  • 您的问题似乎很有趣。不幸的是,这些屏幕截图对我们来说毫无用处,您应该更好地描述预期结果以及为什么当您的循环条件似乎被设计为以较低质量停止时,您认为应该达到 100%。

标签: c++ genetic-algorithm


【解决方案1】:

从您的问题中不清楚您正在解决什么样的问题,但很可能是 NP 完全性,其他类型可以在没有机器学习的情况下更有效地解决。但您必须了解,NP-completeness problem 的确切解决方案需要详尽搜索所有可能的解决方案。机器学习无法避免这个问题,因此实现 100% 准确率并不比基于 brutfors 的方法更容易。机器学习(尤其是遗传算法)的目标是在可接受的时间内找到可接受的解决方案。

【讨论】:

  • 欢迎您!虽然您的陈述没有错,但它根本没有回答问题。顺便说一句,genetic algorithms 不一定是机器学习。尽管它们可以用于optimising learning,但它们通常更多地与优化有关。此外,它们已被证明对于传统算法无法应对组合爆炸的一些问题非常有效。
猜你喜欢
  • 2012-01-17
  • 2020-04-12
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
  • 2021-11-02
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多