0、论文背景

本文在CC框架的基础上,提出了一个新的CC框架CCVIL,放弃了均匀的随机变量分组策略。该框架最初将所有变量视为独立的,并将每个变量放入一个单独的组中。迭代地,它发现它们之间的关系,并相应地合并这些组。

Chen W, Weise T, Yang Z, et al. Large-scale global optimization using cooperative coevolution with variable interaction learning[C]//International conference on parallel problem solving from nature. Springer, Berlin, Heidelberg, 2010: 300-309.

1、 CC

传统CC框架参见博客:CC。以下是简单的CC算法的流程,它将问题视为完全可分离的。

2、 发现变量的交互作用

以下方程式说明函数f是可分离的:

以下方程式说明函数f是不可分离(交互)的:

现在我们通过CC的框架来判定变量之间是否存在交互:

  • 假设前一个子控件优化的是i维,优化后的i维和best中的其他维组合求种群适应度值,取种群最佳值为xi,取种群适应度随机值(不能等于最佳值)为xi`,由此上述等式第一行的不等关系就形成了。优化第i维后best并不发生改变,只有一个cycle后才重启,更新新的best。
  • 优化i维的后一维子空间j维,优化后的j维和best中的其他维组合求种群适应度值,取种群最佳值为xj,取种群适应度随机值(不能等于最佳值)为xj`,为下一次循环做准备。在这里只用xi,xi`,xj。由此上述等式第二行的不等关系就形成了。
  • 如果第二行的不等关系与第一行的不等关系相反,则i,j维存在交互作用。否则不存在。
  • 继续上述过程,直至遍历完所有变量。

3、CCVIL

3.1 CCVIL学习阶段

在这其中用到的优化器是JADE,参见博客:JADE。

在一个随机排列中,放置一个N维问题中任意两个(可能相互作用的)维i和j的概率是2/N。在K个学习周期中至少发生一次的概率:

K = 500时,和0.7984为800个周期。给定有限数量的适应度函数评估,因此应该执行尽可能多的学习周期。因此在学习阶段,内部优化器的种群规模和迭代次数应该尽可能小(在本工作中分别为3和1)。CCVIL为每个周期发出一个独立的重启问题,以防止在学习阶段可能出现的种群多样性的损失。

指循环的上限,如果为了使为10。但是用于优化的评估不能高于总评估数的60%。

3.2 CCVIL优化阶段

优化阶段采用的框架是CC,采用的优化器是JADE。但是在优化器中的种群数量、迭代次数与组的大小有关系。。但是当前一个周期与后一个周期的最佳值差距:,便使种群数量乘以三倍。

4、算法的简单实现与实验

学习阶段:

clc; clearvars; close all;
addpath('CEC2010\')
addpath('CEC2010\datafiles\');
addpath('CEC2010\javarandom\bin\');
addpath('CEC2010\javarandom\src\');
global initial_flag
funcNum = 4;
initial_flag = 0;k = 0;
NP = 3;     % 种群数
N = 1000;   %变量维度
maxIteration = 1;
dim = 1;
evaluations = 5 * 10 ^ 6;
evaluation = 0;
lowk = 10;  % k的上下界的设置
upk = log(1 - 0.8) / log(1 - 2 / N);
groupInfor = cell(1,N);
for i0 = 1 : NgroupInfor{i0}(1,1) = i0;
end
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];while ~(size(groupInfor, 2) == 1 || (k > lowk && size(groupInfor, 2) == N) || k > upk || evaluation > 0.3 * evaluations)pi = randperm(1000);k = k + 1;lastIndex = 0;[pop, y, best] = initializeCC(NP, N, upperBound(funcNum), lowerBound(funcNum), @(x)benchmark_func(x, funcNum));evaluation = evaluation + 3;for i = 1 : Nif lastIndex ~= 0G1 = groupFind(groupInfor, pi(i));G2 = groupFind(groupInfor, lastIndex);endif i == 1 || (G1 ~= G2)index1 = pi(i);subX = pop(:, index1);[subX, subY] = JADE(subX, y, best, index1, maxIteration, dim, lowerBound(funcNum), upperBound(funcNum), @(x)benchmark_func(x, funcNum));evaluation = evaluation + 3;[~, ind1] = min(subY);xi1 = subX(ind1, :);ind2 = randi(3);while ind1 == ind2ind2 = randi(3);endxi2 = subX(ind2, :);if lastIndex ~= 0x1 = best;x1(1, lastIndex) = xlasti1;     % xx1(1, pi(i)) = xi1;x2 = best;x2(1, lastIndex) = xlasti2;     % x`x2(1, pi(i)) = xi1;fx1 = benchmark_func(x1, funcNum);fx2 = benchmark_func(x2, funcNum);a = fx1 > fx2;evaluation = evaluation + 2;if(fx1 > fx2)g1 = groupInfor{G1};g2 = groupInfor{G2};g1 = [g1, g2];groupInfor{G1} = g1;groupInfor(G2) = [];endendxlasti1 = xi1;xlasti2 = xi2;lastIndex = pi(i);endenddisp(evaluation);
end
disp(groupInfor);
save('groupInfor.mat', 'groupInfor');
disp(evaluation);
save('evaluation.mat', 'evaluation');

优化阶段:

