基于Matlab实现鲸鱼优化算法的示例代码

目录
  • 1.鲸鱼优化算法建模
    • 1.1 包围猎物
    • 1.2 螺旋狩猎
    • 1.3 搜索猎物
    • 1.4 算法流程图
  • 2.Matlab代码实现
    • 2.1 结果
    • 2.2 代码

1.鲸鱼优化算法建模

鲸鱼优化算法(WOA)是澳大利亚学者Mirjaili等于2016年提出的群体智能优化算法,根据座头鲸的捕猎行为实现优化搜索的目的。其中,每个鲸鱼可以看作一个粒子,每个粒子作为不同的决策变量。WOA的实现过程主要包括包围猎物、螺旋狩猎和随机搜索3个阶段,其数学模型如下:

1.1 包围猎物

1.2 螺旋狩猎

1.3 搜索猎物

1.4 算法流程图

2.Matlab代码实现

2.1 结果

2.2 代码

clear all
clc
 SearchAgents_no=30;
Function_name='F1'; % Name of the test function that can be from F1 to F23 (Table 1,2,3 in the paper)
% Max_iteration=500; % Maximum numbef of iterations
Max_iteration=500;
% Load details of the selected benchmark function
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);

[Best_score,Best_pos,WOABAT_cg_curve]=WOABAT(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);

 figure('Position',[269   240   660   290])
 %Draw search space
 subplot(1,2,1);
 func_plot(Function_name);
 title('Parameter space')
 xlabel('x_1');
 ylabel('x_2');
 zlabel([Function_name,'( x_1 , x_2 )'])

 %Draw objective space
 subplot(1,2,2);
 semilogy(WOABAT_cg_curve,'Color','r')
 title('Objective space')
 xlabel('Iteration');
 ylabel('Best score obtained so far');

 axis tight
 grid on
 box on
 legend('WOABAT')
%display(['The best solution obtained by WOABAT is : ', num2str(Best_pos)]);
 display(['The best optimal value of the objective funciton found by WOA is : ', num2str(Best_score)]);

 %display( num2str(Best_score));
% The Whale Optimization Algorithm
function [Leader_score,Leader_pos,Convergence_curve]=WOABAT(SearchAgents_no,Max_iter,lb,ub,dim,fobj)

% initialize position vector and score for the leader
Leader_pos=zeros(1,dim);
Leader_score=inf; %change this to -inf for maximization problems

%Initialize the positions of search agents
Positions=initialization(SearchAgents_no,dim,ub,lb);

Convergence_curve=zeros(1,Max_iter);

