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

news2024/9/24 11:21:22

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整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仿真结果如下:

 

 

 

 

3.MATLAB核心程序

%2道路的参数
% 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

4.完整MATLAB

V

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/78998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matplotlib学习笔记(第二章 2.13 Matplotlib中的图形(三))

图例(Legends) legend()函数&#xff0c;使用MATLAB兼容的图例&#xff0c;放置函数自动生成图形图例。 感谢查尔斯特沃迪对图例功能的投入。 Fig. 19: Legend 文本对象的Tex表示法(TeX-notation for text objects) 下面是Matplotlib内部的mathtext工程支持的许多Tex表达式…

基于C#+SQLServer 2005实现(WinForm)校园卡消费信息系统【100010013】

校园卡消费信息管理系统 一、前言 1.1 选题说明 校园卡消费信息系统是一个实用并且与我们的学校生活密切相关的管理信息系统&#xff1b;如果能够很好的研究、开发并加以利用&#xff0c;校园卡的相关业务会变得更加简单、学生能更便利地进行消费同时准确了解自己的消费情况…

信号包络提取

目录 一、信号包络提取的相关应用&#xff1a; 二、信号包络提取方法 1、希尔伯特变换-Hilbert Transform 1.1 公式原理 1.2 例子说明 2、平方能量包络提取 3、香农能量包络提取 三、3种方法的对比 一、信号包络提取的相关应用&#xff1a; 1&#xff09;当某一个机械部…

多副本自动化发布——standalone下

一: supervisor 具体这玩意是干嘛的,我就不说了,大家自己看官网: http://www.supervisord.org/ 接下来快速部署一下。 1. pip pip是python的一个包管理器,类似于nuget,如果你的centos上没有安装,那么请执行下面命令。 1 yum -y install epel-release 2 yum -y inst…

经矩形窗截断的信号频谱泄露现象研究-附Matlab代码

⭕⭕ 目 录 ⭕⭕✳️ 一、频谱泄露现象✳️ 二、原因分析以及解决方法✳️ 三、Matlab程序获取与验证✳️ 一、频谱泄露现象 有一个余弦信号&#xff0c;信号频率30Hz&#xff0c;信号为x(t)cos(2π30t)&#xff0c;采样频率fs128Hz&#xff0c;样本长度分别取N128和N100&…

代码随想录算法训练营第四天| 24. 两两交换链表中的节点 ,19.删除链表的倒数第N个节点 ,面试题 02.07. 链表相交 ,142.环形链表II

代码随想录算法训练营第四天| 24. 两两交换链表中的节点 &#xff0c;19.删除链表的倒数第N个节点 &#xff0c;面试题 02.07. 链表相交 &#xff0c;142.环形链表II 24. 两两交换链表中的节点 用虚拟头结点&#xff0c;这样会方便很多。 本题链表操作就比较复杂了&#xff…

MicroPython-On-ESP8266——8x8LED点阵模块(4)基于MAX7219滚动显示字符/图案

MicroPython-On-ESP8266——8x8LED点阵模块&#xff08;4&#xff09;基于MAX7219滚动显示字符/图案 1. 继续折腾点阵模块 咱们已经学习了点阵屏基础电路与驱动原理&#xff0c;并用74HC595和MAX7219都成功地驱动点阵屏显示了爱心图案。 MicroPython-On-ESP8266——8x8LED点…

python-(6-5-2)爬虫---处理cookie来获取书架数据

文章目录一 需求二 流程分析1 登录2 获取书架的数据三 完整代码一 需求 通过处理cookie来访问自己的书架资源。 二 流程分析 带着cookie&#xff0c;去请求url&#xff0c;得到书架内容。 要将上述的两个操作连续起来&#xff0c;可以使用session。 session是一连串的请求…

自动驾驶之多任务方法调研

1. YOLOP github C TRT TX2 我们提出了一种高效的多任务网络&#xff0c;该网络可以联合处理自动驾驶中的目标检测(车&#xff0c;没有红绿灯)、可驾驶区域分割和车道检测三个关键任务 速度&#xff1a; TX2上23FPS&#xff1b;TAITAN XP上41FPS. 自测结果: 灵活性: 支持…

