方形件组批优化问题

在中国制造 2025 目标背景之下,发展环境保护型、资源节约型的智能制造业已成为制造行业的当务之急。为了应对客户提出的各式各样的产品需求、订单组批难且产品质量

要求高的问题,使用数学模型辅助企业对定制化产品进行组批优化具有重要意义。本文通

过构建整数线性规划规划模型来对方形件组批问题进行优化,使其不仅实现了较好的板材

原片利用率,同时还对订单组批问题实现了优化。具体做法如下:
          对子问题 1建立了板材原片的切割方式、产品项(item)、栈(stack)、条带(stripe)、产品位置、生产订单需求等众多因素的一个全局 0-1 线性规划模型,以板材原片使用数量最少作为目标函数。在建立模型的过程中,参考了文献【3的整数线规划但该模型存在着产品位置不可旋转的问题,板材利用率有待提高。为此,本文所建立的模型

中着重考虑了产品可以旋转的情况,极大的提高了板材原片的利用率。该模型变量复杂度较高,计算量大。在编写算法过程中,通过本文建立的模型对子问题1中的四个数据表格进行排样优化。在优化之前,本文通过matlabdataA1~dataA4的数据进行预处理,计算出每个数据理论上最少的板材原片数量,分别是:84838482通过本文建立的全局0-1 线性规划模型进行优化,得出优化后的板材原片使用数量分别是:89888887dataA1~dataA4 的板原片利用率分别是:94.382%94.318%95.455%94.253%其中四个数据表中单块板材原片利用率最高为99.213%99.145%99.228%99.460%最低为73.304%72.618%78.760%74.682%

对子问题 2本题是订单组批优化问题。首先建立了一个以订单分批效率最高为目标函数的整数线性规划模型,通过引入一个不同订单相同材质的相关系数,本文称之为组

系数,该模型大大提高了订单组批的效率。在此模型的基础之上,又建立了一个以同批

内板材利用率最高为目标函数的 0-1 线性规划模型。进一步实现组批内的板材原片利用率最高。此时,在满足子问题1中的所有目标和约束条件的前提下,要求相同的订单下的产品必须在同一批次中,同一批次中的相同材质的产品项可以排样在同一块板材原片上,

同时在生产过程中批次的生产的产品数量和产品项面积总和有上限要求。通过建立的模型算法对本题进行求解,计算出了 dataB1~dataB5 的每个数据中订单的组批次分别是:3724232638每个数据所使用板材原片数量分别是:36322292242525383892。数据集BdataB1~dataB5的板材原片的利用率分别为:82.217%81.745%80.028%80.297%84.421%

          最后,本文所建立的整数线性规划模型使用了7n2+n个决策变量,该模型的复杂度为O(n2)

键词:方形件组批优化,全局0-1线性规划模型,整数线性规划模型

一、问题重述

1.1 题背景
          在中国制造 2025 和碳中和、碳达峰的目标背景之下,发展环境保护型、资源节约型的智能制造业已成为制造行业的当务之急。目前企业在智能制造转型的竞争中主要围绕个性化产品定制、系统生命周期、互联互通的服务模式等方面。与此同时,制造业的劳动成本也在不断的升高,生产企业一方面需要降低生产成本,另一方面还要提高生产效率和精细化,在此过程中必然会依赖于机械设备来制造生产各式各样的需求。为了应对客户的个性化定制的拂去需求,企业需要具有高效快速的需求分析及产品设计能力、具有柔性且精益的生产流程、具有完整且精细的全流程生产管控能力。尤其在大批量生产中,即使是对原材料利用率有十分微小的差异,材料的总用量也会有明显的变化。因此想要有效的提高企业的经济效益,关键在于如何降低生产成本,由于原材料费用在生产成本中所占比重较大,因此如何优化下料,并最大限度的提高原材料的利用率是当前很多企业急需解决的重要问题。

根据板材切割工艺的方式可以分为齐头切和非齐头切,齐头切工艺可以细分为精确方式与非精确方式。由切割的阶段数可在三阶段排样方式中分为三种不同的类型:三阶段非精确(3NE)排样方式、三阶段匀质排样方式(3E)三阶段同质排样方式(3H)其中3E3H排样方式可在三个阶段内切割出准确的方形件,因此属于精确排样方式,而3NE排样方式有时需要额外的第四阶段切割才能满足方形件的尺寸要求,因此属于非精准排样方式。