%bat algorithm addition
Qmin=0;         % Frequency minimum
Qmax=2;         % Frequency maximum
Q=zeros(SearchAgents_no,1);   % Frequency
v=zeros(SearchAgents_no,dim);   % Velocities
r=0.5;
A1=0.5;
t=0;% Loop counter
% summ=0;
% Main loop
while t<Max_iter
    for i=1:size(Positions,1)

        % Return back the search agents that go beyond the boundaries of the search space
        Flag4ub=Positions(i,:)>ub;
        Flag4lb=Positions(i,:)<lb;
        Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;

        % Calculate objective function for each search agent
        fitness=fobj(Positions(i,:));

        % Update the leader
        if fitness<Leader_score % Change this to > for maximization problem
            Leader_score=fitness; % Update alpha
            Leader_pos=Positions(i,:);
        end

    end

    a=2-t*((2)/Max_iter); % a decreases linearly fron 2 to 0 in Eq. (2.3)

    % a2 linearly dicreases from -1 to -2 to calculate t in Eq. (3.12)
    a2=-1+t*((-1)/Max_iter);

    % Update the Position of search agents
    for i=1:size(Positions,1)
        r1=rand(); % r1 is a random number in [0,1]
        r2=rand(); % r2 is a random number in [0,1]

        A=2*a*r1-a;
        C=2*r2;     

        b=1;
        l=(a2-1)*rand+1;   

       p = rand();        

        for j=1:size(Positions,2)

            if p<0.5   

                if abs(A)>=1

                             rand_leader_index = floor(SearchAgents_no*rand()+1);
                             X_rand = Positions(rand_leader_index, :);
                             Q(i)=Qmin+(Qmin-Qmax)*rand;
                             v(i,:)=v(i,j)+(X_rand(j)-Leader_pos(j))*Q(i);
                            z(i,:)= Positions(i,:)+ v(i,:);

                            %%%% problem
                                if rand>r
                                % The factor 0.001 limits the step sizes of random walks
                                z (i,:)=Leader_pos(j)+0.001*randn(1,dim);
                                end
                                     % Evaluate new solutions
                                    Fnew=fobj(z(i,:));
                                     % Update if the solution improves, or not too loud
                                    if (Fnew<=fitness) && (rand<A1)
                                       Positions(i,:)=z(i,:);
                                        fitness=Fnew;
                                    end

                elseif abs(A)<1
                             Q(i)=Qmin+(Qmin-Qmax)*rand;
                             v(i,:)=v(i,j)+(Positions(i,:)-Leader_pos(j))*Q(i);
                            z(i,:)= Positions(i,:)+ v(i,:);

                            %%%% problem
                                if rand>r
                                % The factor 0.001 limits the step sizes of random walks
                                z (i,:)=Leader_pos(j)+0.001*randn(1,dim);
                                end
                                     % Evaluate new solutions
                                    Fnew=fobj(z(i,:));
                                     % Update if the solution improves, or not too loud
                                    if (Fnew<=fitness) && (rand<A1)
                                       Positions(i,:)=z(i,:);
                                        fitness=Fnew;
                                    end
                end

            elseif p>=0.5

                distance2Leader=abs(Leader_pos(j)-Positions(i,j));
                % Eq. (2.5)
                Positions(i,j)=distance2Leader*exp(b.*l).*cos(l.*2*pi)+Leader_pos(j);
            end

        end
    end
    t=t+1;
    Convergence_curve(t)=Leader_score;
   [t Leader_score]

