1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y52Vlphv
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”中,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉,变异过程产生更适应环境的新一代“染色体”群。这样,一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就是问题的最优解。
4.部分源码
%t_ij^k 车辆k从节点i到节点j的时间 h*************************
tijk = dijk./vijk;
[R,C] = size(tijk);
for i = 1:R
for j = 1:C
if isnan(tijk(i,j))==1
tijk(i,j)=0;
end
end
end
%t_i^k 车辆k在节点客户i的等待卸货时间 h*************************
%ca 每条生产线的产能 KG
ca = 6000;
%f_1每条生产线的固定成本 元
f1 = 1000;
%w_1 每条生产线的人工费 元
w1 = 1000;
%pc 每条生产线的加工费 元
pc = 500;
%sa 每组库存空间的存储能力 KG
sa = 5000;
%f_2 每组存储空间的固定成本 元
f2 = 800;
%w_2 每组存储空间的人工费 元
w2 = 700;
%ec 存储的附加费 元
ec = 800;
%N 可配送的最大车辆数 辆
N = 10;
%f_3 车辆的固定成本 元
f3 = 26;
%c_1 燃油单价 元
c1 = 120;
%c_2 维修单价 元
c2 = 10;
%α 车辆折旧程度
alpha = 0.2;
%β 车厢热传导
beta = 40;
%S 车厢表面积 m2
S = 32;
%T 内外温差 ℃
T = 5;
%P_c 制冷剂单价 元/kw
Pc = 0.0007;
%e 冷冻箱耗电成本 元/h
e = 0.0807;
%V_N 冷冻箱容积 KG
VN = 180;
%V_max 运送车的最大容量 KG
Vmax = 2300;
%P 卸货效率
P = 600;
%a_1 司机成本 元
a1 = 15;
%a_2 卸货员成本 元
a2 = 12.5;
%b_i 每个客户索要的赔偿金 元/KG
bi = [0
143
193
167
137
196
188
103
149
182
185
102
157
112
150
152
130
149
181
135
174
];
%点数Nd
Nd = 20;
m = Nd;
n3max = 10;%先假设n3最大为10个车,然后通过优化算法找到尽可能少的车。
MAXGEN = 400;
NIND = 200;
Nums = (Nd+1)*(Nd+1)*n3max+(Nd+1)*n3max+3;%含义是,(Xijk,即i取值为1~Nd,j取值为1~Nd,然后每个车)*总共n3个车
Chrom = crtbp(NIND,Nums*10);
%sh
Areas = [];
for j = 1:n3max
for i = 1:(Nd+1)*(Nd+1)
Areas = [Areas,[0;1]];%出发点
end
end
for j = 1:n3max
for i = 1:(Nd+1)
Areas = [Areas,[0;Q(i)]];
end
end
for j = 1:3
Areas = [Areas,[1;Nd]];
end
FieldD = [rep([10],[1,Nums]);Areas;rep([0;0;0;0],[1,Nums])];
gen = 0;
Js = rand(NIND,1);
Objv = (Js+eps);
gen = 0;
while gen < MAXGEN;
gen
Pe0 = 0.99;
pe1 = 0.01;
FitnV=ranking(Objv);
Selch=select('sus',Chrom,FitnV);
Selch=recombin('xovsp', Selch,Pe0);
Selch=mut( Selch,pe1);
phen1=bs2rv(Selch,FieldD);
for a=1:1:NIND
X = phen1(a,:);
%计算对应的目标值
[epls,Xijk,n3,Qik] = func_obj(X);
E = epls;
JJ(a,1) = E;
Xijk_{a} = Xijk;
n3_{a} = n3;
Qik_{a} = Qik;
end
Objvsel=(JJ);
[Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);
gen=gen+1;
%保存参数收敛过程和误差收敛过程以及函数值拟合结论
Error(gen) = mean(JJ);
end
figure
plot(Error,'linewidth',2);
grid on
xlabel('迭代次数');
ylabel('遗传算法优化过程');
legend('Average fitness');
[V,I] = min(JJ);
n3opt = n3_{I};
Xijkopt = Xijk_{I}(:,:,1:n3);
Qikopt = Qik_{I}(:,1:n3);
02_066m