Вы находитесь на странице: 1из 7

ГУАП

КАФЕДРА № 43

ОТЧЕТ
ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
Профессор Ю.А. Скобцов
должность, уч. степень, звание подпись, дата инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №2

ОПТИМИЗАЦИЯ МНОГОМЕРНЫХ ФУНКЦИЙ С ПОМОЩЬЮ ГА

по курсу: ЭВОЛЮЦИОННЫЕ МЕТОДЫ ПРОЕКТИРОВАНИЯ


ПРОГРАММНО-ИНФОРМАЦИОННЫХ СИСТЕМ

РАБОТУ ВЫПОЛНИЛА

О.С.Забродский
СТУДЕНТКА ГР. 4631
подпись, дата инициалы, фамилия

Санкт-Петербург 2019
1. Цель работы
Модификация представления хромосомы и операторов
рекомбинации ГА для оптимизации многомерных функций. Графическое
отображение результатов оптимизации.

2. Индивидуальное задание по варианту

3. Листинг программы на языке высокого уровня с


комментариями

clc, clear, close all;


n=2; %размерность
i=1:n;
f=@(x) sum(5.*i.*x(i).^2); % функция
M=500; % кол-во поколений
N=50; % размер популяции
w=rand; %число для геометрического кроссовера
a=-5.12;
b=5.12; L=abs(b-a);
Pc=0.5; %вероятность кроссинговера
Pm=0.01; % вероятность мутации

pop=a+L*rand(N,n); % генерация начальной популяции


for i=1:N % Вычисление значения функции
cost(i)=f(pop(i,:));
end
[cost,ind] = sort(cost); % сортировака в порядке возрастания
pop = (pop(ind,:));

figure(1)
x=a:0.1:b;
y=x;
[X,Y]=meshgrid(x ,y);
Z=5*X.^2+10*Y.^2;
hold on
s=surf(X,Y,Z)
s.EdgeColor = 'none';
plot3(pop(:,1),pop(:,2),cost,'MarkerFaceColor',[1 0
0],'MarkerEdgeColor',[1 0
0],'MarkerSize',8,'Marker','o','LineStyle','none')
% кроссинговер
for i=1:2:N
if rand<=Pc
for k=1:n
pop(N+i,k)=w*pop(i,k)*(1-w)*pop(i+1,k);%Первый потомок
pop(N+i+1,k)=w*pop(i+1,k)*(1-w)*pop(i,k);%Второй потомок
end
end
end

%мутация
for i=1:length(pop)
if rand <=Pm
pop(i,randi([1,n]))=rand*L+a;
end
end

for j=2:M

for i=1:length(pop) % Вычисление значения функции


cost(i)=f(pop(i,:));
end
[cost,ind] = sort(cost); % сортировака в порядке возрастания
pop = (pop(ind,:));

pop=pop(1:N, :);
cost=cost(1:N);

if j<=5
figure(j)
x=a:0.1:b;
y=x;
[X,Y]=meshgrid(x ,y);
Z=5*X.^2+10*Y.^2;
hold on
s=surf(X,Y,Z)
s.EdgeColor = 'none';
plot3(pop(:,1),pop(:,2),cost,'MarkerFaceColor',[1 0
0],'MarkerEdgeColor',[1 0 0],...
'MarkerSize',8,'Marker','o','LineStyle','none')

end

% кроссинговер
for i=1:2:N
for k=1:n
pop(N+i,k)=w*pop(i,k)+(1-w)*pop(i+1,k);%Первый потомок
pop(N+i+1,k)=w*pop(i+1,k)+(1-w)*pop(i,k);%Второй потомок
end
end

%мутация
for i=1:length(pop)
if rand <=Pm
pop(i,randi([1,n]))=rand*L+a;
end
end

end

disp('Значения переменных удовлетворяющие минимуму функции');


pop(1,:)
disp('Минимум функции');
cost(1)

Результат выполнения программы для n=2


Результат выполнения программы для n=3

4. Листинг программы нахождение решения с использованием


стандартного Genetic Algorithm toolbox

clc, clear, close all;


n=2; %размерность
i=1:n;
f=@(x) sum(5.*i.*x(i).^2); % функция
a=-5.12;
b=5.12;
[x,fval]=ga(f,n,[],[],[],[],a,b)

Результат выполнения программы

5. Письменный ответ на индивидуальный вопрос

4. Что является целью оптимизационной задач

Цель состоит в нахождении оптимального (максимального или минимального)


значения целевой функции, причем значения переменных должны принадлежать
некоторой области допустимых значений.
6. Вывод

В данной лабораторной работе была выполнена модификация представления хромосомы и


операторов рекомбинации ГА для оптимизации многомерных функций, а также
графическое отображение результатов оптимизации.

Вам также может понравиться