✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
智能优化算法 神经网络预测 雷达通信 无线传感器
信号处理 图像处理 路径规划 元胞自动机 无人机
⛄ 内容介绍
GA具有并行搜索能力, 从解空间中多点出发搜索问题的最优解,但它也有不足, 进行局部搜索能力差, 导致发生早熟。 这是因为算法的变异概率太小, 引入新染色体的机会少, 如果变异概率取大些, 传统的变异算子将导致算法随机性很大, 使搜索过程过于盲目。
TS算法的基本思想是:假设给出一个解和一个邻域,首先在这个邻域中找出一个最好的局部解作为当前解x,令当前最优解x*=x,然后再在这个当前解的邻域中搜索最好的局部解x’.但是,这个最好的局部解有可能与x*相等,为了避免这种循环的无用功,设置一个记忆近期操作的禁忌表,如果当前操作时记录在此表中的操作,那么这一操作就会被禁止,否则用x’取代x。此时x’的目标函数值可能劣于x的目标函数值,所以TS算法接受劣解。但是对于那些优于当前最优解的操作,可以忽视其被禁止的行为,以便迅速找到更好的解,同时为了保证搜索空间的广泛性,对每个被禁止的操作,设定一个期限,在下次操作时,这个值就减1,当这个值为0时,该操作可重新变成不被禁止的行为。对于那些出现频率较高的操作,为了不重复这样的操作,对该操作设定一个频率值,该操作每出现一次,频率值就加1,当频率值超过设定值时,该操作就会被列入禁忌表。重复上述搜多过程,直至满足停止准则。
1) 在搜索过程中可以接受劣解,所以具有较强的爬山能力; 这样, 搜索时能跳出局部最优解;
2) 新解不是在当前解的邻域中随机产生, 而是从中选取最好解, 即最好解的产生概率远远大于其他解。
GATS的求解步骤:
Step 0 参数设置(最大代数Ngen ,群体规模Npop ,重组概率pc ,变异概率pm )
Step 1 令t = 0; 生成初始群体;
Step 2 计算当前代群体中染色体的适应值;
Step 3 选择: 按滚轮方式选出N pop个染色体,放入交配池中;
Step 4 交叉重组
step 4.1 生成0,1之间的随机数ri ,i=1,2,…,Npop; 如果ri<pc ,则交配池中第i个
染色体作为交叉的父代,产生均值为pc* Npop个父代染色体;
step 4.2 对每对双亲进行交叉操作,产生两个子代;
step 4.3 调用TSR对交叉后得到的子代进行重组;
Step 5变异
step 5.1 生成0,1之间的随机数ri ,i=1,2,… ,Npop ;如果有ri < pm ,则调用TSM对交配池中第i个染色体进行变异操作;
step 5.2 t=t+1; 如果t<N gen ,转Step2;否则输出最优解,终止算法.
编码:
一是物品的三维坐标用二进制表示编码太长,将会导致搜索空间急剧扩大,算法性能降低;二是坐标值的调整变化仅描述了待布局物本身位置的改变,可能会使待布局物之间出现交叉现象,而处理交叉问题计算量特别大。
1. 货物装载次序规则
在车厢中装载货物遵循以下原则:
(1)依次沿左侧至右侧方向(即y轴方向) 、沿后端到前端方向(即x轴方向) 逐层放置;
(2)然后从下到上(即z轴方向) 放置每一层;
(3)每个供应商的所有货物按体积大小依次装箱
在考虑汽车零部件包装箱长、宽、高等三维尺寸的约束下,以配送中心为原点,分派多辆同一规格的货车到n个供应商处取货,最后回到配送中心。本章所构建的三维装载约束下的汽车零部件循环取货路径优化模型要解决的问题是确定循环取货路径,要求充分考虑汽车零部件在货车车厢中的三维装载位置,确保每个供应商处的零部件均能成功装载,尽可能使车辆装载率最大,且所有车辆的总行驶路径最短。
基于上述分析,本文所研究的循环取货优化问题可做如下假设:
假设条件:
(1)一个配送中心与多个供应商,且车辆从配送中心出发,最后均回到配送中心;
(2)每辆货车车厢规格(即车厢长、宽、高,载重质量等)均相同;
(3)每辆货车匀速行驶,且行驶速度已知;不存在交通堵塞情况;
(4)配送中心与各零部件供应商以及各供应商之间的距离已知;
(5)各供应商处提供的零部件均由长方体箱包装,且各长方体箱的尺寸、数量、重量等参数已知;
(6)每个供应商提供的零部件总体积、总重量均小于每辆车的容积与载重质量;每个供应商只由一辆车完成服务,且只服务一次;
(7)每条线路上的货物总重量、总体积不得超过货车载重质量及容积;
(8)考虑汽车零部件供应的准时性,每辆货车必须在规定时间以内返回配送中心;
(9)零部件(指长方体包装箱,下同)必须在车厢内部,不得超出车厢车门;
(10)零部件的边总是与车厢的边平行或者垂直、高度方向与车厢高度方向平行,且不得倒置;
(11)货物的重心即为几何中心。
⛄ 部分代码
close all;
clear;
clc;
format long;
%load data of mat file trans from excel
load_data;
%set data of known infomation
set_data;
%get the distance among the nodes
get_distance;
%preparation for true task
preparation;
%GA
%GA_for_route;
%GA for tabu
GA_tabu_for_route;
%plot
plot_final;
⛄ 运行结果
⛄ 参考文献
[1]王长琼, 戚小振. 三维装载约束下的汽车零部件循环取货路径优化研究[J]. 武汉理工大学学报:交通科学与工程版, 2015, 39(6):5.