遗传算法

matlab——智能算法之粒子群优化算法、模拟退火算法、遗传算法 智能算法之粒子群优化算法: %% 初始化种群 f= % 函数表达式 % 求这个函数的最大值 figure(1);ezplot(f,[0,0.01,20]); N = 50; % 初始种群个数 d = 1; % 空间维数 ger = 100; ... 阅读详情
主函数
clear all
clc 
popsize=20; 							%群体大小  
chromlength=10; 						%字符串长度(个体长度) 
pc=0.8;   							%交叉概率
pm=0.006;                                 %变异概率
pop=initpop(popsize,chromlength);             %随机产生初始群体 
for i=1:30                                  %30为迭代次数
[objvalue]=calobjvalue(pop);                   %计算目标函数 
fitvalue=calfitvalue(objvalue);                  %计算群体中每个个体的适应度
[newpop]=selection(pop,fitvalue);               %复制 
[newpop]=crossover(pop,pc);                   %交叉 
[newpop]=mutation(pop,pc);                    %变异 
[bestindividual,bestfit]=best(pop,fitvalue);		  %求出群体中适应值最大的个体及其适应值 
y(i)=max(bestfit); 
n(i)=i;  
pop5=bestindividual;  
x(i)=decodechrom(pop5,1,chromlength)*10/1023; 
pop=newpop; 
end  
fplot('11*sin(7*x)-7*cos(3*x)',[0 11])
hold on
plot(x,y,'r*')
hold off
f=max(y)

function [objvalue]=calobjvalue(pop)
temp1=decodechrom(pop,1,10); %将pop每行转化成十进制数
x=temp1*10/1023; %将二值域 中的数转化为变量域 的数
objvalue=10*sin(5*x)+7*cos(4*x); %计算目标函数值
end

%初始化
function pop=initpop(popsize,chromlength)  
pop=round(rand(popsize,chromlength));  
% rand随机产生每个单元为{0,1}行数为popsize,列数为chromlength的矩阵,
% roud对矩阵的每个单元进行圆整。这样产生的初始种群。
end

%将二进制编码转换成十进制
function pop2=decodechrom(pop,spoint,length)
pop1=pop(:,spoint:spoint+length-1);
pop2=decodebinary(pop1);
end
%计算个体的适应值  
function fitvalue=calfitvalue(objvalue)
global Cmin;
Cmin=0;
[px,py]=size(objvalue);
for i=1:px
    if objvalue(i)+Cmin>0
        temp=Cmin+objvalue(i);
    else
        temp=0.0;
    end
    fitvalue(i)=temp;
end
fitvalue=fitvalue'

%选择复制  
function [newpop]=selection(pop,fitvalue)
totalfit=sum(fitvalue); %求适应值之和
fitvalue=fitvalue/totalfit; %单个个体被选择的概率
fitvalue=cumsum(fitvalue); %如 fitvalue=[1 2 3 4],则 cumsum(fitvalue)=[1 3 6 10] 
[px,py]=size(pop);
ms=sort(rand(px,1)); %从小到大排列
fitin=1;
newin=1;
while newin<=px
    if(ms(newin))<fitvalue(fitin)
        newpop(newin)=pop(fitin);
        newin=newin+1;
    else
        fitin=fitin+1;
    end
end

%交叉  
function [newpop]=crossover(pop,pc)
[px,py]=size(pop);
newpop=ones(size(pop));
for i=1:2:px-1
    if(rand<pc)
        cpoint=round(rand*py);
        newpop(i,:)=[pop(i,1:cpoint),pop(i+1,cpoint+1:py)];
        newpop(i+1,:)=[pop(i+1,1:cpoint),pop(i,cpoint+1:py)];
    else
        newpop(i,:)=pop(i);
        newpop(i+1,:)=pop(i+1);
    end
end  

%变异  
function [newpop]=mutation(pop,pm)
[px,py]=size(pop);
newpop=ones(size(pop));
for i=1:px
    if(rand<pm)
        mpoint=round(rand*py);
        if mpoint<=0
            mpoint=1;
        end
        newpop(i)=pop(i);
        if any(newpop(i,mpoint))==0
            newpop(i,mpoint)=1;
        else
            newpop(i,mpoint)=0;
        end
    else
        newpop(i)=pop(i);
    end
end

%求出群体中适应值最大的值  
function [bestindividual,bestfit]=best(pop,fitvalue)
[px,py]=size(pop);
bestindividual=pop(1,:);
bestfit=fitvalue(1);
for i=2:px
    if fitvalue(i)>bestfit
        bestindividual=pop(i,:);
        bestfit=fitvalue(i);
    end
end

遗传算法详解 遗传算法:优点是能很好的处理约束,能很好的跳出局部最优,最终得到全局最优解,全局搜索能力强;缺点是收敛较慢,局部搜索能力较弱,运行时间长,且容易受参数的影响。 阅读详情

相关推荐

多目标优化-Pareto遗传算法

