人工水母搜索算法—matlab代码
clc
clear
foj = @ Sphere;
Lb = -100; % 搜索空间下界
Ub = 100; % 搜索空间上界 N_iter = 1000; % 最大迭代次数
n_pop = 50; % 种群个数
d = 10; % 种群维度
beta = 3;
gamma = 0.1;
Z = zeros(n_pop, d); % 随机生成一个d维向量
Z(1, :) = rand(1, d); % 利用logistic生成n_pop个向量
for i=2:n_pop
Z(i,:) = 4.0*Z(i-1,:).*(1-Z(i-1,:));
end % 将z的各个分量载波到对应变量的取值区间
pop = zeros(n_pop, d);
fitness = zeros(n_pop, 1);
for i=1:n_pop
pop(i,:) = Lb + (Ub - Lb)*Z(i,:);
fitness(i) = foj(pop(i,:));
end
mu = mean(pop, 1);
figure
scatter(pop(:,1), pop(:,2), 'r*');
hold on
scatter(mu(:,1), mu(:,2),'ko');
box on
[bestScore, loc] = min(fitness);
bestPop = pop(loc, :); % 当前种群中食物数目最多的位置
S = pop; % S是更新后的种群
fmin = zeros(N_iter,1);
for t=1:N_iter
for i=1:n_pop
c = abs((1-t/N_iter)*(2*rand-1));
if c>=0.5
% 洋流位置更新公式
trend = bestPop - beta*rand*mu; % 洋流的方向,即论文中的公式.9
S(i,:) = pop(i,:) + rand(1,d).*trend; % 水母位置更新,即论文中的公式.11
else
% 种群内部运动
if rand>(1-c)
S(i,:) = pop(i,:) + gamma*rand(1,d).*(Ub - Lb); % 被动运动,即论文公式.12
else
JK = randperm(n_pop);
if foj(pop(JK(1)))>=foj(pop(JK(2)))
Direction = pop(JK(2),:) - pop(JK(1),:);
else
Direction = pop(JK(1),:) - pop(JK(2),:);
end
Step = rand(1, d).*Direction;
S(i,:) = pop(i,:) + Step; % 主动运动,论文公式.16
end
end
% 检查边界
S(i,:) = simpleBound(S(i,:), Lb, Ub);
Fnew = foj(S(i,:));
% 判断是否更新相应位置和适应度值
if Fnew<fitness(i)
fitness(i) = Fnew;
pop(i,:) = S(i,:);
end % 判断是否更新最优值
if Fnew<bestScore
bestScore = Fnew;
bestPop = S(i,:);
end
end
fmin(t) = bestScore;
% 命令窗口输出
disp(['Iteration ' num2str(t) ': Best Cost = ' num2str(bestScore)]);
% disp(['Bestpop ' num2str(bestPop)]);
end
figure
semilogy(fmin, 'r-.')

