遗传算法(matlab实现)

例:计算下列函数的全局最大值
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*220-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
  • 12
    点赞
  • 144
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值