m基于遗传优化算法的车辆货物运输问题matlab仿真,包括行驶距离,等待卸货时间及货损等问题

简介: m基于遗传优化算法的车辆货物运输问题matlab仿真,包括行驶距离,等待卸货时间及货损等问题

1.算法描述
首先介绍MATLAB部分的遗传算法的优化算法介绍:

   遗传算法的原理

   遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的“环境”中,并按适者生存的原则,从中选择出较适应环境的“染色体”进行复制,再通过交叉,变异过程产生更适应环境的新一代“染色体”群。这样,一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就是问题的最优解。

一、遗传算法的目的

    典型的遗传算法CGA(Canonical Genetic Algorithm)通常用于解决下面这一类的静态最优化问题:考虑对于一群长度为L的二进制编码bi,i=1,2,…,n;有

bi{0,1}L (3-84)

给定目标函数f,有f(bi),并且

0

同时f(bi)≠f(bi+1)求满足下式

max{f(bi)|bi{0,1}L}

的bi。很明显,遗传算法是一种最优化方法,它通过进化和遗传机理,从给出的原始解群中,不断进化产生新的解,最后收敛到一个特定的串bi处,即求出最优解。

二、遗传算法的基本原理

    长度为L的n个二进制串bi(i=1,2,…,n)组成了遗传算法的初解群,也称为初始群体。在每个串中,每个二进制位就是个体染色体的基因。根据进化术语,对群体执行的操作有三种:

1.选择(Selection)

这是从群体中选择出较适应环境的个体。这些选中的个体用于繁殖下一代。故有时也称这一操作为再生(Reproduction)。由于在选择用于繁殖下一代的个体时,是根据个体对环境的适应度而决定其繁殖量的,故而有时也称为非均匀再生(differential reproduction)。

2.交叉(Crossover)

这是在选中用于繁殖下一代的个体中,对两个不同的个体的相同位置的基因进行交换,从而产生新的个体。

3.变异(Mutation)

这是在选中的个体中,对个体中的某些基因执行异向转化。在串bi中,如果某位基因为1,产生变异时就是把它变成0;反亦反之。

遗传算法的原理可以简要给出如下:

choose an intial population

determine the fitness of each individual

perform selection

repeat

perform crossover

perform mutation

determine the fitness of each individual

perform selection

until some stopping criterion applies

    这里所指的某种结束准则一般是指个体的适应度达到给定的阀值;或者个体的适应度的变化率为零。

三、遗传算法的步骤和意义
1.初始化

选择一个群体,即选择一个串或个体的集合bi,i=1,2,...n。这个初始的群体也就是问题假设解的集合。一般取n=30-160。

通常以随机方法产生串或个体的集合bi,i=1,2,...n。问题的最优解将通过这些初始假设解进化而求出。

2.选择

根据适者生存原则选择下一代的个体。在选择时,以适应度为选择原则。适应度准则体现了适者生存,不适应者淘汰的自然法则。

给出目标函数f,则f(bi)称为个体bi的适应度。以

为选中bi为下一代个体的次数。

显然.从式(3—86)可知:

(1)适应度较高的个体,繁殖下一代的数目较多。

(2)适应度较小的个体,繁殖下一代的数目较少;甚至被淘汰。

这样,就产生了对环境适应能力较强的后代。对于问题求解角度来讲,就是选择出和最优解较接近的中间解。

3.交叉

对于选中用于繁殖下一代的个体,随机地选择两个个体的相同位置,按交叉概率P。在选中的位置实行交换。这个过程反映了随机信息交换;目的在于产生新的基因组合,也即产生新的个体。交叉时,可实行单点交叉或多点交叉。

例如有个体

S1=100101

S2=010111

选择它们的左边3位进行交叉操作,则有

S1=010101

S2=100111

一般而言,交 婊显譖。取值为0.25—0.75。

4.变异

根据生物遗传中基因变异的原理,以变异概率Pm对某些个体的某些位执行变异。在变异时,对执行变异的串的对应位求反,即把1变为0,把0变为1。变异概率Pm与生物变异极小的情况一致,所以,Pm的取值较小,一般取0.01-0.2。

例如有个体S=101011。

对其的第1,4位置的基因进行变异,则有

S'=001111

单靠变异不能在求解中得到好处。但是,它能保证算法过程不会产生无法进化的单一群体。因为在所有的个体一样时,交叉是无法产生新的个体的,这时只能靠变异产生新的个体。也就是说,变异增加了全局优化的特质。

我们的 优化模型如下:

1.png
2.png

2.仿真效果预览
matlab2022a仿真结果如下:

3.png

3.MATLAB核心程序

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
相关文章
|
15小时前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
|
5天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
|
13天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如&quot;How are you&quot;、&quot;I am fine&quot;、&quot;I love you&quot;等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
19天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
25天前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
13天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
21天前
|
算法
基于GA遗传算法的PID控制器参数优化matlab建模与仿真
本项目基于遗传算法(GA)优化PID控制器参数,通过空间状态方程构建控制对象,自定义GA的选择、交叉、变异过程,以提高PID控制性能。与使用通用GA工具箱相比,此方法更灵活、针对性强。MATLAB2022A环境下测试,展示了GA优化前后PID控制效果的显著差异。核心代码实现了遗传算法的迭代优化过程,最终通过适应度函数评估并选择了最优PID参数,显著提升了系统响应速度和稳定性。
|
18天前
|
算法
基于WOA鲸鱼优化的购售电收益与风险评估算法matlab仿真
本研究提出了一种基于鲸鱼优化算法(WOA)的购售电收益与风险评估算法。通过将售电公司购售电收益风险计算公式作为WOA的目标函数,经过迭代优化计算出最优购电策略。实验结果表明,在迭代次数超过10次后,风险价值收益优化值达到1715.1万元的最大值。WOA还确定了中长期市场、现货市场及可再生能源等不同市场的最优购电量,验证了算法的有效性。核心程序使用MATLAB2022a实现,通过多次迭代优化,实现了售电公司收益最大化和风险最小化的目标。
|
22天前
|
算法
通过matlab分别对比PSO,反向学习PSO,多策略改进反向学习PSO三种优化算法
本项目使用MATLAB2022A版本,对比分析了PSO、反向学习PSO及多策略改进反向学习PSO三种优化算法的性能,主要通过优化收敛曲线进行直观展示。核心代码实现了标准PSO算法流程,加入反向学习机制及多种改进策略,以提升算法跳出局部最优的能力,增强全局搜索效率。
|
16天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。

热门文章

最新文章