24小时热门版块排行榜    

CyRhmU.jpeg
查看: 9459  |  回复: 1

孙洪俊

新虫 (小有名气)

[求助] 粒子群算法的上下界,LB,UB分别是什么?已有1人参与

function [BESTX,BESTY,ALLX,ALLY]=FSOUCP(K,N,V,Delta,L,LB,UB,D,Alpha)

% K        迭代次数
% N        鱼群规模
% V        人工鱼的感知范围
% Delta    拥挤程度的判决门限,取值0~1之间
% L        觅食行为的试探次数
% LB       决策变量的下界,M×1的向量
% UB       决策变量的上界,M×1的向量
% D        样本指标矩阵,n×p的矩阵,每一行为一个样本
% Alpha    窗口半径系数,典型取值0.1
%% 输出参数列表
% BESTX    K×1细胞结构,每一个元素是M×1向量,记录每一代的最优人工鱼的状态
% BESTY    K×1矩阵,记录每一代的最优人工鱼的评价函数值
% ALLX     K×1细胞结构,每一个元素是M×N矩阵,记录每一代人工鱼的位置
% ALLY     K×N矩阵,记录每一代人工鱼的评价函数值
%% 测试函数设置
% 测试函数用单独的子函数编写好,在子函数FIT.m中修改要调用的测试函数名即可
% 注意:决策变量的下界LB和上界UB,要与测试函数保持一致
%% 参考设置
%[BESTX,BESTY,ALLX,ALLY]=FSOUCP(50,30,0.5,0.3,20,LB,UB)
%% 第一步:
M=length(LB);%决策变量的个数
%蚁群位置初始化
X=zeros(M,N);
for i=1:M
    x=unifrnd(LB(i),UB(i),1,N);
    X(i,=x;
end
%输出变量初始化
ALLX=cell(K,1);%细胞结构,每一个元素是M×N矩阵,记录每一代的个体
ALLY=zeros(K,N);%K×N矩阵,记录每一代评价函数值
BESTX=cell(K,1);%细胞结构,每一个元素是M×1向量,记录每一代的最优个体
BESTY=zeros(K,1);%K×1矩阵,记录每一代的最优个体的评价函数值
k=1;%迭代计数器初始化
%% 第二步:迭代过程
while k<=K
    NewX=zeros(M,N);
    NewY=zeros(1,N);
    for n=1:N
        x=X(:,n);
        Xnb=AFneighbour(n,X,V);
        NN=size(Xnb,2);
        if NN==0
            xx=AFprey(x,V,L,LB,UB,D,Alpha);
        elseif NN>=3
            xx=AFswarm(x,Xnb,N,Delta,V,L,LB,UB,D,Alpha);
        else
            xx=AFprey(x,V,L,LB,UB,D,Alpha);
        end
        NewX(:,n)=xx;
    end
    for n=1:N
        NewY(n)=FIT(NewX(:,n),D,Alpha);
    end
    X=NewX;
    Y=NewY;
    ALLX{k}=X;
    ALLY(k,=Y;
    pos=find(Y==minY);
    BESTXk=X(:,pos(1));
    b=sqrt(sum(BESTXk.^2));
    BESTXk=BESTXk/b;
    BESTX{k}=BESTXk;
    BESTY(k)=minY;
    disp(k);
    k=k+1;
end
%% 绘图
BESTY2=BESTY;
BESTX2=BESTX;
for k=1:K
    TempY=BESTY(1:k);
    minTempY=min(TempY);
    posY=find(TempY==minTempY);
    BESTY2(k)=minTempY;
    BESTX2{k}=BESTX{posY(1)};
end
BESTY=BESTY2;
BESTX=BESTX2;
plot(BESTY,'-ko','MarkerEdgeColor','k','MarkerFaceColor','k','MarkerSize',2)
ylabel('函数值')
xlabel('迭代次数')
grid on
function Qa=Project_Pursuit(X,a,Alpha)
%% 投影寻踪模型
%% 输入参数列表
% X       洪水样本指标矩阵,n×p的矩阵,每一行为一个样本,
%         Xij表示第i次洪水第j洪水指标,X是否已经归一化均可
% a       投影向量,1×p的矩阵,元素取值范围-1~1,要求其元素平方和等于1
% Alpha   窗口半径系数,典型取值0.1
%% 输出参数列表
% Qa      投影指标函数
%% 第零步:对a的预处理
b=sqrt(sum(a.^2));
a=a/b;
%% 第一步:归一化处理
[n,p]=size(X);
x=zeros(n,p);
Xjmax=max(X);
Xjmin=min(X);
for i=1:n
    x(i,=(X(i,-Xjmin)./(Xjmax-Xjmin);
end
%% 第二步:构造投影指标值
Z=zeros(n,1);
for i=1:n
    Z(i)=sum(a.*x(i,);
end
%% 第三步:计算投影指标函数
meanZ=mean(Z);
R=Alpha*Sa;%窗口半径
Da=0;
    for k=1:n
        rik=abs(Z(i)-Z(k));
        if R>rik
            Da=Da+rik;
        end
end
Qa=Sa*Da;
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

castaway001

新虫 (初入文坛)

【答案】应助回帖

LB,UB分别是变量的最小值和最大值,即范围。由于有多个变量,LB为下限向量,UB为上限向量。

我请教一下子函数FIT 你能不能分享一下
永远不要为自己找借口
2楼2015-06-15 01:29:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 孙洪俊 的主题更新
信息提示
请填处理意见