function x=simpleBound(x,Lb,Ub)
% 函数名称:越界处理函数
% param x:水母
% param Lb:变量下界
% param Ub:变量上界
d = length(x);
for i=1:d
if x(i) > Ub
x(i) = (x(d) - Ub) + Lb;
elseif x(i) < Lb
x(i) = (x(d) - Lb) + Ub;
end
end
end
function [y] = Sphere(xx)
d = length(xx);
sum = 0;
for ii = 1:d
xi = xx(ii);
sum = sum + xi^2;
end
y = sum;
end
人工水母搜索算法—matlab代码的更多相关文章
- 人工水母搜索算法--JS
1. 人工水母算法原理背景 水母生活在世界上不同深度和温度的水中.它们酷似钟状,一些水母的直径小于1cm,然有些水母直径则非常大.它们有各种各样的颜色.大小和形状.大多数水母偏好海洋环境.它们进食的方 ...
- 如何加速MATLAB代码运行
学习笔记 V1.0 2015/4/17 如何加速MATLAB代码运行 概述 本文源于LDPCC的MATLAB代码,即<CCSDS标准的LDPC编译码仿真>.由于代码的问题,在信息位长度很长 ...
- 多分类问题中,实现不同分类区域颜色填充的MATLAB代码(demo:Random Forest)
之前建立了一个SVM-based Ordinal regression模型,一种特殊的多分类模型,就想通过可视化的方式展示模型分类的效果,对各个分类区域用不同颜色表示.可是,也看了很多代码,但基本都是 ...
- 卷积相关公式的matlab代码
取半径=3 用matlab代码实现上式公式: length=3;for Ki = 1:length for Kj = 1:length for Kk = 1:length Ksigma(Ki,Kj,K ...
- JAVA调用matlab代码
做实验一直用的matlab代码,需要嵌入到java项目中,matlab代码拼拼凑凑不是很了解,投机取巧采用java调用matlab的方式解决. 1. matlab版本:matlabR2014a ...
- 调试和运行matlab代码(源程序)的技巧和教程
转载请标明出处:专注matlab代码下载的网站http://www.downma.com/ 本文主要给大家分享使用matlab编写代码,完成课程设计.毕业设计或者研究项目时,matlab调试程序的技巧 ...
- 直方图均衡化与Matlab代码实现
昨天说了,今天要好好的来解释说明一下直方图均衡化.并且通过不调用histeq函数来实现直方图的均衡化. 一.直方图均衡化概述 直方图均衡化(Histogram Equalization) 又称直方图平 ...
- 将labelme 生成的.json文件进行可视化的代码+label.png 对比度处理的matlab代码
labelme_to_dataset 指令的代码实现: show.py文件 #!E:\Anaconda3\python.exe import argparse import json import o ...
- SVM实例及Matlab代码
******************************************************** ***数据集下载地址 :http://pan.baidu.com/s/1geb8CQf ...
随机推荐
- <C#任务导引教程>练习一
//1,定位显示ASCI码值为30到119的字符using System;class Program{ static void Main() { int i, n = 0; ...
- [loj2842]野猪
首先,并不一定走"除了上一次来的边"以外的最短路,但考虑"除了上一次来的边"以外的最短路和次短路(这里的次短路指最后一条边与最短路不同的"最短路&qu ...
- Ubuntu下的磁盘管理
采用fat的磁盘存储,插入后采用相同命令会出现sdb和sdb1 sdb:磁盘 sdb1:磁盘分区标号为1 命令 df:显示磁盘使用情况 du:查询某个文件的大小读 du-h 或du -h --max- ...
- Hi3516开发笔记(四):Hi3516虚拟机编译uboot、kernel、roofts和userdata以及分区表
若该文为原创文章,转载请注明原文出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/121572767红胖子(红模仿)的博文大全:开发技术集合( ...
- 网络协议之:一定要大写的SOCKS
目录 简介 SOCKS的故事 SOCKS的历史 SOCKS协议的具体内容 SOCKS4 SOCKS4a SOCKS5 总结 简介 很久很久以前,人们还穿的是草鞋,草鞋虽然穿着舒服,但是不够美观.然后人 ...
- 微前端框架 single-spa 技术分析
在理解微前端技术原理中我们介绍了微前端的概念和核心技术原理.本篇我们结合目前业内主流的微前端实现 single-spa 来说明在生产实践中是如何实现微前端的. single-spa 的文档略显凌乱,概 ...
- kubernetes部署kube-scheduler服务
同样的分非认证授权和认证授权: 非认证授权: cat > /lib/systemd/system/kube-scheduler.service <<EOF [Unit] Descri ...
- DOTA数据集
航拍图像面临的问题 正常图像受重力作用相对固定,航拍图像的物体受拍摄角度影响 航拍图像的物体比例变化很大 某些航拍图像中小物体很密集 传统的数据集面临数据偏差的问题严重 好的数据集必备的几个特征 大量 ...
- C#gridview尾部统计
protected void gridSettlement_RowDataBound(object sender, GridViewRowEventArgs e) { if (dtSettlement ...
- HDFS05 NameNode和SecondaryNameNode
NameNode和SecondaryNameNode(了解) 目录 NameNode和SecondaryNameNode(了解) NN 和 2NN 工作机制 NameNode工作机制 Secondar ...