请叫我李青大人 2022-06-05 14:44
浏览 27
已结题

天牛须算法-索引超出数组元素的数目(1)。

问题遇到的现象和发生背景

天牛须算法-索引超出数组元素的数目(1)。

问题相关代码,请勿粘贴截图
function bas()
    clear all;
    % 初始化部分
    eta=0.95;%步长衰减因子
    c=5;% 步进和d0之间的比率
    step=1;% 初始步骤设置为最大输入范围
    n=100;% 迭代次数
    k=2;% 空间维数
    x=rands(1,k);% 初始化天牛须位置
    fbest=fit(x);% 初始化最优适应度
    A=zeros(100,1);
    B=zeros(100,1);
    record=zeros(n,1);
%     fbest_store=fbest;
%     x_store=[0;x;fbest];% 用于存储路径
%     display(['0:','xbest=[',num2str(xbest'),'],fbest=',num2str(fbest)]);
    % 迭代部分
    for i=1:n
        d0=step/c;% d0表示质点与须之间的长度
        dir=rands(1,k); % 随机方向向量
        dir=dir/(eps+norm(dir));% 归一化
        xleft=x+dir*d0;% 左须
        fleft=fit(xleft);
        xright=x-dir*d0;% 右须
        fright=fit(xright);
        x=x-step.*dir.*sign(fleft-fright);% 判优
        f=fit(x);
        if f<fbest
            
            f=fbest;
            x=x(i);
        elseif f>fbest
            f=fbest;
            x=x(i); 
        end
       record(i)=fbest;
       r=x(i,:);
       for j=1:i
       A(i,j)=sqrt(r(2*j)^2 + r(2*j-1)^2);
       P(i,j)=atan(r(2*j-1)/r(2*j));
       end
    end
%     % 数据显示部分
%     figure(1),clf(1);
%     plot(x_store(1,:),x_store(end,:),'r-o');
%     hold on;
%     plot(x_store(1,:),fbest_store,'b-.');
%     xlabel('iteration');
%     ylabel('maximum value');
 end

function y=fit(x)
t=0.01;
H=[sin(2*pi*t) cos(2*pi*t)];
Q=[2*cos(2) 2*sin(2)];
V=H*Q';
y=sum((V-H*x').^2);
end

运行结果及报错内容
>> sbas
索引超出数组元素的数目(1)。

出错 sbas (line 39)
       A(i,j)=sqrt(r(2*j)^2 + r(2*j-1)^2);

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 6月13日
    • 创建了问题 6月5日