
4.2 Опис алгоритму програми
ПОДВІЙНА ЗАДАЧА ЛІНІЙНОГО
ПРОГРАМУВАННЯ
Для будь-якої моделі існує поняття подвійної задачі - це перетворення задачі в одних змінних та запис – в інших.
Якщо задача має розмірність m*n ,її можна записати та розв’язати як n*m.
Математична модель для даного методу має вигляд
=
Основні визначення для подвійної задачі
Теорема 1
Значення цільової функції і подвійної задачі співпадають, знаки - ні.
Якщо в прямій задачі Z max , то в оберненій задачі
(подвійній) Z min.
Якщо в прямій задачі функція необмежена зверху, то в подвійній – вона необмежена знизу.
Теорема 2
Пряма та подвійна задачі взаємопов’язані між собою.
П
одвійна
задача (ПЗ): Пряма задача
(ПРЗ):
Правила переведення до ПЗ :
Кожному обмеженню виду “=” ПРЗ відповідає змінна ПЗ .
Кожній змінній ПРЗ відповідає обмеження виду ( чи ) ПЗ .
Коефіцієнт цільової функції ПЗ дорівнює правій частині ПЗ .
Якщо в ПРЗ умова невід’ємності обов’язкова, то в ПЗ ця умова відсутня.
Цільва функція змінює знак з max на min чи навпаки.
Обмеження ПЗ мають знак “”,якщо в ПРЗ ЦФmax.
Існує взаємозв’язок між змінними ПРЗ та ПР.
(a11x1+a12x2+…+a1nxn-a10)y1=0 (a11y1+a21y2+…+am1yn-c1)x1=0
. . . . . .
(am1x1+am2x2+…+amnxn-am0)ym=0 ; (a1ny1+a2ny2+…+amnyncn)xn=0;
Отримавши
рішення (результат)
,на
підставі ПЗ,завжди можна ,за допомогою
вище описаної системи,знайти
.
Для розв’зання ПРЗ ( - ? ) необхідно :
Перейти
від прямої моделі до подвійної :
;
Розв’язати ПЗ ( - ? ) ;
На підставі системи (7) знайти .
Приклад.
-24x1+2x3+6x4max
-
3x1+x2+x3+3x4=4
y1
2x1+2x2+x3+x4=6 y2
x1,…,x40
4
y1+6y2
min A : y1+2y2=0
-3y1+2y2-24 y1+y2 = 2
y1+2y20
y1+y22 Y = ( 4 ; -2 )
3
y1+y26
Z = 4
На підставі теореми 2 : Вирішимо дану систему рівнянь методом
(-3y1+2y2+24)x1=0 підбору. Y=(4 ; -2)
(y1+2y2)x2=0
(y1+y2-2)x3=0
(3y1+y2-6)x4=0
Підставивши в систему знайдені значення Y , отримаємо :
X = ( 0 , 2 , 2 , 0)
Z = 4 .
Доцільність використовування ПЗ :
Використовується з метою зниження розмірності задачі .
Зменшення кількості змінних .
Використовується в інших задачах (Подвійний симплекс метод) .
ПОДВІЙНИЙ СИМПЛЕКС МЕТОД
Даний метод оснований на постійному поліпшенні неприпустимості рішень.
Якщо в ПРЗ симплекс методу основана на постійному поліпшенні значень ЦФ :
k+1 k
0 0 , то в ПЗ Xбазисне : Xn х B ; Xn 0.
Мета : Xnmax.
ВІДЗНАКА ПОДВІЙНОГО симплекс методу (ПСМ) від ПРЯМОГО (ПРСМ)
Вибір направляючого елементу (спочатку визначається рядок :
min(
Xi0
Xi0
0 ) , а потім стовпець :
;
Канонічна форма ПСМ повинна мати рівність та одиничний базис .
Для приведення до канонічного виду необхідно розрахувати псевдоплан . Псевдоплан – це нова модель , що містить в собі одиничний базис (сопряжённый базис) та неприпустиме опорне рішення .
Примітка : існують типові моделі , для яких псевдоплан можна записати відразу (наприклад, Задача змінно-добового планування ) .
Якщо в ПРСМ повинна бути хоча б одна Ітерація , то в ПСМ рішення може бути отримане відразу після перерахунку псевдоплану .
Всі останні Подвійні симплекс-перетворення аналогічні ПРСМ .
Приклад .
4x1+3x2+10x3+5x4min 3 * 10 розмірність симплекс задачі.
3x1+2x2-x3+5x48 3 * 7 розмірність подвійної СЗ .
x2-3x3+6x44
2x1+x3-x40
x1, … , x40
необхідно привести до max та до рівностей (канонічний вигляд):
-4x1-3x2-10x3-5x4max
3
x1+2x2-x3+5x4-x5=8 y1
-x2-3x3+6x4-x6=4 y2
2x1+x3-x4-x7=0 y3
формуємо подвійну модель , щоб вибрати “сопряжённый” базис.
8
y1+4y2min A0
3y1+2y3-4 A1
2y1-y2-3 A2
-y1-3y2+y3-10 A3
5y1+6y2-y3-5 A4
-y10 A5
-y20 A6
-y30 A7
3) На підставі рядків ПЗ будуємо подвійні вектори А0 , А1 , А2 , А3 , А4 , А5 , А6 , А7 .
8 3 2 -1
А0 = 4 А1 = 0 А2 = -1 А3 = -3
0 2 0 1
5
-1 0 0
А4 = 6 А5 = 0 А6 = -1 А7 = 0
-1 0 0 -1
4) Вибір “сопряжённого” базису розміром m. Для цього необхідно:
свавільно вибрати m рівнянь (в даній задачі вибираємо рівняння (5,6,7) , тут =(0,0,0) ) ;
розв’язуємо цю систему з m рівнянь ;
підставляємо рішення в кожне з залишених (n-m) обмежень(в даній задачі це рівняння(2,3,4,5)) та перевіряємо , чи задовольняє “сопряжённый” базис.
Якщо так, то відбувається розрахунок симплекс таблиці, тобто псевдоплан.
Якщо ж ні, то даний варіант не задовольняє, тому слід перейти до наступного
“сопряжённого ”базису.
Отже маємо складену симплекс таблицю :
|
|
|
-4 |
-3 |
-10 |
-5 |
0 |
0 |
0 |
|
Bx |
A0 |
A1 |
A2 |
A3 |
A4 |
A5 |
A6 |
A7 |
|
X5 |
-8 |
-3 |
-2 |
1 |
-5 |
1 |
0 |
0 |
|
X6 |
4 |
0 |
1 |
3 |
-6 |
0 |
1 |
0 |
|
X7 |
0 |
-2 |
0 |
-1 |
1 |
0 |
0 |
1 |
|
|
0 |
4 |
3 |
10 |
5 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
A0 = A5X50 + A6X60 + A7X70
8 = -1x50 + 0x60 + 0x70
4 = 0x50 - 1x60 + 0x70
0 = 0x50 + 0x60 – 1x70
Xb = ( -8 ; -4 ; 0 ).
Наступні розрахунки утворюються аналогічним чином.
Класифікація методів неперервного лінійного програмування
Симплекс метод використовується коли: ЦФmax, а обмеження 0.
Симплекс метод (М-задача) : обмеження 0, = 0 .
Подвійний симплекс метод без розрахунку псевдоплану,
цільова функціяmin , а всі обмеження 0 (задача змінно-добового планування).
Подвійний симплекс метод з розрахунком псевдоплану.
СПЕЦІАЛЬНІ ЗАДАЧІ ЛІНІЙНОГО ПРОГРАМУВАННЯ
Задача призначення.
- задача про розподілення обладнання
Потрібно розподілити 5 екскаваторів між 4 кар’єрами з метою максимізації виробітки.
|
K1 |
K2 |
K3 |
K4 |
1 |
5 |
- |
7 |
- |
2 |
7 |
8 |
8 |
- |
3 |
4 |
4 |
12 |
10 |
4 |
8 |
7 |
10 |
11 |
5 |
10 |
- |
- |
14 |
5
5
5 -100 7 -100 0
j
= 1,M
7 8 8 -100 0
4 4 12 10 0
I
= 1,N
8 7 10 11 0
10 -100 -100 14 0
Xij 0 ;
Для приведення задачі до закритого вигляду , необхідно ввести (додати) фіктивне обладнання.
Задача про розклад.
Для кожної пари вирішується задача призначення потоку групи в аудиторії.
Критерієм є вмісткість аудиторії, розвантаження сходів(мінімізація хвилин переходу) .
Cij-хвилини переходу; і - номер групи; j-аудиторія.
j=1,M
; і=1,N
;
3)Розподілення користувачем в класі ЕОМ.
Задана кількість користувачів та кількість комп’ютерів. Кожен користувач вирішує свою задачу за окремою ЕОМ. Необхідно розподілити користувачів
по критерію мінімума.
4)Транспортна задача.
С
клад
Споживач
A B
-
вміщення матеріалів на складі;
-
заявка.
Сij - витрати
і=1,M
; j=1,N
;
Задача планування будівельного майданчика.
ЗАДАЧА ПРИЗНАЧЕННЯ .
ВЕНГЕРСЬКИЙ МЕТОД
і=1,I
; j=1,I ;
АЛГОРИТМ ВЕНГЕРСЬКОГО МЕТОДУ
Приведення до канонічного вигляду. Задача повинна бути закритою.
Перед визначенням істотних нулів ( єдиний нуль в рядках та стовпцях),
1. Перерахунок по стовпцям (віднімання від максимального елемента )
2. Та по рядкам (віднімання мінімального елемента).
3. Формування по стовпцям істотних нулів (позначення стовпців).
4. Рішення знайдено (кількість позначок”+”повинна дорівнювати розмірності задачі (і)).Якщо рішення не знайдено :
Перевірка на зацикленість (кількість ітерацій “” чи “”).
5. Формування ланцюжка 0`0*…0` , де
0* - істотний нуль ;
0` - виділений нуль в рядку з 0*.
Побудова ланцюжка здійснюється від 0` в невиділеному стовпчику до 0* в рядку , потім прямуємо до 0` в стовпці,...,закінчуючи 0`.
При побудові ланцюжка необхідно відмічати рядки “+” та знімати позначення стовпців.
6. Якщо ланцюжок побудовано, то замінюємо : 0`0*.Переходимо до п.4.
7. Генерація нових нулів. Визначення h0 серед невиділених елементів.
Визначення мінімального з них.
8. Віднімання h від невиділених рядків та додавання h до виділених стовпців.
Перехід до п.3.
значення
Z
повинне дорівнювати значенню
.
З метою програмування необхідно оголосити наступні файли :
C : array 1..M of real ;
A : array 1..N,0..M of real ;
D : array 0..M of real ;
K : longint ;
B : array 1..N of byte ;
ЗАДАЧА
Необхідно розподілити партію комп’ютерів (6) між підрозділами ВУЗу (8).
Відомо , що кожен комп’ютер має свою конфігурацію . Призначення кожного комп’ютера в підрозділ вимагає визначених затрат. Необхідно розподілити партію комп’ютерів.
max
1
і=1,6
1
j=1,8
0
, 1
;