我是靠谱客的博主 飞快火车,最近开发中收集的这篇文章主要介绍matlab遗传算法程序报错,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

程序调试过程中出现如下警告:
GAMain
未定义函数或变量 ‘Pop’。

出错 Routedist (line 3)
car_route=Decoding(Popsize,T,Pop,n,w);

出错 Objective (line 7)
route_dist=Routedist(Popsize,T);

GAMain如下:
%%%%%%%%%%%%%%%%数据参数赋值%%%%%%%%%%%%%%%%
n=20;%供应商数量
t=0;%补货周期初值
T=5;%补货周期数
d=xlsread(‘vendorrequirements.xlsx’);%读取需求量
Mu=50;%需求均值
Sigma=10;%需求标准差
cs=1;%线边库单位库存成本
cf=1000;%车辆固定运输成本
cv=2.5;%车辆单位距离运输变动成本
W=1000;%线边库容量
w=200;%车辆容量
%%%%%%%%%%%%%%%%%距离计算%%%%%%%%%%%%%%%%%%
s=zeros(n+1,n+1);%供应商和线边库之间距离
vend_location=[176.6,-113.3,17.1,-200.6,61.2,-142.2,92.4,113.5,148.9, …
-29.7,-249.7,-162.6,248,-208.6,195.5,23,297.7,-253.1,-34.4,-236;…
277.1,297.2,164.9,190.4,221.2,249.3,60.1,144.1,180,41.2,246.4,…
190.9,141.7,212.7,218.4,221.6,47.8,29.9,213,211.8]; %第一行为x坐标,第二行为y坐标
center=[0;0];%线边库坐标
coordinate=[center vend_location];%坐标集
for ii=1:n+1
for jj=1:n+1
s(ii,jj)=sqrt(sum((coordinate(:,ii)-coordinate(:,jj)).^2));
end
end
%%%%%%%%%%%%%遗传算法初始化%%%%%%%%%%%%%
Popsize=20; %种群规模
maxgen=1000; %最大遗传代数
gen=1;%代数计数器
pc=0.8; %交叉率0.6-0.8之间
pm=0.1;%变异率
bestReplenishment=zeros(T,n);%最优补货量
Objv_trace=zeros(maxgen,1);%最小总成本的迹
Pop=InitializingPop(Popsize,n,T,Mu,Sigma,d);%初始种群
%%%%%%%%%%%%%%%%遗传算法循环%%%%%%%%%%%%%%%%%%
while gen<maxgen
Objv=Objective(Popsize,n,T,cs,cf,cv,Pop);%计算总成本(目标函数值)
Fit=Fitness(Objv,Popsize);%计算适值
[Objv_trace(gen),index]=min(Objv);%记录最小成本
bestchrom=Pop(index,:);%最优染色体
newPop=Selection(Pop,Fit,Popsize);%轮盘赌复制
newPop=Crossover(newPop,Popsize,pc,T,n);%概率交叉
newPop=Mutation(newPop,Popsize,pm,T,n);%概率变异
newPop(1,:)=bestchrom;%精英保留
Pop=newPop;%子种群赋值给父代种群
gen=gen+1;%迭代计数器
end
car_route=Decoding(Popsize,T,Pop,n,w);%解码
minObjv=min(Objv_trace);%最优采购总成本
%%%%%%%%%最优补货量%%%%%%%%%%%
for i=1:T
bestReplenishment(i,:)=bestchrom(1,2*(i-1)n+1:(2i-1)n);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
bestcar_route=car_route(1,:);%最优车辆取货路径
route_dist=Routedist(Popsize,T);
bestRoutedist=sum(route_dist(1,:),2);%最优总里程
%%%%%%%%%计算车辆使用数量%%%%%
kk=zeros(1,T);%车辆使用数量
for j=1:T
kk(1,j)=k;
k=length(bestcar_route(j));
end
%%%%%%%%%%%绘制车辆取货路线路图形%%%%%%%%%%%
figure(1)
plot(vend_location(1,:),vend_location(2,:),’
’)
hold on
plot(0,0,‘o’)
hold off
for i=1:n
text(vend_location(1,i),vend_location(2,i),num2str(i),‘Fontsize’,14);
end
hold on
for j=1:T%每个周期一张子图
Tbestcar_route=bestcar_route(j);%周期内车辆取货路径
for jj=1:kk(1,j)%同一个子图内每辆车一条线路
temp=coordinate(:,Tbestcar_route(jj));
subplot(1,T,j);plot(temp(1,:),temp(2,:))
hold on
strcat(‘car’,num2str(jj));
end
xlabel(‘x坐标’)
ylabel(‘y坐标’)
title(‘第’,num2str(j),‘周期车辆取货路线图’)
end
%%%%%%%%%%%绘制采购总成本迭代图形%%%%%%%%%%%
figure(2)
plot(Objv_trace)
xlabel(‘迭代次数’)
ylabel(‘采购总成本’)
title(‘采购总成本优化曲线’)

子函数如下:
function route_dist=Routedist(Popsize,T)
route_dist=zeros(Popsize,T);%所有染色体所有周期车辆路径距离存储器
car_route=Decoding(Popsize,T,Pop,n,w);
for i=1:Popsize
for j=1:T
for ii=1:length(car_route(i,j))
carroute=car_route(i,j);%周期内所有车辆的取货路径
dist=zeros(1,1);%周期内所有车辆总行驶距离
iicarroute=carroute(ii);%周期内某车辆的取货路径
iidist=zeros(1,1);%车辆路径距离存储器
for jj=1:length(iidist)
iidist=iidist+s(iicarroute(jj),iicarroute(jj+1));
end
dist=dist+iidist;
end
route_dist(i,j)=dist;
end
end

function Objv=Objective(Popsize,n,T,cs,cf,cv,Pop)
d=xlsread(‘vendorrequirements.xlsx’);%读取需求
Objv=zeros(Popsize,1);%总成本
F1=zeros(Popsize,1);%库存成本
F2=zeros(Popsize,1);%固定运输成本
F3=zeros(Popsize,1);%变动运输成本
route_dist=Routedist(Popsize,T);
for i=1:Popsize
for j=1:T
Replenishment(1,:)=Pop(i,2*(j-1)n+1:(2j-1)n);
F1(i,1)=F1(i,1)+cs
(Replenishment(1,:)-d(1,2*(j-1)n+1:(2j-1)n));
F2(i,1)=F2(i,1)+cf
max(ceil(cumsum(Replenishment,2)./w));
F3(i,1)=F3(i,1)+cv*route_dist(i,j);
end
Objv(i,1)=F1(i,1)+F2(i,2)+F3(i,1);
end

最后

以上就是飞快火车为你收集整理的matlab遗传算法程序报错的全部内容,希望文章能够帮你解决matlab遗传算法程序报错所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部