• 大小: 3KB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-01-27
  • 语言: 其他
  • 标签: 万有引力  

资源简介

万有引力测试函数程序,对初学者应该能够有多帮助,有需要的同学拿去。

资源截图

代码片段和文件信息

function [FbestLbestBestChartMeanChart]=GSA(F_indexNmax_itElitistCheckmin_flagRpower)
%V:速度 a:加速度 M:质量.Ma=Mp=Mi=M; dim:待求解未知量维数 N:智能粒子个位数
%X:种群个体位置.dim-by-N matrix. R:种群之间的距离
%[low-up]:取值范围 %Rnorm:范数 %Rpower:Power of R
Rnorm=2;%2阶范数,即欧氏距离
%获取待求解目标方程的未知数个数个体及取值范围
[lowupdim]=test_functions_range(F_index);
%随机的初始化个体
X=initialization(dimNuplow);
%适应度值数组初始化
BestChart=[];
MeanChart=[];
V=rand(Ndim);%速度初始化
%V=zeros(Ndim);%速度初始化
for iteration=1:max_it%迭代开始
    %iteration
    %检查x个体是否在取值范围内
    X=space_bound(Xuplow);
    %计算适应度值
    fitness=evaluateF(XF_index);
    if min_flag==1
        [best best_X]=min(fitness);%minimization.
    else
         [best best_X]=max(fitness);%maximization.
    end
    if iteration==1
        Fbest=best;Lbest=X(best_X:);
    end
    if min_flag==1
        if best            Fbest=best;Lbest=X(best_X:);
        end
    else
        if best>Fbest%极大值求解
             Fbest=best;Lbest=X(best_X:);
        end
    end
    BestChart=[BestChart Fbest];%最优适应度值
    MeanChart=[MeanChart mean(fitness)];%平均适应度值
    %M计算
    [M]=massCalculation(fitnessmin_flag);
    %万有引力常数计算
    G=Gconstant(iterationmax_it);
    %加速度a计算
    a=Gfield(MXGRnormRpowerElitistCheckiterationmax_it);
    %个体更新
    [XV]=move(XaV);
end%迭代终止
%3.获取待求解目标方程的未知数个数及取值范围
function [downupdim]=test_functions_range(F_index)
dim=30;
if F_index==1
    down=-100;up=100;
end
if F_index==2
    down=-10;up=10;
end
if F_index==3
    down=-10;up=10;
end
if F_index==4
    down=-100;up=100;
end
if F_index==5
    down=-30;up=30;
end
if F_index==6
    down=-1.28;up=1.28;
end
if F_index==7
    down=-5.12;up=5.12;
end
%4.随机的初始化个体
function [X]=initialization(dimNupdown)
%dim:未知数个数,粒子个数
%N:种群数
%up:取值上限
%down:取值下限
%X:初始化的个体值
if size(up2)==1
    X=rand(Ndim).*(up-down)+down;
end
if size(up2)>1
    for i=1:dim
        high=up(i);low=down(i);
        X(:i)=rand(N1).*(high-low)+low;
    end
end

function X=space_bound(X0uplow)
%约定个体在相应的up和down取值范围内
[Ndim]=size(X0);
X=zeros(Nsize(X02));
for i=1:N
    Tp=X0(i:)>up;Tm=X0(i:)    X(i:)=(X0(i:).*(~(Tp+Tm)))+((rand(1dim).*(up-low)+low).*(Tp+Tm));
end

function fitness=evaluateF(XF_index)
%计算适应度值
[Ndim]=size(X);
fitness=zeros(N1);
for i=1:N%L第i个种群,包含一组未知量解得个体
    L=X(i:);
    %第i个种群的适应度计算
    fitness(i)=test_functions(LF_indexdim);
end

%相应的目标函数如下
%适应度函数
function fit=test_functions(LF_index~)
%不同的适应度函数
if F_index==1
    fit=sum(L.^2);
end

if F_index==2
    fit=sum(abs(L))+prod(abs(L));
end
    if F_index==3
        fit=0;
        for i=1:30
            fit=fit+sum(L(1:i))^2;
        end
    end
if F_index==4
    fit=max(abs(L));
end
if F_index==5
   fit=sum(100*(L(2:30)-(L(1:30-1).^2)).^2+(L(1:30-1)-1).^2);
end
if F_index==6
    fit=sum([1:30].*(L.^4))+rand;
end
if F_index==7
    fit=sum(L.^2-10*cos(2*pi.*L)+10);
end

%万有引力中质量M的计算程序
fu

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        4738  2017-11-02 11:28  测试函数程序\GSA.m
     文件         611  2017-11-02 11:08  测试函数程序\wanyouyinli1.m
     目录           0  2017-11-02 13:15  测试函数程序\

评论

共有 条评论