m基于GA遗传优化的三维工程施工设施布局算法matlab仿真,显示二维和三维布局优化效果

本文涉及的产品
全球加速 GA,每月750个小时 15CU
简介: m基于GA遗传优化的三维工程施工设施布局算法matlab仿真,显示二维和三维布局优化效果

1.算法描述

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

(1)编码:将问题的候选解用染色体表示,实现解空间向编码空间的映射过程。遗传算法不直接处理解空间的决策变量,而是将其转换成由基因按一定结构组成的染色体。编码方式有很多,如二进制编码、实数向量编码、整数排列编码、通用数据结构编码等等。本文将采用二进制编码的方式,将十进制的变量转换成二进制,用0和1组成的数字串模拟染色体,可以很方便地实现基因交叉、变异等操作。

(2)种群初始化:产生代表问题可能潜在解集的一个初始群体(编码集合)。种群规模设定主要有以下方面的考虑:从群体多样性方面考虑,群体越大越好,避免陷入局部最优;从计算效率方面考虑,群体规模越大将导致计算量的增加。应该根据实际问题确定种群的规模。产生初始化种群的方法通常有两种:一是完全随机的方法产生;二是根据先验知识设定一组必须满足的条件,然后根据这些条件生成初始样本。

(3)计算个体适应度:利用适应度函数计算各个个体的适应度大小。适应度函数(Fitness Function)的选取直接影响到遗传算法的收敛速度以及能否找到最优解,因为在进化搜索中基本不利用外部信息,仅以适应度函数为依据,利用种群每个个体的适应程度来指导搜索。

(4)进化计算:通过选择、交叉、变异,产生出代表新的解集的群体。选择(selection):根据个体适应度大小,按照优胜劣汰的原则,淘汰不合理的个体;交叉(crossover):编码的交叉重组,类似于染色体的交叉重组;变异(mutation):编码按小概率扰动产生的变化,类似于基因突变。

(5)解码:末代种群中的最优个体经过解码实现从编码空间向解空间的映射,可以作为问题的近似最优解。这是整个遗传算法的最后一步,经过若干次的进化过程,种群中适应度最高的个体代表问题的最优解,但这个最优解还是一个由0和1组成的数字串,要将它转换成十进制才能供我们理解和使用。

   通过对一个施工场地的设施进行布局建模仿真(一种二次分配问题),得到最优化的布置结果,要求对施工场地的设施、道路和车辆这三类主体分别编写子程序,做一个具体工程施工设施布局的模拟仿真。 设施均假设为长方体,其属性为设施面积、设施高度以及设施位置,设施用字母F表示。设施面积的表示需要分为两类,第一类设施面积表示为AS=C×R×T(C、R、T均为提前设定的常数),这一类设施在此项目中共有7个(分为F1至F7,对应7组C、R、T的值);第二类设施面积AP=K×R(K和R均为提前设定的常数),这一类设施在此项目中共有3个(分为F8至F10,对应3组K、R的值);

   要求每条道路路线不得横穿运输路线上所经设施以外的其他设施或固定建筑,故需用A*算法确定路线(若有更好的算法也可替代),又因为道路有最小宽度的要求,R1宽度为5m,R2至R7宽度为3m,可以通过为A*算法划分不同大小的网格(3×3或5×5)来实现宽度的考虑(有别的更好地想法也可提出)

  车辆具备的属性为车辆尺寸、车辆高度、单位运输费用,车辆用字母C表示,此项目中车辆种类分为两类,小型运输车C1,长宽高为2×1×2(需要的道路宽度为3m)和大型运输车C2,长宽高为9.6×2.4×4(需要的道路宽度为5m),车辆的行为是从设施i将相应的材料运输至设施j,在案例工程中,7条道路运输材料所对应的车辆使用情况为:R1→C2、R2至R7→C1

综上所述:整个步骤如下:

步骤一:为10个设施在场地中随机分配初始位置和变化速度

步骤二:通过α值的变化,调整各个设施的长度和宽度,验证各设施不会重叠、不会与已有的建筑物重叠、且不会布置于场地范围之外,否则重新分配各设施位置

步骤三:确定道路的走向和宽度,从而确定各个运输路线的长度d

系属性,计算各个设施位置的适应值,根据函数适应值调整设施位置和速度的变化

步骤四:进入下一步迭代,重复步骤二至六,直至满足适应值最小值或最大迭代次数为止

步骤五:输出迭代过程曲线图、最终10个设施的形心位置、长和宽、道路中心线的方程、以及最终场地布置的三维图(包括场地范围、道路、固定建筑以及设施,固定建筑与设施用不同颜色表示)

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

1.png
2.png
3.png
4.png
5.png
6.png
7.png
8.png

3.MATLAB核心程序

% R1:F1→F8→T1/T2
% R2:F2→F9→T1/T2
% R3:F4→F9→T1/T2
% R4:F3→F9→T1/T2
% R5:F5→F9→T1/T2
% R6:F6→F10→T1/T2
% R7:F7→F8→T1/T2
% T1坐标(81.3, 41.4),T2坐标(81.3, 14.6)
global T1;
global T2;
global R;
T1=[95.3, 45.4];
T2=[95.3, 18.6];
%宽度
R =[5,3,3,3,3,3,3];
 
