导航:网站首页 >

Matlab遗传算法问题 MATLAB遗传算法

Matlab遗传算法问题 MATLAB遗传算法

相关问题:

匿名网友:

function ret=Code(lenchrom,bound)

%本函数将变量编码成染色体,用于随机初始化一个种群

% lenchrom input : 染色体长度

% bound input : 变量的取值范围

% ret output: 染色体的编码值

flag=0;

while flag==0

pick=rand(1,length(lenchrom));

ret=bound(:,1)'+(bound(:,2)-bound(:,1))'.*pick; %线性插值

flag=test(lenchrom,bound,ret); %检验染色体的可行性

end

function ret=Cross(pcross,lenchrom,chrom,sizepop,bound)

%本函数完成交叉操作

% pcorss input : 交叉概率

% lenchrom input : 染色体的长度

% chrom input : 染色体群

% sizepop input : 种群规模

% ret output : 交叉后的染色体

for i=1:sizepop

% 随机选择两个染色体进行交叉

pick=rand(1,2);

while prod(pick)==0

pick=rand(1,2);

end

index=ceil(pick.*sizepop);

% 交叉概率决定是否进行交叉

pick=rand;

while pick==0

pick=rand;

end

if pick>pcross

continue;

end

flag=0;

while flag==0

% 随机选择交叉位置

pick=rand;

while pick==0

pick=rand;

end

pos=ceil(pick.*sum(lenchrom)); %随机选择进行交叉的位置,即选择第几个变量进行交叉,注意:两个染色体交叉的位置相同

pick=rand; %交叉开始

v1=chrom(index(1),pos);

v2=chrom(index(2),pos);

chrom(index(1),pos)=pick*v2+(1-pick)*v1;

chrom(index(2),pos)=pick*v1+(1-pick)*v2; %交叉结束

flag1=test(lenchrom,bound,chrom(index(1),:)); %检验染色体1的可行性

flag2=test(lenchrom,bound,chrom(index(2),:)); %检验染色体2的可行性

if flag1*flag2==0

flag=0;

else flag=1;

end %如果两个染色体不是都可行,则重新交叉

end

end

ret=chrom;

clc

clear all

% warning off

%% 遗传算法参数

maxgen=50; %进化代数

sizepop=100; %种群规模

pcross=[0.6]; %交叉概率

pmutation=[0.1]; %变异概率

lenchrom=[1 1]; %变量字串长度

bound=[-5 5;-5 5]; %变量范围

%% 个体初始化

individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %种群结构体

avgfitness=[]; %种群平均适应度

bestfitness=[]; %种群最佳适应度

bestchrom=[]; %适应度最好染色体

% 初始化种群

for i=1:sizepop

individuals.chrom(i,:)=Code(lenchrom,bound); %随机产生个体

x=individuals.chrom(i,:);

individuals.fitness(i)= (x(1)*exp(-(x(1)^2 + x(2)^2)));

%-20*exp(-0.2*sqrt((x(1)^2+x(2)^2)/2))-exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)+20+2.71289

% 这个是我的测试函数

% 如果有这个函数的话,可以得到最优值

end

%找最好的染色体

[bestfitness bestindex]=min(individuals.fitness);

bestchrom=individuals.chrom(bestindex,:); %最好的染色体

avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度

% 记录每一代进化中最好的适应度和平均适应度

trace=[];

%% 进化开始

for i=1:maxgen

% 选择操作

individuals=Select(individuals,sizepop);

avgfitness=sum(individuals.fitness)/sizepop;

% 交叉操作

individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);

% 变异操作

individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[i maxgen],bound);

% 计算适应度

for j=1:sizepop

x=individuals.chrom(j,:);

individuals.fitness(j)=(x(1)*exp(-(x(1)^2 + x(2)^2)));

%-20*exp(-0.2*sqrt((x(1)^2+x(2)^2)/2))-exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)+20+2.71289

% -20*exp(-0.2*sqrt((x(1)^2+x(2)^2)/2))-exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)+20+2.71289;

end

%找到最小和最大适应度的染色体及它们在种群中的位置

[newbestfitness,newbestindex]=min(individuals.fitness);

[worestfitness,worestindex]=max(individuals.fitness);

% 代替上一次进化中最好的染色体

if bestfitness>newbestfitness

bestfitness=newbestfitness;

bestchrom=individuals.chrom(newbestindex,:);

end

individuals.chrom(worestindex,:)=bestchrom;

