Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы МСО.doc
Скачиваний:
5
Добавлен:
16.11.2019
Размер:
1.97 Mб
Скачать

Тема: "Задача опуклого квадратичного програмування. Квадратичний симплекс-метод"

(2 години)

Ціль роботи: ознайомитися з задачами нелінійного програмування та методами їх розв`язання.

Теоретичні відомості:

Постановка задачі нелінійного програмування.

Знайти вектор x=(x1,...,xn), що мiнiмiзує (максимізує) функцію

F(x) = F(x1,...,xn) (14.1)

i задовольняє систему обмежень

Gi(x1,...,xn) Ri 0, i=1,...,m, (14.2)

де символ Ri замінює один із знаків £, =, ³.

Якщо хоча б одна з функцій F, Gi (i=1,...,m) є нелінійною, то вказана постановка визначає задачу нелінійного програмування (ЗНЛП).

Сукупність точок (векторів) x, що задовольняють (14.2), зветься допустимою областю (множиною) i позначається через D.

Довільна точка D зветься допустимим розв'язком (точкою, планом, вектором).

Функція F(x) співвідношення (14.1) зветься цільовою функцією.

Постановка задачі опуклого програмування.

Знайти вектор x=(x1,...,xn), що мiнiмiзує цільову функцію

F(x) = F(x1,...,xn) (14.3)

i задовольняє систему обмежень

Gi(x1,...,xn0, i=1,...,m, (14.4)

xj³0, j=1,...,n, (14.5)

де функції F, Gi (i=1,...,m) — опуклі.

Таким чином, для задачі опуклого програмування (ЗОП) цільова функція (14.3) — опукла, обмеження (14.4)–(14.5) визначають опуклу допустиму множину.

Постановка задачі опуклого квадратичного програмування.

Знайти вектор x, що мiнiмiзує цільову функцію

F(x) = x D xТ + c xТ (14.6)

i задовольняє систему обмежень

A xТ £ bТ, x ³ 0, (14.7)

де c=(c1,...,cn), x=(x1,...,xn), D=||dkl||, k,l=1,...n, A=||aij||, i=1,...,m, j=1,...,n, b=(b1,...,bm), матриця D симетрична та невід'ємно визначена.

Таким чином, для задачі опуклого квадратичного програмування (ЗОКП) цільова функція (14.6) — опукла квадратична, обмеження (14.7) — лінійні i визначають опуклу многогранну допустиму множину.

Зауважимо, що для випадку n=2, m=1 ЗОКП має вигляд:

d11 x12 + d22 x22 + 2 d12 x1 x2 + c1 x1 + c2 x2 ® min,

a11 x1 + a12 x2 £ a10, xj ³ 0, j=1,2,

до того ж D=||dkl||, k,l=1,2, d12 = d21.

Основні твердження.

Означення. Множина W зветься опуклою, якщо для довільних точок x,yÎW, та tÎ[0,1] виконується tx+(1–t)yÎW.

Означення. Функція H(x), xÎWÌEn, де W — опукла множина, зветься опуклою, якщо для довільних точок x,yÎW та tÎ[0,1] виконується нерівність H(tx+(1–t)ytH(x)+(1–t)H(y).

Теорема. Множина {x:H(x0}, де функція H(x) — опукла, є опуклою.

Теорема. Перетин опуклих множин є опуклою множиною.

Теорема. Квадратична функція F(x)=xDxТ+cxТ опукла, якщо матриця D — невід'ємно визначена.

Теорема. Матриця D — невід'ємно визначена, якщо всі її діагональні мінори невід'ємні:

det(D(k))³0, D(k)=||dij||, i,j=1,...k.

Теорема Куна-Таккера-1.

Нехай допустима область D={xÎEn:Gi(x0,i=1,...,m,x³0} задачі опуклого програмування (18.3)–(18.5) задовольняє умову Слейтера: існує xÎD таке, що для всіх i=1,...,m Gi(x)<0, тобто множина D має внутрішні точки.

Тоді для того, щоб вектор x* був оптимальним розв'язком задачі опуклого програмування, необхідно i достатньо, щоб існував вектор u*³0 такий, що пара (x*,u*) є сiдловою точкою функції Лагранжа:

L(x,u)= F(x)+(u1 G1(x) +...+ um Gm(x)),

x=(x1,...,xn0, u=(u1,...,um0.

Кажуть, що точка (x*,u*) є сiдловою точкою функції L(x,u), якщо для всіх x³0, u³0 мають місце нерівності

L(x*,u) £ L(x*,u*) £ L(x,u*).

Теорема Куна-Таккера-2.

Для неперервно диференцiйовних функцій F(x), Gi(x), i=1,...,m, теорема Куна-Таккера може бути переформульована так.

Вектор x* є оптимальним розв'язком задачі опуклого програмування (14.3)–(14.5) тоді i лише тоді, коли існує вектор u*³0 такий, що для пари (x*,u*) виконуються умови:

ÑxL(x*,u*0, ÑxL(x*,u*)(x*)Т=0, j=1,...,n,

ÑuL(x*,u*0, ÑuL(x*,u*)(u*)Т=0, i=1,...,m.

Для задачі (14.6)–(14.7) опуклого квадратичного програмування останні співвідношення набувають вигляду

c+2xD+uA ³0, (14. 8)

(c+2xD+uA)xТ=0, (14. 9)

xAТ–b £0, (14.10)

(xAТ–b)uТ =0, (14.11)

x ³ 0, u ³ 0.

Допоміжна ЗЛП для ЗОКП.

Якщо ввести вектори y=(y1,...,yn0 та v=(v1,...,vm0, то співвідношення (14.8)–(14.11) матимуть вигляд:

c + 2 x D + u A – y = 0, (14.12)

x AТ – b + v = 0, (14.13)

y xТ = 0, v uТ = 0, (14.14)

x ³ 0, u ³ 0, y ³ 0, v ³ 0.

Зауважимо, що для випадку n=2, m=1 матимемо

2 d11 x1 + 2 d12 x2 + a11 u – y1 = – c1 ,

2 d12 x1 + 2 d22 x2 + a12 u – y2 = – c2 ,

a11 x1 + a12 x2 + v = a10 ,

x1 y1 = 0, x2 y2 = y2, u v = 0,

x1, x2, u, y1, y2, v ³ 0.

Система (14.12)–(14.13) складається з n+m лінійних рівнянь відносно 2(m+n) невідомих xj, yj (j=1,...,n), ui, vi (i=1,...,m).

Крім того, як випливає з умов (14.14), повинно бути:

якщо xj > 0, то yj = 0, (14.15)

якщо yj > 0, то xj = 0, (14.16)

якщо ui > 0, то vi = 0, (14.17)

якщо vi > 0, то ui = 0. (14.18)

Отже, шуканим розв'язком системи (14.12)–(14.13) може бути довільний невід'ємний базисний її розв'язок, але такий, що змінні xj та yj (а також ui та vi) з однаковими індексами не можуть бути водночас базисними. Для відшукання такого розв'язку можна застосувати будь-який із відомих методів ЛП, зокрема, метод штучного базису. З цією метою запишемо систему (14.12)–(14.13) у вигляді

2 x D + u A – y = – c, (14.19)

x AТ + v = b. (14.20)

Не обмежуючи загальності, будемо вважати, що праві частини цієї системи невід'ємні: –c³0, b³0 (оскільки, в іншому випадку відповідні рівняння, їх праву i ліву частину, досить помножити на –1). Згідно методу штучного базису в кожне рівняння системи (14.19)–(14.20), яке не містить базисної змінної, вводимо штучну змінну. Оскільки змінні vi (i=1,...,m) можна вважати базисними, то штучні змінні z=(z1,...,zn0 вводимо тільки в рівняння (14.19) i розглядаємо допоміжну КЗЛП

z iТ ® min, (14.21)

2 x D + u A – y + z = – c, (14.22)

x AТ+ v = b, (14.23)

x ³ 0, u ³ 0, y ³ 0, v ³ 0, z ³ 0, (14.24)

де i=(1,1,...,1) — n-вимірний одиничний вектор.

Квадратичний симплекс-метод.

Задача (14.21)–(14.24) розв'язується симплекс-методом.

Якщо знайдений ДБР цієї задачі задовольняє умови доповнюючої нежорсткостi (14.15)–(14.18), то він визначає оптимальний розв'язок вихідної ЗОКП. Інакше треба перейти до нового ДБР. При цьому до базисних включається нова змінна з нульовою оцінкою.

Симплекс-метод з умовами (14.15)–(14.18) для розв'язування допоміжної КЗЛП (14.21)–(14.24), побудованої на основі задачі опуклого квадратичного програмування (14.6)–(14.7), i називають квадратичним симплекс-методом (алгоритм звичайного симплекс-методу, а також всі зв'язані з ним означення i твердження наведені в методичних вказівках до виконання лабораторної роботи №3).

Якщо в оптимальному розв'язку допоміжної КЗЛП (14.21)–(14.24) всі штучні змінні zj (j=1,...,n) приймають нульові значення, то, відкидаючи їх, отримаємо ДБР системи (14.19)–(14.20). Та його частина, яка відповідає змінним початкової задачі опуклого квадратичного програмування (14.6)–(14.7), i буде її оптимальним розв'язком.

Якщо ж в оптимальному розв'язку допоміжної КЗЛП (14.21)–(14.24) значення хоча б однієї із штучних змінних відмінне від нуля, то система (14.19)–(14.20) розв'язків не має, а, отже, множина сiдлових точок функції Лагранжа початкової задачі опуклого квадратичного програмування порожня.

Порядок виконання роботи:

  1. Ознайомитися з теоретичними відомостями;

  2. Вибрати варіант завдання, згідно списку підгрупи у журналі;

  3. Написати програму в середовище Delphi;

  4. За допомогою програми, виконати завдання, згідно варіанту;

  5. Написати висновки до роботи.

Варіанти завдань:

Розв'язати квадратичним симплекс-методом задачі опуклого квадратичного програмування наступні задачі.

У всіх задачах виконуються умови: x1 ³ 0, x2 ³ 0.

1)

x12 + x22 –2 x1 – 4 x2 ® min,

2)

–2 x12 – 3 x22 + 4 x1 x2 + 12 x2 ® max,

2 x1 + 3 x2 £ 6;

3 x1 + 4 x2 £ 12;

3)

2 x12 + x22 – x1 x2 – x1 ® min,

4)

x12 + 3 x22 – x1 – 2 x2 ® min,

x1 + 2 x2 £ 1;

x1 + 4 x2 £ 7;

5)

–2 x12 – 3 x22 + 16 x1+ 24 x2 ® max,

6)

x12+ x22 – 3 x1 – 8 x2 ® min,

2 x1 + x2 £ 4;

x1 +2 x2 £ 4;

7)

–x12 – x22 + x1 + 2 x2 ® max,

8)

–x12 – x22 + x1 x2 + 5 x1 + 2 x2 ® max,

x1 + 2 x2 £ 16;

2 x1 +3 x2 £ 15.

Зміст звіту:

  1. Титульний лист, згідно встановленого образка;

  2. Основні теоретичні відомості;

  3. Варіант завдання;

  4. Код програми, яка реалізує даний метод;

  5. Розв`язок з поясненнями;

  6. Висновок.