RNN LSTM GRU

GRU是LSTM的简化结构&#xff0c;而LSTM是RNN的优化结构。 1.RNN RNN对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息. 将网络的输出保存在一个记忆单元中&#xff0c;这个记忆单元的输出经过权重参数调整后和下一次的输入一起进入神经网络中…

队列之王: Disruptor 原理、架构、源码 一文穿透

文章很长&#xff0c;而且持续更新&#xff0c;建议收藏起来&#xff0c;慢慢读&#xff01;疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 &#xff1a; 免费赠送 :《尼恩Java面试宝典》 持续更新 史上最全 面试必备 2000页 面试必备 大厂必备 涨薪必备 免费赠送 经典…

MySQL innodb引擎架构分析-Redo log

文章目录系列文章目录前言一、Redo log是什么&#xff1f;二、Redo log是怎么工作的Redo log的组成Redo log的配置Redo log何时刷盘总结系列文章目录 1. MySQL innodb引擎架构分析-Buffer Pool 2. MySQL innodb引擎架构分析-Redo log 前言 在MySQL的事物处理过程中&#xff0c…

12 款 yyds 的 IDEA插件,配上18条使用技巧,绝了

工欲善其事&#xff0c;必先利其器。想要提升编程开发效率&#xff0c;必须选择一款顺手的开发工具。 JetBrains 公司提供了一系列功能强大、风格统一的开发工具&#xff0c;深受开发者喜爱。其中&#xff0c;IDEA 是面向 Java 开发的专业 IDE&#xff08;集成开发环境&#x…

python os.system调用别的系统程序总出现一闪而过的黑框解决办法

python os.system调用别的系统程序总出现一闪而过的黑框解决办法 今天打包了py程序&#xff0c;运行的时候发现老是有个黑框一闪而过。经过多次尝试发现是os.system的问题&#xff0c;调用这个函数会调用cmd&#xff0c;所有会出现短暂的黑框显示。 解决办法1&#xff1a;换用…

HarmonyOS跨端迁移开发代码演示

目录说些废话开源代码环境代码ability_main.xmlconfig.jsonMainAbility.javaMainAbilitySlice.java测试说些废话 官方文档&#xff1a;跨端迁移开发指导&#xff08;基于java开发&#xff09;     下面环境里写的两台真机我测试的时候无法正常产生回迁效果&#xff0c;所以…

以太网 DHCP(DHCP的8种报文、DHCP配置、DHCP中继)

2.13.1 以太网 DHCP&#xff08;DHCP的8种报文、DHCP配置、DHCP中继&#xff09; DHCP-22.13.1 以太网 DHCP&#xff08;DHCP的8种报文、DHCP配置、DHCP中继&#xff09;一、DHCP的8种报文二、DHCP配置接口配置&#xff1a;全局配置&#xff1a;三、DHCP中继配置案例&#xff1…

游戏开发52课 渲染路径

4.6 渲染路径&#xff08;Rendering Path&#xff09; 4.6.1 经典顶点光&#xff08;Legacy Vertex Lit&#xff09; 严格来说&#xff0c;它也是前向渲染的一种&#xff0c;但有些引擎&#xff08;如Unity&#xff09;将它单独抽离出来。由于光照计算在顶点&#xff0c;所以…

微服务架构系列(一)之虚拟平台、分布式存储、高可用k8s集群环境搭建

一、物理机虚拟平台搭建 1、由实向需架构转换图&#xff08;每台物理机要求两块硬盘用来做分布式存储和系统盘&#xff0c;我的是10年前的老机器没啥大的要求&#xff09;&#xff1a; 2、系统安装去官网下载 Proxmox VE 7.x ISO Installer &#xff08;按需求选择版本&#x…

sublime text 4的安装/配置中文/更换配色方案

效果 安装 参考文章&#xff1a;Sublime Text v4.0(4143)安装方法 Sublime Text v4.0(4143)下载地址&#xff1a;https://www.sublimetext.com/download_thanks?targetwin-x64 安装软件找到软件安装位置&#xff0c;找到sublime_text.exe将sublime_text.exe 拖入16进制编辑…

[附源码]计算机毕业设计基于协同过滤的资讯推送平台Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…