在遗传算法中从未达到100%

问题描述 投票:-5回答:1

我的主要计划,我认为这一切都正确,任何人都可以告诉我我的错误,我从来没有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

c++ genetic-algorithm
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.