以三阶段切割方式为例,阶段数是指在切割过程中,将板材以垂直于长边或垂直于短边的方向切割生成条带(strip)称之为第一阶段,以垂直于第一阶段切割方向将各个条带切割出多个栈(stack)的方式称为第二阶段,同理以垂直于第二阶段切割方向将各个栈切割出多个产品(item)的方式称为第三阶段。三阶段排样方式示意图如图1所示。

1 三阶段排样方式示意图

1.2 题提出
        根据附件提供的信息,包括产品的尺寸、编号、材质和订单号,以及目标要求和约束条件建立完整的数学模型,根据模型设计求解算法,解决以下两个问题:
        问题1:排样优化问题
        根据题目要求建立混合整数规划模型,给不同的产品项进行排版布局,从而实现板材原片使用最少的目标,该问题约束条件为:
        1.在相同栈里的产品项的宽度(或长度)应该相同;

2.最终切割生成的产品项是完整的,非拼接而成。

          问题2:订单组批问题
          要求建立混合整数规划模型,通过建立相应的模型对数据集B中所有的订单进行组批,然后对每个批次进行单独排样,在满足子问题1的约束条件下,使得板材原片用量尽可能少。本问题在满足问题1约束的基础上进一步要求:

1.同一批次中每份订单有且只能出现一次;
2.同一批次中的相同材质的产品项才能使用同一块板材原片进行排样; 3.为保证加工环节快速流转,每个批次产品项总数不能超过1000 4.因工厂产能限制,每个批次产品项的面积总和不能超过250m 2

二、模型假设与符号说明

2.1 型假设

假设1:所有订单的交货期相同

假设2:只考虑齐头切割方式;
假设3:订单任务全部完成且不含任何不完整订单任务;
假设4:板材的切割阶段数不超过3,处于同一阶段的切割方向一致;
假设5:排样方式为精确排样,即为均质排样方式(3E)和同质排样方式(3H); 假设6:板材原片仅有一种规格且数量充足;

假设7:排样方案不用考虑锯缝宽度影响。

2.2 号说明

指标:

符号

i

j

k

l

A

B

ia  

ib  

iA  

iB  

Q

i

j个栈

k

l个板块

板材原片的原始长度

板材原片的原始宽度

i件产品项的原始长度

i件产品项的原始宽度

i件产品项进行旋转之后的长度

i件产品项进行旋转之后的宽度

一个无穷大的数

 

三、子问题的1析与求解

3.1 子问1的分析
          本题为排样优化问题,最终实现的目的是板材利用率达到最高,即所有排版的产品项的面积之和比上所使用板材原片面积的比值最大。进一步可以理解为所使用的板材数量尽快能的少。因此,本文针对子问题1建立以使用的板材数量最少为目标函数。