end
% This function draw the benchmark functions
function 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:L
    for j=1:L
        if 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')==0
            f(i,j)=fobj([x(i),y(j)]);
        end
        if strcmp(func_name,'F15')==1
            f(i,j)=fobj([x(i),y(j),0,0]);
        end
        if strcmp(func_name,'F19')==1
            f(i,j)=fobj([x(i),y(j),0]);
        end
        if strcmp(func_name,'F20')==1
            f(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')==1
            f(i,j)=fobj([x(i),y(j),0,0]);
        end
    end
end

surfc(x,y,f,'LineStyle','none');

end
function [lb,ub,dim,fobj] = Get_Functions_details(F)

switch F
    case 'F1'
        fobj = @F1;
        lb=-100;
        ub=100;
%         dim=30;
        dim=30;
    case 'F2'
        fobj = @F2;
        lb=-10;
        ub=10;
        dim=30;

    case 'F3'
        fobj = @F3;
        lb=-100;
        ub=100;
        dim=30;

    case 'F4'
        fobj = @F4;
        lb=-100;
        ub=100;
        dim=30;

    case 'F5'
        fobj = @F5;
        lb=-30;
        ub=30;
        dim=30;

    case 'F6'
        fobj = @F6;
        lb=-100;
        ub=100;
        dim=30;

    case 'F7'
        fobj = @F7;
        lb=-1.28;
        ub=1.28;
        dim=30;

    case 'F8'
        fobj = @F8;
        lb=-500;
        ub=500;
        dim=30;

    case 'F9'
        fobj = @F9;
        lb=-5.12;
        ub=5.12;
        dim=30;

    case 'F10'
        fobj = @F10;
        lb=-32;
        ub=32;
        dim=30;

    case 'F11'
        fobj = @F11;
        lb=-600;
        ub=600;
        dim=30;

    case 'F12'
        fobj = @F12;
        lb=-50;
        ub=50;
        dim=30;

    case 'F13'
        fobj = @F13;
        lb=-50;
        ub=50;
        dim=30;

    case 'F14'
        fobj = @F14;
        lb=-65.536;
        ub=65.536;
        dim=2;

    case 'F15'
        fobj = @F15;
        lb=-5;
        ub=5;
        dim=4;

    case 'F16'
        fobj = @F16;
        lb=-5;
        ub=5;
        dim=2;

    case 'F17'
        fobj = @F17;
        lb=[-5,0];
        ub=[10,15];
        dim=2;

    case 'F18'
        fobj = @F18;
        lb=-2;
        ub=2;
        dim=2;

    case 'F19'
        fobj = @F19;
        lb=0;
        ub=1;
        dim=3;

    case 'F20'
        fobj = @F20;
        lb=0;
        ub=1;
        dim=6;     

    case 'F21'
        fobj = @F21;
        lb=0;
        ub=10;
        dim=4;    

    case 'F22'
        fobj = @F22;
        lb=0;
        ub=10;
        dim=4;    

    case 'F23'
        fobj = @F23;
        lb=0;
        ub=10;
        dim=4;
end

end

% F1

function o = F1(x)
o=sum(x.^2);
end

% F2

function o = F2(x)
o=sum(abs(x))+prod(abs(x));
end

% F3

function o = F3(x)
dim=size(x,2);
o=0;
for i=1:dim
    o=o+sum(x(1:i))^2;
end
end

% F4

function o = F4(x)
o=max(abs(x));
end

% F5

function o = F5(x)
dim=size(x,2);
o=sum(100*(x(2:dim)-(x(1:dim-1).^2)).^2+(x(1:dim-1)-1).^2);
end

% F6

function o = F6(x)
o=sum(abs((x+.5)).^2);
end

% F7

function o = F7(x)
dim=size(x,2);
o=sum([1:dim].*(x.^4))+rand;
end

% F8

function o = F8(x)
o=sum(-x.*sin(sqrt(abs(x))));
end

% F9

function o = F9(x)
dim=size(x,2);
o=sum(x.^2-10*cos(2*pi.*x))+10*dim;
end

% F10

function o = F10(x)
dim=size(x,2);
o=-20*exp(-.2*sqrt(sum(x.^2)/dim))-exp(sum(cos(2*pi.*x))/dim)+20+exp(1);
end

% F11

function o = F11(x)
dim=size(x,2);
o=sum(x.^2)/4000-prod(cos(x./sqrt([1:dim])))+1;
end

% F12

function o = F12(x)
dim=size(x,2);
o=(pi/dim)*(10*((sin(pi*(1+(x(1)+1)/4)))^2)+sum((((x(1:dim-1)+1)./4).^2).*...
(1+10.*((sin(pi.*(1+(x(2:dim)+1)./4)))).^2))+((x(dim)+1)/4)^2)+sum(Ufun(x,10,100,4));
end

% F13

function o = F13(x)
dim=size(x,2);
o=.1*((sin(3*pi*x(1)))^2+sum((x(1:dim-1)-1).^2.*(1+(sin(3.*pi.*x(2:dim))).^2))+...
((x(dim)-1)^2)*(1+(sin(2*pi*x(dim)))^2))+sum(Ufun(x,5,100,4));
end

% F14

function o = F14(x)
aS=[-32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32 -32 -16 0 16 32;,...
-32 -32 -32 -32 -32 -16 -16 -16 -16 -16 0 0 0 0 0 16 16 16 16 16 32 32 32 32 32];

for j=1:25
    bS(j)=sum((x'-aS(:,j)).^6);
end
o=(1/500+sum(1./([1:25]+bS))).^(-1);
end
% F15
function o = F15(x)
aK=[.1957 .1947 .1735 .16 .0844 .0627 .0456 .0342 .0323 .0235 .0246];
bK=[.25 .5 1 2 4 6 8 10 12 14 16];bK=1./bK;
o=sum((aK-((x(1).*(bK.^2+x(2).*bK))./(bK.^2+x(3).*bK+x(4)))).^2);
end
% F16
function o = F16(x)
o=4*(x(1)^2)-2.1*(x(1)^4)+(x(1)^6)/3+x(1)*x(2)-4*(x(2)^2)+4*(x(2)^4);
end
% F17
function o = F17(x)
o=(x(2)-(x(1)^2)*5.1/(4*(pi^2))+5/pi*x(1)-6)^2+10*(1-1/(8*pi))*cos(x(1))+10;
end
% F18
function o = F18(x)
o=(1+(x(1)+x(2)+1)^2*(19-14*x(1)+3*(x(1)^2)-14*x(2)+6*x(1)*x(2)+3*x(2)^2))*...
    (30+(2*x(1)-3*x(2))^2*(18-32*x(1)+12*(x(1)^2)+48*x(2)-36*x(1)*x(2)+27*(x(2)^2)));
end
% F19
function o = F19(x)
aH=[3 10 30;.1 10 35;3 10 30;.1 10 35];cH=[1 1.2 3 3.2];
pH=[.3689 .117 .2673;.4699 .4387 .747;.1091 .8732 .5547;.03815 .5743 .8828];
o=0;
for i=1:4
    o=o-cH(i)*exp(-(sum(aH(i,:).*((x-pH(i,:)).^2))));
end
end
% F20
function o = F20(x)
aH=[10 3 17 3.5 1.7 8;.05 10 17 .1 8 14;3 3.5 1.7 10 17 8;17 8 .05 10 .1 14];
cH=[1 1.2 3 3.2];
pH=[.1312 .1696 .5569 .0124 .8283 .5886;.2329 .4135 .8307 .3736 .1004 .9991;...
.2348 .1415 .3522 .2883 .3047 .6650;.4047 .8828 .8732 .5743 .1091 .0381];
o=0;
for i=1:4
    o=o-cH(i)*exp(-(sum(aH(i,:).*((x-pH(i,:)).^2))));
end
end
% F21
function o = F21(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
o=0;
for i=1:5
    o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end

% F22

function o = F22(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];

o=0;
for i=1:7
    o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end
% F23
function o = F23(x)
aSH=[4 4 4 4;1 1 1 1;8 8 8 8;6 6 6 6;3 7 3 7;2 9 2 9;5 5 3 3;8 1 8 1;6 2 6 2;7 3.6 7 3.6];
cSH=[.1 .2 .2 .4 .4 .6 .3 .7 .5 .5];
o=0;
for i=1:10
    o=o-((x-aSH(i,:))*(x-aSH(i,:))'+cSH(i))^(-1);
end
end

function o=Ufun(x,a,k,m)
o=k.*((x-a).^m).*(x>a)+k.*((-x-a).^m).*(x<(-a));
end
% This function initialize the first population of search agents
function Positions=initialization(SearchAgents_no,dim,ub,lb)

Boundary_no= size(ub,2); % numnber of boundaries

% If the boundaries of all variables are equal and user enter a single
% number for both ub and lb
if Boundary_no==1
    Positions=rand(SearchAgents_no,dim).*(ub-lb)+lb;
end

% If each variable has a different lb and ub
if Boundary_no>1
    for i=1:dim
        ub_i=ub(i);
        lb_i=lb(i);
        Positions(:,i)=rand(SearchAgents_no,1).*(ub_i-lb_i)+lb_i;
    end
end

以上就是基于Matlab实现鲸鱼优化算法的示例代码的详细内容,更多关于Matlab鲸鱼优化算法的资料请关注我们其它相关文章!

(0)

相关推荐

  • 利用Matlab实现迭代适应点算法

    目录 1.算法描述 2.工具函数 3.函数调用 4.优势与不足 道格拉斯-普克算法(Douglas–Peucker algorithm,亦称为拉默-道格拉斯-普克算法.迭代适应点算法.分裂与合并算法)是将曲线近似表示为一系列点,并减少点的数量的一种算法.它的优点是具有平移和旋转不变性,给定曲线与阈值后,抽样结果一定. 1.算法描述 1.在曲线首尾两点间虚连一条直线,求出其余各点到该直线的距离. 2.选其最大者与阈值相比较,若大于阈值,则离该直线距离最大的点保留,否则将直线两端点间各点全部舍去.

  • Matlab实现遗传算法的示例详解

    目录 1算法讲解 1.1何为遗传算法 1.2遗传算法流程描述 1.3关于为什么要用二进制码表示个体信息 1.4目标函数值与适应值区别 1.5关于如何将二进制码转化为变量数值 1.6关于代码改进 2MATLAB自带ga函数 2.1问题描述 2.2自带函数使用 3自编遗传算法各部分代码及使用 3.1代码使用 3.2Genetic1--主函数 3.3PI(PopulationInitialize)--产生初始种群 3.4Fitness--计算目标函数值 3.5FitnessF--计算适应值 3.6Tr

  • Python&Matlab实现灰狼优化算法的示例代码

    目录 1 灰狼优化算法基本思想 2 灰狼捕食猎物过程 2.1 社会等级分层 2.2 包围猎物 2.3 狩猎 2.4 攻击猎物 2.5 寻找猎物 3 实现步骤及程序框图 3.1 步骤 3.2 程序框图 4 Python代码实现 5 Matlab实现 1 灰狼优化算法基本思想 灰狼优化算法是一种群智能优化算法,它的独特之处在于一小部分拥有绝对话语权的灰狼带领一群灰狼向猎物前进.在了解灰狼优化算法的特点之前,我们有必要了解灰狼群中的等级制度. 灰狼群一般分为4个等级:处于第一等级的灰狼用α表示,处于第

  • Python&Matlab实现蚂蚁群算法求解最短路径问题的示例

    目录 1知识点 1.1 蚁群算法步骤 1.2 蚁群算法程序 2蚂蚁算法求解最短路径问题——Python实现 2.1源码实现 2.2 ACA_TSP实现 3 蚂蚁算法求解最短路径问题——Matlab实现 3.1流程图 3.2代码实现 3.3结果 1 知识点 详细知识点见:智能优化算法—蚁群算法(Python实现) 我们这一节知识点只讲蚁群算法求解最短路径步骤及流程. 1.1 蚁群算法步骤 设蚂蚁的数量为m,地点的数量为n,地点i与地点j之间相距Dij,t时刻地点i与地点j连接的路径上的信息素浓度为

  • Python和Matlab实现蝙蝠算法的示例代码

    目录 1前言 2 蝙蝠算法原理细讲 3 详细步骤 4Python实现 4.1代码 4.2结果 5Matlab实现 5.1 代码 5.2 结果 5.3 展望 1 前言 蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法.该算法基于迭代优化,初始化为一组随机解,然后迭代搜寻最优解,且在最优解周围通过随机飞行产生局部新解,加强局部搜索速度.该算法具有实现简单.参数少等特点. 该算法主要用于目标函数寻优,基于蝙蝠种群利用产生的声波搜索猎物和控制飞行方向的特征来实现

  • 基于Matlab实现鲸鱼优化算法的示例代码

    目录 1.鲸鱼优化算法建模 1.1 包围猎物 1.2 螺旋狩猎 1.3 搜索猎物 1.4 算法流程图 2.Matlab代码实现 2.1 结果 2.2 代码 1.鲸鱼优化算法建模 鲸鱼优化算法(WOA)是澳大利亚学者Mirjaili等于2016年提出的群体智能优化算法,根据座头鲸的捕猎行为实现优化搜索的目的.其中,每个鲸鱼可以看作一个粒子,每个粒子作为不同的决策变量.WOA的实现过程主要包括包围猎物.螺旋狩猎和随机搜索3个阶段,其数学模型如下: 1.1 包围猎物 1.2 螺旋狩猎 1.3 搜索猎物

  • 基于Matlab实现嗅觉优化算法的示例代码

    目录 1.概述 2.37 个 CEC 基准测试函数代码 3.F1 Matlab代码仿真 1.概述 嗅觉剂优化是一种新颖的优化算法,旨在模仿气味分子源尾随的药剂的智能行为.该概念分为三个阶段(嗅探,尾随和随机)是独特且易于实现的.此上传包含 SAO 在 37 个 CEC 基准测试函数上的实现. 2.37 个 CEC 基准测试函数代码 function [lb,ub,dim,fobj] = Select_Function(F) switch F case 'F1' %Admijan fobj = @

  • 基于Matlab实现野狗优化算法的示例代码

    目录 1.概述 2.捕食过程的数学模型 2.1 种群初始化 2.2 群体攻击过程 2.3 迫害攻击过程 2.4 野狗的存活率 3.Matlab代码实现 3.1 代码 3.2 结果 1.概述 野狗优化算法(Dingo Optimization Algorithm, DOA)模仿澳大利亚野狗的社交行为.DOA算法的灵感来源于野狗的狩猎策略,即迫害攻击.分组策略和食腐行为.为了提高该方法的整体效率和性能,在DOA中制定了三种与四条规则相关联的搜索策略,这些策略和规则在搜索空间的强化(开发)和多样化(探

  • Matlab实现黑洞优化算法的示例代码

    目录 前言 1.概述 1.1黑洞算法 1.2黑洞搜索优化算法 1.3黑洞搜索算法的实现过程 2.Matlab代码实现 2.1主函数 2.2目标函数 2.3黑洞优化算法 3.结果展现 前言 应用的领域很多. 1.概述 1.1黑洞算法 根据黑洞现象原理首次提出BH 算法,它在传统PSO基础上引入了新的机制,有效地提高了收敛速度并防止了陷入局部极值的情况发生;但是该方法却没有提及如何确定黑洞边界和如何处理吸收星体的问题. Hatamlou BH算法进行了完善,让其更加接近于黑洞的自然现状,使其具有黑洞

  • 基于Matlab实现绘制3D足球的示例代码

    目录 绘制讲解 数据来源及说明 硬算顶点连接情况 三角剖分 正交变换 充气 完整代码 世界杯教你用MATLAB画个超逼真的足球, 需要准备Partial Differential Equation Toolbox工具箱,同时因为用到了polyshape类所以至少需要R2017b版本. 绘制讲解 数据来源及说明 我是真的不想写注释了太麻烦了,给大家讲一下我的思路希望能够看懂,首先足球的数据点是通过: [B,XYZ]=bucky; 导入的,但是导入的只有边链接信息,并没有给出哪几个点构成正五边形哪几

  • 基于Matlab实现多目标粘液霉菌算法的示例代码

    目录 1.概述 2.算法过程 3.数值实验 4.Matlab代码实现 1.概述 多目标粘液霉菌算法(MOSMA),这是最近开发的粘液霉菌算法(SMA)的多目标变体,用于处理工业中的多目标优化问题.最近,为了处理优化问题,已经为优化社区推荐了几种元启发式和进化优化技术.在评估多目标优化(MOO)问题时,这些方法往往受到低质量解的影响,而不是解决识别帕累托最优解的准确估计和增加所有目标的分布的目标函数.SMA方法遵循从实验室实验中粘液霉菌振荡行为中获得的逻辑.与其他成熟的方法相比,SMA算法显示出强

  • Python实现七大查找算法的示例代码

    查找算法 -- 简介 查找(Searching)就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素.     查找表(Search Table):由同一类型的数据元素构成的集合     关键字(Key):数据元素中某个数据项的值,又称为键值     主键(Primary Key):可唯一的标识某个数据元素或记录的关键字 查找表按照操作方式可分为:         1.静态查找表(Static Search Table):只做查找操作的查找表.它的主要操作是:         ①

  • Java实现查找算法的示例代码(二分查找、插值查找、斐波那契查找)

    目录 1.查找概述 2.顺序查找 3.二分查找 3.1 二分查找概述 3.2 二分查找实现 4.插值查找 4.1 插值查找概述 4.2 插值查找实现 5.斐波那契查找 5.1 斐波那契查找概述 5.2 斐波那契查找实现 5.3 总结 1.查找概述 查找表: 所有需要被查的数据所在的集合,我们给它一个统称叫查找表.查找表(Search Table)是由同一类型的数据元素(或记录)构成的集合. 查找(Searching): 根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录).

随机推荐