Министерство высшего образования РФ Пермский государственный технический университет Кафедра АСУ Курсовая работа по исследованию операций Вариант № 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+Z5X1+X2 Z6+Z7X2+X3 Z5+Z6X2 Z4X1 Z7X3 ;к работе приступила первая группа рабочих ;к работе приступила вторая группа рабочих ;к работе приступила третья группа рабочих ;часть(или все) рабочих из первой группы ушло на обед ;часть(или все) рабочих из первой и второй группы ушли на обед ;часть(или все) рабочих из второй и третьей группы ушли на обед ;часть(или все) рабочих из третьей группы ушло на обед ;работают все рабочие ;у рабочих из первой группы окончился рабочий день ;у рабочих из второй группы окончился рабочий день ;всего рабочих ;все рабочие должны использовать перерыв ;в первые два часа перерыва могут отдыхать только рабочие из первой и второй групп ;в третьем и четвертом часе перерыва могут отдыхать только рабочие из второй и третьей групп ;рабочие второй группы могут отдыхать во второй и третий час перерыва ;в первый час перерыва могут отдыхать только рабочие из первой группы ;в четвертый час перерыва могут отдыхать только рабочие из третьей группы Все переменные используемые при решении – целочисленные, но не все из них могут быть положительными. Из первых десяти равенств видно, что пе- ременные 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+M10min В качестве второго критерия выберем критерий характеризующий равномерность количества недообслуженных машин: 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, следовательно выгодней решать задачу используя критерий минимизации недооблуженных машин.