这三段代码有问题吗?红字部分
1、function flag=test(params,city_range)
%判断个体是否满足要求
demand=params.demand ;
qvechile=params.load;
cityNumber=params.cityNumber;
v=params.v;
a1=params.a1;
time_window=params.time_window;
dd=params.dd;
k=1;
q=0;
d=dd(city_range(1),8);
A(city_range(1))=d/v;
q=demand(city_range(1),6);
for j=2:cityNumber
d=d+dd(city_range(j),city_range(j-1));
q=q+demand(city_range(j),6);
t(city_range(j),city_range(j-1))= dd(city_range(j),city_range(j-1))/v;
A(city_range(j))=t(city_range(j-1))+ t(city_range(j),city_range(j-1))+a1*demand(city_range(j));
if time_window(city_range(j))>A(city_range(j))
t(city_range(j))=time_window(city_range(j));
else
t(city_range(j))=A(city_range(j));
end
if q>qvechile|| A(city_range(j))>time_window(city_range(j))
k=k+1;
end
iffun(city_range,params,1)>=42
flag=0;
else
flag=1;
end
end
2、function city_range=Code(params)
%该函数用于初始化个体
flag=0;
cityNumber=params.cityNumber;
while flag==0
city_range=randperm(cityNumber);
flag=test(params,city_range);
end
end
3、
%%遗传算法多目标模型主程序
clc
clear
dbstop if error
load data
params.dd=dd; % 距离矩阵
params.time_window=time_window;% 时间窗口
params.load=10;% 载荷
params.cityNumber=7; % 城市数量
params.v=50;%平均速度
params.a1=2.5;%装卸效率
params.c1=200;% 运输固定成本
params.c2=1; % 运输变动成本
params.R=R; % 路阻系数
params.G=G; % 高原反应系数
params.Wm=Wm;% 物资总量
params.p=500;% 惩罚值
params.demand=demand;
%%初始化遗传算法参数
maxgen=1;%进化代数,即迭代次数
sizepop=100; %种群规模
pcross=0.8; %交叉概率选择,0和1之间
pmutation=0.1; %变异概率选择,0和1之间
individuals=struct('fitness',zeros(sizepop,1),'chrom',[]); %将种群信息定义为一个结构体
%%初始化种群计算适应度值
%初始化种群
for i=1:sizepop
%随机产生一个种群
individuals.chrom(i,:)=Code(params);
%计算适应度
individuals.fitness(i)=fun(individuals.chrom(i,:),params,1); %染色体的适应度
end
%找最好的染色体
[bestfitness, bestindex]=min(individuals.fitness);
bestchrom=individuals.chrom(bestindex,:); % 最好的染色体
avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度
%记录每一代进化中最好的适应度和平均适应度
trace=[avgfitness bestfitness];
%%迭代寻优
%进化开始
for i=1:maxgen %选择
individuals=Select(individuals,sizepop);
%交叉
individuals.chrom=Cross(pcross,individuals.chrom,params);
%变异
individuals.chrom=Mutation(pcross,individuals.chrom,params);
%计算适应度
for j=1:sizepop
x=individuals.chrom(j,:); %解码
individuals.fitness(j)=fun(x,params,1);
end
%找到最小和最大适应度的染色体及它们在种群中的位置
[newbestfitness,newbestindex]=min(individuals.fitness);
[worestfitness,worestindex]=max(individuals.fitness);
%代替上一次进化中最好的染色体
if bestfitness>newbestfitness
bestfitness=newbestfitness;
bestchrom=individuals.chrom(newbestindex,:);
end
individuals.chrom(worestindex,:)=bestchrom;
individuals.fitness(worestindex)=bestfitness;
avgfitness=sum(individuals.fitness)/sizepop;
trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度
end
%进化结束
%%结果分析
[r, c]=size(trace);
plot(trace(:,2),'r-');
hold on
plot(trace(:,1))
xlim([1 length(trace)])
legend('最优适应度值','平均适应度值')
grid on
title('适应度曲线','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);
disp('适应度变量');
x=bestchrom;
%窗口显示
disp([bestfitness x]);
最后
以上就是幸福自行车最近收集整理的关于matlab程序运行不停,MATLAB一直运行是为什么?的全部内容,更多相关matlab程序运行不停内容请搜索靠谱客的其他文章。
发表评论 取消回复