概述
用GA解决VRP问题,调用适应度函数时,出现输入参数过多的错误,怎么解决
m=35;
ch=10;
X=[25,50;45,68;40,50;42,61;44,75;43,80;40,69;38,75;35,70;32,21;35,30;
30,31;25,32;22,75;20,20;10,40;12,30;15,50;8,57;20,60;17,32;
30,80;27,82;25,90;22,80;30,68;13,64;31,54;23,70;40,40;19,28;
8,35;13,76;16,81;8,45;5,70;
12,40;21,31;32,32;27,30;38,61;24,77;15,73;40,80;10,65;7,40];
q=[0,1.7,2.3,0.2,0.2,0.9,1.2,0.5,0.9,2.3,1.7,1.2,0.1,1.6,0.2,0.8,2.1,3.1,1.2,1.4,1.2,2.1,1.6,2.2,1.3,0.6,0.2,0.7,0.9,1.9,2.1,0.4,1.1,0.2,0.6,2.2 ...
0,0,0,0,0,0,0,0,0,0];
ET=[8,6,9,11,7,6,4,5,3,7,12,9,13,7,11,10,16,10,8,11,13,9,8,10,12,15,8,11,16,10,9,11,15,10,14,0,0,0,0,0,0,0,0,0,0];
LT=[10,10,13,16,8,7,6,12,9,11,19,10,17,13,19,13,18,15,13,12,15,11,10,14,15,18,10,12,18,13,11,15,19,11,15,100,100,100,100,100,100,100,100,100,100];
tt=0.1+0.8*rand(1,35);%客户点停留时间,随机产生35个0.1到0.8之间的随机数
sq=sum(q);
Qk=8;%车载容量
k=ceil(sq./Qk)+1;%计算所需车辆数
e=0.27;
qd=200;%车辆的启动成本
r=1./120;
c=1.2;
Ck=1;
C1=20;
C2=30;
e=0.27;%单位距离消耗的电量
Dis=200;
speed=45;
NIND=70;
pc=0.9;%交叉概率
pm=0.05;%变异概率
maxgen=500;%遗传代数
n=m+ch+1;
[dislist,clist]=Distance(n);
%初始化种群
s=zeros(NIND,m+ch);
for i=1:NIND
s(i,:)=randperm(m+ch);
end
d=zeros(NIND,k-1);
ss=[d,s];
for i=1:NIND
ss(i,:)=ss(i,randperm(m+ch+k-1));
end
d=zeros(NIND,1);
s=[d,ss,d]; %在初始矩阵首末加入0元素,得到初始种群s
gen=0;
figure;
hold on;box on;
xlim([0,maxgen]);
title('优化过程');
xlabel('代数');
ylabel('最优值');
[fit,ff,p]=fitness(NIND,m,qd,Ck,Dis,C1,C2,LT,ET,s,Qk,q,k,speed,e,c,r,ch,X);
调用函数(部分):
function [fit,ff,p]=fitness(NIND,m,qd,Ck,Dis,C1,C2,LT,ET,s,Qk,q,k,speed,e,c,r,ch,X)
ddd=zeros(NIND,1);
dd=zeros(NIND,m+ch+k);
e2=zeros(1,NIND);
Q=zeros(NIND,m+ch+k+1);
q1=0;
qq=zeros(NIND,m+ch+k+1);
qqq=zeros(NIND,1);
T=zeros(NIND,m+ch+k);
最后
以上就是飘逸狗为你收集整理的std输入参数太多matlab,输入参数过多的全部内容,希望文章能够帮你解决std输入参数太多matlab,输入参数过多所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复