最优下料问题的数学模型
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5
(1)等额完成任务所需的原材料数: k max (2)下料方式数: Q (3)废料总长度: L* 3000 k max l i ni 3000 k max s
i 1 m
(4)下料方案: 从上述模型可得出,下料方案为满足模型约束条件的最优解。 2、算法实现——随机决策下的贪婪算法 Step1: 对于给定需要完成的产品, 长度和需求量分别为 L 和 n, 构造一个 n 行 1 列矩阵 NL,
L11 1 L n1 L21 其中 L1i 表示第 1 种材料的第 i 个排列, L1 n 中的 n 表示第一种材料 形如: NL 2 Ln L M 1 M Ln M
三、符号的说明
3.1 问题一的符号说明 符号 说明 等额完成任务所需的原材料数 原材料个数 零件标号 在第 k 个原材料上切割的第 i 个零件标号的零件数量 规格种数 需求零件长度 单一原材料长度 需求零件数量 需下料的全部零件总长度 下料方式数 废料总长度
3
k max
k i
xki
m
li
L
d i (i 1,2,, m)
关键词:
贪心算法
最优下料
规划
1
一、问题的重述
“下料问题(cutting stock problem)”是把相同形状的一些原材料分割加工成若干 个不同规格大小的零件的问题, 此类问题在工程技术和工业生产中有着重要和广泛的应 用. 这里的“实用下料问题”则是在某企业的实际条件限制下的单一材料的下料问题。 现考虑单一原材料下料问题 . 设这种原材料呈长方形,长度为 L ,宽度为 W ,现在 需要将一批这种长方形原料分割成 m 种规格的零件, 所有零件的厚度均与原材料一致, 但长度和宽度分别为 (l1 , w1 ), , (lm , wm ) ,其中wi < li L, wi W , i 1, , m . m 种零件 的需求量分别为 n1 ,, nm .下料时,零件的边必须分别和原材料的边平行。这类问题在 工 程 上 通 常简 称 为 二维 下 料 问题 。 特 别当所 有 零 件 的宽 度 均 与原 材 料 相等 , 即
6
的,该值不被采用,否则该值被分流进盒子,如果循环操作至第 100 组随机值,最后结 果将产生出 100 组随机策略组合,每组的累加值均满足小于 3000,即:
i i S i S i R j 5 , if S i R j 5 3000 Si i S i S i , if ( S i R j 5 3000
至此,利用 Matlab 编程可求出满足题目要求的方案,从方案中可以检测出
R i j R i k 时, R i 所对应的 S i 为 max( S i ) 的情况仅为四种,对四种方案人为处理后即可
4 ○
3 ○
其中, Z {0,1,2,} 为非负整数的集合。 3) .求得所需原材料最小值 设 s l i n i ,表示需下料的全部零件总长度。进而定义:
i 1 m
s / L为整数 s / L, k* int( s / L) 1, 其他
4 ○
则所需原材料的最小值为 k * ,若由目标函数○ 3 求得的结果 k max k * ,则计算结果有误, 需要修正程序算法,或是重新建立模型。由式 ○ 4 求得的最小值可避免犯一些明显的错 误,并且可对程序进行验证。 4)结果表示:
最优下料问题的数学模型
摘要
本文通过对两个问题进行分析,分别建立模型一、模型二。针对模型一,设计程序 贪心算法,通过 Matlab 编程,得出相应结果。针对模型二,文中通过将二维问题转换 成为一维问题,引用规划模型,做出相应分析。 在问题一中,为解决一维下料问题,根据一维下料问题的特点,建立起由其约束条 件组合而成的规划模型,在随机决策的基础上利用贪心算法取每个决策中的最优值,较 快地获得问题的最优解为: 前 6 天下料方案整和为一个方案比制定 4 天, 6 天方案更优, 且前 6 天需用原材料根数为 268,利用率为 99.21%,3 天完成;剩余下料方案为需用原 材料根数为 538,利用率为 98.92%,6 天完成。 (详见表 6-1 和附录表 6-2、表 6-3) 在问题二中,基于零件长、宽两个方向上的限制的情况后,根据问题 2 中待加工的 零件的宽只集中在 50mm,30mm,35mm,20mm 四种规格上,将二维问题转化为一维问题, 分别用一维下料问题的方法寻求四种宽度条材在一维情况下的最优方案。在这一过程 中,可根据一维下料问题求解的方法,建立模型二,解多目标整数规划,再进行最优组 合,可以得到两个阶段所使用的条材。
li xki 5 xki L, k 1,2,, k max
i 1 i 1
m
m
1 ○
(2)需求量约束条件为:
4
k max
x
k 1
ki
ni , i 1,2,, m
2 ○
以Leabharlann Baidu对 xki 的非负整数要求。 (3)下料方式约束条件为:
Q min 5
i 1
m
k max
x
k 1
ki
3 ○
(4)下料能力约束条件为: 每天的最大下料能力有: K j 100 2) .目标函数的建立 目标函数的建立是为求得 k max 的最小值,因此建立如下:
min k max m l i x ki L, k 1,2, , k max i 1 k max x ki di, i 1,2, , m k 1 x ki Z
s
Q
L*
四、问题的分析
对于问题一,为一维下料问题,考虑首要目标为使原材料利用率最大,然后再使下 料方式数尽可能少。建立起以原材料使用数量最少为目标函数的规划模型,易知该问题 为 NP 问题,故用一般的规划算法很难求解,在现有的算法中也没有一种算法可以求出 确定的最优解, 求解此类问题的算法有单目标或多目标模型, 遗传算法, 模拟退火法, 启 发式算法, 分支定界法等,本文利用贪心算法在随机决策方案的基本上采取择优原则, 经多次选取后可将需要量全部完成。 对于问题二,这是特殊的二维下料问题。很容易观察到:问题二中所有零件的长度 都大于原材料的宽度,零件的宽度只有 4 种,大于 80 的宽度组合大约 10 多种。因此由 上述度量知实际宽度组合会更少。这样解问题二的通常想法是将其转化成问题一的形 式,同时也可以得出与问题一相类似的理论模型。
NoZeros( NL) 0
改为
NoZeros( NL)
Length( NL) 10
即 NL 中剩下 1 未被选择时即跳出,然后对剩下的 1 进行重组合,即将 NL 中等于 0 10 10 的数剔除,非零数值重新组合成新的 NL ,再继续运行 Step1~Step5 即可尽量避免当
R i j R i k 时, R i 所对应的 S i 为 max( S i ) 的情况。
wi W , i 1,, m ,则问题称为一维下料问题。
一个好的下料方案首先应该使原材料的利用率最大,从而减少损失,降低成本,提 高经济效益。其次要求所采用的不同的下料方式尽可能少,即希望用最少的下料方式来 完成任务。因为在生产中转换下料方式需要费用和时间,既提高成本,又降低效率。此 外,每种零件有各自的交货时间,每天下料的数量受到企业生产能力的限制。因此实用 下料问题的目标是在生产能力容许的条件下,以最少数量的原材料,尽可能按时完成需 求任务, 同时下料方式数也尽量地小.请你们为某企业考虑下面两个问题。 1、建立一维单一原材料实用下料问题的数学模型, 并用此模型求解下列问题,制 定出在生产能力容许的条件下满足需求的下料方案, 同时求出等额完成任务所需的原 材料数,所采用的下料方式数和废料总长度.单一原材料的长度为 3000mm, 需要完成一 项有53种不同长度零件的下料任务. 具体数据见表一, 其中 li 为需求零件的长度,ni 为 需求零件的数量. 此外,在每个切割点处由于锯缝所产生的损耗为5mm. 据估计,该企 业每天最大下料能力是100块 ,要求在4天内完成的零件标号( i )为: 5,7,9,12,15,18,20,25, 28,36,48; 要求不迟于6天完成的零件标号( i ) 为:4,11,24,29,32,38,40,46,50. (提示:可分层建模。 (1).先考虑用材料既少,下料方式又少的模型, 或先仅考虑所用材料最少的模型及 增加一种下料方式大致相当于使原材料总损耗增加0.08%情况下的最佳方案。
i 1,2,100
j 1,2,20
Step4: 对 Step3 产生的 100 种满足条件的随机组合采取择优选择,即选择 max( S i ) ,此为 一次贪心决策结果,将构成 max( S i ) 的各长度值从 NL 矩阵中去掉,即将其值变为 0. Step5: 判断 NL 矩阵中的非零值个数,当 NoZeros( NL) 0 时,即表示 NL 中的每个值都 已经被选出,否则继续 Step2~Step5。 由以上 Step1~Step5 结束后易知最终结果为各类型需求量均能被满足,此为最终 的解。 在实际操作中可能 Step2 中的 100 个随机数组中有些数组的 20 个随机值出现雷同数值, 亦即 R i j R i k ,此时如果 R i 所对应的 S i 为 max( S i ) ,那么该随机决策将是一种伪决策, 此行为将导致 NL 矩阵中的某一值被 S i 累加了多次,为此,可以将 Step5 中的判断函数:
2
(2).在解决具体问题时,先制定4天的下料方案,再制定6天的下料方案,最后制定53 种零件的下料方案. 这一提示对第2题也部分适用.) 2、建立二维单一原材料实用下料问题的数学模型, 并用此模型求解下列问题.制定 出在企业生产能力容许的条件下满足需求的下料方案, 同时求出等额完成任务所需的 原材料块数和所需下料方式数.这个问题的单一原材料的长度为 3000mm,宽度为100mm, 需要完成一项有43种不同长度和宽度零件的下料任务. 具体数据见表二,其中 li , wi , ni 分别为需求零件的长度、宽度和数量. 切割时的锯缝可以是直的也可以是弯的,切割
的总需求量。 Step2: 产生 100 个随机数组,每个随机数组包含 20 个数,随机数组 R i j 的取值范围为
1 ~ length( NL) ,其中 R i j 表示第 i 个数组里面的第 j 个随机数的值。将每一组数组的值
每组策略有 R i 对应到 Step1 构造的矩阵 NL 中的第 R i 个数中,结果是产生 100 组策略, 20 个值。 Step3: 将产生的 Step2 产生的 100 组策略装进 100 个队列中,对每个队列进行分流操作, 从第 1 组的第一个值开始累加到第一组的第 20 个数,累加过程中如果累加值超出 3000
所引起的锯缝损耗忽略不计.据估计,该企业每天最大下料能力是20块 要求在4天内完 成的零件标号( i )为: 3,7,9,12,15, 18, 20, 25, 28, 36.
二、问题的假设
(1)问题一中的零件厚度和宽度均与原材料相等; (2)问题二中的零件厚度均与原材料相等。 (3)切割过程中无人工误差
五、模型的建立与求解
5.1 问题一 5.1.1 模型一的建立与求解 1、 模型一的建立 1) .约束条件 如题,设原材料呈长方形,长度为 L ,现在需要将一批这种长方形原料分割成 m 种 规格的零件, 所有零件的厚度和宽度均与原材料一致,第 i 种规格的零件的长度为 li , 需求量为 ni (i 1,2,, m) 个。 共耗用 k max 个原材料, 且在第 k 个原材料上切割的第 i 个零件标号的零件数量为 xki , 则有: (1)原材料规格与锯缝损耗约束条件为:
(1)等额完成任务所需的原材料数: k max (2)下料方式数: Q (3)废料总长度: L* 3000 k max l i ni 3000 k max s
i 1 m
(4)下料方案: 从上述模型可得出,下料方案为满足模型约束条件的最优解。 2、算法实现——随机决策下的贪婪算法 Step1: 对于给定需要完成的产品, 长度和需求量分别为 L 和 n, 构造一个 n 行 1 列矩阵 NL,
L11 1 L n1 L21 其中 L1i 表示第 1 种材料的第 i 个排列, L1 n 中的 n 表示第一种材料 形如: NL 2 Ln L M 1 M Ln M
三、符号的说明
3.1 问题一的符号说明 符号 说明 等额完成任务所需的原材料数 原材料个数 零件标号 在第 k 个原材料上切割的第 i 个零件标号的零件数量 规格种数 需求零件长度 单一原材料长度 需求零件数量 需下料的全部零件总长度 下料方式数 废料总长度
3
k max
k i
xki
m
li
L
d i (i 1,2,, m)
关键词:
贪心算法
最优下料
规划
1
一、问题的重述
“下料问题(cutting stock problem)”是把相同形状的一些原材料分割加工成若干 个不同规格大小的零件的问题, 此类问题在工程技术和工业生产中有着重要和广泛的应 用. 这里的“实用下料问题”则是在某企业的实际条件限制下的单一材料的下料问题。 现考虑单一原材料下料问题 . 设这种原材料呈长方形,长度为 L ,宽度为 W ,现在 需要将一批这种长方形原料分割成 m 种规格的零件, 所有零件的厚度均与原材料一致, 但长度和宽度分别为 (l1 , w1 ), , (lm , wm ) ,其中wi < li L, wi W , i 1, , m . m 种零件 的需求量分别为 n1 ,, nm .下料时,零件的边必须分别和原材料的边平行。这类问题在 工 程 上 通 常简 称 为 二维 下 料 问题 。 特 别当所 有 零 件 的宽 度 均 与原 材 料 相等 , 即
6
的,该值不被采用,否则该值被分流进盒子,如果循环操作至第 100 组随机值,最后结 果将产生出 100 组随机策略组合,每组的累加值均满足小于 3000,即:
i i S i S i R j 5 , if S i R j 5 3000 Si i S i S i , if ( S i R j 5 3000
至此,利用 Matlab 编程可求出满足题目要求的方案,从方案中可以检测出
R i j R i k 时, R i 所对应的 S i 为 max( S i ) 的情况仅为四种,对四种方案人为处理后即可
4 ○
3 ○
其中, Z {0,1,2,} 为非负整数的集合。 3) .求得所需原材料最小值 设 s l i n i ,表示需下料的全部零件总长度。进而定义:
i 1 m
s / L为整数 s / L, k* int( s / L) 1, 其他
4 ○
则所需原材料的最小值为 k * ,若由目标函数○ 3 求得的结果 k max k * ,则计算结果有误, 需要修正程序算法,或是重新建立模型。由式 ○ 4 求得的最小值可避免犯一些明显的错 误,并且可对程序进行验证。 4)结果表示:
最优下料问题的数学模型
摘要
本文通过对两个问题进行分析,分别建立模型一、模型二。针对模型一,设计程序 贪心算法,通过 Matlab 编程,得出相应结果。针对模型二,文中通过将二维问题转换 成为一维问题,引用规划模型,做出相应分析。 在问题一中,为解决一维下料问题,根据一维下料问题的特点,建立起由其约束条 件组合而成的规划模型,在随机决策的基础上利用贪心算法取每个决策中的最优值,较 快地获得问题的最优解为: 前 6 天下料方案整和为一个方案比制定 4 天, 6 天方案更优, 且前 6 天需用原材料根数为 268,利用率为 99.21%,3 天完成;剩余下料方案为需用原 材料根数为 538,利用率为 98.92%,6 天完成。 (详见表 6-1 和附录表 6-2、表 6-3) 在问题二中,基于零件长、宽两个方向上的限制的情况后,根据问题 2 中待加工的 零件的宽只集中在 50mm,30mm,35mm,20mm 四种规格上,将二维问题转化为一维问题, 分别用一维下料问题的方法寻求四种宽度条材在一维情况下的最优方案。在这一过程 中,可根据一维下料问题求解的方法,建立模型二,解多目标整数规划,再进行最优组 合,可以得到两个阶段所使用的条材。
li xki 5 xki L, k 1,2,, k max
i 1 i 1
m
m
1 ○
(2)需求量约束条件为:
4
k max
x
k 1
ki
ni , i 1,2,, m
2 ○
以Leabharlann Baidu对 xki 的非负整数要求。 (3)下料方式约束条件为:
Q min 5
i 1
m
k max
x
k 1
ki
3 ○
(4)下料能力约束条件为: 每天的最大下料能力有: K j 100 2) .目标函数的建立 目标函数的建立是为求得 k max 的最小值,因此建立如下:
min k max m l i x ki L, k 1,2, , k max i 1 k max x ki di, i 1,2, , m k 1 x ki Z
s
Q
L*
四、问题的分析
对于问题一,为一维下料问题,考虑首要目标为使原材料利用率最大,然后再使下 料方式数尽可能少。建立起以原材料使用数量最少为目标函数的规划模型,易知该问题 为 NP 问题,故用一般的规划算法很难求解,在现有的算法中也没有一种算法可以求出 确定的最优解, 求解此类问题的算法有单目标或多目标模型, 遗传算法, 模拟退火法, 启 发式算法, 分支定界法等,本文利用贪心算法在随机决策方案的基本上采取择优原则, 经多次选取后可将需要量全部完成。 对于问题二,这是特殊的二维下料问题。很容易观察到:问题二中所有零件的长度 都大于原材料的宽度,零件的宽度只有 4 种,大于 80 的宽度组合大约 10 多种。因此由 上述度量知实际宽度组合会更少。这样解问题二的通常想法是将其转化成问题一的形 式,同时也可以得出与问题一相类似的理论模型。
NoZeros( NL) 0
改为
NoZeros( NL)
Length( NL) 10
即 NL 中剩下 1 未被选择时即跳出,然后对剩下的 1 进行重组合,即将 NL 中等于 0 10 10 的数剔除,非零数值重新组合成新的 NL ,再继续运行 Step1~Step5 即可尽量避免当
R i j R i k 时, R i 所对应的 S i 为 max( S i ) 的情况。
wi W , i 1,, m ,则问题称为一维下料问题。
一个好的下料方案首先应该使原材料的利用率最大,从而减少损失,降低成本,提 高经济效益。其次要求所采用的不同的下料方式尽可能少,即希望用最少的下料方式来 完成任务。因为在生产中转换下料方式需要费用和时间,既提高成本,又降低效率。此 外,每种零件有各自的交货时间,每天下料的数量受到企业生产能力的限制。因此实用 下料问题的目标是在生产能力容许的条件下,以最少数量的原材料,尽可能按时完成需 求任务, 同时下料方式数也尽量地小.请你们为某企业考虑下面两个问题。 1、建立一维单一原材料实用下料问题的数学模型, 并用此模型求解下列问题,制 定出在生产能力容许的条件下满足需求的下料方案, 同时求出等额完成任务所需的原 材料数,所采用的下料方式数和废料总长度.单一原材料的长度为 3000mm, 需要完成一 项有53种不同长度零件的下料任务. 具体数据见表一, 其中 li 为需求零件的长度,ni 为 需求零件的数量. 此外,在每个切割点处由于锯缝所产生的损耗为5mm. 据估计,该企 业每天最大下料能力是100块 ,要求在4天内完成的零件标号( i )为: 5,7,9,12,15,18,20,25, 28,36,48; 要求不迟于6天完成的零件标号( i ) 为:4,11,24,29,32,38,40,46,50. (提示:可分层建模。 (1).先考虑用材料既少,下料方式又少的模型, 或先仅考虑所用材料最少的模型及 增加一种下料方式大致相当于使原材料总损耗增加0.08%情况下的最佳方案。
i 1,2,100
j 1,2,20
Step4: 对 Step3 产生的 100 种满足条件的随机组合采取择优选择,即选择 max( S i ) ,此为 一次贪心决策结果,将构成 max( S i ) 的各长度值从 NL 矩阵中去掉,即将其值变为 0. Step5: 判断 NL 矩阵中的非零值个数,当 NoZeros( NL) 0 时,即表示 NL 中的每个值都 已经被选出,否则继续 Step2~Step5。 由以上 Step1~Step5 结束后易知最终结果为各类型需求量均能被满足,此为最终 的解。 在实际操作中可能 Step2 中的 100 个随机数组中有些数组的 20 个随机值出现雷同数值, 亦即 R i j R i k ,此时如果 R i 所对应的 S i 为 max( S i ) ,那么该随机决策将是一种伪决策, 此行为将导致 NL 矩阵中的某一值被 S i 累加了多次,为此,可以将 Step5 中的判断函数:
2
(2).在解决具体问题时,先制定4天的下料方案,再制定6天的下料方案,最后制定53 种零件的下料方案. 这一提示对第2题也部分适用.) 2、建立二维单一原材料实用下料问题的数学模型, 并用此模型求解下列问题.制定 出在企业生产能力容许的条件下满足需求的下料方案, 同时求出等额完成任务所需的 原材料块数和所需下料方式数.这个问题的单一原材料的长度为 3000mm,宽度为100mm, 需要完成一项有43种不同长度和宽度零件的下料任务. 具体数据见表二,其中 li , wi , ni 分别为需求零件的长度、宽度和数量. 切割时的锯缝可以是直的也可以是弯的,切割
的总需求量。 Step2: 产生 100 个随机数组,每个随机数组包含 20 个数,随机数组 R i j 的取值范围为
1 ~ length( NL) ,其中 R i j 表示第 i 个数组里面的第 j 个随机数的值。将每一组数组的值
每组策略有 R i 对应到 Step1 构造的矩阵 NL 中的第 R i 个数中,结果是产生 100 组策略, 20 个值。 Step3: 将产生的 Step2 产生的 100 组策略装进 100 个队列中,对每个队列进行分流操作, 从第 1 组的第一个值开始累加到第一组的第 20 个数,累加过程中如果累加值超出 3000
所引起的锯缝损耗忽略不计.据估计,该企业每天最大下料能力是20块 要求在4天内完 成的零件标号( i )为: 3,7,9,12,15, 18, 20, 25, 28, 36.
二、问题的假设
(1)问题一中的零件厚度和宽度均与原材料相等; (2)问题二中的零件厚度均与原材料相等。 (3)切割过程中无人工误差
五、模型的建立与求解
5.1 问题一 5.1.1 模型一的建立与求解 1、 模型一的建立 1) .约束条件 如题,设原材料呈长方形,长度为 L ,现在需要将一批这种长方形原料分割成 m 种 规格的零件, 所有零件的厚度和宽度均与原材料一致,第 i 种规格的零件的长度为 li , 需求量为 ni (i 1,2,, m) 个。 共耗用 k max 个原材料, 且在第 k 个原材料上切割的第 i 个零件标号的零件数量为 xki , 则有: (1)原材料规格与锯缝损耗约束条件为: