Realización de Matlab del algoritmo genético

Introducción

Los buenos individuos reproducen la próxima generación (la probabilidad de elegir un cuerpo con una función de aptitud más alta es mayor, no del 100%)

Los pasos basicos

Codificación: el problema que se va a optimizar se describe en lenguaje matemático (x1, x2 en el espacio de la solución) y se asigna a los datos de la estructura de la cadena de genes en el espacio del algoritmo genético.
Los datos de la estructura de la cadena inicial se generan aleatoriamente.
Individuo: cada dato de la estructura de la cadena

Selección: La probabilidad de buenas características para la próxima generación será mayor.
Cruce: El nuevo individuo tiene una mayor probabilidad de conservar las características del padre, pero hay algunos cambios y
mutaciones: cada individuo tiene la oportunidad de realizar nuevos cambios. en variables locales, para asegurar la diversidad del espacio de solución

fitness.m

function [sol, fitnessVal] = fitness(sol, options)

x = sol(1);

fitnessVal = x + 10*sin(5*x)+7*cos(4*x);%最大值

%如果是求最小值fitnessVal = -1 * (x + 10*sin(5*x)+7*cos(4*x);
end

main.m

%% I. 清空环境变量
clear all %右侧
clc %下方

%% II. 绘制函数曲线
%可以先运行这一片段,看下最大值在什么位置
x = 0:0.01:9;
y =  x + 10*sin(5*x)+7*cos(4*x); 

figure
plot(x, y)
xlabel('自变量')
ylabel('因变量')
title('y = x + 10*sin(5*x) + 7*cos(4*x)')


%% III. 初始化种群
%如果是求最小值,就把目标函数变成1/y
initPop = initializega(50,[0 9],'fitness');%种群规模大小是50个;适应度函数值,目标函数就是适应度函数

%单独调试会形成initPop函数(50*2),第二列是第一列对应的适应度函数

%% IV. 遗传算法优化
[x, endPop, bpop, trace] = ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,...
                           'normGeomSelect',0.08,'arithXover',2,'nonUnifMutation',[2 25 3]);


%% V. 输出最优解并绘制最优点
x
plot (endPop(:,1),endPop(:,2),'ro')
hold on

%% VI. 绘制迭代进化曲线
figure(2)
plot(trace(:,1),trace(:,3),'b:')
hold on
plot(trace(:,1),trace(:,2),'r-')
xlabel('Generation'); ylabel('Fittness');
legend('Mean Fitness', 'Best Fitness')


Supongo que te gusta

Origin blog.csdn.net/qq_43641765/article/details/111419275
Recomendado
Clasificación