function [xv,fv] = myGA(fitness, a, b, NP, NG, Pc, Pm, eps)
% 用遗传算法求解一维无约束优化问题
%
% 待优化的目标函数 fitness
% 自变量下界 a
% 自变量上界 b
% 种群个体数 NP
% 最大进化代数 NG
% 杂交概率 Pc
% 变异概率 Pm
% 自变量离散精度 eps
% 目标变量取最大值时自变量的值: xm
% 目标函数的最大值 fv
%
% Example:
% function F = fitness(x)
% F = x^3-60*x^2+900*x+100;
% -------------------------------
% [xv,fv] = myGA(@fitness,0, 30, 50, 100, 0.9, 0.04, 0.01);
% --------------------------------------------------
% xv = 10
% fv = 4100
%
% 本程序在《精通MATLAB最优化计算》页315程序的基础上修改 L = ceil(log2((b-a) / eps + 1)); %编码长度
x = zeros(NP, L); %种群
nx = zeros(size(x)); %滚动数组
fx = zeros(NP, 1); %适应度
for i = 1:NP
x(i,:) = Initial(L);
end fv = -inf; for k = 1 : NG
for i = 1 : NP
fx(i) = fitness(Dec(a, b, x(i, :), L));
if (fx(i) > fv)
xv = Dec(a, b, x(i, :), L);
fv = fx(i);
end
end sumfx = sum(fx);
Px = fx / sumfx; PPx = zeros(NP, 1);
PPx(1) = Px(1); %概率叠加
for i = 2 : NP
PPx(i) = PPx(i - 1) + Px(i);
end selFather = 0;
for i = 1 : NP
sita = rand();
for j = 1 : NP
if (sita <= PPx(j))
selFather = j; %使用轮盘赌法进行选择父亲
break;
end
end selMother = floor(rand() * NP) + 1; %母亲随机选择
posCut = floor(rand() * (L - 1)) + 1; %交叉点 r1 = rand();
if (r1 <= Pc)
nx(i, 1 : posCut) = x(selFather, 1:posCut);
nx(i, (posCut + 1) : L) = x(selMother, (posCut + 1) : L);
r2 = rand();
if (r2 <= Pm)
posMut = floor(rand() * L) + 1;
nx(i, posMut) = ~nx(i, posMut);
end
else
nx(i, :) = x(selFather, :);
end
end x = nx;
end %--------------------------------------------------------
% 初始化种群
function result = Initial(length)
result = zeros(size(length()));
for i = 1 : length
r = rand();
result(i) = round(r);
end %----------------------------------------------------------
% 编码转换
function y = Dec(a, b, x, L)
base = 2 .^ ((L - 1) : -1: 0);
y = dot(base, x);
y = a + y * (b - a) / (2 ^ L - 1);

matlab遗传算法的更多相关文章

  1. matlab遗传算法工具箱

    转自http://blog.sina.com.cn/s/blog_5ebcc0240101pnrj.html matlab遗传算法工具箱函数及实例讲解 (2014-01-10 13:03:57)   ...

  2. Matlab遗传算法优化问题求解的演示样例代码

    代码例如以下: function m_main() clear clc Max_gen = 100;% 执行代数 pop_size = 100;%种群大小 chromsome = 10;%染色体的长度 ...

  3. 遗传算法MATLAB实现(2):一元函数优化举例

    遗传算法提供了一种求解非线性.多模型.多目标等复杂系统优化问题的通用框架. 先从例子开始,慢慢再总结理论... [例]利用遗传算法计算函数f(x)=x*cos(5*pi*x)+3.5在区间[-1,2. ...

  4. matlab中文论坛视频谷普教程MATLAB压缩包介绍

    matlab中文论坛视频谷普教程MATLAB压缩包介绍 我也正在学习这个软件 ,看到这个教程就在这里分享了,希望大家喜欢!Matlab 初学者视频教学1. Matlab视频:Matlab中文论坛为新手 ...

  5. 史上最全的Matlab资源电子书教程和视频下载合集【超级推荐】

    收藏吧,网上搜集的,费了老大劲了,推荐给有需要的人,^_^.   MATLAB课件2007北京交通大学.zip 4.87 MB   A Guide to MATLAB for Beginners an ...

  6. 一些matlab教程资源收藏,使用matlab编程的人还是挺多的

    Matlab教程专题资源免费下载整理合集收藏 <MATLAB从入门到精通>高清文字版[PDF] 103.9MB 简体中文 <矩阵实验室>(Mathworks.Matlab.R2 ...

  7. geatpy - 遗传和进化算法相关算子的库函数(python)

    Geatpy The Genetic and Evolutionary Algorithm Toolbox for Python Introduction Website (including doc ...

  8. Python遗传和进化算法框架(一)Geatpy快速入门

    https://blog.csdn.net/qq_33353186/article/details/82014986 Geatpy是一个高性能的Python遗传算法库以及开放式进化算法框架,由华南理工 ...

  9. MATLAB中如何使用遗传算法

    matlab有遗传算法工具箱. 核心函数:   (1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成 ...

随机推荐

  1. 怎么给iOS项目打包

    1  首先要选中项目中的真机測试,不要模拟器 ,然后从上边的菜单条中找product watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc29tZXJhaW43 ...

  2. HttpClient get返回String类型 JAVA

    public static String httpGet(String url) { // get请求返回结果 String strResult = ""; try { Defau ...

  3. hadoop mapreduce 端参数优化

    在MapReduce执行过程中,特别是Shuffle阶段,尽量使用内存缓冲区存储数据,减少磁盘溢写次数:同时在作业执行过程中增加并行度,都能够显著提高系统性能,这也是配置优化的一个重要依据. 下面分别 ...

  4. java泛型方法

    Tool.java package cn.stat.p9.fanxing.demo; public class Tool<QQ> {//不确定类型时可以用泛型 private QQ q; ...

  5. SVG基础

    可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式.它由万维网联盟制定,是一个开放标准.SVG 是使用 ...

  6. 解决jQuery中美元符号($)命名与别的js脚本库引用冲突方法

    在Jquery中,$是JQuery的别名,所有使用$的地方也都可以使用JQuery来替换,如$('#msg')等同于JQuery('#msg') 的写法.然而,当我们引入多个js库后,在另外一个js库 ...

  7. jQuery链式操作

    讨论jQuery的文章很多.然而,关于jQuery的链式操作的文章并无多少.好的代码会带来速度的提升.快速渲染和响应意味着更好的用户体验. 下面就来讲讲jQuery的链式操作. 很多时候我们写代码的时 ...

  8. css代码整理、收集

    整理了一下之前用到过的css代码,实现一种效果或许有许多种写法,我这里整理了一下我个人认为兼容性比较好,结构比较简洁的代码……如有写得不对的地方敬请前辈们指点赐教一下,小弟不胜感激!此学习笔记是动态的 ...

  9. Mac下安装 php+nginx+mysql 开发环境

    一.mysql安装 mysql是安装最简单顺利的 1. 首先去官方网站下载Mac适用的MySQL的dmg包 下载页面 选择图中最下方的dmg包下载进行安装 安装完成后 MySQL的安装目录为/usr/ ...

  10. CSS - 针对不同浏览器的写法

    火狐浏览器: @-moz-document url-prefix() { /*这段区域的样式代码只在firefox起作用*/ .x{ width: 100px; height: 100px; back ...