function GFWOA = jGFWhaleOptimizationAlgorithm(feat,label,opts)
% Parameters
lb = 0;
ub = 1;
thres = 0.5;
b = 1; % constant
if isfield(opts,'T'), max_Iter = opts.T; end
if isfield(opts,'N'), N = opts.N; end
if isfield(opts,'b'), b = opts.b; end
if isfield(opts,'thres'), thres = opts.thres; end
% Objective function
fun = @jFitnessFunction;
% Number of dimensions
dim = size(feat,2);
% Initial
X = zeros(N,dim);
X1 = zeros(N,dim);%一次反向点
X2 = zeros(N,dim);%二次反向点
X3 = zeros(N,dim);%最终反向点
for i = 1:N
for d = 1:dim
X(i,d) = lb + (ub - lb) * rand();
end
end
for i = 1:N
for d = 1:dim
X1(i,d) = lb + ub - X(i,d);
end
end
for i = 1:N
for d = 1:dim
X2(i,d) = (lb + ub)/2;
end
end
for i = 1:N
for d = 1:dim
X3(i,d) = X2(i,d)+(abs(X1(i,d)-X2(i,d)) * rand());
end
end
% Fitness
fit = zeros(1,N);
fit1 = zeros(1,N);%保存反向点种群适应度值
fitG = inf;
for i = 1:N
fit(i) = fun(feat,label,(X(i,:) > thres),opts);
fit1(i) = fun(feat,label,(X3(i,:) > thres),opts);
if fit1(i) < fit(i)
fit(i) = fit1(i);
X(i,:) = X3(i,:);
end
%end
% Global best
if fit(i) < fitG
fitG = fit(i);
Xgb = X(i,:);
end
end
% Pre
curve = zeros(1,max_Iter);
curve(1) = fitG;
t = 2;
while t <= max_Iter
% Define a, linearly decreases from 2 to 0
a = 2 - t * (2 / max_Iter);
for i = 1:N
% Parameter A (2.3)
A = 2 * a * rand() - a;
% Paramater C (2.4)
C = 2 * rand();
% Parameter p, random number in [0,1]
p = rand();
% Parameter l, random number in [-1,1]
l = -1 + 2 * rand();
% Whale position update (2.6)
if p < 0.5
% {1} Encircling prey
if abs(A) < 1
for d = 1:dim
% Compute D (2.1)
sigma = abs(log(t)/t *(X(i,d)-Xgb(d)));
X(i,d) = normrnd(Xgb(d),sigma,1,1)+(rand()*Xgb(d)-rand()*X(i,d));
%Dx = abs(C * Xgb(d) - X(i,d));
% Position update (2.2)
%X(i,d) = Xgb(d) - A * Dx;
end
% {2} Search for prey
elseif abs(A) >= 1
for d = 1:dim
% Select a random whale
k = randi([1,N]);
% Compute D (2.7)
Dx = abs(C * X(k,d) - X(i,d));
% Position update (2.8)
X(i,d) = X(k,d) - A * Dx;
end
end
% {3} Bubble-net attacking
elseif p >= 0.5
for d = 1:dim
% Distance of whale to prey
dist = abs(Xgb(d) - X(i,d));
% Position update (2.5)
X(i,d) = dist * exp(b * l) * cos(2 * pi * l) + Xgb(d);
end
end
% Boundary
XB = X(i,:); XB(XB > ub) = ub; XB(XB < lb) = lb;
X(i,:) = XB;
end
% Fitness
for i = 1:N
% Fitness
fit(i) = fun(feat,label,(X(i,:) > thres),opts);
% Global best
if fit(i) < fitG
fitG = fit(i);
Xgb = X(i,:);
end
end
curve(t) = fitG;
fprintf('\nIteration %d Best (GFWOA)= %f',t,curve(t))
t = t + 1;
end
% Select features
Pos = 1:dim;
Sf = Pos((Xgb > thres) == 1);
sFeat = feat(:,Sf);
% Store results
GFWOA.sf = Sf;
GFWOA.ff = sFeat;
GFWOA.nf = length(Sf);
GFWOA.s = curve;
GFWOA.f = feat;
GFWOA.l = label;
end
机器不会学习CL
- 粉丝: 4006
- 资源: 71
最新资源
- 基于AIUKF算法的锂离子电池SOC估计与参数辨识技术:鲁棒性强,初值误差快速收敛,自适应迭代无迹卡尔曼滤波算法AIUKF 锂离子电池SOC估计 递推最小二乘法辩识电池参数 具有良好的鲁棒性,初值误差
- 光伏PV三相并网逆变器MATLAB仿真模型(基于MPPT控制与SPWM调制)性能分析与结果展示,光伏PV三相并网逆变器MATLAB仿真,版本2015b 模型内容: 1.光伏+MPPT控制(boost+
- SQLServer+Bookmanagementsystem.rar
- 模块化建模下的横向稳定性控制最优力矩分配策略(Matlab Simulink与Carsim联合仿真验证),横向稳定性控制最优力矩分配(联合仿真,算法对比) 软件使用:Matlab Simulink20
- MATLAB课程设计:图像压缩和添加水印(有GUI)
- 永磁同步电机矢量控制C代码详解:S-function仿真实践与应用移植指南,永磁同步电机矢量控制C代码 全部从项目中总结得到,采用的S-function模式仿真,与实际项目运行基本一致,可以直接复制代
- 后端框架:Flask:Flask扩展:Flask-WTF表单处理教程PDF
- 西门子SMART 200 PLC与三菱E700变频器通讯:Modbus RTU方式实现控制与监控解决方案,西门子smart 200 rtu方式通讯四台三菱E700变频器资料 硬件:smart plc
- 线控转向车辆的路感反馈控制策略:采用滑模控制等跟随理想力矩,Simulink与CarSim联合仿真验证效果优越,线控转向车辆的路感反馈控制 线控车辆的路感电机反馈控制:分别进行路感电机力矩的拟
- 基于UDS协议的BootLoader开发:涵盖诊断协议栈与网络协议栈技术,利用瑞萨底层驱动和周立功CAN盒通讯实现上位机对单片机的程序更新功能,基于UDS的bootloader开发 包括诊断协议栈
- 基于三菱FX PLC与组态王的燃油锅炉智能化控制系统解析:梯形图程序、接线图及IO配置详解,基于三菱fxPLC和组态王燃油锅炉控制系统 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面 ,三菱
- 基于TSMC18工艺与TSMC18rf工艺的正向设计BUCK DCDC模拟IC 实现恒定时间控制电压环路,输入电压范围广泛,适合初学者学习与实践 ,buck DCDC 模拟IC,集成电路设计,tsmc
- 三种卡尔曼滤波算法在轨迹跟踪中的表现:多传感器信息融合与估计研究,多传感器信息融合,卡尔曼滤波算法的轨迹跟踪与估计 AEKF-自适应扩展卡尔曼滤波算法 AUKF-自适应无迹卡尔曼滤波算法 U
- 基于双幂次趋近律的永磁同步电机滑模控制与无差拍电流预测控制策略及文献解读,永磁同步电机双幂次趋近率滑模控制以及无差拿电流预测控制,速度环基于双幂次趋近律,电流环基于无差拿预测电流控制,赠送相关文献以及
- 基于MATLAB的时频图程序:小波时频分析、短时傅里叶变换与S变换融合应用,时频图程序(小波时频,短时傅里叶变,s变) MATLAB程序 ,核心关键词:时频图程序; 小波时频; 短时傅里叶变换; s
- 永磁同步电机参数精确辨识:涵盖初始位置检测、编码器等,含C源代码、原理图及芯片应用文档,永磁同步电机参数辨识 包括初始位置检测,编码器零点位置、方向辨识; 包括电机极对数、电阻、电感、磁链、反电势常数
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