С Новым годом! Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
3 / 3 / 1
Регистрация: 01.12.2012
Сообщений: 61
1

Генетический алгоритм - реализовать это в матлабе

15.11.2016, 11:57. Показов 2466. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите реализовать это в матлабе пожалуйста. Срочно надо решить. Там есть документ это начало. В документе есть пример, по этому примеру надо сделать 10 пунктов которые приведены ниже

Порядок решения задачи
1.Создание исходной популяции: приемлемые варианты.
2.Аргументация выбора сбособа создания исходной популяции.
3.Кодирование особи-решения.
4.Выбор операторов кроссинговера и мутации.
5.Принятиее решения о методе выбора родительских особей.
6.Выбор подхода к сокращению популяции.
7.Реализация модели и графического симулятора.
8.Проверка работоспособности выбранной модификации модели ГА.
9.Определение оптимальных параметров ГА.
10.Оценка работы модели ГА и реализации.
Вложения
Тип файла: docx Doc1.docx (45.8 Кб, 17 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
15.11.2016, 11:57
Ответы с готовыми решениями:

Реализовать генетический алгоритм для прогнозирования
Реализация генетического алгоритма для прогнозирования в matlab

Генетический алгоритм
Добрый день! Помогите пожалуйста с ген алгоритмами. Делаю через GATOOL, создал М-файл с функцией:...

Оптимизация функции (Генетический алгоритм)
Задание вот такое: Дана следующая функция: 1. Провести оптимизацию заданной функции в Matlab (с...

Как работает генетический алгоритм
Здравствуйте, интересуют следующие вопросы: Как работает генетический алгоритм в Matlab? Как он...

4
Модератор
Эксперт по математике/физике
5277 / 4059 / 1389
Регистрация: 30.07.2012
Сообщений: 12,429
15.11.2016, 14:38 2
V_i_p, загляните в самый низ этой страницы в раздел "Похожие темы". Можете найти для себя много полезной информации...
0
3 / 3 / 1
Регистрация: 01.12.2012
Сообщений: 61
15.11.2016, 22:10  [ТС] 3
Я просмотрел, но ничего не нашол

Добавлено через 21 минуту
А можете помочь решить??? или хотя бы начало сделать чтобы мне было от чего оттолкнуться?

Добавлено через 1 час 11 минут
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
n=10; 
x=(-n):(n);
//--РОДИТЕЛИ 0-10
for m=1:n 
i=10*rand(); 
roditel(1,m)=i; 
end
//--РОДИТЕЛИ целые числа--// 
roditel=randint(1,n,[-n n]); 
for m=1:n 
for z=1:p 
i=randint(1,1,[1 n]); 
k1(z,m)=roditel(1,i); 
i=randint(1,1,[1 n]); 
k2(z,m)=roditel(1,i); 
end 
end
 
for m=1:n 
for z=1:p 
x=k1(z,m); 
f1(z,m)=(1.85-x).*(cos(3.5.*x)-0.5); 
x=k2(z,m); 
f2(z,m)=(1.85-x).*(cos(3.5.*x)-0.5); 
end 
end 
[y1,Index1]=max(f1); %максимизация функции 
[y2,Index2]=max(f2);
 
for m=1:n 
i=Index1(1,m); 
roditel(1,m)=k1(i,m); 
i=Index2(1,m); 
roditel(2,m)=k2(i,m); 
end 
///кроссинговер
for m=1:n 
i=roditel(2,m)-roditel(1,m); 
for z=1:2 
qe=rand(); %случайный множитель 
potomok(z,m)=roditel(z,m)+i*qe; 
end 
end 
 
for m=1:n 
for z=1:2 
while potomok(z,m)<-10 | potomok(z,m)>10 
qe=rand(); 
potomok(z,m)=roditel(z,m)+i*qe; 
end 
end 
end 
 
 
 
 
вот есть код, но он не работает коректно..... можете подкоректировать пожалуйста????
 
[size="1"][color="grey"][I]Добавлено через 15 секунд[/I][/color][/size]
n=10; 
x=(-n):(n);
//--РОДИТЕЛИ 0-10
for m=1:n 
i=10*rand(); 
roditel(1,m)=i; 
end
//--РОДИТЕЛИ целые числа--// 
roditel=randint(1,n,[-n n]); 
for m=1:n 
for z=1:p 
i=randint(1,1,[1 n]); 
k1(z,m)=roditel(1,i); 
i=randint(1,1,[1 n]); 
k2(z,m)=roditel(1,i); 
end 
end
 
for m=1:n 
for z=1:p 
x=k1(z,m); 
f1(z,m)=(1.85-x).*(cos(3.5.*x)-0.5); 
x=k2(z,m); 
f2(z,m)=(1.85-x).*(cos(3.5.*x)-0.5); 
end 
end 
[y1,Index1]=max(f1); %максимизация функции 
[y2,Index2]=max(f2);
 
for m=1:n 
i=Index1(1,m); 
roditel(1,m)=k1(i,m); 
i=Index2(1,m); 
roditel(2,m)=k2(i,m); 
end 
///кроссинговер
for m=1:n 
i=roditel(2,m)-roditel(1,m); 
for z=1:2 
qe=rand(); %случайный множитель 
potomok(z,m)=roditel(z,m)+i*qe; 
end 
end 
 
for m=1:n 
for z=1:2 
while potomok(z,m)<-10 | potomok(z,m)>10 
qe=rand(); 
potomok(z,m)=roditel(z,m)+i*qe; 
end 
end 
end



вот есть код, но он не работает коректно..... можете подкоректировать пожалуйста????
0
3 / 3 / 1
Регистрация: 01.12.2012
Сообщений: 61
26.11.2016, 20:34  [ТС] 4
Помогите пожалуйста изменить код для 2-х переменных в пространстве xyz

Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
n=10; %размер популяции
xi=-10:0.1:10; %в дальнейшем интервал от -10 до 10
p=2;%количество элементов для турнирного отбора
 
%---Рандомно задаем значения---
for m=1:n
I=length(xi);
i=fix(I*rand());
roditel(1,m)=xi(1,i);
end
 
%---Заполняем массив случайными значениями из roditel---
%---k1 первый массив родителей, k2 второй массив родителей---
for m=1:n
for z=1:p
i=randint(1,1,[1 n]);
k1(z,m)=roditel(1,i); %k-турнирная группа
i=randint(1,1,[1 n]);
k2(z,m)=roditel(1,i);
end
end
 
%---Находим максимальные элементы из турнирной группы и записываем их---
for m=1:n
for z=1:p
x=k1(z,m);
f1(z,m)=(1.85-x).*(cos(3.5.*x)-0.5);
x=k2(z,m);
f2(z,m)=(1.85-x).*(cos(3.5.*x)-0.5);
end
end
[y1,Index1]=max(f1); %максимизация функции
[y2,Index2]=max(f2);
 
%---На основе y max записываем элементы в массив roditel--- 
for m=1:n
i=Index1(1,m);
roditel(1,m)=k1(i,m);
i=Index2(1,m);
roditel(2,m)=k2(i,m);
end
 
for m=1:n
i=roditel(2,m)-roditel(1,m);
for z=1:2
qe=rand(); %случайный множитель  
potomok(z,m)=roditel(z,m)+i*qe;
end
end
 
for m=1:n
for z=1:2
while potomok(z,m)<-10 | potomok(z,m)>10  
qe=rand(); %случайный множитель
potomok(z,m)=roditel(z,m)+i*qe;
end
end
end
 
koef_mut=0.1;
koef=[(xi(1,1))+(xi(1,I))-(xi(1,1))]/1000;
i=1;
for m=1:n
for z=1:2
mut=rand();
if mut<koef_mut
potomok_(1,i)=potomok(z,m)+koef;          %---мутация
else
potomok_(1,i)=potomok(z,m);
end
roditel_(1,i)=roditel(z,m);
i=i+1;
end
end
 
red1=n/2; %произвольно выбираем кол-во родительских особей
red2=(n*2)-red1;
 
%---Находим максимальные элементы из группы родителей и потомков и записываем их---
for m=1:n*2
x=roditel_(1,m);
y1(1,m)=(1.85-x).*(cos(3.5.*x)-0.5);
x=potomok_(1,m);
y2(1,m)=(1.85-x).*(cos(3.5.*x)-0.5); %---редукция
end
 
SredZna4_rod=mean(y1);
SredZna4_pot=mean(y2);
 
%---Записываем в новый массив red1 элементов из y1
m_=1;
m=1;
while m_<=red1 & m<=n*2
if y1(1,m)>=SredZna4_rod
i=y1(1,m);
f(1,m_)=i;
kone4_mass(1,m_)=roditel_(1,m);        %---редукция
m_=m_+1;
end
m=m+1;
end
 
%---Записываем в новый массив red2 элементов из y2
m_=red1+1;
m=1;
while m_<=n*2 & m<=n*2
if y2(1,m)>=SredZna4_pot
i=y2(1,m);
f(1,m_)=i;
kone4_mass(1,m_)=potomok_(1,m);             %---редукция
m_=m_+1;
end
m=m+1;
end
 
fplot('(1.85-x).*(cos(3.5.*x)-0.5)',[-10 10])
hold on
plot(kone4_mass,f,'r*')
0
1 / 1 / 0
Регистрация: 19.11.2012
Сообщений: 59
02.12.2017, 06:22 5
Ребят, кто может изменить этот код для двух переменных? Очень нужно
0
02.12.2017, 06:22
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
02.12.2017, 06:22
Помогаю со студенческими работами здесь

Дискриминантный анализ и генетический алгоритм
Здравствуйте, моя проблема такова. Пишу алгоритм по разделению двух множеств прямой линией. Для...

Возможно ли применять генетический алгоритм для массивов?
Добрый день уважаемые коллеги! Я совсем недавно познакомился с Matlab, и у меня возник очень...

Определить минимум функции c ограничениями (генетический алгоритм)
Здравствуйте. Нуждаюсь в вашей помощи в вопросе минимизации функции нескольких переменных, при...

Как это сделать в матлабе?
В начальный момент ракета массы 15 тонн имела скорость 120 км/мин. В конце каждой секунды из ракеты...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru