Impact of Problem Decomposition on Cooperative Coevolution

news2024/9/21 20:32:52

0、论文背景

本文在CCVIL的基础上,讨论了问题的分解效果对于CC框架的影响。由于VIL本身是一项计算成本昂贵的任务,因此应该避免在VIL上花费过多的时间而对CCEA没有显著的好处。我们进行实证研究来解决三个密切相关的问题: 1)更好的问题分解会导致更好的CCEAs性能?2)何时改进问题分解会有利于CCEAs?3)改进问题分解会在多大程度上提高CCEAs的性能

Chen W, Tang K. Impact of problem decomposition on cooperative coevolution[C]//2013 IEEE Congress on Evolutionary Computation. IEEE, 2013: 733-740.

1、问题提出的动机

有关CCVIL,请参见博客:CCVIL。

1)检测更多可变的交互是否一定会导致ccea的更好的性能?这是第一个问题。需要找到这个问题的答案,为进一步探索更好的VIL方法奠定基础。

2)什么时候检测更多的可变交互作用可以有利于CCEA?

问题分解导致原始问题的过度简化,从而将CCEA陷入到局部最优;合并两组变量形成一个更大的组,使新的子问题更难解决,CCEA需要更长的时间才能收敛。因此,我们假设检测更多的内在变量交互作用并不总是能提高CCEA的性能,所以提出了第二个问题。

3)检测更多变量交互的好处到底是什么?提出该问题的原因是为检测更多可变的交互作用付出代价真的值得吗?

2、实验的设置

本文将所有变量之间的关系放到数组\vec{A}_{i n t r}中,数组的元素只有0或1,0表示变量之间不存在关系,1表示变量之间存在交互作用。该数组大小为\frac{N \times(N-1)}{2},N表示变量个数。

接下来我们需要定义一个变量作为量化人为制造交互变量程度:P_{\text {prior }}。它表示在\vec{A}_{i n t r}中有多大比例的数组元素是根据CEC2010中分组的具体状况确定的,而其他比例的数组元素全部设置为0。

具体的实验流程如下:

3、实验的结果与分析

首先将P_{\text {prior }}设置为0%~100%。实验结果如下:

 得出如下结论:

  • 结合先验分组知识通常可以提高CCEA的性能。然而,提高P_{\text {prior }}似乎主要在区间内有用[0%,10%]。
  • 最优问题分解不一定会产生最佳解。因此,第一个问题的答案是:检测更多的可变相互作用可以帮助CCEA找到更好的解决方案,但这并不总是正确的。
  • 关于更差的问题分解的假设有时可以得到质量更好的解,这也被验证。

接着将P_{\text {prior }}设置为0%~10%。实验结果如下:

  得出如下结论:

  • 检测更多可变的相互作用几乎总是能增强CCEA。
  • 只使用10%的先验知识,就可以提高适应度的几个数量级。至少在一定程度上,努力学习可变的互动确实是值得的。

 得出如下结论:

给定P_{\text {prior }}为9%,相应的分解策略,产生约25个亚种群,已经非常接近最优的,应该有20个亚种群。这就是为什么P_{\text {prior }}的进一步提高在提高CCEA的性能方面几乎没有取得什么进展的原因。

从实验数据中可以得出以下结论:

  • 检测更多的可变相互作用通常有利于CCEAs,但也可能恶化CCEAs的性能。
  • 当获得的关于内在变量交互作用的知识不足(少于总交互作用的10%)时,了解更多的内在变量交互作用确实会单调地提高ccea的性能。
  • 通过仅检测10%的关于变量交互作用的知识,由CCEA得到的解的适应度可以提高几个数量级。

4、实验的实现与简单验证

function CG=CellG(A,ng)
% 函数输入为A为邻接矩阵,ng为所含最少智能体个数的连通分量,如ng为2则输出含智能体个数大于等于2的连通分量;
G=graph(A);
[bin,binsize] = conncomp(G);
b=find(binsize>=ng);
[~,m]=size(b);
CG=cell(m,1);
if m>0
    for i=1:m
        [~,com]=find(bin==b(i));
        CG(i,1)={com};
    end