这里写自定义目录标题多目标优化的应用背景遗传算法自适应遗传算法Pareto遗传算法Pareto遗传算法的求解 这里写自定义目录标题多目标优化的应用背景遗传算法自适应遗传算法Pareto遗传算法Pareto遗传算法的求解遗传算法 多目标优化的应用背景 工程实际 中的许 多优化问题是多 目标的优化设计问题。通常情况下多个 目标是处于 冲突状态的,不存在一个最优设计使所有的 目标同时达到最优,一个 目标...

weixin_43315636的博客 1万+

MATLAB数学建模:智能优化算法-遗传算法

本文简介遗传算法在MATLAB中的使用。

某一般线性空间 2067

量子遗传算法

量子遗传算法概述 量子遗传算法( QGA )是量子计算与遗传算法相结合的产物,是一种新发展起来的概率进化方法。 GA会由于选择、交叉或变异等方式的不当而出现迭代次数多、收敛速度慢、容易陷入局部极值的现象。 量子计算中采用量子态作为基本的信息单元,利用量子态的叠加、纠缠和干涉等特性,通过量子并计算可以解决经典计算中的NP问题。 QGA即为将量子的态矢量表达式引入遗传编码,利用量子逻辑门实现染色体的演化,实现了比SGA更好的效果。 量子比特编码 在量子计算机中,充当信息存储单元的物理介质是一个双态量子系统,称为

lxy_1015的博客 9968

MATLAB实现遗传算法

MATLAB实现遗传算法。

Magnolia_He的博客 1075

遗传算法的matlab实现

遗传算法是一种全局最优化算法,是运用了进化论优胜劣汰原理的随机化搜索方法。 前些日子,在进行毕业设计的相关研究中,我接触到了遗传算法,用其对一个五元非线性函数进行最优化搜索。仿真平台使用的是matlab,主要使用的是谢菲尔德大学的matlab遗传算法工具箱。 具体代码如下: clc clear all close all lbx=-1;ubx=1; %函数自变量x范围【-1,1】 lby=-

勿忘初心 方得始终 6万+

遗传算法图解_遗传算法图解指南

遗传算法图解In the previous post, We discussed what Artificial Intelligence (AI) in general. It would be less informative if we only know the information from the outside. So in this post, I will go into a ...

weixin_26632369的博客 4109

MATLAB遗传算法实例

