Министерство высшего образования РФ Пермский государственный технический университет Кафедра АСУ

advertisement
Министерство высшего образования РФ
Пермский государственный технический университет
Кафедра АСУ
Курсовая работа по исследованию операций
Вариант № 12.2
Выполнил: студент группы АСУ-96-2
Денисов П.В.
Проверил: преподаватель кафедры АСУ
Гольдштейн А.Л.
Пермь 1999
Оглавление
Задание на курсовую работу
Расчетно-пояснительная часть
Заключение
Задание на курсовую работу
Вариант 12.2
Условия. Пункт техобслуживания машин работает с 8 до 18 часов. Один
работник пункта может обслужить две машины. Продолжительность рабочего
дня 8 часов, включая 1 час перерыва на обед. Начало рабочего дня и время перерыва устанавливаются для каждого работника индивидуально, согласно графику расстановки рабочей силы, который составляется с учетом колебания
нагрузки на пункт по часам. При этом соблюдаются следующие условия:
1. Начавшись, рабочий день не прерывается, за исключением перерыва
на обед.
2. До и после перерыва продолжительность работы должна быть не
меньше трех часов.
Величина нагрузки Qi по часам пункта дана в таблице 1, количество работников W - 34 человека.
Требуется определить оптимальный график расстановки работников по
2-3 критерия, один из которых должен характеризовать равномерность недообслуживания в течение всего времени работы пункта.
Показать, как измениться решение по одному из критериев, если одновременно уменьшать Q6 до 0.5Q6 и увеличивать W до 40.
Время работы
пункта, ч
8-9
9-10
10-11
11-12
12-13
13-14
14-15
15-16
16-17
17-18
Таблица 1.
Нагрузка на пункт
Qi (шт.) по вариантам
10
20
40
60
60
80
80
60
40
60
Расчетно-пояснительная часть
Из условия задания видно, что продолжительность рабочего дня 8 часов,
а время работы пункта 10 часов, следовательно рабочие могут заступать на работу в три смены: с 8, 9 и 10 часов. Отсюда получает три переменные: X1, X2 и
X3; которые характеризуют количество работников, начинающих работать с 8, 9
и 10 часов соответственно.
Переменные Y1, Y2, Y3, Y4, Y5, Y6, Y7, Y8, Y9,Y10 будут характеризовать
количество недообслуженных машин в соответствующий час работы пункта.
В условии ограничено время начала перерыва (до и после перерыва продолжительность работы должна быть не меньше трех часов), следовательно перерыв может начать в 11, 12, 13 и 14 часов. Используя это, введем еще четыре
переменные Z4, Z5, Z6, Z7, которые будут характеризовать количество рабочих
ушедших на перерыв в соответственный час рабочего времени.
Используя таблицу 1 и условия задания, получает:
Y1=10-2*X1
Y2=20-2*(X1+X2)
Y3=40-2*(X1+X2+X3)
Y4=60-2*(X1+X2+X3-Z4)
Y5=60-2*(X1+X2+X3-Z5)
Y6=80-2*(X1+X2+X3-Z6)
Y7=80-2*(X1+X2+X3-Z7)
Y8=60-2*(X1+X2+X3)
Y9=40-2*(X2+X3)
Y10=60-2*X3
X1+ X2+X3=34
Z4+Z5+Z6+Z7=34
Z4+Z5X1+X2
Z6+Z7X2+X3
Z5+Z6X2
Z4X1
Z7X3
;к работе приступила первая группа рабочих
;к работе приступила вторая группа рабочих
;к работе приступила третья группа рабочих
;часть(или все) рабочих из первой группы
ушло на обед
;часть(или все) рабочих из первой и второй
группы ушли на обед
;часть(или все) рабочих из второй и третьей
группы ушли на обед
;часть(или все) рабочих из третьей группы
ушло на обед
;работают все рабочие
;у рабочих из первой группы окончился рабочий день
;у рабочих из второй группы окончился рабочий день
;всего рабочих
;все рабочие должны использовать перерыв
;в первые два часа перерыва могут отдыхать
только рабочие из первой и второй групп
;в третьем и четвертом часе перерыва могут
отдыхать только рабочие из второй и третьей
групп
;рабочие второй группы могут отдыхать во
второй и третий час перерыва
;в первый час перерыва могут отдыхать
только рабочие из первой группы
;в четвертый час перерыва могут отдыхать
только рабочие из третьей группы
Все переменные используемые при решении – целочисленные, но не все
из них могут быть положительными. Из первых десяти равенств видно, что пе-
ременные Y1, Y2, Y3, Y4, Y5, Y6, Y7, Y8, Y9,Y10 могут быть отрицательными. Для
того чтобы сделать все переменные не отрицательными, заменим переменные
Yi выражением Mi-Ni, где Mi>0 и Ni>0.
В качестве первого критерия выберем критерий минимизации количества недообслуженных машин:
L1=M1+M2+M3+M4+M5+M6+M7+M8+M9+M10min
В качестве второго критерия выберем критерий характеризующий равномерность количества недообслуженных машин:
L2 = MAX (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10) MIN (M1, M2, M3, M4, M5, M6, M7, M8, M9, M10)  min
Но данный критерий является не линейным. Для приведения его к линейному виду введем две переменные T1 и T2, при этом критерий примет вид:
L2 = T1 - T2 min
При этом появятся дополнительные условия, гарантирующие что T1
примет максимальное значение, а T2 примет минимальное значение :
T1  M1
T1  M2
T1  M3
T1  M4
T1  M5
T1  M6
T1  M7
T1  M8
T1  M9
T1  M10
T2  M1
T2  M2
T2  M3
T2  M4
T2  M5
T2  M6
T2  M7
T2  M8
T2  M9
T2  M10
Для решения данной задачи использовалась программа LINDO. Для первого критерия условия запишем в таком виде:
MIN M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10
SUBJECT TO
2) M1 - N1 + 2 X1 = 10
3) M2 - N2 + 2 X1 + 2 X2 = 20
4) M3 - N3 + 2 X1 + 2 X2 + 2 X3 = 40
5) M4 - N4 + 2 X1 + 2 X2 + 2 X3 - 2 Z4 = 60
6) M5 - N5 + 2 X1 + 2 X2 + 2 X3 - 2 Z5 = 60
7) M6 - N6 + 2 X1 + 2 X2 + 2 X3 - 2 Z6 = 80
8) M7 - N7 + 2 X1 + 2 X2 + 2 X3 - 2 Z7 = 80
9) M8 - N8 + 2 X1 + 2 X2 + 2 X3 = 60
10) M9 - N9 + 2 X2 + 2 X3 = 40
11) M10- N10+ 2 X3 = 60
12) X1 + X2 + X3 = 34
13) Z4 + Z5 + Z6 + Z7 = 34
14) Z4 + Z5 - X1 - X2 <= 0
15) Z6 + Z7 - X2 - X3 <= 0
16) Z5 + Z6 - X2 >= 0
17) Z4 - X1 <= 0
18) Z7 - X3 <= 0
END
GIN M1
GIN M2
GIN M3
GIN M4
GIN M5
GIN M6
GIN M7
GIN M8
GIN M9
GIN M10
GIN N1
GIN N2
GIN N3
GIN N4
GIN N5
GIN N6
GIN N7
GIN N8
GIN N9
GIN N10
GIN X1
GIN X2
GIN X3
GIN Z4
GIN Z5
GIN Z6
GIN Z7
При решении с помощью LINDO получим следующий отчет:
LP OPTIMUM FOUND AT STEP 10
OBJECTIVE VALUE = 88.0000000
FIX ALL VARS.( 10) WITH RC > 1.00000
NEW INTEGER SOLUTION OF 88.0000000
BOUND ON OPTIMUM: 88.00000
ENUMERATION COMPLETE. BRANCHES=
AT BRANCH
0 PIVOTS=
LAST INTEGER SOLUTION IS THE BEST FOUND
RE-INSTALLING BEST SOLUTION...
OBJECTIVE FUNCTION VALUE
1)
88.00000
VARIABLE
M1
M2
M3
M4
M5
M6
M7
M8
M9
M10
N1
N2
N3
N4
N5
N6
N7
N8
N9
N10
X1
X2
X3
Z4
Z5
Z6
Z7
VALUE
0.000000
4.000000
0.000000
0.000000
0.000000
64.000000
12.000000
0.000000
0.000000
8.000000
6.000000
0.000000
28.000000
0.000000
0.000000
0.000000
0.000000
8.000000
12.000000
0.000000
8.000000
0.000000
26.000000
4.000000
4.000000
26.000000
0.000000
REDUCED COST
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
1.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
ROW SLACK OR SURPLUS
2)
0.000000
3)
0.000000
4)
0.000000
5)
0.000000
6)
0.000000
DUAL PRICES
0.000000
0.000000
0.000000
0.000000
0.000000
0 PIVOT
10
10
7)
8)
9)
10)
11)
12)
13)
14)
15)
16)
17)
18)
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
30.000000
4.000000
26.000000
NO. ITERATIONS=
10
BRANCHES= 0 DETERM.= 1.000E
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0
При первом критерии ответ получился следующим: с 8 часов к работе
приступает 8 рабочих, с 9 часов не одного рабочего, а с 10 часов - 26 рабочих;
при этом на обед с 11 часов идут 4 рабочих, с 12 часов тоже 4 рабочих, с 13 часов – 26 рабочих, а с 14 часов не одного рабочего. Количество недообслуженных машин будет равно 88.
Для второго критерия условия запишем в таком виде:
MIN T1 - T2
SUBJECT TO
2) M1 - N1 + 2 X1 = 10
3) M2 - N2 + 2 X1 + 2 X2 = 20
4) M3 - N3 + 2 X1 + 2 X2 + 2 X3 = 40
5) M4 - N4 + 2 X1 + 2 X2 + 2 X3 - 2 Z4 = 60
6) M5 - N5 + 2 X1 + 2 X2 + 2 X3 - 2 Z5 = 60
7) M6 - N6 + 2 X1 + 2 X2 + 2 X3 - 2 Z6 = 80
8) M7 - N7 + 2 X1 + 2 X2 + 2 X3 - 2 Z7 = 80
9) M8 - N8 + 2 X1 + 2 X2 + 2 X3 = 60
10) M9 - N9 + 2 X2 + 2 X3 = 40
11) M10- N10 + 2 X3 = 60
12) X1 + X2 + X3 = 34
13) Z4 + Z5 + Z6 + Z7 = 34
14) Z4 + Z5 - X1 - X2 <= 0
15) Z6 + Z7 - X2 - X3 <= 0
16) Z5 + Z6 - X2 >= 0
17) Z4 - X1 <= 0
18) Z7 - X3 <= 0
19) T1 - M1 >= 0
20) T1 - M2 >= 0
21) T1 - M3 >= 0
22) T1 - M4 >= 0
23) T1 - M5 >= 0
24) T1 - M6 >= 0
25) T1 - M7 >= 0
26) T1 - M8 >= 0
27) T1 - M9 >= 0
28) T1 - M10>= 0
29) T2 - M1 <= 0
30) T2 - M2 <= 0
31) T2 - M3 <= 0
32) T2 - M4 <= 0
33) T2 - M5 <= 0
34) T2 - M6 <= 0
35) T2 - M7 <= 0
36) T2 - M8 <= 0
37) T2 - M9 <= 0
38) T2 - M10<= 0
END
GIN M1
GIN M2
GIN M3
GIN M4
GIN M5
GIN M6
GIN M7
GIN M8
GIN M9
GIN M10
GIN N1
GIN N2
GIN N3
GIN N4
GIN N5
GIN N6
GIN N7
GIN N8
GIN N9
GIN N10
GIN X1
GIN X2
GIN X3
GIN Z4
GIN Z5
GIN Z6
GIN Z7
GIN T1
GIN T2
При решении с помощью LINDO получим следующий отчет:
LP OPTIMUM FOUND AT STEP 33
OBJECTIVE VALUE = 0.000000000E+00
NEW INTEGER SOLUTION OF 0.000000000E+00 AT BRANCH
0 PIVOT 35
BOUND ON OPTIMUM: 0.0000000E+00
ENUMERATION COMPLETES. BRANCHES= 0 PIVOTS= 35
LAST INTEGER SOLUTION IS THE BEST FOUND
RE-INSTALLING BEST SOLUTION...
OBJECTIVE FUNCTION VALUE
1) 0.0000000E+00
VARIABLE
M1
M2
M3
M4
M5
M6
M7
M8
M9
M10
N1
N2
N3
N4
N5
N6
N7
N8
N9
N10
X1
X2
X3
Z4
Z5
Z6
Z7
T1
T2
ROW
2)
3)
4)
5)
6)
7)
8)
9)
VALUE
28.000000
28.000000
28.000000
28.000000
28.000000
28.000000
28.000000
28.000000
28.000000
28.000000
54.000000
44.000000
56.000000
0.000000
36.000000
0.000000
0.000000
36.000000
20.000000
0.000000
18.000000
0.000000
16.000000
18.000000
0.000000
8.000000
8.000000
28.000000
28.000000
REDUCED COST
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
1.000000
-1.000000
SLACK OR SURPLUS
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
DUAL PRICES
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
10)
11)
12)
13)
14)
15)
16)
17)
18)
19)
20)
21)
22)
23)
24)
25)
26)
27)
28)
29)
30)
31)
32)
33)
34)
35)
36)
37)
38)
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
8.000000
0.000000
8.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
0.000000
NO. ITERATIONS= 36
BRANCHES= 0 DETERM. = 1.000E 0
При использовании второго критерия ответ получился следующим: с 8
часов к работе приступает 18 рабочих, с 9 часов не одного рабочего, а с 10 часов
- 16 рабочих; при этом на обед с 11 часов идут 18 рабочих, с 12 часов не одного
рабочего, с 13 часов – 8 рабочих, и с 14 часов тоже 8 рабочих. Количество недообслуженных машин будет равно 120.
В LINDO нельзя параметризировать задачи с целочисленными переменными, чтобы узнать результат параметризации, отменим условия целочисленности (оператор GIN <переменная>). Кроме этого, в LINDO можно параметризировать только один параметр, для того чтобы параметризировать по двум параметрам введем новую переменную P через которую будем влиять на эти параметры. Модель примет следующий вид:
MIN M1 + M2 + M3 + M4 + M5 + M6 + M7 + M8 + M9 + M10
SUBJECT TO
2) M1 - N1 + 2 X1 = 10
3) M2 - N2 + 2 X1 + 2 X2 = 20
4)
5)
6)
7)
M3 - N3 + 2 X1 + 2 X2 + 2 X3 = 40
M4 - N4 + 2 X1 + 2 X2 + 2 X3 - 2 Z4 = 60
M5 - N5 + 2 X1 + 2 X2 + 2 X3 - 2 Z5 = 60
M6 - N6 + 2 X1 + 2 X2 + 2 X3 - 2 Z6 + 6.6666 P = 80 ! 1-ая переменная пара! метризации
8) M7 - N7 + 2 X1 + 2 X2 + 2 X3 - 2 Z7 = 80
9) M8 - N8 + 2 X1 + 2 X2 + 2 X3 = 60
10) M9 - N9 + 2 X2 + 2 X3 = 40
11) M10- N10+ 2 X3 = 60
12) X1 + X2 + X3 - P = 34
! 2-ая переменная параметризации
13) Z4 + Z5 + Z6 + Z7 - P= 34
! 2-ая переменная параметризации
14) Z4 + Z5 - X1 - X2 <= 0
15) Z6 + Z7 - X2 - X3 <= 0
16) Z5 + Z6 - X2 >= 0
17) Z4 - X1 <= 0
18) Z7 - X3 <= 0
19) P = 0
!Переменная по которой будем параметризировать (при!своим значение при параметризации 6 ) в LINDO
END
При решении получим следующий результат:
RIGHTHANDSIDE PARAMETRICS REPORT FOR ROW: 19
VAR VAR PIVOT
OUT IN ROW
M4
M6
N9
N2
Z6
X2
14
7
3
RHS
DUAL PRICE
VAL
BEFORE PIVOT
0.000000E+00
14.6666
1.00000
14.6666
1.38463
10.6666
6.00000
10.6666
В графическом виде:
OBJ
VAL
88.0000
73.3334
69.2307
20.0004
Из решения вид что при увеличении числа работников до 40 человек и
снижении Q6 до 0.5Q6, критерий начинает значительно уменьшать и достигает
значения 20, т.е. данная операция выгодна так как уменьшает критерий приблизительно в 4 раза.
Заключение
При решении задачи использовалось два критерия: по одному критерию
минимизировалось количество недообслуженных машин, по второму характеризовалось равномерность недообслуживания. Если использовать первый критерий, то количество недообслуженных машин равно 88, а по второму критерию
это количество равно 120, следовательно выгодней решать задачу используя
критерий минимизации недооблуженных машин.
Download