粒子群算法几个适应度评价函数

article/2025/10/17 3:28:26

http://blog.csdn.net/niuyongjie/article/details/1619496


粒子群算法(6)-----几个适应度评价函数

标签: 算法图形function
  37960人阅读  评论(25)  收藏  举报
  分类:

下面给出几个适应度评价函数,并给出图形表示

 

     头几天机子种了病毒,重新安装了系统,不小心把程序全部格式化了,痛哭!!!没办法,好多程序不见了,现在把这几个典型的函数重新编写了,把他们给出来,就算粒子群算法的一个结束吧!痛恨病毒!!!!

第一个函数:Griewank函数,图形如下所示:

适应度函数如下:(为了求最大值,我去了所有函数值的相反数)  

function y = Griewank(x)
% Griewan函数
% 输入x,给出相应的y值,在x = ( 0 , 0 ,…, 0 )处有全局极小点0.
% 编制人:
% 编制日期:
[row,col] = size(x);
if  row > 1 
    error( ' 输入的参数错误 ' );
end
y1 = 1 / 4000 * sum(x. ^ 2 );
y2 = 1 ;
for  h = 1 :col
    y2 = y2 * cos(x(h) / sqrt(h));
end
y = y1 - y2 + 1 ;
y =- y;

绘制函数图像的代码如下:

function DrawGriewank()
% 绘制Griewank函数图形
x = [ - 8 : 0.1 : 8 ];
y = x;
[X,Y] = meshgrid(x,y);
[row,col] = size(X);
for  l = 1 :col
      for  h = 1 :row
        z(h,l) = Griewank([X(h,l),Y(h,l)]);
    end
end
surf(X,Y,z);
shading interp

第二个函数:Rastrigin函数,图形如下所示:

适应度函数如下:(为了求最大值,我去了所有函数值的相反数)  

function y = Rastrigin(x)
% Rastrigin函数
% 输入x,给出相应的y值,在x = ( 0 , 0 ,…, 0 )处有全局极小点0.
% 编制人:
% 编制日期:
[row,col] = size(x);
if  row > 1 
    error( ' 输入的参数错误 ' );
end
y = sum(x. ^ 2 - 10 * cos( 2 * pi * x) + 10 );
y =- y;

绘制函数图像的代码如下:

function DrawRastrigin()
% 绘制Rastrigin函数图形
x = [ - 5 : 0.05 : 5 ];
y = x;
[X,Y] = meshgrid(x,y);
[row,col] = size(X);
for  l = 1 :col
      for  h = 1 :row
        z(h,l) = Rastrigin([X(h,l),Y(h,l)]);
    end
end
surf(X,Y,z);
shading interp

第三个函数Schaffer函数,图形如下所示:

函数的代码如下,因为该函数在(0,...,0)处有最大值1,因此不需要取相反数。

[c-sharp]  view plain copy
  1. function result=Schaffer(x1)  
  2. %Schaffer 函数  
  3. %输入x,给出相应的y值,在x=(0,0,…,0) 处有全局极大点1.  
  4. %编制人:  
  5. %编制日期:  
  6. [row,col]=size(x1);  
  7. if row>1  
  8.     error('输入的参数错误');  
  9. end  
  10. x=x1(1,1);  
  11. y=x1(1,2);  
  12. temp=x^2+y^2;  
  13. result=0.5-(sin(sqrt(temp))^2-0.5)/(1+0.001*temp)^2;  

  

绘制函数代码图形的代码如下:

[c-sharp]  view plain copy
  1. function DrawSchaffer()  
  2. x=[-5:0.05:5];  
  3. y=x;  
  4. [X,Y]=meshgrid(x,y);  
  5. [row,col]=size(X);  
  6. for l=1:col  
  7. for h=1:row  
  8. z(h,l)=Schaffer([X(h,l),Y(h,l)]);  
  9. end  
  10. end  
  11. surf(X,Y,z);  
  12. shading interp  

  

第四个函数:Ackley函数,函数图形如下:

函数的代码如下,因为 该函数在(0,...,0)处有最小值0,因此需要取相反数

[c-sharp]  view plain copy
  1. function result=Ackley(x)  
  2. %Ackley 函数  
  3. %输入x,给出相应的y值,在x=(0,0,…,0) 处有全局极小点0,为得到最大值,返回值取相反数  
  4. %编制人:  
  5. %编制日期:  
  6. [row,col]=size(x);  
  7. if row>1  
  8.     error('输入的参数错误');  
  9. end  
  10. result=-20*exp(-0.2*sqrt((1/col)*(sum(x.^2))))-exp((1/col)*sum(cos(2*pi.*x)))+exp(1)+20;  
  11. result=-result;  

 

