遗传算法永远达不到100%

时间:2019-03-02 19:50:31

标签: c++ genetic-algorithm

我的主程序,我认为那是完全正确的,谁能告诉我我的错误在哪里,我从未达到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

1 个答案:

答案 0 :(得分:0)

您的问题尚不清楚,您要解决的是哪种问题,但很可能是NP完整性,无需机器学习,其他类型的问题也可以更加有效地解决。但是您必须了解,NP-completeness problem的确切解决方案需要详尽搜索所有可能的解决方案。机器学习无法避免这个问题,因此实现100%的准确性并不比基于brutfors的方法容易。机器学习,尤其是遗传算法的目标是在可接受的时间内找到一个可接受的解决方案。