我的主要计划,我认为这一切都正确,任何人都可以告诉我我的错误,我从来没有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);
}
}
}
这是我的变异示例代码,完整程序如下图所示
从你的问题中不清楚你正在解决什么样的问题,但很可能是NP完全性,其他类型可以在没有机器学习的情况下更有效地解决。但是你必须明白,NP-completeness problem的确切解决方案需要穷举搜索所有可能的解决方案。机器学习无法避免这个问题,因此实现100%准确性并不比基于brutfors的方法更容易。机器学习,特别是遗传算法的目标是在可接受的时间内找到可接受的解决方案。