我是靠谱客的博主 幸福自行车,这篇文章主要介绍matlab程序运行不停,MATLAB一直运行是为什么?,现在分享给大家,希望可以做个参考。

这三段代码有问题吗?红字部分

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程序运行不停内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部