individuals.fitness(worestindex)=bestfitness;

avgfitness=sum(individuals.fitness)/sizepop;

trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度

end

%进化结束

%% 结果显示

[r c]=size(trace);

figure

plot([1:r]',trace(:,1),'r-',[1:r]',trace(:,2),'b--');

title(['函数值曲线 ' '终止代数=' num2str(maxgen)],'fontsize',12);

xlabel('进化代数','fontsize',12);ylabel('函数值','fontsize',12);

legend('各代平均值','各代最佳值','fontsize',12);

ylim([-0.5 5])

disp('函数值 变量');

% 窗口显示

disp([bestfitness x]);

匿名网友:

1.Matlab遗传算法问题

问:求大神 global x; x(1:8)=1.1; fit = @(x) loss(x); A=[0.95;0.95;0.95;...

2.MATLAB遗传算法

问:用matlab编写程序 遗传算法中 种群规模20,迭代次数k=100,交叉概率0.8...

3.如何在遗传算法中设置变量约束条件

问:1、如何设置变量的线性与非线性约束条件。 2、在matlab上,每次运行遗传...

4.如何调用MATLAB遗传算法工具箱

问:如何调用MATLAB遗传算法工具箱

5.matlab 非线性多目标的遗传算法问题

问:找了两天 对于刚入门的我实在不会QAQ麻烦大家会的帮个忙,,或者给点小...

6.用matlab遗传算法拟合曲线怎么拟合? 两组数据,必...

答:例如: 已知数据队列 buf=【5410。。。。。】 x取值 1:n n是队列长度 函数 f(x)=a+b*sin(c*x+d) . avg 是队列平均值 a b c d 为参数 a范围 (2/3,1)*avg b范围 (0,1/3)*avg c的范围 (0,24*pi) d (0,2*pi) 1、首先定义目标函数 functio...

7.matlab遗传算法中的交叉算子函数应该怎么编写?

答:function [xv,fv]=myGA(fitness,a,b,NP,NG,Pc,Pm,eps) L = ceil(log2((b-a)/eps+1)); %根据离散精度,确定二进制编码需要的码长 x = zeros(NP,L); for i=1:NP x(i,:) = Initial(L); %种群初始化 fx(i) = fitness(Dec(a,b,x(i,:),L)); %个体适应...

8.MATLAB中遗传算法编程中,二进制编码如何处理实数...

问:我这里需要处理的既有0,1整数变量,又有[0,1]区间的非整数变量,而最...

9.遗传算法中每个个体的适应度值怎么算啊,怎么用mat...

答:适应度为所求问题g(x)的函数f(x),即为函数的函数f(g(x)),一般直接用所求问题的值作为个体的适应度值,即f(x)=1,比如求g(x)=x^2-8的最小值,适应度函数就是g(x)

10.使用matlab遗传算法工具箱如何加入目标函数中变量...

答:首先回答你第一个问题:怎么加入变量的约束条件? 打开遗传算法工具箱的窗体中会有下图所示的选项,即是约束条件的编辑 至于添加的方式,这里要重点的提一下,首先将问题抽象成规划问题的标准形式(如果你不懂什么是标准形式的话,建议你去翻阅...

问题推荐

matlab chrom(i pos),Matlab遗传算法问题 MATLAB遗传算法相关推荐

  1. 遗传算法及其matlab实现(工具箱及非工具箱)

    本文将简单叙述遗传算法的原理及实现过程,并通过采用工具箱和非工具箱两种方法解决一个在约束条件下求解函数最小值的问题. 前言 遗传算法是1962年Holland教授基于进化机制和自然遗传学提出的一种启发 ...

  2. matlab线平衡,装配生产线任务平衡优化遗传算法通用matlab源码

    装配生产线任务平衡优化遗传算法通用matlab源码 装配生产线任务平衡优化遗传算法通用 MATLAB源码(2008-11-15 10:04:40)转载标签: 杂谈下面的源码实现了装配生产线任务平衡优化 ...

  3. 遗传算法以及matlab程序实现

    遗传算法以及matlab程序实现 话不多说,直接上程序,该程序为寻找目标函数的最大值,代码中所用到的matlab函数大多是基于谢菲尔德大学的遗传算法工具箱实现的,所以有小伙伴运行时出现函数问题,那就应 ...

  4. MATLAB实战系列(十一)-多种群遗传算法的函数优化算法(附MATLAB代码)

    前言: 本篇博文参考,智能优化算法书籍<MATLAB智能算法30个案例分析(第2版)>,今天要与大家分享的智能算法是多种群遗传算法. 本地MATLAB环境部署 因为后面要介绍的多种群遗传算 ...

  5. TSP问题遗传算法通用Matlab程序

    程序一:主程序 %TSP问题(又名:旅行商问题,货郎担问题)遗传算法通用matlab程序 %D是距离矩阵,n为种群个数 %参数a是中国31个城市的坐标 %C为停止代数,遗传到第 C代时程序停止,C的具 ...

  6. matlab的v带优化设计,基于遗传算法及MATLAB的V带传动优化设计

    在实际生产中,人们总希望机械传动装置的主要参数.尺寸既能获得最优解,又能同时满足传动装置在工作中的可靠性要求.可靠性优化设计是将可靠性理论引入优化设计中,这种方法实质上是在决策集(性能.寿命和成本要求 ...

  7. 实数编码 matlab ga,实数编码的遗传算法与MATLAB

    实数编码的遗传算法与MATLAB (一)函数示例 Z=x.^2-10*cos(2*pi*x)+10+y.^2-10*cos(2*pi*y)+10 (二)MATLAB的实现 1)GAss(主函数) cl ...

  8. 【老生谈算法】MATLAB实现车间作业调度问题(JSP)遗传算法通用源码——JSP

    MATLAB实现车间作业调度问题(JSP)遗传算法通用源代码 1.原文下载: 本算法原文如下,有需要的朋友可以点击进行下载 序号 原文(点击下载) 本项目原文 [老生谈算法]车间作业调度问题(JSP) ...

  9. 【老生谈算法】标准遗传算法的MATLAB实现源码——遗传算法

    标准遗传算法的MATLAB实现 1.原文下载: 本算法原文如下,有需要的朋友可以点击进行下载 序号 原文(点击下载) 本项目原文 [老生谈算法]标准遗传算法的MATLAB实现.doc 2.算法详解: ...

  10. matlab物流配送最优路径,基于Matlab物流配送路径优化问题遗传算法的实现

    第 29 卷总第 131 期 ·物流商坛· 收稿日期: 2005-12-22 作者简介: 弓晋丽(1983- ), 女, 山西文水人, 长安大学汽车学院硕士研究生, 研究方向: 物流系统, 道路运输与 ...

最新文章

  1. mysql 索引巧用,SQL语句写得忒野了
  2. mysql grant 主机名_MySQL GRANT:用户授权
  3. python tkinter 实现一个秒表 从0开始_Writeathon:从0开始实现的一个side project
  4. 软件开发模型之优缺点
  5. python四十:configparse模块
  6. C#数字证书编程总结
  7. [导入]给家人补补钙!双莲炖腔骨
  8. “毕设导师互选系统”项目产品宣传推广方案
  9. PAT甲级 -- 1002 A+B for Polynomials (25 分)
  10. lstm需要优化的参数_LSTM的物理结构和一些细节
  11. 智能快递柜10月1日起按新规管理
  12. 云计算学习(5-1)云平台产品介绍-华为的FusionCloud产品
  13. 05.SpringBoot的yml配置详解
  14. 电子计算机分类 可以分为哪些,计算机按照工作原理进行分类可以分为
  15. 访问计算机计算机网络密码忘记了怎么办,无线网密码忘记了怎么办?
  16. 格力董明珠:对别人狠,对自己更狠!
  17. C#:命名空间“System.Windows”中不存在类型或命名空间名“Forms”(是否缺少程序集引用?)
  18. kali linux 入侵教程,kali linux 入侵wordpress! wpscan工具使用方法!
  19. 网络数据传输的节点大全
  20. 平面上点和直线的齐次表示

热门文章

  1. 骑士php授权,骑士人才系统伪静态设置教程
  2. 按键精灵手机版读取MYSQL_按键精灵手机版 如何连接远程网络数据库 进行读写操作...
  3. c++股票数据接口逻辑是什么
  4. java简历包装项目经验,项目实战
  5. html css手机端响应式登录页面
  6. 数据库原理实验六——ODBC/JDBC数据库编程
  7. 说说你对servlet 的理解或者 servlet 是什么?
  8. 【会议记录】0305
  9. 《Web程序设计》学习笔记1——web基础知识简述
  10. 当前电子计算机发展的局限性,工程测量技术发展现状与趋势