绘制函数代码图形的代 码如下:

[c-sharp]  view plain copy
  1. function DrawAckley()  
  2. %绘制Ackley函数图形  
  3. x=[-8:0.1:8];  
  4. y=x;  
  5. [X,Y]=meshgrid(x,y);  
  6. [row,col]=size(X);  
  7. for l=1:col  
  8.     for h=1:row  
  9.         z(h,l)=Ackley([X(h,l),Y(h,l)]);  
  10.     end  
  11. end  
  12. surf(X,Y,z);  
  13. shading interp  

第五个函数是:Rosenbrock函数,该函数在(1,...,1)处有最小值0,为了得到最大值,取函数值的相反数。

函数图形如下所示

 

函数的代码:

 

[c-sharp]  view plain copy
  1. function result=Rosenbrock(x)  
  2. %Rosenbrock 函数  
  3. %输入x,给出相应的y值,在x=(1,1,…,1) 处有全局极小点0,为得到最大值,返回值取相反数  
  4. %编制人:  
  5. %编制日期:  
  6. [row,col]=size(x);  
  7. if row>1  
  8.     error('输入的参数错误');  
  9. end  
  10. result=100*(x(1,2)-x(1,1)^2)^2+(x(1,1)-1)^2;  
  11. result=-result;  

绘制函数图形的代码如下:

[c-sharp]  view plain copy
  1. function DrawRosenbrock()  
  2. %绘制Rosenbrock函数图形,大铁锅函数,哈哈  
  3. x=[-8:0.1:8];  
  4. y=x;  
  5. [X,Y]=meshgrid(x,y);  
  6. [row,col]=size(X);  
  7. for l=1:col  
  8.     for h=1:row  
  9.         z(h,l)=Rosenbrock([X(h,l),Y(h,l)]);  
  10.     end  
  11. end  
  12. surf(X,Y,z);  
  13. shading interp  

这样粒子群算法不得不草草收场。


http://chatgpt.dhexx.cn/article/a81ejfG4.shtml

相关文章

遗传算法优化LSTM网络结构(实现自动根据适应度函数:即准确率来全局搜索最佳网络结构):主要被优化参数:网络层数,每层的神经元个数,全连接的层数,全连接层的神经元个数。代码有详细注解

代码视频链接:https://www.bilibili.com/video/BV19q4y1Q7DR/ 代码效果图: 1.优化参数 本文优化的是LSTM的层数参数和各层神经元参数,其中包含了lstm层和Dense层,其中我们规定了神经网络的层数不超过3层,每层的神经元个数在[32,256]之间。 2.注意事项 2.1.本文的遗传算…

粒子群算法的几个适应度评价函数

下面给出几个适应度评价函数,并给出图形表示 第一个函数:Griewank函数,图形如下所示: 适应度函数如下:(为了求最大值,我去了所有函数值的相反数) function y Griewank(x) % Griew…

【人工智能】人工智能二——遗传算法的基本概念遗传算法的基本算法(编码群体设定适应度函数选择交叉变异遗传算法步骤)解决带约束的函数优化问题多目标的遗传算法遗传算法的改进算法

人工智能二——遗传算法的基本概念&遗传算法的基本算法(编码&群体设定&适应度函数&选择&交叉&变异&遗传算法步骤)&解决带约束的函数优化问题&多目标的遗传算法&遗传算法的改进算法 遗传算法的基本概念遗传算法的…

【建模必备】遗传算法的基本原理与步骤(适应度函数与适应度分配)

如果喜欢这里的内容,你能够给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn together.

2018-3-19 损失函数与适应度函数,稳定选择与分裂选择

1.适应度与损失函数 我觉的: (1)都是用来描述目标函数一个方面的效能的一个函数 (2)进行输入之后,结果都是一个可以进行比较的值 来源:机器学习之 损失函数和风险函数 - CSDN博客 http://bl…

遗传算法(2):对适应度函数的改进

Review: 基本遗传算法 ----------------------------- 关于适应度的问题 1. 有的时候,目标函数可能不一定可以直接作为适应度函数。 2. f(x1), f(x2), ... f(xN)之间的差别可能不是很大,个体被选出的概率差不多,这可能导致GA的选择…

遗传算法原理,交叉、变异、适应度函数的设置

遗传算法(Genetic Algorithm,GA)由霍兰德教授在20世纪70年代提出,是以自然选择和遗传变异为理论依据的全局性概率搜索优化算法模型。采用遗传算法寻优时需要将问题的候选解进行编码,即一个候选解对应一个编码&#xff…