global C1;
global Wreq1;
global C2;
global Wreq2;
%3车辆
C1   = [2,1,2];
Wreq1= [3];
C2   = [9.6,2.4,4];
Wreq2= [5];
 
%定义关系值c
self = -1;
c1j  =[self,1,1,1,1,0,0,3.5,0,0];
c2j  =[1,self,2,2,2,0,0,0,3.5,0];
c3j  =[1,2,self,2,2,0,0,0,3.5,0];
c4j  =[1,2,2,self,2,0,0,0,3.5,0];
c5j  =[1,2,2,2,self,0,0,0,3.5,0];
c6j  =[0,0,0,0,0,self,2,0,0,3.5];
c7j  =[0,0,0,0,0,0,self,3,0,0];
c8j  =[3.5,0,0,0,0,0,0,self,1,1];
c9j  =[0,3.5,0,0,3.5,0,0,1,self,1];
c10j =[0,0,0,0,0,3.5,0,1,1,self];
global cij;
cij  =[c1j;c2j;c3j;c4j;c5j;c6j;c7j;c8j;c9j;c10j];
for i = 1:length(cij);
    for j = 1:length(cij); 
        if i>j
           cij(i,j)=cij(j,i);
        end
    end
end
 
global Money;
global WL;
%E_ij指设施i到设施j材料运输单位距离消耗的费用,对应7条道路的取值如下:
Money = [500,200,200,200,200,200,200];
%E物流量
WL    = [16,13.3,26.6,4.8,72,8,8];
 
%两个目标F1和F2的归一化分母值
global NML1;
global NML2;
NML1  = 100;
NML2  = 1e8;
 
 
global step;
global x;
global y;
global X0;
global Y0;
global RR;
global CC;
global MAP1;
global MAP2;
%4环境
step = 0.1;
x    = [0:step:152.1];
y    = [0:step:60.1];
X0   = [];
Y0   = [];
X1   = [];
Y1   = [];
idx1 = 0;
idx2 = 0;
%定义一个图片用来映射当前的场地
RR   = round(max(y)/step);
CC   = round(max(x)/step);
MAP1 = 0.1*ones(RR,CC);
MAP2 = 2*ones(RR,CC);
 
for i =1:length(x)
    for j =1:length(y)
        if (y(j)>0.29*x(i)&x(i)<17.5000|...
           y(j)>0.03*x(i)+4.55&x(i)<128.5833&x(i)>=17.5000|...
           y(j)>0.51*x(i)-57.17&x(i)<151.1589&x(i)>=128.5833|...
           y(j)>25.56*x(i)-3843.7&x(i)<152.1&x(i)>=151.1589)&...
           (y(j)<-0.03*x(i)+48.2&x(i)<152.1&x(i)>=22.7077|...
           y(j)<-0.68*x(i)+62.96&x(i)<22.7077&x(i)>=4.2003|...
           y(j)<5.06*x(i)+38.85&x(i)<4.2003&x(i)>=0.7999|...
           y(j)<53.63*x(i)&x(i)<0.7999)
           idx1= idx1+1;
           X0(idx1)= [x(i)];
           Y0(idx1)= [y(j)];
           %F2
           if (x(i)<75.6 | x(i)>87.1) | (y(j)<34.2 | y(j)>41.4)
                %F3
                if (x(i)<75.6 | x(i)>87.1) | (y(j)<14.7 | y(j)>21.9)
                %F1
                    if (x(i)<33.9 | x(i)>50.6)|(y(j)<20.8 | y(j)>34.2) 
                        if (x(i)<24.9 | x(i)>58.1)|(y(j)<14.8 | y(j)>20.8)
                            if(x(i)<24.9 | x(i)>58.1)|(y(j)<34.2 | y(j)>40.2)
                                idx2= idx2+1;
                                X1(idx2)= [x(i)];
                                Y1(idx2)= [y(j)];
                            end
                       end
                    end
                end
           end
        end
    end
end
%第二个MAP用于三维显示使用,第二个MAP用于路径搜索使用
for i = 1:length(X0)
    MAP1(RR-round(Y0(i)/step)+1,round(X0(i)/step))=0; 
end
for i = 1:length(X1)
    MAP2(RR-round(Y1(i)/step)+1,round(X1(i)/step))=0; 
end
MAP = MAP2;
 
 
load step22.mat 
%%
%下面开始使用遗传优化算法
%根据遗传算法进行参数的拟合
MAXGEN = 40;
NIND   = 25;
Nums   = 1;
Sm     = 0;
Areas  = [];
for i = 1:Nums
    Areas =[Areas,[50;100]];
end
% for i = 1:Nums
%     Areas =[Areas,[1;5000]];
% end
Chrom  = crtbp(NIND,Nums*10);
FieldD = [rep([10],[1,Nums]);Areas;rep([0;0;0;0],[1,Nums])];
for a=1:NIND 
    epls       = 10;
    E          = epls;
    Js(a,1)    = E;
