首页 > 其他分享 >优化问题的测试函数

优化问题的测试函数

时间:2024-08-20 16:17:15浏览次数:8  
标签:Count 迭代 30 问题 最佳 适应度 测试函数 优化

当你提出了一种新的优化算法后,你需要和别人之前提出的算法来进行PK看你的算法有没有提高,那么如何证明你的算法比较优秀呢?
可以给把算法套在测试函数上,看谁的运行时间更短,求得测试函数的适应度更好

目录

一、四种常见的测试函数

二、利用粒子群算法进行测试

用测试函数对算法进行测试的方法其实就是把目标函数改成我们想要的测试函数,下面我们来看一下代码中需要修改的地方

1.修改变量个数

以Sphere函数为例,这里的维数是30维,也就是变量个数。

n = 1000; % 粒子数量
narvs = 30; % 变量个数

2.修改上下界

根据Sphere函数的取值范围进行修改

vmax = 30*ones(1,30); % 粒子的最大速度
x_lb = -100*ones(1,30); % x的下界
x_ub = 100*ones(1,30); % x的上界

3.计算适应度

这里的适应度其实就是测试函数的值

fit = zeros(n,1);  % 初始化这n个粒子的适应度全为0
for i = 1:n  % 循环整个粒子群,计算每一个粒子的适应度
    fit(i) = Obj_fun3(x(i,:));   % 调用Obj_fun3函数来计算适应度
end 

4.绘制最佳适应度的变化图

figure(2) 
plot(fitnessbest)  % 绘制出每次迭代最佳适应度的变化图
xlabel('迭代次数');
disp('最佳的位置是:'); disp(gbest)
disp('此时最优值是:'); disp(Obj_fun3(gbest))

如图所示,我们这里的迭代次数设置为了1000,但其实我们在100次前就进行收敛了,后面的900次迭代都没什么用;
因此为了节省迭代的时间,需要对迭代方法进行改进,当迭代多次以后,最佳适应度没发生变化,就可以退出迭代了

三、改进--自动退出迭代循环

当粒子已经找到最佳位置后,再增加迭代次数只会浪费计算时间,那么我们能否设计一个策略,能够自动退出迭代呢?
我们可以设置一个计数器,每次计算出来最佳适应度后,都计算该适应度和上一次迭代时最佳适应度的变化量(取绝对值)。判断这个变化量和是否足够小,如果足够小,则说明这一次迭代并没有找到更好的值,因此则计数器加1;否则计数器清0。当计数器超过某个值,说明经历过多次迭代都没有找到更好的适应度,应该推出循环

1.代码实现

(1)变量初始化

Count = 0; % 计数器初始化为0
max_Count = 30;  % 最大计数值初始化为30
tolerance = 1e-6;  % 函数变化量容忍度,取10^(-6)

(2)添加临时变量

因为我们要比较新的最佳适应度与上一步的最佳适应度,但是新的最佳适应度在我们的算法中是已经被覆盖了的,所以我们要在其覆盖之前创造一个新的临时变量储存其数据
tem = gbest; % 将上一步找到的最佳位置保存为临时变量

(3)进入判断语句

delta_fit = abs(Obj_fun3(gbest) - Obj_fun3(tem));   % 计算相邻两次迭代适应度的变化量
    if delta_fit < tolerance  % 判断这个变化量和“函数变化量容忍度”的相对大小,如果前者小,则计数器加1
        Count = Count + 1;
    else
        Count = 0;  % 否则计数器清0
    end   
    if Count > max_Count  % 如果计数器的值达到了最大计数值
        break;  % 跳出循环

标签:Count,迭代,30,问题,最佳,适应度,测试函数,优化
From: https://www.cnblogs.com/dlmuwxw/p/18369568

