例:计算下列函数的全局最大值
max f(x)=x+10sin5x+7cos4x
s.t. 0<=x<=9
分析与建模:
1.确定决策变量与约束条件
决策变量即为目标函数max f(x)=x+10sin5x+7cos4x
约束条件为s.t. 0<=x<=9
2.确定编码方法
公式如下:a=(max-min)/(2^b-1)
其中a为编码精度,b为二进制编码长度,本题中b=22
3.确定解码方法
x=max*(y/2^b)
其中y为b位长的二进制编码对应的十进制数
4.确定个体评价方法。
可选用每次迭代的最小值的绝对值加上目标函数
5.设置遗传算子
6.确定遗传算法的运行参数
代码如下:
function ga_main()
% 遗传算法
% GA main program% Edited by Tan % Revision: 1.1
% n-- 种群规模% ger-- 迭代次数% pc--- 交叉概率% pm-- 变异概率
% v-- 初始种群(规模为n)% f-- 目标函数值% fit-- 适应度向量
% vx-- 最优适应度值向量% vmfit-- 平均适应度值向量
clear all;
close all;
clc;%清屏
tic;%计时器开始计时
n=20;ger=100;pc=0.65;pm=0.05;%初始化参数
%以上为经验值,可以更改。
% 生成初始种群
v=init_population(n,22); %得到初始种群,22串长,生成20*22的0-1矩阵
[N,L]=size(v); %得到初始规模行,列
disp(sprintf('Number of generations:%d',ger));
disp(sprintf('Population size:%d',N));
disp(sprintf('Crossover probability:%.3f',pc));
disp(sprintf('Mutation probability:%.3f',pm)); %sprintf可以控制输出格式
% 待优化问题
xmin=0;xmax=9; %变量X范围
f='x+10*sin(x.*5)+7*cos(x.*4)';
% 计算适应度,并画出初始种群图形
x=decode(v(:,1:22),xmin