никогда не достигать 100% в генетическом алгоритме - PullRequest
0 голосов
/ 02 марта 2019

Моя основная программа, я думаю, это все правильно, может кто-нибудь сказать мне, где моя ошибка, у меня никогда не было 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 голосов
/ 02 марта 2019

Из вашего вопроса не ясно, какую проблему вы решаете, но, скорее всего, это NP-полнота, другие типы могут быть решены гораздо эффективнее без машинного обучения.Но вы должны понимать, что точное решение проблемы NP-полноты требует исчерпывающего поиска всех возможных решений .Машинное обучение не может избежать этой проблемы, поэтому достижение 100% точности ничуть не легче, чем методы, основанные на брутфорсе.Цель машинного обучения и, в частности, генетических алгоритмов - найти приемлемое решение за приемлемое время .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...