clc; clearvars; close all;
addpath('CEC2010\')
addpath('CEC2010\datafiles\');
addpath('CEC2010\javarandom\bin\');
addpath('CEC2010\javarandom\src\');
groupInfor = load('groupInfor.mat', 'groupInfor');
groupInfor = groupInfor.groupInfor;
% evaluation = load('evaluation.mat', 'evaluation');
global initial_flagNS = 100;   % 种群数
dim = 1000;   % 种群维度
s = size(groupInfor, 2);   % 子控件数目
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 = [];    % 保存每次迭代的最佳值for funcNum = 4initial_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 = 100;while evalue < 5 * 10 ^ 6     % 迭代50次for i1 = 1 : sgroup = groupInfor{i1};dim = size(group,2);NPi = dim + 10;Geni = dim + 5;
%             if Geni > 500
%                 Geni = 500;
%             endindex = 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('bestYhistory.mat','bestYhistory');

测试结果:

如有错误,还请批评指正!

Large-Scale Global Optimization Using Cooperative Coevolution with Variable Interaction Learning相关推荐

  1. 合作协同进化算法概述(Cooperative Coevolution)

    合作协同进化(Cooperative Coevolution)是求解大规模优化算法一个有效的方法.将大规模问题分解为一组组较小的子问题.而合作协同进化的关键是分解策略. 分解策略的分类: ①随机分解: ...

  2. Paper之BigGAN:《Large Scale Gan Training For High Fidelity Natural Image Synthesis》翻译与解读

    Paper之BigGAN:<Large Scale Gan Training For High Fidelity Natural Image Synthesis>翻译与解读 目录 效果 1 ...

  3. Introducing DataFrames in Apache Spark for Large Scale Data Science(中英双语)

    文章标题 Introducing DataFrames in Apache Spark for Large Scale Data Science 一个用于大规模数据科学的API--DataFrame ...

  4. 【读书笔记】NeurIPS2018的两篇文章:The Tradeoffs of Large Scale Learning和Neural Ordinary Differential Equations

    今天看了 NeurIPS 2018 上的两篇文章,一篇是获得 best paper 的 Neural Ordinary Differential Equations (陈天奇的文章),一篇是获经典论文 ...

  5. 【多标签文本分类】Large Scale Multi-label Text Classification with Semantic Word Vectors

    ·阅读摘要:   本文提出了利用词向量+CNN/词向量+GRU来解决大规模数据下的多标签文本分类问题.   [1] Large Scale Multi-label Text Classificatio ...

  6. Machine Learning week 10 quiz: Large Scale Machine Learning

    Large Scale Machine Learning 5 试题 1. Suppose you are training a logistic regression classifier using ...

  7. Paper之BigGAN:ICLR 2019最新论文《LARGE SCALE GAN TRAINING FOR HIGH FIDELITY NATURAL IMAGE SYNTHESIS》(未完待续)

    Paper之BigGAN:ICLR 2019最新论文<LARGE SCALE GAN TRAINING FOR HIGH FIDELITY NATURAL IMAGE SYNTHESIS> ...

  8. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习...

    Lecture17 Large Scale Machine Learning大规模机器学习 17.1 大型数据集的学习 Learning With Large Datasets 如果有一个低方差的模型 ...

  9. lidar_align 标定lidar和imu 在“Performing Global Optimization”步骤终止的问题

    前言 lidar_align的安装调试以及报错处理可见下面篇文章,非常详细,对我帮助很大. ubuntu16.04 lidar_align实现三维激光雷达和Imu联合标定_berry丶的博客-CSDN ...

最新文章

  1. Github热榜:2021年33篇最酷AI论文综述!多位华人作者入选
  2. [转载] 七龙珠第一部——第092话 孙悟空上场了
  3. css毛玻璃效果白边_css3毛玻璃效果白边问题
  4. Scala 函数声明及调用案例详解
  5. composer查看当前镜像取消_国内全量镜像大全
  6. 在emIDE中创建STM32项目
  7. 《Java 7 并发编程指南》学习概要 (3)Semaphore, CountDownLatch, CyclicBarrier , Phaser, Exchanger...
  8. codeforces Free Cash
  9. Python之路【第六篇】:Python运算符
  10. origin做相关性分析图_Origin教程第六章 使用Origin进行数据分析
  11. 各省农村人均受教育年限及村委会个数(2011-2019年)
  12. 机器学习模型效果评估指标与方法介绍
  13. seo三部曲之关键词策略
  14. 牛客网刷题——斩获offer
  15. 循序渐进学SAP系列(一):--SAP该如何入门
  16. 卷积神经网络残差计算
  17. css 背景颜色 background属性
  18. NFT: 开启加密艺术时代的无限可能
  19. 非线性微分方程的平均法
  20. 将N阶矩阵M置成单位阵

热门文章

  1. 2017京东校招笔试题
  2. Vue2(十一):脚手架配置代理、github案例、插槽
  3. 解决Rancher2.5x版本突然无法使用(K3S证书过期大BUG)
  4. 揭秘POS机套现江湖:代理商层层抽佣,支付机构“默许”?
  5. 网络工程师成长日记309-西安李宁项目
  6. 宋宝华:Linux设备与驱动的手动解绑与手动绑定
  7. fedora利用vmlinuz和initrd制作linux启动u盘,fedora 14 livecd从U盘启动安装方法
  8. 学术会议html模板,关于学术研讨会邀请函的模板
  9. 多卡聚合路由器5G+4G是什么意思
  10. 国家电网(部分单位)2020年第二批高校毕业生录用人选公示