找回密码
 立即注册
查看: 224|回复: 0

基于海鸥优化算法的线性规划问题求解matlab程序

[复制链接]
发表于 2023-3-4 18:02 | 显示全部楼层 |阅读模式
1 海鸥算法
海鸥在地球上生活了大约三千万年,是生活在沿海的鸟类,它们主要以鱼类为食。海鸥喜欢群体生活,它们能够用声音进行彼此的信息交流,善于从种群的经验中获得利益。群体中的每只海鸥总是朝着最好的生存方向前进,以最低的成本来寻找食物资源。当季节变化时,海鸥会通过它们的迁徙行为和攻击行为进行捕猎。迁徙是指海鸥为了获得足够丰富的食物,在秋季向南移动、在春季向北移动,或者从地面移动到高空,或者在两个海岸之间进行转移。这种迁徙行为描述如下:
1)在迁徙过程中,海鸥成群结队一起旅行。但是它们在海洋上的初始位置差异很大,相互之间不会挨得很近,以避免彼此之间的碰撞。
2)为了快速获得食物,每只海鸥都会向种群当中最适宜生存的个体靠拢。最适宜生存的海鸥被称为最优海鸥,其适应度值是种群当中最低的,这表示它所处位置的食物资源十分丰富。
3)海鸥群朝着最优海鸥所在方向移动,不断地更新它们的位置,每一只海鸥的飞行距离是有差异的。海鸥在迁徙过程中,常常会攻击海面上出现的鱼类和虾类,它们会以螺旋形状的运动方式向目标移动,从而发起攻击。


海鸥算法的实现步骤和算法流程图:
步骤1:参数设置,种群初始化;
步骤2:计算初始种群的适应度值,标记最优个体;
步骤3:根据迁徙和攻击操作更新海鸥位置;
步骤4:计算新种群适应度值,更新最优个体;  
步骤5:判断是否达到最大迭代次数,是则停止迭代并输出最优值,否则跳转至步骤3继续迭代。


海鸥算法作为一种新型的群智能优化算法,具有算法结构简单、适用性强的优点,方便进行算法的改进和融合。海鸥算法简单的算法结构带来较低的算法复杂度和高效的计算能力,同时该算法也存在其他群智能算法的通病,在求解复杂优化问题时容易陷入局部最优、收敛精度低、鲁棒性差等问题。


2 算例验证


3 程序运行结果
1)迭代曲线


2)求解结果


4 matlab程序
%% 基于海鸥优化算法的线性规划问题求解           

%_________________________________________________________________________%



% 使用方法

%__________________________________________

% fobj = @YourCostFunction        设定适应度函数

% dim = number of your variables   设定维度

% Max_iteration = maximum number of generations 设定最大迭代次数

% SearchAgents_no = number of search agents   种群数量

% lb=[lb1,lb2,...,lbn] where lbn is the lower bound of variable n  变量下边界

% ub=[ub1,ub2,...,ubn] where ubn is the upper bound of variable n   变量上边界

% If all the variables have equal lower bound you can just

% define lb and ub as two single number numbers



% To run SSA: [Best_pos,Best_score,curve]=SOA(pop,Max_iter,lb,ub,dim,fobj)

%__________________________________________

%%

clear  

clc

close all

rng('default');

SearchAgents_no=50; % Number of search agents 种群数量



Function_name='F1'; % Name of the test function that can be from F1 to F23 (Table 1,2,3 in the paper) 设定适应度函数



Max_iteration=2000; % Maximum numbef of iterations 设定最大迭代次数



% Load details of the selected benchmark function

[lb,ub,dim,fobj]=Get_Functions_details(Function_name);  %设定边界以及优化函数



[Best_pos,Best_score,SOA_curve]=SOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj); %开始优化





%Draw objective space

figure

plot(SOA_curve,'Color','r')

title('Objective space')

xlabel('Iteration');

ylabel('Best score obtained so far');



axis tight

grid on

box on

legend('SOA')



display(['最优解为 : ', num2str(Best_score)]);

display(['最优变量为 : ', num2str(Best_pos)]);
。。。。。略完整程序连接:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 14:24 , Processed in 0.208361 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表