Impact of Problem Decomposition on Cooperative Coevolution
创始人
2024-04-20 12:40:44
0

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>0for 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_flagNS = 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 : 20start = (i0 - 1) * 50 + 1;Ends = i0 * 50;for i2 = start : Endsfor i3 = (i2 + 1) : Endsmatrix(truegroup(i2), truegroup(i3)) = 1;matrix(truegroup(i3), truegroup(i2)) = 1;endend
endmatrix1 = zeros(dim, dim);      % 辅助查找行号列号矩阵
ss = 1;
for i5 = 1 : dimfor i6 = (i5 + 1) : dimmatrix1(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 : prA = 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 = 14initial_flag = 0;    % 换一个函数initial_flag重置为0sampleX = 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 : sgroup = 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, :);endbestYhistory = [bestYhistory; bestY];fprintf('evalue:%d\n', evalue);end
end
plot(bestYhistory);
save('20%bestYhistory.mat','bestYhistory');

​​​​​​​

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

相关内容

热门资讯

《秋水时至》文言文阅读及答案 《秋水时至》文言文阅读及答案  阅读并回答问题。  秋水时至,百川灌河。泾流之大,两涘渚崖之间,不辩...
《岳阳楼记》的原文及译文 《岳阳楼记》的原文及译文  《岳阳楼记》是北宋文学家范仲淹于庆历六年九月十五日(1046年10月17...
诗经取名女孩 诗经取名女孩大全  利用诗经取名,一直是中国人非常擅长和喜欢的一件事,诗经中含有哲理,含有思想,含有...
杜甫《春夜喜雨》全诗以及解释 杜甫《春夜喜雨》全诗以及解释  杜甫的《春夜喜雨》是描绘春夜雨景,表现喜悦心情的名作。下面我们为大家...
桃花源记读后感 桃花源记读后感(精选15篇)  认真品味一部名著后,相信你一定有很多值得分享的收获,为此需要认真地写...
花落人亡,红楼梦断-读《红楼... 花落人亡,红楼梦断-读《红楼梦》有感作文900字  一曲《红楼梦》,将人世间哀情道遍;一首《葬花吟》...
本草纲目律草文言文 本草纲目律草文言文  作者:李时珍  释名  勒草、葛勒蔓、来莓草。  气味  甘、苦、寒、无毒。 ...
北人生而不识菱者文言文翻译注... 北人生而不识菱者文言文翻译注释及道理  1、文言文  北人生而不识菱者,仕于南方。席上啖菱,并壳入口...
李白传读后感 李白传读后感(精选5篇)  读完一本名著以后,你心中有什么感想呢?这时候,最关键的读后感怎么能落下!...
梦游天姥吟留别高考语文考点 梦游天姥吟留别高考语文考点  原文:  海客谈瀛洲,烟涛微茫信难求,越人语天姥,云霞明灭或可睹。天姥...
乡愁体的作文600字 乡愁体的作文600字  《乡愁》以朴素、简明、隽永的语言,高超的艺术技巧,表达了台湾人民盼望海峡两岸...
《长干曲其二》的原文赏析及翻... 《长干曲其二》的原文赏析及翻译注释  长干曲 其二  崔颢  家临九江水,来去九江侧。  同是长干人...
《山海经》异兽介绍 《山海经》异兽介绍  山海经里的奇珍异兽很多,是集齐古人智慧与想象力的书。小编整理了《山海经》异兽介...
红楼梦读后感300字 红楼梦读后感300字(通用11篇)  当看完一本著作后,想必你有不少可以分享的东西,此时需要认真地做...
《名人传》简介   《名人传》简介  作者介绍:  罗曼·罗兰(Romain Rolland,1866——1944)...
《小石潭记》中考真题 历年语文高考真题与答案推荐度:历年英语高考真题与答案推荐度:高考语文全国乙卷真题和答案推荐度:新高考...
林采薇简介 林采薇简介  林采薇(Yumi ),3月5日出生于台湾台北。就读于台湾辅仁大学韩语系,现为伊林模特儿...
《水调歌头再用韵呈南涧》诗词 《水调歌头再用韵呈南涧》诗词  水调歌头 再用韵呈南涧 辛弃疾 宋  千古老蟾口,云洞插天开。涨痕当...
将进酒 李白拼音版 将进酒 李白拼音版  qiāng jìn jiǔ  将 进 酒  jūn bú jiàn huáng...
三字经全文句句赏析 三字经全文句句赏析  rén zhī chū xìng běn shàn xìng xiāng jì...