1、目标函数介绍
2、遗传算法与程序
3、仿真
1、目标函数介绍
该函数有10个变量,变量的取值范围为[-20,20],这个函数只有一个极小值点,其坐标为x=(0,0,…,0),极小值为0,具体函数形式为下式
2、遗传算法与程序
遗传算法参数
(1)、初始化种群数目为NP=100, 染色体基因维数为10(即基因维数与变量数相等),最大进化代数为G=1000,交叉概率为Pc=0.8,变异概率为Pm=0.1。
(2)、产生初始种群,计算个体适应度值;进行实数编码的选择以及交叉和变异操作。选择和交叉操作采用“君主方案”,即在对群体根据适应度值高低进行排序的基础上,用最优个体与其他偶数位的所有个体进行交叉,每次交叉产生两个新的个体。在交叉过后,对新产生的群体进行多点变异产生子群体,再计算其适应度值,然后和父群体合并,并且根据适应度值进行排序,取前NP个个体为新群体,进行下一次遗传操作。
具体MATLAB实现程序与介绍如下
// 遗传算法程序
%初始化
clear all; %清除所有变量
close all; %清图
clc; %清屏
D=10; %单染色体上的基因数(即10个变量)(每个基因采用10进制)
NP=100; %染色体数目(初始化种群的数目)
Xs=20; %变量上限
Xx=-20; %变量下限
G=1000; %最大遗传代数
f=zeros(D,NP); %初始种群赋空间 创建一个10*100的0矩阵
nf=zeros(D,NP); %子种群赋空间 创建一个10*100的0矩阵
Pc=0.8; %交叉概率
Pm=0.1; %变异概率
f=rand(D,NP)*(Xs-Xx)+Xx; %随机获得初始种群(10进制的种群),维数10*100
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%按适应度升序排列
for np=1:NP