MATLAB运行错误,哪位大哥帮帮忙看看,下面是程序。二进制粒子群

function [Solution Result] = Untitled2()
%初始化
clear all;
clc;
% 给定初始条件
c1=1.4962; %学习因子 c1
c2=1.4962; %学习因子 c2
w=0.7298; %惯性全数
MaxDT=10000; %最大迭代数
N=40; %初始化群体个体数目
D=10; %搜素空间维数
max=10;
min=-10;
eps=10^(-6); %设置精度
% 初始化种群的个体
for i=1:N
for j=1:D
x(i,j)=(max-min)*rand+min; % 随机初始化位置
v(i,j)=20*rand-10; %随机初始化速度
end
end
%计算粒子的适应度,初始化Pi和Pg
for i=1:N
pi=fitness(x(i,:),D); %局部最优
y(i,:)=x(i,:);
pg=x(i,:); %pg为全局最优
end
for i=1:N
if pi<fitness(pg,D)
pg=x(i,:);
end
end
%进入主循环

for ite=1:MaxDT %迭代过程
for i=1:N
v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));
sig(v)=1/(1+exp(-v(i,:)));
if rand()<sig(v)
x(i,:)=1;
else
x(i,:)=0;
end

if fitness(x(i,:),D)<pi %迭代寻找局部最优
pi=fitness(x(i,:),D);
y(i,:)=x(i,:);
end
if pi<fitness(pg,D) %迭代寻找全局最优
pg=y(i,:);

end
end
end

%最后计算结果
disp('*******************************************')
disp('函数的全局最优位置为:')
Solution=pg
disp('最后得到的优化极值为:')
Result=fitness(pg,D)
disp('********************************************')

function Result=fitness(x,D)
sum=0.0;
for i=1:D
sum=sum+x(i)^2;
end
Result=sum;

这句不对啊:

sig(v)=1/(1+exp(-v(i,:)));

首先,右边v(i,:)是个vector,如果想除法,得用1./(1+exp(-v(i,:)))

其次,哪有左右两边同时定义的?sig(v)??? 你直接定义 sig_v = ... 才行。

多看基础的书吧。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-09-27
看点MATLAB基础知识的书
相似回答