end
end
clc; clearvars; close all;
addpath('CEC2010\')
addpath('CEC2010\datafiles\');
addpath('CEC2010\javarandom\bin\');
addpath('CEC2010\javarandom\src\');
truegroup = load('f14_opm.mat', 'p');
truegroup = truegroup.p;
global initial_flag

NS = 100;   % 种群数
dim = 1000;   % 种群维度
upperBound = [100, 5, 32, 100, 5, 32, 100, 100, 100, 5, 32, 100, 100, 100, 5, 32, 100, 100, 100, 100];
lowerBound = [-100, -5, -32, -100, -5, -32, -100, -100, -100, -5, -32, -100, -100, -100, -5, -32, -100, -100, -100, -100];
bestYhistory = [];    % 保存每次迭代的最佳值

matrix = zeros(dim, dim);   % 真实变量之间的关系矩阵
for i0 = 1 : 20
    start = (i0 - 1) * 50 + 1;
    Ends = i0 * 50;
    for i2 = start : Ends
        for i3 = (i2 + 1) : Ends
            matrix(truegroup(i2), truegroup(i3)) = 1;
            matrix(truegroup(i3), truegroup(i2)) = 1;
        end
    end
end

matrix1 = zeros(dim, dim);      % 辅助查找行号列号矩阵
ss = 1;
for i5 = 1 : dim
    for i6 = (i5 + 1) : dim
        matrix1(i5, i6) = ss;
        ss = ss + 1;
    end
end
sumA = dim * (dim - 1) / 2;
Aintr = randperm(sumA);
pr = ceil(0.2 * sumA);
Prior = Aintr(1 : pr);
priormatrix = zeros(dim, dim);      % 部分交互变量之间的关系矩阵
for i4 = 1 : pr
    A = Prior(i4);
    [row, col] = find(matrix1 == A);
    priormatrix(row, col) = matrix(row, col);
    priormatrix(col, row) = matrix(col, row);
end
groupInfor=CellG(priormatrix,1);
s = size(groupInfor, 1);   % 子控件数目

for funcNum = 14

    initial_flag = 0;    % 换一个函数initial_flag重置为0
    sampleX = lhsdesign(NS, dim) .* (upperBound(funcNum) - lowerBound(funcNum)) + lowerBound(funcNum) .* ones(NS, dim);    % 生成NS个种群,并获得其评估值
    lastSampleX = sampleX;
    sampleY = benchmark_func(sampleX, funcNum);
    [bestY, bestIndex] = min(sampleY);    % 获取全局最小值以及对应的种群
    lastBestY = bestY;
    bestX = sampleX(bestIndex, :);
    bestYhistory = [bestYhistory; bestY];
    evalue = 60;

    while evalue < 3 * 10 ^ 6     
        for i1 = 1 : s
            group = groupInfor{i1};
            dim = size(group,2);
            NPi = dim + 10;
            Geni = dim + 5;
            index = randperm(NS);
            subX = sampleX(index(1:NPi), group);
            [subX, subY] = JADE(subX, sampleY(index(1:NPi)), bestX, group, Geni, dim, lowerBound(funcNum), upperBound(funcNum), @(x)benchmark_func(x, funcNum));
            evalue = evalue + NPi * Geni;
            sampleX(index(1:NPi), group) = subX;
            sampleY(index(1:NPi)) = benchmark_func(sampleX(index(1:NPi), :), funcNum);   
            evalue = evalue + NPi;
            [bestY, bestIndex] = min(sampleY);    % 获取全局最小值以及对应的种群
            bestX = sampleX(bestIndex, :);
        end
        bestYhistory = [bestYhistory; bestY];
        fprintf('evalue:%d\n', evalue);
    end
end
plot(bestYhistory);
save('20%bestYhistory.mat','bestYhistory');

​​​​​​​

 如有错误,还望批评指教!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/68065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STC 51单片机58——旋转LED

STC11F LED部分&#xff1a; #include "STC11.h" #define u8 unsigned char #define u16 unsigned int //全亮 //u8 code Picture1[8]{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f} ; //u8 code Picture2[8]{0xe7,0xdb,0xbd,0x7e,0x7e,0xbd,0xdb,0xe7}; //u8 code P…

阿里云的工程师又闯祸了,github上紧急修复

最近不少用户使用阿里云提供的测试用例出现了被删除了用户目录下的所有文件&#xff0c;项目地址是&#xff1a;https://github.com/aliyun/aliyun-clialiyun-cli/cli/completion_installer_test.goLines 87 to 99 in 550ccb6path : filepath.Join(u.HomeDir, ".bashrc&qu…

求知 | 聊聊Android资源加载那些事 - Resource的初始化

Hi,你好 &#x1f603; 引言 在上一篇&#xff0c;求知 | 聊聊Android资源加载的那些事 - 小试牛刀 中&#xff0c;我们通过探讨 Resource.getx() ,从而解释了相关方法的背后实现, 明白了那些我们日常调用方法的背后实现。 那么&#xff0c;不知道你有没有好奇 context.reso…

【蓝桥杯国赛真题07】python杨辉三角形 蓝桥杯青少年组python编程 蓝桥杯国赛真题解析

目录 python杨辉三角 一、题目要求 1、提示信息 2、编程实现 3、输入输出

蓝桥杯嵌入式Debug

文章目录前言一、Debug是什么二、如何调试1.重要调试按键介绍2.其他按键介绍三、监视变量窗口总结前言 这一篇文章是非常重要的&#xff0c;掌握了这篇文章有助于大家在比赛中快速找到错误。 一、Debug是什么 Debug是一种程序&#xff0c;一种调试工具&#xff0c;说白了就是…

Elasticsearch:如何在 Elastic Agents 中配置 Beats 来采集定制日志

在我之前的文章 “Observability&#xff1a;使用 Elastic Agent 来摄入日志及指标 - Elastic Stack 8.0”&#xff0c;我详细地描述了如何安装 Elasticsearch&#xff0c;Stack 及 Elastic Agents 来采集系统日志及指标。很多开发者可能会有疑问&#xff0c;在我们的实际使用中…

陈都灵《我们当打之年》热播《关索岭》上热搜,温州人爱望京卡牌

最近&#xff0c;电视连续剧《我们的当打之年》&#xff0c;正在各大卫视台热播&#xff0c;一起热起来的还有该剧主演陈都灵。说起主演陈都灵&#xff0c;她虽然不是正宗的电影学院科班出身&#xff0c;但是她的演技却透露着灵气&#xff0c;也给人以真实的感觉。 陈都灵无疑是…

[附源码]Python计算机毕业设计Django学习帮扶网站设计与实现

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

2023年哪些渲染器更好用?3D新手适合的渲染器汇总

现在很多人都使用3D软件来创作自己的作品&#xff0c;所以渲染器的使用必不可少。有许多流行的渲染器&#xff0c;包括 V-Ray、Octane、Arnold、Corona、RedShift。对于许多 3D 新手来说&#xff0c;哪种渲染器最好&#xff1f; 这些渲染器的原理基本相同&#xff0c;只是操作…

大学免费查题接口系统

大学免费查题接口系统 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;点…

地图信息,障碍判断以及寻路算法(A星算法,B星算法和蚁群算法等)

一、广度优先遍历和深度优先遍历 在学习寻路算法之前,我们先来了解一下广度优先遍历和深度优先遍历. 什么是广度优先遍历? 广度优先遍历(breadth first search)是一个万能的算法. 广度优先是从初始状态一层一层向下找&#xff0c;直到找到目标为止。 广度优先遍历&#x…

Elasticsearch入门(一)基本介绍与安装

介绍&#xff1a; Elaticsearch&#xff1a;简称为 ES&#xff0c;ES 是一个开源的高扩展的分布式全文搜索引擎&#xff0c;是整个 Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据&#xff1b;本身扩展性很好&#xff0c;可以扩展到上百台服务器&#xff0c;处理…

STL-常用遍历算法

目录 1.for_each 功能描述 函数原型 2.transform 功能描述 函数原型 1.for_each 功能描述 实现容器遍历 函数原型 for_each(itertor beg,iterator end,_func); //遍历算法 遍历容器元素 //beg 开始迭代器 //end 结束迭代器 //_func函数或者函数对象 代码 #include <i…

磕磕绊绊的双非硕秋招之路小结

秋招&#xff0c;真的再见了。 ⭐️我叫恒心&#xff0c;一名喜欢书写博客的研究生在读生。 原创不易~转载麻烦注明出处&#xff0c;并告知作者&#xff0c;谢谢&#xff01;&#xff01;&#xff01; 这是一篇近期会不断更新的博客欧~~~ 有什么问题的小伙伴 欢迎留言提问欧 12…

Pr:导出设置之音频

H.264、HEVC&#xff08;H.265&#xff09;和 MPEG2-DVD 等格式支持多种音频格式。对于这些格式&#xff0c;我们可以通过导出设置中的音频 AUDIO模块导出为不同的音频格式。音频格式设置Audio Format Settings音频格式Audio FormatH.264 默认采用 AAC 音频格式。AAC&#xff0…

RFID固定资产定位管理系统-智慧资产人员可视化管理系统

概述 我司&#xff08;东识科技DONWIT&#xff09;RFID资产可视化管理系统是依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID固定资产进行统一管理、分析的信息化、智能化、规范化的系统。 1.1东识RFID资产管理系统原理 受控样品&#xff08;或…

微服务开发平台 Spring Cloud Blade 部署实践

本文介绍使用 Rainbond 快速部署 Spring Cloud Blade 微服务平台。Spring Cloud Blade 是一个由商业级项目升级优化而来的微服务架构&#xff0c;采用Spring Boot 2.7 、Spring Cloud 2021 等核心技术构建&#xff0c;完全遵循阿里巴巴编码规范。提供基于 React 和 Vue 的两个前…

自定义RBAC(2)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e; 上一次把DAC、MAC、PBAC这三个都一口气介绍完了&#xff0c;本想一口气把RBAC也说完。想了想&#xff0c;饭还是要一口口吃&#xff0c;一次吃太多会消化不良&am…

Python | 今年世界杯哪个队最有可能夺冠?!

文章目录&#x1f3f3;️‍&#x1f308; 1. 数据&#x1f3f3;️‍&#x1f308; 2. 绘图2.1 绘制南丁格尔玫瑰图2.2 设置cloor_bar2.3 添加文字2.4 添加注释2.5 添加标题2.6 词云&#x1f3f3;️‍&#x1f308; 3. 更多可视化项目源码数据大家好&#xff0c;我是 &#x1f4…

Sqoop数据导出 第1关:Sqoop数据导出语法学习

为了完成本关任务&#xff0c;你需要掌握&#xff1a; 1、Sqoop 导出( export )的基本参数。 2、配置环境。 Sqoop 导出( export )的基本参数。 Sqoop 能够让 Hadoop 上的 HDFS 和 Hive 跟关系型数据库之间进行数据导入与导出&#xff0c;多亏了import和export这两个工具。本…