一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【优化算法】正弦余弦算法(SCA)【含Matlab源码 1308期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、正弦余弦算法简介

正弦余弦算法(Sine Cosine Algorithm, SCA)是一种新的群体智能优化算法,具有参数少、结构简单以及易实现等特点,因此,利用正弦和余弦函数的波动性和周期性进行迭代寻优。假设种群规模为M,即包含M个个体,每个个体的维度为D,那么,个体i在第j维的空间位置表示为Xij,i∈{1,2,…,M},j∈{1,2,…,D}。首先,在解空间内随机产生M个个体的初始位置,对应种群规模的大小。然后,计算每个个体的适应度值,并记录当前最优个体位置。最后,循环至满足终止条件,输出最优解。在每次迭代中,个体位置的更新表达式为

其中:Xij(t)为个体i在第t次迭代时的位置在第j维的分量;Pj(t)为第t次迭代种群当前最优个体在第j维的分量;r2∈[0,2π]、r3∈[0,2]和r4∈[0,1]为3个随机参数;r1为控制参数,随着迭代次数的增加从a递减到0,可表示为

其中:a为常数;t为当前的迭代次数;T为最大迭代次数。

三、部分源代码


clear all
clcSearchAgents_no=30; % Number of search agentsFunction_name='F1'; % Name of the test function that can be from F1 to F23 (Table 1,2,3 in the paper)Max_iteration=1000; % Maximum numbef of iterations% Load details of the selected benchmark function
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);[Best_score,Best_pos,cg_curve]=SCA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);figure('Position',[284   214   660   290])
%Draw search space
subplot(1,2,1);
func_plot(Function_name);
title('Test function')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])
grid off%Draw objective space
subplot(1,2,2);
semilogy(cg_curve,'Color','b')
title('Convergence curve')
xlabel('Iteration');
ylabel('Best flame (score) obtained so far');axis tight
grid off
box on
legend('SCA')display(['The best solution obtained by SCA is : ', num2str(Best_pos)]);
display(['The best optimal value of the objective funciton found by SCA is : ', num2str(Best_score)]);function [Destination_fitness,Destination_position,Convergence_curve]=SCA(N,Max_iteration,lb,ub,dim,fobj)display('SCA is optimizing your problem');%Initialize the set of random solutions
X=initialization(N,dim,ub,lb);Destination_position=zeros(1,dim);
Destination_fitness=inf;Convergence_curve=zeros(1,Max_iteration);
Objective_values = zeros(1,size(X,1));% Calculate the fitness of the first set and find the best one
for i=1:size(X,1)Objective_values(1,i)=fobj(X(i,:));if i==1Destination_position=X(i,:);Destination_fitness=Objective_values(1,i);elseif Objective_values(1,i)<Destination_fitnessDestination_position=X(i,:);Destination_fitness=Objective_values(1,i);endAll_objective_values(1,i)=Objective_values(1,i);
end%Main loop
t=2; % start from the second iteration since the first iteration was dedicated to calculating the fitness
while t<=Max_iteration% Eq. (3.4)a = 2;Max_iteration = Max_iteration;r1=a-t*((a)/Max_iteration); % r1 decreases linearly from a to 0% Update the position of solutions with respect to destinationfor i=1:size(X,1) % in i-th solutionfor j=1:size(X,2) % in j-th dimension% Update r2, r3, and r4 for Eq. (3.3)r2=(2*pi)*rand();r3=2*rand;r4=rand();% Eq. (3.3)if r4<0.5% Eq. (3.1)X(i,j)= X(i,j)+(r1*sin(r2)*abs(r3*Destination_position(j)-X(i,j)));else% Eq. (3.2)X(i,j)= X(i,j)+(r1*cos(r2)*abs(r3*Destination_position(j)-X(i,j)));endendendfunction func_plot(func_name)[lb,ub,dim,fobj]=Get_Functions_details(func_name);switch func_name case 'F1' x=-100:2:100; y=x; %[-100,100]case 'F2' x=-100:2:100; y=x; %[-10,10]case 'F3' x=-100:2:100; y=x; %[-100,100]case 'F4' x=-100:2:100; y=x; %[-100,100]case 'F5' x=-200:2:200; y=x; %[-5,5]case 'F6' x=-100:2:100; y=x; %[-100,100]case 'F7' x=-1:0.03:1;  y=x;  %[-1,1]case 'F8' x=-500:10:500;y=x; %[-500,500]case 'F9' x=-5:0.1:5;   y=x; %[-5,5]    case 'F10' x=-20:0.5:20; y=x;%[-500,500]case 'F11' x=-500:10:500; y=x;%[-0.5,0.5]case 'F12' x=-10:0.1:10; y=x;%[-pi,pi]case 'F13' x=-5:0.08:5; y=x;%[-3,1]case 'F14' x=-100:2:100; y=x;%[-100,100]case 'F15' x=-5:0.1:5; y=x;%[-5,5]case 'F16' x=-1:0.01:1; y=x;%[-5,5]case 'F17' x=-5:0.1:5; y=x;%[-5,5]case 'F18' x=-5:0.06:5; y=x;%[-5,5]case 'F19' x=-5:0.1:5; y=x;%[-5,5]case 'F20' x=-5:0.1:5; y=x;%[-5,5]        case 'F21' x=-5:0.1:5; y=x;%[-5,5]case 'F22' x=-5:0.1:5; y=x;%[-5,5]     case 'F23' x=-5:0.1:5; y=x;%[-5,5]
end    L=length(x);
f=[];for i=1:Lfor j=1:Lif strcmp(func_name,'F15')==0 && strcmp(func_name,'F19')==0 && strcmp(func_name,'F20')==0 && strcmp(func_name,'F21')==0 && strcmp(func_name,'F22')==0 && strcmp(func_name,'F23')==0f(i,j)=fobj([x(i),y(j)]);endif strcmp(func_name,'F15')==1f(i,j)=fobj([x(i),y(j),0,0]);endif strcmp(func_name,'F19')==1f(i,j)=fobj([x(i),y(j),0]);endif strcmp(func_name,'F20')==1f(i,j)=fobj([x(i),y(j),0,0,0,0]);end       if strcmp(func_name,'F21')==1 || strcmp(func_name,'F22')==1 ||strcmp(func_name,'F23')==1f(i,j)=fobj([x(i),y(j),0,0]);end          end
end

