Задача одномерного раскроя. Метод генерации столбцов.

advertisement
Задача одномерного раскроя. Метод генерации столбцов.
Содержательная постановка задачи
Рассматривается процесс серийного производства игрушечных самолетиков.
Каждый самолетик комплектуется из деталей различных типов:
• моторные гондолы (4 шт),
• большое крыло (2шт),
• крыло хвостового оперения (2шт),
• хвостовая часть (1 шт),
• лопасти пропеллера (8 шт),
• корпус (2шт).
Детали, в свою очередь, производятся из заготовок, выкраиваемых из пластмассового
материала, регулярно поступающего на предприятие в любых требуемых количествах.
Материал поступает в виде полос стандартной длины 100 см и раскраивать их нужно
только по длине, ширина полосы совпадает с шириной заготовок.
Длины заготовок для соответствующих деталей представлены в табл. 1
Таблица 1: Длины заготовок
моторная гондола
7 см
большое крыло
крыло хвостового оперения
хвостовая часть
лопасть пропеллера
корпус
15 см
8 см
10 см
3 см
30 см
Изготовление самолетиков происходит в следующих условиях:
1. процесс производства носит циклический характер, то есть определенное количество
полос раскраивается в соответствии с одним и тем же технологическим процессом;
2. полосы раскраиваются так, чтобы из остатка нельзя было получить ни одного типа
заготовок;
3. после сборки изделий допускаются остатки неиспользованных заготовок.
Предложить вариант технологического цикла с максимальной производительностью.
Результаты решения средствами пакета AMPL
Длина технологического цикла 11088 полос, за один цикл производится 6600 самолетиков, максимальная производительность равна 0.595238. Структура технологического цикла приведена в табл. 2.
Таблица 2: Структура одного технолигического цикла
Заготовка
Варианты раскроя полос
большое крыло
0
6
0
0
0
0
корпус
0
0
3
0
0
0
крыло хвостового оперенья
0
0
0
11
0
0
лопасти пропеллера
0
1
1
4
3
31
моторные гондолы
0
1
1
0
13
1
10
0
0
0
0
0
хвостовая часть
количество полос
660 2200 4400 1200 1431 1197
Результаты работы пакета AMPL приведены ниже.
qmodel = 6600
sum{i in CUT} qtech[i] = 11088
qmodel/(sum{i in CUT} qtech[i]) = 0.595238
qtech [*] :=
1
0
2
0
3
0
4
660
5
0
6
0
7
2200
8
4400
9
1200
10
1431
11
1197
;
technolog[j,4] [*] :=
’большое крыло’
0
’корпус’
0
’крыло хвостового оперенья’
’лопасти пропеллера’
0
0
’моторные гондолы’
0
’хвостовая часть’
10
;
qtech[4] = 660
technolog[j,7] [*] :=
’большое крыло’
6
’корпус’
0
’крыло хвостового оперенья’
’лопасти пропеллера’
’моторные гондолы’
0
1
1
’хвостовая часть’
0
;
qtech[7] = 2200
technolog[j,8] [*] :=
’большое крыло’
0
’корпус’
3
’крыло хвостового оперенья’
’лопасти пропеллера’
’моторные гондолы’
0
1
1
’хвостовая часть’
0
;
qtech[8] = 4400
technolog[j,9] [*] :=
’большое крыло’
0
’корпус’
0
’крыло хвостового оперенья’
’лопасти пропеллера’
4
11
’моторные гондолы’
0
’хвостовая часть’
0
;
qtech[9] = 1200
technolog[j,10] [*] :=
’большое крыло’
0
’корпус’
0
’крыло хвостового оперенья’
’лопасти пропеллера’
0
3
’моторные гондолы’
13
’хвостовая часть’
0
;
qtech[10] = 1431
technolog[j,11] [*] :=
’большое крыло’
0
’корпус’
0
’крыло хвостового оперенья’
’лопасти пропеллера’
’моторные гондолы’
’хвостовая часть’
;
qtech[11] = 1197
31
1
0
0
Download