Мезенцев Имитационное моделирование / Очет по лабораторной работа 4 ИМ
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра экономической информатики
Лабораторная работа №4
по дисциплине «Имитационное моделирование» на тему
«Оптимизация расписания работы производственного участка цеха»
Факультет: Бизнеса
Группа: ФБИ-21
Преподаватель: Мезенцев Ю.А.
Новосибирск 2015
Цель. Формализовать и найти решение задачи оптимального управления бизнес-процессом, имеющей следующее содержательное описание.
Условия задачи:
Перед администрацией цеха стоит задача разработки сменно-суточного графика работы производственного участка цеха, состоящего из нескольких станков и обрабатывающего три партии деталей различного типа. Маршруты обработки деталей всех типов представлены в таб.2.1а и 2.1б (распределение выполняемых операций по станкам Stanok1, Stanok2 и Stanok3 в указанной последовательности). Длительности обработки партий деталей заданы в таб.2.2 и таб. 2.3. Прерывания обработки любой партии деталей в пользу другой не допускаются. Одновременно один станок может обрабатывать только одну партию деталей и одну деталь в партии. Технологические маршруты для каждой партии фиксированы, хотя и различны в общем случае и не могут быть изменены. В качестве критерия эффективности расписания рассматривается быстродействие всей системы (участка), т.е. время завершения обработки последней по хронологии партии деталей.
Ход работы:
1 Построение дизъюнктивной сети обслуживающей системы в представлении узел-операция.
Маршруты обработки деталей всех типов представлены в таблице 1.
Таблица 1 – Технологические маршруты обработки деталей
Вариант |
Detal1 |
Detal2 |
Detal3 |
||||||||
Опер. 1 |
Опер. 2 |
Опер. 3 |
Опер. 4 |
Опер. 5 |
Опер. 6 |
Опер. 7 |
Опер. 8 |
Опер. 9 |
|||
Пример |
S1 |
S2 |
S3 |
S1 |
S3 |
S2 |
S3 |
S2 |
S1 |
||
10 |
S2 |
S1 |
S3 |
S3 |
S1 |
S2 |
S3 |
S2 |
S1 |
Длительности обработки партий деталей заданы в таблице 2.
Вариант |
Опер. 1 |
Опер. 2 |
Опер. 3 |
Опер. 4 |
Опер. 5 |
Опер. 6 |
Опер. 7 |
Опер. 8 |
Опер. 9 |
Пример |
3 |
5 |
4 |
2 |
6 |
1 |
4 |
4 |
2 |
10 |
25 |
5 |
12 |
7 |
10 |
15 |
15 |
10 |
8 |
Составим математическую модель для определения оптимального расписания работы участка. Занесли данные модели в таблицу Excel.
Рисунок 1 – Смешанная сетевая модель работы производственного участка
2 ЭММ оптимизации расписания работы производственного участка
‑+250
‑+50
‑ +120
‑+70
‑+100
‑+150
‑+150
‑+100
‑ +80
0 (A,U,V)
01, целые, (A,,V)
3 Структурирование данных задачи в соответствии с ЭММ
Данные задачи представлены на рисунках 2,3.
Рисунок 2 – Матрица системы ограничений и вектор коэффициентов целевой функции
Рисунок 3 – Матрица системы ограничений и вектор коэффициентов целевой функции продолжение
4 Расчеткратчайшего расписания (оптимального по быстродействию) работы участкасредствами ILog OPL studio
-
Файл mod
/*********************************************
* OPL 6.1.1 Model
* Creation Date: 18.10.2009 at 5:27:43
*********************************************/
int n = ...;
int m = ...;
int m1 = ...;
int n1 = ...;
int m2 = m - m1;
int n2 = n - n1;
range j1 = 1..n1;
range j2 = 1..n2;
range i1 = 1..m1;
range i2 = 1..m2;
float b1[i1] = ...;
float b2[i2] = ...;
float z1[j1] = ...;
float z2[j2] = ...;
float A3[i2][j2] = ...;
float A1[i1][j1] = ...;
float A2[i2][j1] = ...;
floatMaxValue = 1000*max(r in i2) b2[r];
dvar float x[j1] in 0..MaxValue;
dvarboolean w[j2];
minimize
sum(jj in j1) z1[jj] * x[jj] +
sum(jjj in j2) z2[jjj] * w[jjj] ;
subject to {
forall( r1 in i1 )
ct1:
sum(jj in j1)
A1[r1][jj] * x[jj] <= b1[r1];
forall( r in i2 )
ct2:
sum(jj in j1 )
A2[r][jj] * x[jj] +
sum(jjj in j2)
A3[r][jjj] * w[jjj] <= b2[r];
}
-
Файлdat
/*********************************************
* OPL 6.1.1 Data
* Creation Date: 18.10.2009 at 5:27:43
*********************************************/
n = 19;
m = 27;
m1 = 9;
n1 = 10;
SheetConnectionsheet("ind.xls");
A1 from SheetRead(sheet,"SAS!b4:k12");
A2 from SheetRead(sheet,"SAS!b13:k30");
A3 from SheetRead(sheet,"SAS!l13:t30");
b1 from SheetRead(sheet,"SAS!v4:v12");
b2 from SheetRead(sheet,"SAS!v13:v30");
z1 from SheetRead(sheet,"SAS!b31:k31");
z2 from SheetRead(sheet,"SAS!l31:t31");
x to SheetWrite(sheet,"SAS!b3:k3");
w to SheetWrite(sheet,"SAS!l3:t3");
На рисунке 4 представлены результаты работы IBMILogCPLEX
Рисунок 4 – Результаты работы IBMILogCPLEX
5Построение графикаГанта обработки деталей и загрузки оборудования по результатам работы IBMILogCPLEX
В таблице 3 представлен календарный график работы производственного участка.
Таблица 3 – Календарный график работы производственного участкаДлительность обработки |
Время начала обработки |
Маршруты (М) |
|||||||
25 |
5 |
12 |
-1E-09 |
33 |
38 |
2 |
1 |
3 |
|
7 |
10 |
15 |
0 |
7 |
35 |
3 |
1 |
2 |
|
15 |
10 |
8 |
10 |
25 |
42 |
3 |
2 |
1 |
В таблице 4 представлено расписание обработки партий деталей, на основании которого строится график ганта, изображенный на рисунке 5.
Таблица 4 – Расписание обработки партий деталей
Расписание обработки партий деталей |
||||||||
Станок |
|
2 |
|
|
|
1 |
|
3 |
t обслуживания |
0 |
25 |
25 |
33 |
33 |
38 |
38 |
50 |
Партия 1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
Станок |
|
3 |
|
1 |
|
|
|
2 |
t обслуживания |
0 |
7 |
7 |
17 |
17 |
35 |
35 |
50 |
Партия 2 |
2 |
2 |
2 |
2 |
0 |
0 |
2 |
2 |
Станок |
|
3 |
|
2 |
|
|
|
1 |
t обслуживания |
10 |
25 |
25 |
35 |
35 |
42 |
42 |
50 |
Партия 3 |
3 |
3 |
3 |
3 |
0 |
0 |
3 |
3 |
Рисунок 5 – График обслуживания партий деталей
В таблице 5 представлено расписание загрузки приборов. На рисунке 6 изображен график загрузки оборудования
Таблица 5 – Расписание загрузки приборов
Расписание загрузки приборов |
||||||||||
Партия |
|
2 |
|
|
|
1 |
|
|
|
3 |
t обслуживания |
7 |
17 |
17 |
33 |
33 |
38 |
38 |
42 |
42 |
50 |
Станок 1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
Партия |
|
1 |
|
3 |
|
2 |
|
|
|
|
t обслуживания |
0 |
25 |
25 |
35 |
35 |
50 |
|
|
|
|
Станок 2 |
2 |
2 |
2 |
2 |
2 |
2 |
|
|
|
|
Партия |
|
2 |
|
|
|
3 |
|
|
|
1 |
t обслуживания |
0 |
7 |
7 |
10 |
10 |
25 |
25 |
38 |
38 |
50 |
Станок 3 |
3 |
3 |
0 |
0 |
3 |
3 |
0 |
0 |
3 |
3 |
Рисунок 6 – График загрузки оборудования
5 Расчетstudioкратчайшего расписания (оптимального по быстродействию) работы участкасредствами IlogCP.
Файл mod
-
usingCP;
-
intCJobs= ...;//Работы
-
intCMachines= ...;//Станки
-
rangeJobs=0..CJobs-1;
-
rangeMchs=0..CMachines-1;
-
// Mchs используется для индекса станков
-
tupleOperation{
-
intmch;// Станок
-
intpt;// Время в процессе
-
};
-
OperationOps[jinJobs][minMchs] = ...; //индексы j и m
-
dvarintervalitvs[jinJobs][oinMchs]sizeOps[j][o].pt;//динамическаяпеременнаяИнтервал
-
dvarsequencemchs[minMchs]inall(jinJobs,oinMchs:Ops[j][o].mch==m)itvs [j][o];
-
//последовательности
-
execute{
-
cp.param.FailLimit=10000;
-
}
-
minimizemax(jinJobs)endOf(itvs[j][CMachines-1]);
-
//минимизирует время последней операции
-
subjectto{
-
//предусловие
-
forall(minMchs)//для всех станков
-
noOverlap(mchs[m]);
-
//без перекрытия операций по станкам
-
forall(jinJobs,oin0..CMachines-2)
-
endBeforeStart(itvs[j][o],itvs[j][o+1]);
-
}
-
execute{
-
for(varj=0;j<=CJobs-1;j++) {
-
for(varo=0;o<=CMachines-1;o++) {
-
write(itvs[j][o].start+" ");
-
}
-
writeln("");
-
}
-
}
Файлdat
CJobs = 3;
CMachines = 3;
Ops = [
[ <1,25>, <0,5>,<2,12>],
[ <2,7>, <0,10>, <1,15>],
[ <2,15>, <1,10>, <0,8>],
];
На рисунке 7,8 представлены результаты работы IBMILogCP.
Рисунок 7 – Результаты работы IBMILogCP
Рисунок 8 – Результаты работы IBMILogCP продолжение
6Построение графикаГанта обработки деталей и загрузки оборудования по результатам работы IBMILogCP
В таблице 7 представлен календарный график работы производственного участка.
Таблица 7 – Календарный график работы производственного участка по результатам работы IBMILogCP
Длительность обработки |
Время начала обработки |
Маршруты (М) |
||||||||
25 |
5 |
12 |
0E+00 |
25 |
30 |
2 |
1 |
3 |
||
7 |
10 |
15 |
0 |
7 |
35 |
3 |
1 |
2 |
||
15 |
10 |
8 |
7 |
25 |
35 |
3 |
2 |
1 |
В таблице 8 представлено расписание обработки партий деталей, на основании которого строится график ганта, изображенный на рисунке 10.
Таблица 8 – Расписание обработки партий деталей по результатам работы IBMILogCP
График обработки партий деталей |
||||||||
Станок |
|
2 |
|
1 |
|
3 |
|
|
t обслуживания |
0 |
25 |
25 |
30 |
30 |
42 |
|
|
Партия 1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
|
Станок |
|
3 |
|
1 |
|
|
|
2 |
t обслуживания |
0 |
7 |
7 |
17 |
17 |
35 |
35 |
50 |
Партия 2 |
2 |
2 |
2 |
2 |
0 |
0 |
2 |
2 |
Станок |
|
3 |
|
|
|
2 |
|
1 |
t обслуживания |
7 |
22 |
22 |
25 |
25 |
35 |
35 |
43 |
Партия 3 |
3 |
3 |
0 |
0 |
3 |
3 |
3 |
3 |
Рисунок 10 – График обработки партий деталей по результатам работы IBMILogCP
В таблице 9 представлено расписание загрузки приборов по результатам работы IBMILogCP, на основания которого строится график ганта, изображенный на рисунке 11.