никогда не достичь 100% в генетическом алгоритме

#c #genetic-algorithm

#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);
        }
    }
}
  

это мой пример кода для мутации, полная программа на рисунке ниже

Генетический алгоритм_1
Генетический алгоритм_1

Комментарии:

1. Я думаю, вам нужно еще немного изучить нейронные сети и генетические алгоритмы. Получить 100%-ный показатель успеха невозможно.

2. Пожалуйста, расскажите подробнее, когда и почему, по вашему мнению, вы должны достичь 100%.

3. Ваш вопрос кажется интересным. К сожалению, скриншоты для нас бесполезны, и вам следует лучше описать ожидаемый результат и почему вы считаете, что должно быть достигнуто 100%, когда ваше условие цикла, похоже, рассчитано на остановку с более низким качеством.

Ответ №1:

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

Комментарии:

1. Добро пожаловать! Хотя ваше утверждение не является неправильным, оно вообще не отвечает на вопрос. Кстати, генетические алгоритмы не обязательно являются машинным обучением. Они часто больше связаны с оптимизацией, хотя их можно использовать для оптимизации обучения . Кроме того, они оказались очень эффективными для некоторых задач, в которых традиционные алгоритмы не могут справиться с комбинаторным взрывом.