本题假定了一些限制条件,包括切割方式、切割阶段、排版样式等相关因素。首先,在本题中只需要考虑齐头切割方式,所谓齐头切割可以理解为是“一刀切”,即每次切割的线条都是直线并且切割的方向都是垂直于板材的一条边,最重要的是要保证每一次切割都需要将板材可以分开成两个部分。其次,板材的切割阶段数不能超过 3,并且处于同一阶段的切割方向必须相同。本题还要求排样的方式是精确排样,精确排样主要有两中类型:三阶段匀质排样方式(3E和三阶段同质排样方式(3H其中匀质排样方式是指在一个相同的栈中存在着具有相同边的不同产品项;而同质排样方式是指在相同的栈中的所有产品都是相同尺寸的产品。本题中也不考虑锯缝宽度所带来的误差。

子问题1 中的附件数据集 A 中包括了4 个数据表格,分别是 dataA1~dataA4。对数据进行建模分析之前,首先需要将每一文件中的数值抓取出来。由于文件中给出的数据是统一格式,因而直接利用 Matlab 软件读取.csv 文件,对其进行处理,将其中的 item_lengthitem_width列进行预处理,对这两列进行取最小值(min和最大值(max的处理,分别作为 min 列和 max 列对原表进行整理,并将 max 列作为条件进行降序排序,排序的结果形式如表1所示:

 

1 始表格预处理

item_id

item_num

item_length

item_width

min

max

1

235

1

2418

58

58

2418

2

356

1

2418

58

58

2418

3

542

1

2418

58

58

2418

4

723

1

2416

38

38

2416

5

765

1

2398

393

393

2398

6

113

1

2398

328

328

2398

7

25

1

2398

299

299

2398

8

170

1

2393

38

38

2393

9

115

1

2388

558

558

2388

10

73

1

2388

98

98

2388

11

304

1

2368

328

328

2368

12

61

1

2367

218

218

2367

13

212

1

2353

328

328

2353

14

588

1

2353

58

58

2353

15

48

1

2353

38

38

2353

16

8

1

2348

630

630

2348

17

9

1

2348

558

558

2348

18

479

1

2338

588

588

2338

19

758

1

2334.5

311

311

2334.5

89

87

1

177

197.5

177

197.5

其次,本文先将表格中所有的产品的面积之和求出来,其中dataA1dataA2dataA3dataA4 面积之为:248685614.6246700070.9249244736.8243659621.7之后题目中确定了板材原片的长度2440mm和宽度1220mm求出板材原片的面积为 2976800。通过所有产品的面积来确定每一文件所需要原片的极限数量,通过所

有产品面积除以板材原片的面积分别求出了每一文件的最节省的板材数量,所使用最省的板材原片的数量分别为84838482过数据的预处了可以求出理论上的极限最省板材原片的数量。所以在之后的建模求解过程中不断的进行优化,使得最终求解出的板材数量尽可能的接近理论值,如表2所示。

2 想情况下板材原片使用数量及利用率

数据表

data A1

data A2

data A3

data A4

所有产品项的总面积

248685614.6

246700070.9

249244736.8

243659621.7

板材原片的面积

250051200

247074400

250051200

244097600

理论

84

83

84

82

理论板材原片最大利用率

99.45%

99.85%

99.68%

99.82%

通过对附件中的数据进行分析发现,所有的产品项都属于个性定制的类型,每一个产品的数量均是1个。由此,首先考虑的是采用三阶段匀质排样方式(3E分析题目可以得出,本题是下料优化问题,也称排样优化问题。根据同一生产批次内方形件的尺寸与数量,选择原片的规格和数量,进行下料排样优化,得到最大化板材原片利用率。

每一作为出发长度度的项(item组合成一个栈(Stack),之后由多个宽度或长度相同的栈组成一个条带(Stripe。最后通过拼接条带使其满足长度和宽度均不超过原片的长度和宽度。同时允许在拼接的过程中存在冗余,即可包含以下废料,通过这种思路找到板材面积利用率最大的切割方式,最终求出最优解,子问题1的思路框图如图2

产品合成

栈组若干

利用最高

用率的条

合成

组合后的<=

条带<=

宽度

板材原始

2 问题1找最优排样方式思路框图

3.2 0-1线性规划模型的建立
          针对子问题建立的全局 0-1 线性规划模型的建立,本文参考了【文献 3的带约束条件下的整数线性规划模型。【文献 3】中所建立的模型中并未考虑到产品件可以进行旋转排样,仅仅保持产品件按照固定长宽进行排样。本文重点考虑了产品件可以旋转的情况,原模型的基础之上进行改进,原模型结果和改进结果如图34所示。

 

 

%%

clear

clc

% H = [640 1800 500 700];

% W = [1220 520 700 1300];

B = [300 420 420 500 500 1180];

A = [2440 1740 700 800 400 500];

r = [1 1 1 1 1 1 1];

[~,Z] = aa(A,B);

[~,Z,r] = bb(A,B);

%%

nig = length(B);

IO1 = cell(nig,9);

Id_SIN = unique(Z(:,1));

for LON = Id_SIN(:)'

  figure, patch([0 1220 1220 0 0],[0 0 2440 2440 0],'white')

  hold on, axis('equal','off')

  X0 = 0;

  Y0 = 0;

  Z_Sin = Z(Z(:,1) == LON,:);

  id_tiao = unique(Z_Sin(:,2));

  for k = id_tiao(:)'

  a0 = 0;

  Z_tiao = Z_Sin(Z_Sin(:,2) == k,:);

  id_zhan = unique(Z_tiao(:,3));

  for jaa = id_zhan(:)'

  Z_zhan = Z_tiao(Z_tiao(:,3) == jaa,:);

  Cc = rand(1,3);

  for m = 1:size(Z_zhan,1)

  id_chanpin = Z_zhan(m,4);

  r_i = r(id_chanpin);

  b_i = B(id_chanpin);

  a_i = A(id_chanpin);

  A_i = a_i*r_i+b_i*(1-r_i);

  B_i = b_i*r_i+a_i*(1-r_i);

  IO1{id_chanpin,2} = find(Id_SIN == LON);

  IO1{id_chanpin,4} = X0;

  IO1{id_chanpin,5} = Y0;

  IO1{id_chanpin,6} = B_i;

  IO1{id_chanpin,7} = A_i;

  IO1{id_chanpin,8} = X0+B_i;

 

  IO1{id_chanpin,9} = Y0+A_i;

  X = [X0 X0+B_i X0+B_i X0 X0];

  Y = [Y0 Y0 Y0+A_i Y0+A_i Y0];

  patch(X,Y,Cc,'FaceAlpha',0.5)

  Y0 = Y0+A_i;

  end

  X0 = max(cell2mat(IO1(Z_zhan(:,4),8)));

  Y0 = min(cell2mat(IO1(Z_zhan(:,4),5)));

  z0 = max(cell2mat(IO1(Z_zhan(:,4),9)));

  a0 = max([z0 a0]);

  end

  X0 = 0;

  Y0 = a0;

  end

end

%%

function [num_tt,R,A,B] = aa(A,B)

%%

A = A(:)';

B = B(:)';

na = length(A);

Is = eye(na);

a_max = 2440;

b_max = 1220;

idx_1a = 0*na^2+1:1*na^2;

idx_2b    = 1*na^2+1:2*na^2;

idx_3c = 2*na^2+1:3*na^2;

na_vars        = 3*na^2;

%%

ff = zeros(1,na_vars);

for l1 = 1:na

  ff_la = kron(Is(l1,:),Is(l1,:));

  ff(idx_3c) = ff(idx_3c)+ff_la;

end

%%

Hs_naeq = cell(1,0); Hs_eq = cell(1,0);

Ws_nAeq = cell(1,0); Ws_eq = cell(1,0);

%%

Aa_eq = zeros(na,na_vars);

for ia1 = 1:na

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024.7最新子比主题zibll7.9.2开心版源码+授权教程

授权教程&#xff1a; 1.进入宝塔搭建一个站点 绑定 api.zibll.com 域名 并上传 index.php 文件 2.设置伪静态 3.开启SSL证书&#xff0c;找一个能用的域名证书&#xff0c;将密钥(KEY)和证书(PEM格式)复制进去即可 4.在宝塔文件地址栏中输入 /etc 找到 hosts文件并打开&a…

hcia复习篇

计算机网络&#xff1a; 云技术&#xff1a; 云储存---将数据通过计算机网络传输并储存在第三方服务器。&#xff08;百度网盘&#xff09; 云计算---分布式计算。&#xff08;即共享硬件资源&#xff09; 计算机技术&#xff1a; 文字、图片、视频等---抽象文字。 抽象语言…

【Nginx系列】499错误

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Java应用程序的测试覆盖率之设计与实现(一)-- 总体设计

一、背景 作为测试,如何保证开发人员提交上来的代码都被测试覆盖到,是衡量测试质量的一个重要指标。 本系列文章将要说一说,如何搭建一套测试覆盖率的系统。 包括以下内容: jacoco agent采集执行覆盖率数据jacoco climaven集成jacoco:jacoco-maven-pluginant集成jacoco:…

Linux: network: wireshark IO图的一个问题

今天遇到一个问题&#xff0c;发现wireshark画的IO图&#xff0c;前几秒没有数据&#xff0c;但是根据Raw的pcap看&#xff0c;是有包的&#xff0c;这就迷惑了。 经同事提醒&#xff0c;这个IO在设置了多个画图filter的时候&#xff0c;可能导致开始前几秒没有输出。如下图 这…

HexForge:一款用于扩展安全汇编和十六进制视图的IDA插件

关于HexForge HexForge是一款用于扩展安全汇编和十六进制视图的IDA插件&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以方便地直接从 IDA Pro 界面数据解码、解密或执行安全数据审计任务。 功能介绍 1、从 IDA 的反汇编或十六进制视图复制原始十六进制&#xff1b;…

安康旅游指南:基于SpringBoot的网站开发实践

第一章 绪论 1.1 研究现状 时代的发展&#xff0c;我们迎来了数字化信息时代&#xff0c;它正在渐渐的改变着人们的工作、学习以及娱乐方式。计算机网络&#xff0c;Internet扮演着越来越重要的角色&#xff0c;人们已经离不开网络了&#xff0c;大量的图片、文字、视频冲击着我…

spring整合使用xml方式整合Druid数据源连接池

1.普通的JDBC数据库连接使用 DriverManager 来获取&#xff0c;每次向数据库建立连接的时候都要将 Connection加载到内存中&#xff0c;再验证用户名和密码(得花费0.05s&#xff5e;1s的时间)。需要数据库连接的时候&#xff0c;就向数据库要求 一个&#xff0c;执行完成后再断…

测试造数,excel转insert语句

目录 excel转sql的insert语句一、背景二、直接上代码 excel转sql的insert语句 一、背景 在实际测试工作中&#xff0c;需要频繁地进行测试造数并插入数据库验证&#xff0c;常规的手写sql语句过于浪费时间&#xff0c;为此简单写个脚本&#xff0c;通过excel来造数&#xff0…

用更多的钱买电脑而不是手机

如果&#xff0c;我们对自己的定义是知识工作者&#xff0c;那么在工作、学习相关的电子设备投入上&#xff0c;真的别舍不得花钱。 需要留意的是&#xff0c;手机&#xff0c;对于大部分在电脑前工作的人&#xff0c;不是工作设备。在我看来&#xff0c;每年投入到电脑的钱&…

Go语言Linux环境搭建以编写第一个Go程序

目录 文章目录 目录Go语言入门1、说明2、CentOS7安装Go3、编写第一个程序3.1、编写程序3.2、运行程序3.3、生成二进制文件4、编写第一个web程序4.1、编写代码4.2、运行程序4.3、测试访问4.4、生成二进制配置Vim-go语法高亮1)、下载和设置Vundle.vim(vim安装插件的工具)2)、…

[Linux网络编程]05-TCP状态和端口复用,shutdown函数(主动方建立/关闭连接状态,被动方建立/关闭连接状态,2MSL时长,TCP其他状态)

一.TCP状态图表示 netstat -apn | grep client 查看客户端网络连接状态 netstat -apn | grep port 查看端口的网络连接状态 二.主动方&#xff0c;被动方TCP连接状态 1. 主动发起连接请求端&#xff1a; CLOSE – 发送SYN – SEND_SYN – 接收 ACK、SYN – SEND_SYN – 发送 A…

查看Chrome安装路

谷歌Google浏览器查看安装路径&#xff0c;浏览器Google Chrome浏览器查看安装路径 chrome://version/ 来源&#xff1a;笔记云

vuex使用modules模块化

1、main.js引入 //引入vuex import store from ./store new Vue({el: #app,router,store,components: { App },template: <App/>,data:function(){return{wbWinList: [] // 定义的变量&#xff0c;全局参数}}, })2、index.js import Vue from vue; import Vuex from …

刷题 - 图论

1 | bfs/dfs | 网格染色 200. 岛屿数量 访问到马上就染色&#xff08;将visited标为 true)auto [cur_x, cur_y] que.front(); 结构化绑定&#xff08;C17&#xff09;也可以不使用 visited数组&#xff0c;直接修改原始数组时间复杂度: O(n * m)&#xff0c;最多将 visited 数…

英语语法笔记

内容源于b站英语兔 目录 一、综述 动作&#xff08;动词&#xff09;&#xff1a; 1.可以独立完成的动作&#xff1a;主语加不及物动词 2.有1个动作的承受者&#xff1a;主语单及物动词宾语 3.有2个承受者&#xff1a;主语双及物动词间接宾语直接宾语 4.只有1个动作承受…

从零开始:构建一个高效的开源管理系统——使用 React 和 Ruoyi-Vue-Plus 的实战指南

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

Kafka-代码示例

一、构建开发环境 File > New > Project 选择一个最简单的模板 项目和坐标命名 配置maven路径 添加maven依赖 <dependencies><!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients --><dependency><groupId>org.apache.kaf…

学习笔记——动态路由——OSPF(距离矢量协议)OSPF路由类型

OSPF路由类型 在OSPF中&#xff0c;路由类型指的是不同种类的路由&#xff0c;用于描述网络中不同的路由信息及其传输方式。 1、Intra Area路由(区域内路由) Intra Area路由(区域内路由/本地路由/内部路由)是OSPF协议中的一种路由类型&#xff0c;用于描述在同一个OSPF区域内…

【论文阅读】ESRGAN

学习资料 论文题目&#xff1a;增强型超分辨率生成对抗网络&#xff08;ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks&#xff09;论文地址&#xff1a;[1809.00219] ESRGAN&#xff1a;增强型超分辨率生成对抗网络代码&#xff1a;xinntao / ESRGAN&am…