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

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

1 海鸥算法
海鸥在地球上生活了大约三千万年,是生活在沿海的鸟类,它们主要以鱼类为食。海鸥喜欢群体生活,它们能够用声音进行彼此的信息交流,善于从种群的经验中获得利益。群体中的每只海鸥总是朝着最好的生存方向前进,以最低的成本来寻找食物资源。当季节变化时,海鸥会通过它们的迁徙行为和攻击行为进行捕猎。迁徙是指海鸥为了获得足够丰富的食物,在秋季向南移动、在春季向北移动,或者从地面移动到高空,或者在两个海岸之间进行转移。这种迁徙行为描述如下:

1)在迁徙过程中,海鸥成群结队一起旅行。但是它们在海洋上的初始位置差异很大,相互之间不会挨得很近,以避免彼此之间的碰撞。

2)为了快速获得食物,每只海鸥都会向种群当中最适宜生存的个体靠拢。最适宜生存的海鸥被称为最优海鸥,其适应度值是种群当中最低的,这表示它所处位置的食物资源十分丰富。

3)海鸥群朝着最优海鸥所在方向移动,不断地更新它们的位置,每一只海鸥的飞行距离是有差异的。海鸥在迁徙过程中,常常会攻击海面上出现的鱼类和虾类,它们会以螺旋形状的运动方式向目标移动,从而发起攻击。
在这里插入图片描述

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

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

3 程序运行结果
1)迭代曲线
在这里插入图片描述
2)求解结果
在这里插入图片描述

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

%_________________________________________________________________________%

% 使用方法

%__________________________________________

% 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)]);

。。。。。略

猜你喜欢

转载自blog.csdn.net/weixin_47365903/article/details/128686107
今日推荐