四、运行结果

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.

【优化算法】正弦余弦算法(SCA)【含Matlab源码 1308期】相关推荐

  1. 【优化算法】灰狼优化算法(GWO)【含Matlab源码 1305期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]灰狼优化算法(GWO)[含Matlab源码 1305期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专栏优化 ...

  2. 【优化算法】改进的灰狼优化算法(IGWO)【含Matlab源码 1349期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]改进的灰狼优化算法(IGWO)[含Matlab源码 1349期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费 ...

  3. 【优化算法】多目标灰狼优化算法(MOGWO)【含Matlab源码 099期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]多目标灰狼优化算法(MOGWO)[含Matlab源码 099期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费 ...

  4. 【优化算法】改进的侏儒猫鼬优化算法(IDMO)【含Matlab源码 2314期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]改进的侏儒猫鼬优化算法(IDMO)[含Matlab源码 2314期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  5. 【优化算法】象群游牧优化算法(EHO)【含Matlab源码 1080期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]象群游牧优化算法(EHO)[含Matlab源码 1080期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专 ...

  6. 【优化算法】猫群优化算法(CSO)【含Matlab源码 1071期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]猫群优化算法(CSO)[含Matlab源码 1071期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专栏M ...

  7. 【优化算法】黑洞模拟算法(MVO)【含Matlab源码 479期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]黑洞模拟算法(MVO)[含Matlab源码 479期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专栏Ma ...

  8. 【优化算法】多目标蚁狮优化算法(MOALO)【含Matlab源码 1598期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]多目标蚁狮优化算法(MOALO)[含Matlab源码 1598期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  9. 【故障检测问题】基于matlab免疫算法求解故障检测问题【含Matlab源码 196期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[故障检测问题]基于matlab免疫算法求解故障检测问题[含Matlab源码 196期] 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭 ...

  10. 【图像增强】基于matlab萤火虫算法图像对比度增强【含Matlab源码 2142期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像增强]基于matlab萤火虫算法图像对比度增强[含Matlab源码 2142期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方 ...

最新文章

  1. ASP.NET Web API MediaTypeFormatter
  2. HTTP的 Basic 验证
  3. 分类素材(part1)--Python与机器学习实战
  4. 一切转型始于数据和模型 | 2020 MATLAB EXPO 中国线上用户大会:即将上线
  5. 运行tuxedo自带例子simpapp,测试tuxedo安装
  6. Graphviz样例之集群流程图
  7. Oracle几种清除数据的方式,在平台用别的医院数据库做初始化时有用
  8. SPEI不同时间尺度的意义
  9. matlab动刚度仿真,基于ANSYS的转子支承动刚度计算分析.doc
  10. 微信小程序第七章 图片替换
  11. windows蓝牙编程—— 0 获取本地蓝牙的句柄和信息
  12. 算法学习过程入门篇(2)-算法初步
  13. 试题 入门训练 Fibonacci数列
  14. Mac 下编译 libmono.so 和 DLL 加密详解
  15. 人工与软件刷流量有什么区别,如何做刷流量效果才最好?
  16. 计算机专业考博入学考试科目,北京航空航天大学计算机应用技术考博考试科目.doc...
  17. mc服务器libs文件夹,我的世界为什么开不了服务器
  18. 内存映射和多功能LED控制器驱动芯片/带按键扫描的LED驱动芯片(IC)-VK16K33A/B/C,内置RC振荡器,最大16seg和8com
  19. PX30,RK3368,RK3288,RK3399,i.mx6芯片参数对比分析
  20. Vue非父子组件之间的通信

热门文章

  1. JavaWeb案例(MVC+MySQL+分页功能)+前后端分离
  2. 如何在开发时部署和运行前后端分离的JavaWeb项目
  3. Asp.net WebApi版本控制
  4. JAVA 基础之 多线程
  5. 【WinCE版凯立德】2012春季版地图下载
  6. php基本语法的几点备忘
  7. Linux 高性能集群搭建(1)---ssh节点通信
  8. 七月算法机器学习1 相关数学基础
  9. 第11章 支撑向量机 SVM 学习笔记 中
  10. 190816每日一句