Контрольні питання:

  1. Які функції називають опуклими?

  2. Як формулюється задача нелінійного програмування?

  3. Алгоритм опуклого симплекс-метода.

ЛІТЕРАТУРА

  1. Галеев Э.М. Оптимизация: теория, примеры, задачи: Учебное пособие. – М.: Едиториал УРСС, 2002, –304с.

  2. Капустин В.Ф. Практические занятия по курсу математического программирования. Л., Узд-во Ленингр. ун-та, 1976, –192с

  3. Карманов В.Г. Математическое программирование: Учебное пособие.-5е изд., стереотип.-М; ФИЗМАТЛИТ, 2004 – 264с.

  4. Ковалев М.М. Дискретная математика (целочисленное программирование). Изд. 2-е, стереотипное. М.: Едиториал УРССР, 2003. – 192с.

  5. Коршунов Ю.М. Математические основы кибернетики: Учебное пособие для вузов. – М. Энергоатомиздат, 1987. – 496с.: ил.

  6. Лунгу К.Н. Линейное программирование. Руководство к решению задач – М.: ФИЗМАТЛИТ, 2005, –128с.

  7. Моисеев Н.Н., Иванилов Ю.П., Столярова Е.М. Методы оптимизации –М.: Наука, 1978.-352с.

  8. Полак Э. Численные методы оптимизации. - М.: Мир,1974.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]