相关文章

  • 使用python-slim镜像遇到无法使用PostgreSQL的问题
    前言之前不是把DjangoStarter的docker方案重新搞好了吗一开始demo部署是使用SQLite数据库的,用着没问题,但很快切换到PostgreSQL的时候就遇到问题了…报错docker启动之后,app容器报错django.core.exceptions.ImproperlyConfigured:Errorloadingpsycopg2orpsycopg......
  • AquaCrop模型数据制备、优化方法、敏感性与气候变化影响分析及源码解析
    AquaCrop是由世界粮食及农业组织(FAO)开发的一个先进模型,旨在研究和优化农作物的水分生产效率。这个模型在全球范围内被广泛应用于农业水管理,特别是在制定农作物灌溉计划和应对水资源限制方面显示出其强大的实用性。AquaCrop不仅包含一个全面的数据库,还提供了用户友好的接口,使得......
  • mysql.user表的数据准确性问题
    mysql.user这个系统表中有些字段的数据是不准确的(或者说是不一定准确,这样表达更严谨一点)。这是一个让人头疼的问题,下面简单述说一下问题,主要是mysql.user表中的password_lifetime,password_reuse_history,password_reuse_time这几个字段的数据都不一定准确。下面简单演示一下,当......
  • 【轨物洞见】找到技术创新的“真问题”
    技术创新是用技术解决真问题,创造真价值。问题是需求,技术是供应,将需求与供应有效连接的能力,是创新力。技术创新的第一步在于找到“真问题”。在找问题之前,我们先了解一下问题是如何产生的。问题就是期望值与现状之间落差。找问题首先要了解对方的需求、期望,接着要搞清楚现状,......
  • 优化器Adam在非凸情况下证明为什么要用期望平方梯度范数$E[||\nabla f(x_k)||^2]$这
    如下内容由chatgpt生成在非凸优化问题中,使用期望平方梯度范数(E[|\nablaf(x_k)|^2])作为收敛性分析的指标有几个重要原因。以下是详细的解释:1.非凸优化问题的复杂性在非凸优化中,目标函数(f(x))可能存在多个局部最优解,甚至是鞍点、平坦区域等复杂的几何结构。相较于......
  • 商标异议的问题,积极答辩通过率更高!
    最近有网友找普推商标知产老杨做异议答辩,商标通过初审后三个月的公告期,如果有人提出异议,就需要做答辩,而且这个异议信是通过中国邮政的挂号信邮过来的,所以企业地址变更了要第一时间更新,如果不变更,可能导致收不到挂号信无法答辩。分析过许多异议,基本都是与驰名商标或者知名商......
  • 想做全域推广,不知道直播间怎么优化直播间ROI怎么行
    随着直播电商的兴起,品牌商家纷纷涌入这一新兴渠道,希望通过直播实现与用户的实时互动和高效转化。然而,在竞争激烈的市场中,仅仅依靠直播本身吸引流量已远远不够。全域推广策略的实施和直播间ROI的优化成为品牌突破瓶颈的关键。本文将提供一套系统化的直播间ROI优化方案,帮助运营者......
  • .NET 9 优化,抢先体验 C# 13 新特性
    前言微软即将在2024年11月12日发布.NET9的最终版本,而08月09日发布的.NET9Preview7是最终发布前的最后一个预览版。这个版本将与.NETConf2024一同亮相,并已与VisualStudio202217.12预览版1一同发布,可以直接通过VisualStudio安装。同时VisualStudioCode和C#Dev......
  • 数据分析面试常见50个问题及解答要点
    为了帮助各位学习数据分析的小伙伴们成功拿到offer!本期给大家整理了一些数据分析面试时的高频问题,分享给大家数据分析高频面试50题,点击下方链接进行下载完整版,下面展示部分面试题,希望大家积极点赞收藏加关注,一起冲鸭~链接下载:https://edu.cda.cn/group/4/thread/1787811、......
  • 个人微信管理工具:优化社交体验,提升生活效率
    在数字化时代,微信已成为我们日常生活中不可或缺的一部分,无论是工作沟通、社交互动还是信息获取,微信都扮演着重要角色。然而,随着微信好友数量的增加和聊天信息的累积,如何高效地管理个人微信,成为了许多人面临的难题。此时,个人微信管理工具的出现,如同一把钥匙,为我们打开了优化社交......