c++ Genetic Algorithm Mutation error

人盡茶涼 提交于 2019-12-07 15:23:25

You can't throttle the multation rate this way. You need to separate the mutated bit from the probability of the mutation occuring.

for (int z = 0; z < Binscale; z++)     
{         
    if (rand() % 100 < MutationRate)        
    {
        // flip bit             
        Child1.binary_code[z] += 1; 
        Child1.binary_code[z] %= 2;
    }
} 

Even simpler way to flip bit:

Child1.binary_code[z] ^= 1;

try this:

void mutation(Parent& Child1,int childnumber)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!