end
Objv  = (Js+eps);
gen   = 0; 
 
Pe0 = 0.9;
pe1 = 0.1; 
JJ2 = [];
idx_final=[];
FIT2= [];
while gen <= MAXGEN
      gen = gen+1;
      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
          [a,gen]
          idx     = floor(phen1(a));
          if idx > length(infor)
             idx = length(infor);
          end
 
          xij     = infor{idx}(end,:);
          %计算对应的目标值
          epls    = func_objtive2(xij,MAP);
          E       = epls;
          JJ(a,1) = E;
      end  
      Objvsel      = [JJ];  
      [Chrom,Objv] = reins(Chrom,Selch,1,1,Objv,Objvsel);       
      
      JJ_         = JJ;
      index2      = find(JJ == 100);
      JJ_(index2) = [];
      
      FIT(gen)    = mean(JJ_);
      
      if gen<=32
         FIT2(gen)= mean(FIT(1:gen));
      else
         FIT2(gen)= mean(FIT(gen-32:gen));
      end   
end
02_071m
相关文章
|
7天前
|
算法 5G 数据安全/隐私保护
3D-MIMO信道模型的MATLAB模拟与仿真
该研究利用MATLAB 2022a进行了3D-MIMO技术的仿真,结果显示了不同场景下的LOS概率曲线。3D-MIMO作为5G关键技术之一,通过三维天线阵列增强了系统容量和覆盖范围。其信道模型涵盖UMa、UMi、RMa等场景,并分析了LOS/NLOS传播条件下的路径损耗、多径效应及空间相关性。仿真代码展示了三种典型场景下的LOS概率分布。
21 1
|
1天前
|
算法 数据挖掘 vr&ar
基于ESTAR指数平滑转换自回归模型的CPI数据统计分析matlab仿真
该程序基于ESTAR指数平滑转换自回归模型,对CPI数据进行统计分析与MATLAB仿真,主要利用M-ESTAR模型计算WNL值、P值、Q值及12阶ARCH值。ESTAR模型结合指数平滑与状态转换自回归,适用于处理经济数据中的非线性趋势变化。在MATLAB 2022a版本中运行并通过ADF检验验证模型的平稳性,适用于复杂的高阶自回归模型。
|
1天前
|
机器学习/深度学习 算法
基于心电信号时空特征的QRS波检测算法matlab仿真
本课题旨在通过提取ECG信号的时空特征并应用QRS波检测算法识别心电信号中的峰值。使用MATLAB 2022a版本实现系统仿真,涵盖信号预处理、特征提取、特征选择、阈值设定及QRS波检测等关键步骤,以提高心脏疾病诊断准确性。预处理阶段采用滤波技术去除噪声,检测算法则结合了一阶导数和二阶导数计算确定QRS波峰值。
|
1天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于PSO粒子群优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了一种结合粒子群优化(PSO)与分组卷积神经网络(GroupCNN)的时间序列预测算法。该算法通过PSO寻找最优网络结构和超参数,提高预测准确性与效率。软件基于MATLAB 2022a,提供完整代码及详细中文注释,并附带操作步骤视频。分组卷积有效降低了计算成本,而PSO则智能调整网络参数。此方法特别适用于金融市场预测和天气预报等场景。
|
5天前
|
算法 5G 数据安全/隐私保护
SCM信道模型和SCME信道模型的matlab特性仿真,对比空间相关性,时间相关性,频率相关性
该简介展示了使用MATLAB 2022a进行无线通信信道仿真的结果,仿真表明信道的时间、频率和空间相关性随间隔增加而减弱,并且宏小区与微小区间的相关性相似。文中介绍了SCM和SCME模型,分别用于WCDMA和LTE/5G系统仿真,重点在于其空间、时间和频率相关性的建模。SCME模型在SCM的基础上进行了扩展,提供了更精细的参数化,增强了模型的真实性和复杂度。最后附上了MATLAB核心程序,用于计算不同天线间距下的空间互相关性。
10 0
|
5天前
|
算法
基于极大似然算法的系统参数辨识matlab仿真
本程序基于极大似然算法实现系统参数辨识,对参数a1、b1、a2、b2进行估计,并计算估计误差及收敛曲线,对比不同信噪比下的误差表现。在MATLAB2022a版本中运行,展示了参数估计值及其误差曲线。极大似然估计方法通过最大化观测数据的似然函数来估计未知参数,适用于多种系统模型。
|
5天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于NSCT非采样轮廓波变换和CNN网络人脸识别matlab仿真
本项目展示了一种结合非采样轮廓波变换(NSCT)与卷积神经网络(CNN)的人脸识别系统。通过NSCT提取多尺度、多方向特征,并利用CNN的强大分类能力实现高效识别。项目包括ORL人脸库的训练结果对比,提供Matlab 2022a版本下的完整代码及详细中文注释,另有操作步骤视频指导。
|
1月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
106 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
1月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
79 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
1月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
62 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码