一种多策略改进小龙虾智能优化算法MSCOA 改进策略:种群初始化精英反向+透镜成像反向学习+黄金正弦变异策略
一、小龙虾COA基本原理
小龙虾优化算法(Lobster Optimization Algorithm,LOA)是一种模拟小龙虾觅食举动的优化算法。其基本原理和步骤如下:
- 初始化:
- 适应度评估:
- 更新位置:
- 小龙虾通过两种重要举动来更新位置:
- 觅食举动:小龙虾在其当前位置附近搜索更好的解。
- 社会举动:小龙虾根据邻近个体的位置调整自己的位置,以利用群体的知识。
- 选择最优解:
- 通过比力适应度值,选择当前最优的小龙虾解作为全局最优解。
- 迭代:
- 重复步骤2-4,直到到达最大迭代次数或满足停止准则。
- 输出结果:
小龙虾优化算法的优点包括较强的全局搜索能力和较快的收敛速率,但其效率和结果依赖于具体题目和参数设置。
二、改进策略
2.1种群初始化 映射
六种映射可供选择
tent
chebyshev
Singer
Logistic
Sine
Circle
2.2 透镜成像反向学习
2.3 黄金正弦变异策略
三、实行结果
四、核心代码
- %% 清空环境变量
- warning off % 关闭报警信息
- close all % 关闭开启的图窗
- clear % 清空变量
- clc % 清空命令行
- % rng(24,'twister'); % 随机种子
- %% 参数设置
- SearchAgents = 30; % COApulation members
- Max_iterations = 500; % maximum number of iteration
- number = 'F10'; % 选定优化函数,自行替换:F1~F23
- [lb,ub,dim,fobj] = Get_Functions_details(number); % [lb,ub,dim,fobj]:下界、上界、维度、目标函数表达式
-
- %% 循环实验
- for i = 1:2
- %% MSCOA
- [MSCOA_Best_score,MSCOA_Best_pos,MSCOA_cg_curve]=MSCOA(SearchAgents,Max_iterations,lb,ub,dim,fobj);
- MSCOA_fitness(i) = MSCOA_Best_score;
- %% COA
- [COA_Best_score,COA_Best_pos,COA_cg_curve]=COA(SearchAgents,Max_iterations,lb,ub,dim,fobj);
- COA_fitness(i)= COA_Best_score;
- end
- %% 算法的最佳适应度值
- % MSCOA
- MSCOA_min_value = min(MSCOA_fitness);MSCOA_max_value = max(MSCOA_fitness);MSCOA_mean_value = mean(MSCOA_fitness);MSCOA_std_value = std(MSCOA_fitness);
- MSCOA_result = [MSCOA_mean_value,MSCOA_min_value,MSCOA_std_value];
- disp('---------------------------MSCOA--------------------------------')
- disp(['MSCOA平均值:', num2str(MSCOA_mean_value)])
- disp(['MSCOA最优值:', num2str(MSCOA_min_value)])
- disp(['MSCOA标准差:', num2str(MSCOA_std_value)])
- % COA
- COA_min_value = min(COA_fitness);COA_max_value = max(COA_fitness);COA_mean_value = mean(COA_fitness);COA_std_value = std(COA_fitness);
- COA_result = [COA_mean_value,COA_min_value,COA_std_value];
- disp('---------------------------COA--------------------------------')
- disp(['COA平均值:', num2str(COA_mean_value)])
- disp(['COA最优值:', num2str(COA_min_value)])
- disp(['COA标准差:', num2str(COA_std_value)])
- %% 把结果保存
- columnNames = {'平均值', '最优值', '标准差'};
- RowNames = {'MSCOA', 'COA'};
- result = [MSCOA_result',COA_result'];
- %% 保存适应度函数
- curve = [MSCOA_cg_curve' COA_cg_curve'];
- %% 绘图
- figure1 = figure('Color',[1 1 1]);
- G1=subplot(1,2,1,'Parent',figure1);
- func_plot(number)
- title(number)
- xlabel('x')
- ylabel('y')
- zlabel('z')
- subplot(1,2,2)
- G2=subplot(1,2,2,'Parent',figure1);
- CNT=20;
- k=round(linspace(1,Max_iterations,CNT)); %随机选CNT个点
- % 注意:如果收敛曲线画出来的点很少,随机点很稀疏,说明点取少了,这时应增加取点的数量,100、200、300等,逐渐增加
- % 相反,如果收敛曲线上的随机点非常密集,说明点取多了,此时要减少取点数量
- iter=1:1:Max_iterations;
- if ~strcmp(number,'F16')&&~strcmp(number,'F9')&&~strcmp(number,'F11') %这里是因为这几个函数收敛太快,不适用于semilogy,直接plot
- semilogy(iter(k),MSCOA_cg_curve(k),'r-','linewidth',1);
- hold on
- semilogy(iter(k),COA_cg_curve(k),'g-','linewidth',1);
- else
- plot(iter(k),MSCOA_cg_curve(k),'r-','linewidth',1);
- hold on
- plot(iter(k),COA_cg_curve(k),'g-','linewidth',1);
- end
- grid on;
- title('收敛曲线')
- xlabel('迭代次数');
- ylabel('适应度值');
- box on
- legend('MSCOA','COA')
- set (gcf,'position', [300,300,800,330])
复制代码 五、代码获取
99
六、总结
包括但不限于
优化BP神经网络,深度神经网络DNN,极限学习机ELM,鲁棒极限学习机RELM,核极限学习机KELM,混淆核极限学习机HKELM,支持向量机SVR,相关向量机RVM,最小二乘回归PLS,最小二乘支持向量机LSSVM,LightGBM,Xgboost,RBF径向基神经网络,概率神经网络PNN,GRNN,Elman,随机丛林RF,卷积神经网络CNN,长短期记忆网络LSTM,BiLSTM,GRU,BiGRU,TCN,BiTCN,CNN-LSTM,TCN-LSTM,BiTCN-BiGRU,LSTM–Attention,VMD–LSTM,PCA–BP等等
用于数据的分类,时序,回归预测。
多特征输入,单输出,多输出
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |