Function '.*' is not defined for values of class 'cell'.
function [MBR,MBF]=MCRGSA()%第一步:常用变量声明,以及种群初始化
M=7;
N=50;
Pm=0.009;
K=5;
t0=5;
alpha=0.9;
beta=1;
Source=1;
End={8,6};
Num={3,2};
ROUTES=[1 2 5 8;1 4 7 8;1 3 7 8;1 2 5 6;1 4 5 6];
Cost= [0 14 13 12 -1 -1 -1;14 0 -1 -1 18 -1 -1;13 -1 0 9 -1 -1 17;12 -1 9 0 15 -1 8;-1 18 -1 15 0 16 -1;-1 -1 -1 -1 16 0 -1;-1 -1 17 8 -1 -1 15];
Num_end=length(End);%组播目的节点个数
farm=zeros(N,Num_end);%种群
for i=1:Num_end
farm(:,i)=unidrnd(Num(i),50,1);%随机生成初始种群
end
m=1;
t=t0;
MBR=zeros(M,Num_end);
MBF=zeros(M,1);
while m<=M%设置停止条件
%第二步:按照变异概率调节参数进行变异以及退火选择
P=Num./sum(Num);
P=Pm.*P;
for i=1:N%对每一个个体都执行
Code=farm(i,:);%临时取出
k=1;
while k<=K%每一个温度下改变K次
for j=1:Num_end
if rand<P(j)
Bit=randperm(Num(j));
pos=find(Bit~=Code(j));
Code(j)=Bit(pos(1));
end
end
fit1=ShiYinZhi(ROUTES,Cost,farm(i,:));%计算适应值
fit2=ShiYinZhi(ROUTES,Cost,Code);
if fit2<fit1
farm(i,:)=Code;
elseif rand<exp((fit1-fit2)/(fit1*t));
farm(i,:)=Code;
else
Code=farm(i,:);
end
k=k+1;
end
end
%第三步:交叉算法
Farm=zeros(size(farm));
for i=1:2:(N-1);
a=farm(i,:);
b=farm(i+1,:);
pos=unidrnd(Num_end-1);
A=[a(1,1:pos),b(1,(pos+1):end)];
B=[b(1,1:pos),a(1,(pos+1):end)];
Farm(i,:)=A;
Farm(i+1,:)=B;
end
FARM=[farm;Farm];
%第四步:选择复制操作
fitness=zeros(1,2*N);
for i=1:(2*N)
fitness(i)=ShiYinZhi(ROUTES,Cost,FARM(i,:));
end
maxfitness=max(fitness);
minfitness=min(fitness);
pos=find(fitness==maxfitness);
MBR(m,:)=FARM(pos(1),:);
MBF(m)=minfitness;
for i=1:(2*N)
fitness(i)=((maxfitness-fitness(i))/(maxfitness-minfitness+0.00005))^beta;
end
fitness=fitness./(sum(fitness)+0.000000005);
FITNESS=zeros(size(fitness));
Sgn=FITNESS;
for i=1:(2*N)
FITNESS(i)=sum(fitness(1:i));
end
while sum(Sgn)<N
Pos=find(FITNESS>=rand);
if length(Pos)>0
Sgn(Pos(1))=1;
end
end
POS=find(Sgn==1);
for i=1:N
farm(i,:)=FARM(POS(i),:);
end
farm(unidrnd(N),:)=MBR(m,:);
%更新参数
m=m+1
t=t*alpha;
end
plot(MBF)
title('遗传模拟退火算法收敛图')
xlabel('进化代数')
ylabel('费用')
%译码计算适应值的函数
%ROUTES--------备选路径集
%Cost----------费用邻接矩阵
%Code----------组播树的编码
%fit-----------组播树的总代价作为适应值
function fit=ShiYinZhi(ROUTES,Cost,Code)
CC=zeros(size(Cost));
for i=1:length(Code)
R=ROUTES{i}{Code(i)};
J=length(R)-1;
for j=1:J
a=R(j);
b=R(j+1);
CC(a,b)=Cost(a,b);
end
end
fit=sum(sum(CC));
??? Error using ==> .*
Function '.*' is not defined for values of class 'cell'.
Error in ==> C:\MATLAB6p5\toolbox\stats\unidrnd.m
On line 26 ==> r = ceil(n.*rand(rows,columns));
Error in ==> C:\MATLAB6p5\work\MCRGSA.mOn line 19 ==> farm(:,i)=unidrnd(Num(i),50,1);%随机生成初始种群
请高手帮忙看看怎么回事,小女子不胜感激!正在做毕业设计!先谢谢各位了!