Large-Scale Global Optimization Using Cooperative Coevolution with Variable Interaction Learning
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相关推荐
- 合作协同进化算法概述(Cooperative Coevolution)
合作协同进化(Cooperative Coevolution)是求解大规模优化算法一个有效的方法.将大规模问题分解为一组组较小的子问题.而合作协同进化的关键是分解策略. 分解策略的分类: ①随机分解: ...
- 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 ...
- Introducing DataFrames in Apache Spark for Large Scale Data Science(中英双语)
文章标题 Introducing DataFrames in Apache Spark for Large Scale Data Science 一个用于大规模数据科学的API--DataFrame ...
- 【读书笔记】NeurIPS2018的两篇文章:The Tradeoffs of Large Scale Learning和Neural Ordinary Differential Equations
今天看了 NeurIPS 2018 上的两篇文章,一篇是获得 best paper 的 Neural Ordinary Differential Equations (陈天奇的文章),一篇是获经典论文 ...
- 【多标签文本分类】Large Scale Multi-label Text Classification with Semantic Word Vectors
·阅读摘要: 本文提出了利用词向量+CNN/词向量+GRU来解决大规模数据下的多标签文本分类问题. [1] Large Scale Multi-label Text Classificatio ...
- Machine Learning week 10 quiz: Large Scale Machine Learning
Large Scale Machine Learning 5 试题 1. Suppose you are training a logistic regression classifier using ...
- 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> ...
- 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习...
Lecture17 Large Scale Machine Learning大规模机器学习 17.1 大型数据集的学习 Learning With Large Datasets 如果有一个低方差的模型 ...
- lidar_align 标定lidar和imu 在“Performing Global Optimization”步骤终止的问题
前言 lidar_align的安装调试以及报错处理可见下面篇文章,非常详细,对我帮助很大. ubuntu16.04 lidar_align实现三维激光雷达和Imu联合标定_berry丶的博客-CSDN ...
最新文章
- Github热榜:2021年33篇最酷AI论文综述!多位华人作者入选
- [转载] 七龙珠第一部——第092话 孙悟空上场了
- css毛玻璃效果白边_css3毛玻璃效果白边问题
- Scala 函数声明及调用案例详解
- composer查看当前镜像取消_国内全量镜像大全
- 在emIDE中创建STM32项目
- 《Java 7 并发编程指南》学习概要 (3)Semaphore, CountDownLatch, CyclicBarrier , Phaser, Exchanger...
- codeforces Free Cash
- Python之路【第六篇】:Python运算符
- origin做相关性分析图_Origin教程第六章 使用Origin进行数据分析
- 各省农村人均受教育年限及村委会个数(2011-2019年)
- 机器学习模型效果评估指标与方法介绍
- seo三部曲之关键词策略
- 牛客网刷题——斩获offer
- 循序渐进学SAP系列(一):--SAP该如何入门
- 卷积神经网络残差计算
- css 背景颜色 background属性
- NFT: 开启加密艺术时代的无限可能
- 非线性微分方程的平均法
- 将N阶矩阵M置成单位阵
热门文章
- 2017京东校招笔试题
- Vue2(十一):脚手架配置代理、github案例、插槽
- 解决Rancher2.5x版本突然无法使用(K3S证书过期大BUG)
- 揭秘POS机套现江湖:代理商层层抽佣,支付机构“默许”?
- 网络工程师成长日记309-西安李宁项目
- 宋宝华:Linux设备与驱动的手动解绑与手动绑定
- fedora利用vmlinuz和initrd制作linux启动u盘,fedora 14 livecd从U盘启动安装方法
- 学术会议html模板,关于学术研讨会邀请函的模板
- 多卡聚合路由器5G+4G是什么意思
- 国家电网(部分单位)2020年第二批高校毕业生录用人选公示