IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> ГА, с++
сообщение
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Вот реализация генетического алгоритма. Вобщем, помогите исправить баг.

cout<<"Distribution tasks of the gadget: "<<endl;
out<<"Distribution tasks of the gadget: "<<endl;

for(int i = 0; i < nota; i++)
{
for(int j = 0; j < nog; j++)
{
cout <<Ma3x[i][j] <<' ';
out <<Ma3x[i][j] <<' ';
}
out <<endl;
cout <<endl;
}

cout <<endl;

Individ **Individ_1;
Individ vv = nog;

cout<<"Please, enter number of Individ: "<<endl;
cin>>noi;
out <<"Number of Individ: " <<noi<<endl;

cout <<"Please, enter number of Repetition: "<<endl;
cin >>nore;
out <<"Number of Repetition: " <<nore<<endl;
nore_1 = nore;


Кусок места, где происходит вылет из программы. Вывод матрицы срабатывает, а потом...


Прикрепленные файлы
Прикрепленный файл  Mlab_3GA.cpp ( 13.94 килобайт ) Кол-во скачиваний: 219
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Вывод матрицы срабатывает, а потом...
... а потом продолжает работать дальше. Показывай, какие данные вводишь...

Единственное, что бросается в глаза:
    Ma3x = new int*[nota];
for(int i = 0; i < nota;i++) Ma3x[i] = new int[nog];

srand(time(0)+bb+tb);

for(int i = 0; i < nota; i++)
{
num = bb+rand()%(tb - bb);
//for(int j = 0; j < nota; j++) Ma3x[i][j] = num;
for(int j = 0; j < nog; j++) Ma3x[i][j] = num;
}
Я бы все-таки заменил закомментированную строку так, как показано ниже... Иначе у тебя могут инициализироваться не все элементы матрицы...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Цитата(volvo @ 22.10.2008 23:42) *

... а потом продолжает работать дальше. Показывай, какие данные вводишь...

Единственное, что бросается в глаза:
    Ma3x = new int*[nota];
for(int i = 0; i < nota;i++) Ma3x[i] = new int[nog];

srand(time(0)+bb+tb);

for(int i = 0; i < nota; i++)
{
num = bb+rand()%(tb - bb);
//for(int j = 0; j < nota; j++) Ma3x[i][j] = num;
for(int j = 0; j < nog; j++) Ma3x[i][j] = num;
}
Я бы все-таки заменил закомментированную строку так, как показано ниже... Иначе у тебя могут инициализироваться не все элементы матрицы...

хехе всё так и оказалось smile.gif

Добавлено через 5 мин.
Вот в этом месте, где я провожу турнирный отбор особей, рандомайз мой всё время с равнивает с одной и той же особью предыдушего поколения...

srand(time(0)/RAND_MAX+random(1,nog));
ww = 0+rand()%noi;
out <<"Comparison with Individ" <<i <<',' <<ww<<endl;
cout <<"Comparison with Individ" <<i <<',' <<ww<<endl;
if(vv.get_Criterion_T() <= Individ_1[0][ww].get_Criterion_T()) Individ_1[1][j] = vv;
else Individ_1[1][j] = Individ_1[0][ww];


Как исправить этот момент?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Зачем ты на протяжении одной программы несколько раз инициализируешь датчик случайных чисел? Где-то было описание бага: при вызове srand() несколько раз функция rand() генерирует одинаковые значения... Сделай один вызов в самом начале программы, все остальные закомментируй и проверь...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Цитата(volvo @ 23.10.2008 1:11) *

Зачем ты на протяжении одной программы несколько раз инициализируешь датчик случайных чисел? Где-то было описание бага: при вызове srand() несколько раз функция rand() генерирует одинаковые значения... Сделай один вызов в самом начале программы, все остальные закомментируй и проверь...

Так а я же с разными параметрами использую srand(). Или всё равно?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Вот нашел ещё один косяк: последующее поколение полностью состоит из одинаковых особей. Чем это вызвано?...даа и ещё походу мутация барахлит)... unsure.gif


Прикрепленные файлы
Прикрепленный файл  SaveGA.txt ( 3.27 килобайт ) Кол-во скачиваний: 169
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Ты опять за свое? ОТКУДА ты взял ЭТОТ файл? Вот расскажи, ты что, действительно думаешь, что я не обратил внимание на то, что у тебя В ПРОГРАММЕ не выводится нигде строка: "Comparison with 1- Generation 2- Individ" в файл? Что выводится строка
out <<"***GENERATION*** " <<i+1<<endl;
, которая ну никак не выдаст в файл
Цитата
*** 2 - GENERATION: ***
, ну хоть что ты с ней делай - не выдаст...

Правил исходники - выкладывай новую версию, я не намерен догадываться, ЧТО ты там наисправлял... Не правил - значит спрашивай у того, кто выдумал такой выходной файл, ибо программа его сгенерировать просто не может!!!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Цитата(volvo @ 23.10.2008 2:12) *

Ты опять за свое? ОТКУДА ты взял ЭТОТ файл? Вот расскажи, ты что, действительно думаешь, что я не обратил внимание на то, что у тебя В ПРОГРАММЕ не выводится нигде строка: "Comparison with 1- Generation 2- Individ" в файл? Что выводится строка
out <<"***GENERATION*** " <<i+1<<endl;
, которая ну никак не выдаст в файл
, ну хоть что ты с ней делай - не выдаст...

Правил исходники - выкладывай новую версию, я не намерен догадываться, ЧТО ты там наисправлял... Не правил - значит спрашивай у того, кто выдумал такой выходной файл, ибо программа его сгенерировать просто не может!!!

Ну я тут совсем чуть-чуть переделал, чтоб вывод был более понятен. Вот последний вариант, который у меня сейчас на руках...


Прикрепленные файлы
Прикрепленный файл  Mlab_3GA.cpp ( 14.82 килобайт ) Кол-во скачиваний: 189
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Перешёл к реализации генетического алгоритма с элитой (алгорит организации элиты - критический путь).
Вроде бы всё вобщем работает, только имеются ошибки:
- при турнирном отборе в следущее поколение попадает особь с большим Т ( согласно алгоритму в следующее поколение должна попадать особь с меньшим Т) ;
- элита не занимает место "0" особи поколения (по моему алгоритму она должна это делать);
- не считается первое повторение Т.
Чем вызваны эти ошибки? Помогите пожалуйста их исправить.


Прикрепленные файлы
Прикрепленный файл  ganj.cpp ( 10.99 килобайт ) Кол-во скачиваний: 553
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.10.2020 6:55
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name