- •Лекція №1
- •Лекція №2
- •Лекція №3
- •Лекція № 4
- •Лекція №5
- •Лекція № 6
- •Лекція №7
- •Лекція 8
- •2 Алгоритм симплекс-методу.
- •Двоїстість лінійного програмування.
- •Приклад
- •Симетричні двоїсті задачі. З адача іі
- •Двоїстий симплекс - метод.
- •Перша теорема двоїстості.
- •Симетричні двоїсті задачі.
- •Алгоритм двоїстого симплекс-методу.
- •Приклад.
- •Економічна інтерпретація прямої та двоїстої задачі.
- •Економічна інтерпретація прямої та двоїстої задачі.
- •Транспортна задача лінійного програмування (в найпростішому варіанті – класична).
- •Властивості транспортної задачі.
- •Знаходження первинного опорного розв’язку т-задачі. Метод північно-західного кута.
- •Метод мінімального елементу в рядках.
- •Метод потенціалів в розв’язку транспортної задачі.
- •Алгоритм методу потенціалів.
- •Дискретне програмування. Математичні моделі задач дискретного програмування.
- •Задачі про призначення.
- •Задача про комівояжера.
- •Метод відокремлюючих площин.
Лекція № 6
Алгоритм симплекс – методу для невиродженої задачі.
Дана канонічна ЗЛП:
.
Відомий опорний розвязок х = (х1, х2, …, хn) і його базис Аi1, Аi2, …, Аim. Для розвязку задачі необхідно розкласти за початковим базисом вектора А1, А2, …, Аn.
Примітка: числа Хіо відомі.
Базисні вектори розкладаються за формулою:
,
де
В = (Аі1, …, Аім).
Для кожного j обчислюються оцінки
.
Оцінки базисних векторів завжди дорівнюють 0. Якщо всі j0, то процес зупиняється. Відповідно до теореми 1, розвязок оптимальний при відємному j. Визначаємо присутність в такому стовпчику всіх відємних Xkj. Якщо така оцінка існує, то процес завершується.
В іншому випадку, обираємо одну з відємних j, як правило мінімальну, і називаємо її S. Розраховуємо відношення к, яке дорівнює
для
xks
> 0.
Обираємо найменшу з них.
Здійснюємо перехід до нового опорного розвязку, базис якого утворюється заміною вектора Air вектором As. Для цього обчислюємо координати всіх векторів А1, А2, …, Аn за основними формулами
.
Блок – схема алгоритму.
Обчислення xkj та j для початкового опорного розвязку.
Чи є j<0? (ні– (3А), так – (3Б))
А) Кінець: даний опорний розвязок – оптимальний.
Б) Чи є такі j<0, що всі xkj<0? (так – (4А), ні – (4Б))
А) Кінець: задача не має розвязків.
Б) Вибір вводимого в базис і виводимого вектора, тобто s i r.
Розрахунок нових значень xkj та j за основними формулами.
Примітка:
Теореми (2) і (3) підходять і для виродженого випадку, але там min=0. Через це, оцінки розраховуються іншим способом: відповідні значенням нульові координати xrs роблять ненульовими.
Пошук початкового опорного розвязку.
Простіше за все починати симплекс процес з одиничного базису. Існують спеціальні прийоми, які дозволяють звести задачу до задачі з повним одиничним базисом. Але це повязано з введенням додаткових змінних:
розвязок додаткової задачі;
метод штучного базису М.
Нехай маємо канонічну ЗЛП і нехай невідомий її опорний розвязок.
Змінимо її наступним чином:
де xj 0 , j=1,m;
x n+1, …, x n+m – штучні змінні, а вектори А n+1, …, А n+m утворюють штучний одиничний базис;
М – деяке додатнє досить велике число (вводиться для того, щоб штучні вектори вивести з базису за допомогою оцінок j).
Ця задача називається М – задачею. Вона має явнеий опорний розвязок з одиничним базисом і до неї можна застосувати симплес метод.
Припустимо, що ми розвязали М – задачу. Можливі випадки:
М – задача має розвязок .
Нехай х*0 - її оптимальний розвязок
x*0 = (х10, х20, …, хn0, x n+10, …, x n+m0),
тоді розглянемо варіант
x n+10 = …= x n+m0 =0, тобто всі штучні змінні рівні. Доведемо, що вектор х*0 – оптимальний розвязок рівняння початкової задачі.
Припустимо, що це не так і що вектор х = (х1, х2, …,хn) надає значення ЦФ більше, тобто (с,х1)> (с, х*0). Звісно, що х = (х1, х2, …,хn, 0, …, 0) припустимий розвязок М – задачі
(с,х) = (с, х) > (c, х*0) = (c, х*0),
так як x n+10, …, x n+m0=0.
Отримана нерівність протирвічить тому, що вектор x*0 буде оптимальним розвязком М – задачі. Звідси x*0 буде оптимальним розвязком початкової задачі.
б) Серед x n+10, …, x n+m0 є не нульові. Доведемо, що у цьому випадку початкова задача недопустима.
Нехай це не так і вектор х = (х1, х2, …,хn) – певне допустимий розвязок початкової задачі.
Розглянемо вектор х = (х1, х2, …,хn, 0, …, 0) – допустимий розвязок М – задачі і побудуємо для нього ланцюг
(с,х) = (с, х) > (c, х*0) = (c, х*0) - М x n+і0 > 0
М – як завгодно велике число, тобто маємо протиріччя, що вектор х*0 – оптимальний розвязок.
М – задача не має розвязку, тобто ЦФ не обмежене зверху.
У цьому випадку можна довести, що початкова задача, або недопустима, або має не обмежену ЦФ.
Розвязок М – задачі при невизначеному достатньо великому М.
В М – задачі на кожній іттерації від М залежить лише оцінки j (j' М + j").
Так як М достатньо велике, то знак j співпадає зі знаком при j'. Звідси, не знаючи конкретного значення М ми знаємо знаки всіх оцінок j і можемо (різними способами) будувати симплекс – процес.
