优化问题|生产车间布局优化问题及遗传算法求解(MATLAB)

问题描述

生产车间布局优化的主要目标是实现作业单位间非物流关系的最大化和物料搬运成本的最小化,并由此作出如下合理假设:

复制代码
1. 所有作业单位所在平面为共平面;

2. 各单位形状均为矩形,忽略形状细节,且各个矩形边与 X 轴、Y 轴平行;

3. 不同作业单位间单位运输成本一致

数学模型

参数变量

C 1 C_1 C1: 总搬运成本

C 2 C_2 C2: 非物流关系总和

c i j c_ij cij:各作业单元之间的搬运成本

T i j T_ij Tij: 各作业单元之间非物流关系的紧密程度

b i j b_ij bij: 各作业单元之间非物流关系的关联因子

x i , y i x_i, y_i xi,yi:作业单元 i i i的X轴、Y轴中心坐标

L i , W i L_i, W_i Li,Wi: 作业单元 i i i的长度和宽度

L , W L, W L,W: 作业车间的长度和宽度

目标函数

目标函数为作业单位间非物流关系的最大化和物料搬运成本的最小化

将双目标转化为单目标优化问题:

约束条件

作业单位之间不能重叠

各作业单元不超出车间的边界范围

遗传算法求解

编码规则

基因编码包括两部分:一部分为每个作业单元的中心坐标编码,一部分为每个作业单元的摆放方向(0-1编码,1表示水平放置,0表示竖直放置)

选择方式

采用轮盘赌方法选择个体保留进入下一代循环,其中即个体被选中的概率与其适应度

值大小存在一定的比例关系,适应度值越高,占比越大,被选中的概率就越大

交叉和变异

部分匹配交叉方式进行交叉操作

基本位变异方式,即随机产生变异位进行二进制变异

部分代码展示

变异操作
复制代码
% 输入参数:
% x: 种群编码
% Gnum: 作业单元数量
% gap: 设备与边界的间距
% dist: 设备间的间距
% LWO: 作业单元的尺寸
% L, W:车间尺寸

function f0 = Mutate(x,Gnum,dim,gap,dist,LW0,L,W,minbound,maxbound,big)

    n = numel(x);
    f0 = x;

    try_num_sum = 500;
    trys = 0;
    flag = 0;
    while flag == 0
        pos=randi([1,n]); %选择变异位点
        if pos <= dim
            v=maxbound(pos)-minbound(pos);
            v0= rand*v;%变异选择位点的值
            while x(pos)==v0
                v0= rand*v;
            end
            f0(pos)=v0;
            f0(1) = L/2;
        else
            f0(pos)=1-x(pos);
            f0(dim+1)=0;
        end
        p = [f0(1:Gnum); f0(Gnum+1:dim)]';
        y = f0(dim+1:end);
        LW= LW0;
        for k = 1 : Gnum
            LW(k,1) = y(k)*LW0(k,1)+(1-y(k))*LW0(k,2);
            LW(k,2) = (1-y(k))*LW0(k,1)+y(k)*LW0(k,2);
        end
        flag1 = isInRange_1(p,gap,LW,L,W);
        flag2 = nonoverlap(p,dist,LW,big);
        flag=flag1*flag2;

        trys = trys + 1;
        if(trys>try_num_sum)
            f0 = x;
            break;
        end
    end
end

结果展示

迭代曲线
布局图

参考文献

闫向彤,张永鑫,李佩泽,等.基于遗传算法的车间布局优化研究[J].机械设计与制造工程,2021,50(09):88-92.

相关推荐
彩妙不是菜喵7 分钟前
C++ 中 nullptr 的使用与实践:从陷阱到最佳实践
开发语言·jvm·c++
lskisme28 分钟前
springboot maven导入本地jar包
开发语言·python·pycharm
开心-开心急了1 小时前
pyside6实现win10自动切换主题
开发语言·python·pyqt·pyside
沐知全栈开发1 小时前
Foundation 模态框
开发语言
wjs20241 小时前
CSS 导航栏
开发语言
共享家95272 小时前
Qt窗口教程(上)
开发语言·qt
zizisuo2 小时前
16000+字!Java集合笔记
java·开发语言
星释2 小时前
Rust 练习册 :Nucleotide Codons与生物信息学
开发语言·算法·rust
熊猫钓鱼>_>2 小时前
Java面向对象核心面试技术考点深度解析
java·开发语言·面试·面向对象··class·oop
她说彩礼65万2 小时前
C# 代理模式
开发语言·c#·代理模式