【布局优化】基于遗传算法的车间布局优化 车间设施布局优化【Matlab代码#50】

文章目录

    • 【`获取资源`请见文章第5节:资源获取】
    • 1. 车间布局优化
    • 2. 基于GA的布局优化模型
    • 3. 部分代码展示
    • 4. 仿真结果展示
    • 5. 资源获取


获取资源请见文章第5节:资源获取】


1. 车间布局优化

车间设施布置的规划一直是工业工程领域不断研究和探索的内容,其中最具代表性之一的是系统布置设计(system layout planning,SLP) 方法。作为一种经典且有效的方法,其为设施布置提供了很好的改善思路,但在长期的发展中也存在一些不可避免的缺点,如计算结果不够精确,很难确保计算结果较优且受人员主观因素的影响较大等。

随着计算机技术的快速发展,基于计算机技术的启发式算法在数据处理、数学建模、运算速度等方面相比传统方法具备更大的优势,因此在用 SLP 方法布置时完全可以将大量计算求解的工作交由计算机处理,从而可大幅度提高布置效率和布置结果的精确性。

目前设施布置设计的模型与算法已经比较成熟,常见的有遗传算法、蚁群算法、模拟退火算法等启发式算法。

2. 基于GA的布局优化模型

车间布局优化模型如下图所示:
在这里插入图片描述
模型目标函数为搬运费用最小化非物流关系最大化

假设布置方案为X,i 和 j 为该方案的作业单位,两者距离用 d i j d_{ij} dij表示,搬运量用 f i j f_{ij} fij表示,可得距离矩阵及物流量矩阵,进而求得物料搬运成本表达式如下:
C 1 = ∑ i = 1 m ∑ j = 1 m c i j f i j d i j C_{1}=\sum_{i=1}^{m} \sum_{j=1}^{m} c_{ij}f_{ij}d_{ij} C1=i=1mj=1mcijfijdij
式中, C 1 C_{1} C1为总搬运成本; c i j c_{ij} cij为各单位之间的搬运成本。非物流关系表达式为:
C 2 = ∑ i = 1 m ∑ j = 1 m T i j b i j C_{2}=\sum_{i=1}^{m} \sum_{j=1}^{m} T_{ij}b_{ij} C2=i=1mj=1mTijbij
式中, C 2 C_{2} C2为非物流关系总和; T i j T_{ij} Tij为作业单位之间非物流关系的紧密程度。

由此可得两个基本目标,即 C 1 C_{1} C1的最小化和 C 2 C_{2} C2的最大化,从而构建双目标函数如下:
m i n C 1 = ∑ i = 1 m ∑ j = 1 m c i j f i j d i j minC_{1}=\sum_{i=1}^{m} \sum_{j=1}^{m} c_{ij}f_{ij}d_{ij} minC1=i=1mj=1mcijfijdij
m a x C 2 = ∑ i = 1 m ∑ j = 1 m T i j b i j maxC_{2}=\sum_{i=1}^{m} \sum_{j=1}^{m} T_{ij}b_{ij} maxC2=i=1mj=1mTijbij
为方便求解,将双目标函数 C 1 C_{1} C1 C 2 C_{2} C2进行合并,得到单目标函数 C C C表达式如下:
m i n C = ∑ i = 1 m ∑ j = 1 m c i j f i j d i j − ∑ i = 1 m ∑ j = 1 m T i j b i j minC=\sum_{i=1}^{m} \sum_{j=1}^{m} c_{ij}f_{ij}d_{ij}-\sum_{i=1}^{m} \sum_{j=1}^{m} T_{ij}b_{ij} minC=i=1mj=1mcijfijdiji=1mj=1mTijbij

此单目标函数仍需进行标准化处理,并且还需以惩罚函数加以限制,

3. 部分代码展示

%% 物料搬运成本最小化和非物流关系最大化的合并目标函数
function [fit,Z1,Z2] = Fitness(P,LW,D,A,C,T,L,W,big)
dmax = max([L W]);
gap = 3;
%% SECTION TITLE
% DESCRIPTIVE TEXT
K = size(P,1);   % 设施数量
%% 计算关联因子
dB = zeros(K);
for i = 1 : Kfor j = i + 1 : Kif D(i,j) <= dmax / 6dB(i,j) = 1;elseif D(i,j) <= dmax / 3dB(i,j) = 0.8;elseif D(i,j) <= dmax / 2dB(i,j) = 0.6;elseif D(i,j) <= dmax * 2 / 3dB(i,j) = 0.4;elseif D(i,j) <= dmax * 5 / 6dB(i,j) = 0.2;elsedB(i,j) = 0;enddB(j,i) = dB(i,j);end
end
%% 目标函数1
Z1 = 0;
for i = 1 : K - 1for j = i + 1 : KZ1 = Z1 + C(i,j) * A(i,j) * D(i,j);end
end
%% 目标函数2
Z2 = 0;
for i = 1 : K - 1for j = i + 1 : KZ2 = Z2 + T(i,j) * dB(i,j);end
end
%% 归化因子计算
u1 = 0;for i = 1 : K - 1for j = i + 1 : Ku1 = u1 + C(i,j) * A(i,j) * dmax;endend
u1 = 1 / u1;
u2 = 0;
for i = 1 : K - 1for j = i + 1 : Ku2 = u2 + T(i,j);end
end
u2 = 1 / u2;
%% 边界约束1
t = 0;
for i = 1 : Kif P(i,1) - LW(i,1) / 2 < gap ||  P(i,1) + LW(i,1) / 2 > L - gapt = t + 1;     % x方向不满足边界要求endif P(i,2) - LW(i,2) / 2 < gap ||  P(i,2) + LW(i,2) / 2 > W - gapt = t + 1;     % y方向不满足边界要求end
end
%%
dtag = (D == big);
dtn = sum(sum(dtag));
t = t + dtn;
%% 适应度
w1 = 3 / 4;
w2 = 1 / 4;
fit = w1 * u1 * Z1 - w2 * u2 * Z2 + 10000000000 * t;

