Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
46
Добавлен:
04.01.2020
Размер:
193.75 Кб
Скачать

Задание 2. Оптимизация расписания работы производственного участка цеха

Цель. Формализовать и найти решение задачи оптимального управления бизнес-процессом, имеющей следующее содержательное описание.

Условия задачи:

Перед администрацией цеха стоит задача разработки сменно-суточного графика работы производственного участка цеха, состоящего из нескольких станков и обрабатывающего три партии деталей различного типа. Прерывания обработки любой партии деталей в пользу другой не допускаются. Одновременно один станок может обрабатывать только одну партию деталей и одну деталь в партии. Технологические маршруты для каждой партии фиксированы, хотя и различны в общем случае и не могут быть изменены. В качестве критерия эффективности расписания рассматривается быстродействие всей системы (участка), т.е. время завершения обработки последней по хронологии партии деталей.

Технологические маршруты обработки партий деталей представлены в таблице 1.

Таблица 1 – Технологические маршруты обработки партий деталей

Опер. 1

Опер. 2

Опер. 3

Detal 1

S1

S2

S1

Detal 2

S2

S3

S2

Detal 3

S1

S3

S2

Известны также длительности обработки каждой партии деталей на каждой технологической операции., которые представлены в таблице 2.

Таблица 2 – Длительности обработки партий деталей (час)

Опер. 1

Опер. 2

Опер. 3

Detal 1

15

20

10

Detal 2

18

12

20

Detal 3

10

10

20

1. Построение дизъюнктивной сети обслуживающей системы в представлении узел-операция

На основе данных таблицы 1, строим сетевую модель ОС (рис. 1). Временные характеристики проекта приведены в таблице 2.

Рисунок 1 – Смешанная сетевая модель работы производственного участка

2. ЭММ оптимизации расписания работы производственного участка

– время начала выполнения операции i;

– некоторое число, превышающее величиной длительность самой трудоемкой операции в системе;

– время выполнения операции i;

Булевы переменные , если операцию i решено выполнять раньше операции j, и в противном случае.

Для данного примера имеем задачу:

3. Данные задачи структурированы в соответствии с ЭММ и представлены в виде таблицы:

6. Средствами Ilog OPL studio рассчитали кратчайшее расписание (оптимальное по быстродействию) работы участка.

CPLEX:

Файл Vasileva.dat

/*********************************************

* OPL 6.3 Data

* Author: user

* Creation Date: 24.12.2015 at 15:59:55

*********************************************/

n = 19;

m = 27;

m1 = 9;

n1 = 10;

SheetConnection sheet("vas.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");

В данном файле описываются все данные, которые понадобятся во время решения программы. SheetCоnnectiоn – операция, связывающая таблицу Excel с переменной. SheetReаd – процедура для чтения данных с выбранной таблицы, выбранной страницы и выбранного интервала. SheetWrite – процедура для записи значения в таблицу.

Файл Vasileva.mod

/*********************************************

* OPL 6.3 Model

* Author: user

* Creation Date: 24.12.2015 at 15:59:55

*********************************************/

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] = ...;

float MaxValue = 1000*max(r in i2) b2[r];

dvar float x[j1] in 0..MaxValue;

dvar boolean 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];

}

В результате работы получаем решение в IBM ILоg и Excel, которое показано на рисунке 4.

Решение в IBM ILоg CPLEX:

// solution (optimal) with objective 65

x = [-1.7764e-15 20 45 15 33 45 0 10

33 65];

w = [1 1 1 0 1 1 1 1 1];

IBM ILоg CP:

Файл JSPVasileva.dat