利用遗传算法GA和粒子群算法PSO优化算法,将BP神经网络训练集的MSE作为适应度函数

利用遗传算法GA和粒子群算法PSO优化算法,将BP神经网络训练集的MSE作为适应度函数,获取最优的权值和阈值在反向输入到BP神经网络里构建回归预测模型,同时能够打印出模型的多个评价指标,具体效果可以看图 ID:3250669194443543Matl…

麻雀算法SSA,优化VMD,适应度函数为最小包络熵,包含MATLAB源代码

针对大家评论区给出的很多问题,作者一直都有关注,因此在这里又写了一篇文章,而且思路与这篇文章有不同之处,至于具体的不同之处放在下一篇文章了,大家感兴趣的可以移步观看,下一篇文章可以说是作者的呕心力…

计算适应度函数(目标函数)(单目标)

适应度函数 function fitness = CacFitNess(Energy,Time,MissError,overSpeed,Jerk) %UNTITLED 计算适应度函数 caculation fitness % 能耗Energy % 时间Time % 舒适度Jerk % 超限速overSpeed % 停车误差MissError global DESINTIME EMAX; y=zeros(1,5);%% 1 能耗 if E…

进化算法——昂贵、有噪声与动态适应度函数

1.昂贵适应度函数 在很多实际问题中,对适应度做一次评价会需要几分钟、几小时、几天甚至更长时间的计算或实验。我们在这里讨论如何减少适应度评价所需的时间以便降低进化算法对计算量的要求。 实际问题涉及的适应度函数常常包含下列的一种或多种特征:…

经典算法研究系列:七、深入浅出遗传算法,透析GA本质

经典算法研究系列:七、遗传算法初探 ---深入浅出、透析GA本质 作者:July 二零一一年一月十二日。 本文参考:维基百科 华南理工大学电子讲义 互联网 ------------------------------------------------------------------------------- 一、初探遗传算法…

适应度函数及遗传操作

本文转载自:http://blog.csdn.net/b2b160/article/details/4680853/ 这篇文章所举的例子非常给力,摘自《遗传算法原理与应用》,至少我是看过之后就明白了很多概念~ 首先,什么是遗传算法? 遗传算法是为那些难以找到传统…

遗传算法(三)——适应度与选择

适应度(fitness) 含义: 个体的适应度(fitness)指的是个体在种群生存的优势程度度量,用于区分个体的“好与坏”。适应度使用适应度函数(fitness function)来进行计算。适应度函数也叫…

遗传算法适应度函数的计算原理

遗传算法: 适应度函数: FitnVranking(ObjV) ranking函数分两步操作: (1)对个体的目标值ObjV进行由小到大的排序 (2)按照排序的值,利用计算公式 其中:Position是第一步…

SQL 分组统计去重有条件的过滤

见字如面,如标题拆分: 分组 GROUP BY field_name统计 COUNT(field_name)去重 DISTINCT field_name条件过滤 CASE WHEN age > 18 THEN age END 示例: 前序: 表结构 CREATE TABLE data_table_name (id int(11) …

mysql sql 分组求和函数_SQL分组函数group by和聚合函数(COUNT、MAX、MIN、AVG、SUM)的几点说明...

1 分组聚合的原因 SQL中分组函数和聚合函数之前的文章已经介绍过,单说这两个函数有可能比较好理解,分组函数就是group by,聚合函数就是COUNT、MAX、MIN、AVG、SUM。 拿上图中的数据进行解释,假设按照product_type这个字段进行分组,分组之后结果如下图。 SELECT product_ty…

SQL分组取最大值的方法

一、业务需求 1.1.数据表展示 1.2.查询要求 要求查询所有字段,并按iceName,orderPath,exceptionType分组,在分组时取systemTime值最大的那条数据 注:本文适用于查询多字段的查询,单纯的 select MAX(字段A) 或select B,MAX(字段…

SQL分组后将不存在的组记为0

说明 最近遇到这么一个需求&#xff1a;统计区间在0-2000,2000-3000,3000-4000,4000-5000,5000工资的人数。 快速开始 数据如下&#xff1a; 开始看到这个问题&#xff0c;想都没想就开始写了下面的代码&#xff1a; SELECT casewhen salary < 2000 then [0, 2000)when …

SQL 分组条件深入剖析

问题 在 stackoverflow 网站上看到这样一个 SQL 分组条件的需求&#xff0c;需求看似挺简单&#xff0c;但能把 SQL 写正确对于新手来说也不容易&#xff0c;我们拿过来深入剖析一下&#xff0c;数据如下&#xff1a; 需求是查找只有Ready 状态的设备。 解答 自然思路&#xff…