没有涉及到自变量为负数时的编码情况,不过用作学习遗传算法的原理有一定的意义。% 下面举例说明遗传算法 % % 求下列函数的最大值 % % f(x)=10*sin(5x)+7*cos(4x) x∈[0,10] % % 将 x 的值用一个10位的二值形式表示为二值问题,一个10位的二值数提供的分辨率是每为 (10-0)/(2^10-1)≈0.01 。 % % 将变量域 [0,10] 离散化为二值域 [0

ZSZ_shsf的博客 2万+

R语言中的遗传算法

算法为王系列文章,涵盖了计算机算法,数据挖掘(机器学习)算法,统计算法,金融算法等的多种跨学科算法组合。在大数据时代的背景下,算法已经成为了金字塔顶的明星。一个好的算法可以创造一个伟大帝国,就像Google。 算法为王的时代正式到来…. 关于作者: 张丹(Conan), 程序员Java,R,PHP,Javascript weibo:@Co...

fens的博客 2209

遗传算法及c++实现

一、实验目的 1.掌握遗传算法的基本原理和步骤。 2.熟练使用VC、Java等编程语言编写遗传算法程序。 3.上机编写程序,解决以下函数优化问题: 二、实验设备 Windows 10 , Visual Studio 2019 二、实验原理 遗传算法(Genetic Algorithm): 遗传算法的思想来源于生物进化过程, 它是一种基于进化过程中的信息遗传机制和优胜劣汰的自然选择原则的搜索算法。遗传算法以字符串表示状态空间,用概率搜索过程在该状态空间中搜索,产生新的样本。该算法简单、通用,鲁棒性强,适于

柘尾鱼的博客 1万+

【图像融合】基于遗传算法的自适应多聚焦图像融合含Matlab源码

1 简介 2 部分代码 % 2.2.3 计算目标函数值% calobjvalue.m函数的功能是实现目标函数的计算%遗传算法子程序%Name: calobjvalue.m%实现目标函数的计算function [objvalue]=calobjvalue(pop) %%%%pop=initpop(popsize,chromlength);[px,py]=size(pop);q=imread('A1.tif');q1=imread('B1.tif');[py1,px1]=size(q1);a

qq_59747472的博客 1463

基于遗传算法的数控铣削参数优化

建立了以最大生产效率和最低加工成本为多目标优化的数学模型,采用遗传算法与Matlab工具实现对切削参数进行优化,得到目标函数的最优切削参数,并用实验验证提高数控机床加工效率和降低加工成本的可行性。

遗传算法的改进

一些改进的遗传算法操作细节详解,遗传算法基本步骤、基本操作改进措施。

Zachery的博客 1万+

Unity插件-Mirror使用方法(一)Mirror介绍

Unity Mirror 是一个专为 Unity 引擎设计的开源、社区驱动的网络库,主要用于简化多人联机游戏的开发。它最初是为了替代 Unity 原生的 UNet 系统(已被官方弃用)而创建的,因其轻量、灵活和高效的特点,成为 Unity 开发者构建多人游戏的热门选择。

qq_44501691的博客 4100

matlab遗传算法工具箱

遗传算法工具箱提供了一种求解非线性、多模型、多目标等复杂系统优化问题的通用框架,它不依赖问题的具体领域,对问题的种类具有很强的鲁棒性,所以它广泛应用于各个科学领域。遗传算法在函数优化、组合优化、生产调度、自动控制﹑机器人学﹑图像处理、人工生命、遗传编码和机器学习等方面得到了广泛运用。

配电网和matlab的博客 1万+

silvaco(TCAD)击穿特性仿真,的不收敛问题

在silvaco仿真学习过程中,最近这段时间一直有一个很大的问题困扰着我,那就是我在仿真击穿特型曲线的过程中,在电压加到后期比较大的情况下,往往会出现仿真不收敛的情况,正常情况下器件的击穿应该在一个外加偏压上,电流出现迅速的上升,这才是击穿的定义,但是我仿真的过程中程序跑到一个较大的电压时,器件出现击穿,我观察电压电流曲线,在击穿电压(程序报告的)电流并没有出现迅速的变化,类似于下图这种形式。(2)解决方法,将初始电压调整到合适的值,这个值可能是更大的也可能是更小的,要注意多多尝试。

zm19992533002908的博客 4949

从波形图到参数调优:一次无感BLDC电机启动失败的深度解析

本文深入解析无感BLDC电机启动失败案例,通过波形分析揭示参数不匹配和IPM保护机制触发等关键问题。详细探讨了过零点检测、PWM周期设置及强拖参数调优的底层逻辑,并分享IPM模块保护机制与实战调优技巧,最终实现99.98%的启动成功率。

weixin_29182481的博客 821

遗传算法详解与改良遗传算法

1.遗传算法简介 遗传算法是用于解决NP难问题如JSP问题,TSP问题常用的启发式算法。上世纪70年代由美国的John holland提出,是运用计算机仿真,通过交叉变异等方式,模拟自然进化过程搜索最优解的方法。 2.初始种群的选择 在求解取值连续的问题时可使用完全随机的值,但在求解旅行商问题等非连续的问题时通常采用改良圈法,得到一个相对较优的解,然后再利用遗传算法得出最优解。 改良圈法基本原理 对于随机产生的某条路线 Cij=w1w2w3...wu−1wuwu+1...wv−1wvwv+1. C_{ij}

saint_mariao的博客 6110

金智维KRPA实战:Excel自动化数据处理全流程解析

本文详细解析了金智维KRPA在Excel自动化数据处理中的全流程应用,涵盖COM接口和文件读写两种核心技术方案,以及销售报表生成、数据清洗和可视化仪表盘等实战案例。通过企业级应用的异常处理、性能优化和安全合规实践,显著提升数据处理效率和准确性,助力企业降本增效。

weixin_30329623的博客 598

【遗传算法】基于matlab的遗传算法实现

通过本次对基于 MATLAB 的遗传算法实现的探索,我们深入领略了遗传算法的魅力与 MATLAB 的强大功能 。从遗传算法的基本原理出发,我们了解到它如何模拟生物进化过程,通过选择、交叉和变异等操作,在复杂的解空间中寻找最优解 。在 MATLAB 平台上,借助丰富的函数和工具箱,我们能够将这些理论转化为实际的代码,解决诸如旅行商问题等复杂的优化难题 。

大雨淅淅的博客 1694

[漏洞剖析]JeecgBoot queryFieldBySql注入与JDBC连接滥用:从内存马植入到RCE的完整攻击链

本文深度剖析了JeecgBoot框架中queryFieldBySql接口的SQL注入漏洞及其引发的完整攻击链。攻击者利用该漏洞,通过Freemarker SSTI植入隐蔽的内存马,并进一步滥用JDBC连接测试功能,借助H2数据库特性实现远程命令执行(RCE),揭示了低代码平台中功能滥用与安全配置疏忽带来的严重风险。

weixin_29232121的博客 115

告别LM2596!用LM5175打造400W自动升降压数控电源(附完整电路图与代码)

本文详细介绍了如何利用LM5175芯片设计400W自动升降压数控电源,替代传统的LM2596方案。通过四开关Buck-Boost拓扑结构,LM5175实现了高达98%的转换效率和400W大功率输出,支持无缝升降压切换。文章涵盖芯片选型、电路设计、PCB布局及STM32数控实现,为工程师提供完整的实践指南。

weixin_27032989的博客 599
上一篇: 基于模拟退火和粒子群算法结合的MATLAB
下一篇: 模拟退火MATLAB
Azuresmh
博客等级 码龄9年 176粉丝 66原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值