4. 仿真结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 资源获取

可以获取完整代码资源。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

朴素贝叶斯与贝叶斯网络详解

文章目录 一、背景1.1 贝叶斯方法的提出1.2 频率派与贝叶斯派的区别 二、分类问题三、基础知识3.1 条件概率3.2 联合概率3.3 贝叶斯公式4.1 贝叶斯网络介绍4.2 贝叶斯网络的基本结构4.2.1 head-to-head&#xff08;共同作用&#xff09;4.2.2 tail-to-tail&#xff08;共同原因…

学习AJAX

AJAX &#x1f680; HTTP请求报文响应报文 &#x1f684; express框架&#x1f6ac; express基本使用 &#x1f692; 原生AJAX&#x1f6ac; GET.HTML&#x1f6ac; POST.HTML&#x1f6ac; JSON.HTML&#x1f6ac; nodemon工具可以帮助重启服务&#x1f6ac; IE缓存问题&#…

订单系统、报名、预约、表单系统 定制开发功能展示

安装教程环境说明&#xff1a;正常情况下PHP5.3-5.6、阿帕奇、mysql安装即可 安装说明&#xff1a; 1、上传源码压缩包到网站根目录&#xff08;这个请去问下空间商哪个是根目录&#xff0c;每家服务器商不一样&#xff0c;我们也不能确定&#xff0c;请确定是根目录再安装&am…

【C++初阶】类和对象(上)

文章目录 前言一、类的引入二、类的定义三、类的访问限定符及封装四、类的作用域五、类的实例化六、类对象模型七、this指针 前言 &#x1f4d6;面向过程 C语言是面向过程的&#xff0c;关注的是过程&#xff0c;分析出求解问题的步骤&#xff0c;通过函数调用逐步解决问题。以…

pytorch学习第一篇:conda配置jupyter notebooks pytorch

安装jupyter notebooks 创建一个pytorch的环境 conda create -n pytorch python3.10 conda activate pytorch安装jupyter notebook&#xff0c;运行命令 conda install jupyter notebook启动jupyter 运行命令 jupyter notebook或者 notebook查看pyhton版本 import sys p…

【数据结构】_3.List接口实现类ArrayList与线性表

目录 1.List接口 1.1 List接口的集合关系网络 1.2 List的使用 2. ArrayList与顺序表 2.1 线性表 2.2 顺序表 2.3 ArrayList 2.3.1 ArrayList的集合关系网络 2.3.2 ArrayList的使用 2.3.2.1 ArrayList的构造方法 2.3.2.2 ArrayList的扩容机制逻辑示图如下&#xff1…

【江西省研究生数学建模竞赛】第一题 蒸汽发生器倒U型管内液体流动 70页论文及MATLAB代码

【江西省研究生数学建模竞赛】题目之一 蒸汽发生器倒U型管内液体流动 70页论文及MATLAB代码 相关链接 【江西省研究生数学建模竞赛】第一题 蒸汽发生器倒U型管内液体流动 70页论文及MATLAB代码 【江西省研究生数学建模竞赛】第一题 蒸汽发生器倒U型管内液体流动 70页论文及MA…

Thread-local storage is not supported for the current target

xcode编译时遇到上述报错&#xff0c;解决办法&#xff1a;调整最低系统版本配置

BUFG/BUFGCE/BUFH/BUFHCE

对BUFG/BUFGCE/BUFH/BUFHCE简单了解。 下图为 7 系列 FPGA 时钟架构图&#xff1a; BUFG 全局时钟缓冲器。它的输入是IBUFG的输出&#xff0c;BUFG的输出到达FPGA内部的IOB、CLB、选择性块RAM的时钟延迟和抖动最小。BUFG连接的是芯片中的专用时钟资源&#xff0c;能减少信号…

【C】字符串函数和内存函数的介绍

库函数&#xff08;这些函数都在头文件string.h中&#xff09; 字符串函数求字符串长度strlen 长度不受限的字符串函数strcpystrcmpstrcat 长度受限的字符串函数strncpystrncmpstrncat 字符串查找strstrstrtok 错误信息报告strerror 字符操作字符分类函数字符转换函数 内存函数…

API开发,机器人api二次开发

由于自身在机器人方面滚爬多年&#xff0c;尝试了很多次&#xff0c;选择了一个信任的工具 可以给有需要的朋友们借鉴一下 开发起来很方便&#xff0c;技术也已经挺成熟的了 贴一点简单的给大家看下呢 测试文档&#xff1a;https://www.wkteam.cn/ 简要描述&#xff1a; …

.net6中WPF的串口通信和USB通信

之前写过串口通信&#xff0c;不过是winform的。 c#使用串口进行通信_c# 串口通信_故里2130的博客-CSDN博客 今天说一下&#xff0c;.net6中wpf的串口通信和USB通信&#xff0c;在工控行业中&#xff0c;这2种的方式非常多&#xff0c;还有网口通信&#xff0c;它们都是用来和…