Якщо в задачі математичного програмування потрібно знайти екстремум функції, наприклад:
на безлічі допустимих рішень, заданих обмеженнями
1) цільова функція є дифференцируемой і увігнутою, тобто для неї виконується умова:
При будь-яких,
2) а ліві частини всіх обмежень - диференційовними і опуклими функціями, тобто для них виконуються умови:
При будь-яких,
Тоді задача (4.7) - (4.8) називається завданням опуклого програмування.
Будь-яка лінійна функція одночасно задовольняє умовам і опуклості, і угнутості; тобто її можна вважати як опуклою, так і увігнутої. Це дозволяє вважати лінійні задачі окремим випадком задач опуклого програмування.
Якщо для завдань математичного програмування в загальному випадку поки відсутня струнка теорія існування і стійкості рішення, то для задач опуклого програмування така теорія є.
Введемо три визначення:
1). Функцією Лагранжа завдання опуклого програмування (4.7) - (4.8) називається функція:
,
, (4.9)
2). Кажуть, що завдання опуклого програмування (4.7) - (4.8) задовольняє умові регулярності, Якщо існує хоча б одна внутрішня точка допустимих рішень, що визначається строгими нерівностями, отриманими з (4.8) (тобто ).
3). точка називається седловой точкою функції, якщо для всіх виконано:
Якщо цільова функція (прибрати)
В теорії нелінійного програмування центральне місце займає теорема Куна-Таккера, узагальнююча класичний метод множників Лагранжа на випадок, коли обмеження нелінійної задачі поряд з обмеженнями у вигляді рівностей містять також і обмеження у вигляді нерівностей.
Теорема Куна-Таккера. Якщо завдання опуклого програмування (4.7) - (4.8) задовольняє умові регулярності, то точка є оптимальним вирішенням цього завдання тоді і тільки тоді, коли існує така точка з невід'ємними координатами, що є сідловою функції Лагранжа даного завдання.
умови Каруша - куна - Таккера в диференціальної формі:
Якщо функція Лагранжа є опуклою по, увігнутою по і безперервно диференціюється за всіма і, то для того щоб пара була сідловою функції Лагранжа, необхідно і достатньо, щоб виконувалися наступні умови:
,
,
,
приклад.Теорема Куна-Таккера обґрунтовує зведення задачі опуклого програмування до задачі пошуку сідлової точки функції Лагранжа. Щоб таке зведення мало практичний сенс, необхідно, щоб вийшла задача була в чомусь простіше вихідної. Це відбувається не завжди, тому розроблений ряд прямих методів пошуку рішення нелінійної задачі (4.5), (4.6). Розглянемо деякі з них.
Опуклого програмування, розділ математичного програмування, в якому досліджується задача максимізації увігнутою цільової функції f (х) векторного аргументу х \u003d (x 1, ..., х n), що задовольняє обмеженням gi (х) ≥ 0, х Є Х, i \u003d 1, ..., m, де gi - увігнуті функції, Х - опукле безліч. Точка х, що задовольняє цим обмеженням, називається допустимою. Основним результатом теорії опуклого програмування є теорема про седловой точці: для того щоб допустима точка х * завдання опуклого програмування була оптимальною, необхідно (при досить широких умовах) і досить існування вектора у * \u003d (у * 1, ..., ym *) з невід'ємними компонентами у * такого, що точка (х *, у *) є седловой для функції Лагранжа
завдання опуклого програмування, тобто для будь-яких х Є Х і у з невід'ємними компонентами виконуються нерівності
На теорему про седловой точці спирається ряд методів опуклого програмування, в яких або мінімізується функція φ (y 1, ..., у m) \u003d max x Є XL (x, у) при у i ≥ 0, i \u003d 1, .. ., m, або безпосередньо відшукується сідлова точка, причому замість функції Лагранжа іноді використовуються деякі її модифікації. Інший підхід до вирішення завдання опуклого програмування пов'язаний з пошуком можливих напрямків руху допустимої точки х, які не виводять з безлічі допустимих точок і при русі вздовж яких цільова функція зростає. Цей підхід реалізується за допомогою послідовності ітерацій. На кожній ітерації обчислюється можливий напрямок, що виходить з чергової точки, після чого проводиться зрушення в цьому напрямку на певну відстань до наступної точки. Існують методи вирішення завдань опуклого програмування, спеціально пристосовані до того випадку, коли цільова функція нелінійна, а обмеження лінійні. Як правило, методи опуклого програмування вимагають для точного визначення оптимальної точки нескінченного числа ітерацій. Винятком є \u200b\u200bзавдання квадратичного програмування (цільова функція - сума увігнутою квадратичної і лінійної функцій, обмеження лінійні) і лінійного програмування (цільова функція і обмеження лінійні), для яких в основному використовуються кінцеві методи. Багато обчислювальні методи опуклого програмування реалізовані у вигляді програм для ЕОМ; існують також пакети програм, що охоплюють завдання лінійного програмування і опуклого програмування. Дивись також Дослідження операцій.
Літ .: Гольштейн Е. Г. Опукле програмування. Елементи теорії. М., 1970; Зангвілл У. І. Нелінійне програмування. Єдиний підхід. М., 1973.
Нехай дана система нерівностей виду
(4.3) і функція
Z \u003d f (x 1, x 2, ..., x n), (4.4)
причому всі функції є опуклими на деякому опуклому безлічі M, а функція Z або опукла на безлічі М, або увігнута.
Завдання опуклого програмування полягає в знаходженні такого рішення системи обмежень (4.3), при якому цільова функція Z досягає мінімального значення, або увігнута функція Z досягає максимального значення. (Умови невід'ємності змінних можна вважати включеними в систему (4.3)).
З огляду на властивості 3 0 будь-яка задача лінійного програмування є окремим випадком завдання опуклого програмування. У загальному випадку завдання опуклого програмування є задачами нелінійного програмування. Виділення завдань опуклого програмування в спеціальний клас пояснюється екстремальними властивостями опуклих функцій: всякий локальний мінімум опуклої функції (локальний максимум увігнутої функції) є одночасно і глобальним; крім того, з огляду на властивості 2 0 опукла (увігнута) функція, задана на замкнутому обмеженому безлічі, досягає на цій множині глобального максимуму і глобального мінімуму. Звідси випливає, що якщо цільова функція Z є строго опуклою (строго ввігнутої) і якщо область рішень системи обмежень не порожня і обмежена, то завдання опуклого програмування завжди має єдине рішення.
Функція F (X) \u003d F (x 1, x 2, ..., x n) називається сепарабельном, Якщо її можна представити у вигляді суми функцій, кожна з яких залежить тільки від однієї змінної, тобто якщо
(Не виключено, що F i (x i) \u003d 0 при деяких i).
Нехай в задачі опуклого програмування задані система обмежень (4.3) і цільова функція (4.4), при цьому і функція мети Z, і всі обмеження, є сепарабельном. Тоді задача має вигляд:
Знайти мінімум опуклою (максимум - увігнутою) функції
при обмеженнях
Ідея методу кусково-лінійної апроксимації полягає в тому, що всі f i, і все замінюються ламаними лініями, що складаються з прямолінійних відрізків. При цьому вихідна задача опуклого програмування замінюється нової, наближеною завданням, яка є завданням лінійного програмування. Це завдання вирішується зазвичай симплексним методом, і її рішення є наближеним рішенням вихідної задачі опуклого програмування.
Малюнок 12. Рішення задачі лінійного програмування методом кусочно-лінійної апроксимації
Для побудови наближеної завдання розглянемо кусочно-лінійну апроксимацію функції однієї змінної h (х), заданої на відрізку. Розіб'ємо цей відрізок на r частин точками x 0 Рівняння ділянки ламаної між точками (x k; h k) і (x k + 1; h k + 1) має вигляд (рівняння прямої по двох точках). Якщо кожне з відносин в цій рівності позначити через, то отримаємо: Відзначимо, що для кожного існує єдине значення, яке задовольняє умовам (4.7). Позначивши можна переписати (4.7) у вигляді: [Рівняння (4.8) називаються параметричними рівняннями відрізка. Якщо h (x) \u003d 0, то другий з цих рівнянь звертається в тотожність 0 \u003d 0, а перше набирає вигляду (4.1) - рівняння відрізка, що лежить на осі абсцис]. Таким чином, для будь-якого рівняння ламаної можна записати у вигляді: причому завжди відмінні від нуля тільки два значення (якщо х є внутрішньою точкою k-гo відрізка розбиття) або одне (якщо х збігається з кінцем відрізка). Повертаючись до задачі опуклого програмування з сепарабельном функціями, відзначимо, що перш за все (в залежності від системи обмежень) потрібно визначити інтервал зміни кожної змінної x j. Потім кожен цей інтервал розбивається на частини точками x jk і з використанням формул (4.9) будується кусочно-лінійна апроксимація для функцій f j і. Після цього можна для вихідної завдання (4.6) записати наближену задачу: Знайти максимум функції при обмеженнях (4.10) Оскільки наближена завдання (4.10) є задачею лінійного програмування, яка зазвичай вирішується симплексним методом, умови невід'ємності змінних записуються окремо від інших обмежень. Відмінність отриманої завдання (4.10) від звичайної задачі лінійного програмування полягає в тому, що для кожного x j є не більше двох сусідніх ненульових і, отже, не можна брати в якості основних змінних два з однаковим j і несоседних k. Зауважимо також, що для умов невід'ємності змінних доданків f j (x j) і (якщо такі виявляться) кусочно-лінійну апроксимацію проводити, звичайно, не потрібно. У цій главі були розглянуті лише деякі методи оптимізації, що застосовуються менеджерами для прийняття ефективних рішень на підприємствах. Однак описані прийоми дають можливість зрозуміти основний принцип використання математичного апарату в економіці, що дозволяє вибрати з безлічі альтернативних варіантів оптимальний для даного конкретного випадку або ситуації. функція називається опуклою
функція називається увігнутою
на опуклому безлічі, якщо для будь-яких точок і довільного числа виконується нерівність: Іноді опуклу функцію називають опуклою вниз на відміну від увігнутої функції, яку іноді називають опуклою вгору. Сенс цих назв ясний з геометричного зображення типової опуклою (рис. 3.3) і увігнутою (рис. 3.4) функції. Мал. 3.3. опукла функція Мал. 3.4. увігнута функція Підкреслимо, що визначення опуклої й увігнутої функцій мають сенс тільки для опуклого безлічі X, Так як тільки в цьому випадку точка обов'язково належить Х. Завданням опуклого програмування
називається окремий випадок загальної задачі математичного програмування (3.7), (3.8), коли цільова функція і функції обмежень є увігнутими на опуклому безлічі R. Так як завдання максимізації функції еквівалентна задачі мінімізації цієї функції зі знаком «мінус», обмеження еквівалентно нерівності і з угнутості слід опуклість і навпаки. Звідси завданням опуклого програмування називається також завдання мінімізації опуклої функції при обмеженнях: , , де - опуклі функції; R - опукле безліч. Це просто інша форма завдання. Слід звернути увагу, що якщо завдання опуклого програмування формулюється як задача на максимум, то цільова функція обов'язково увігнута, а якщо формулюється як задача на мінімум - то опукла, Якщо обмеження записуються у вигляді, то функції обмежень увігнуті, якщо обмеження записуються у вигляді, то функції обмежень опуклі. Цей зв'язок обумовлена \u200b\u200bнаявністю певних властивостей у завдання опуклого програмування, які при порушенні такого зв'язку можуть бути відсутні. Два основних таких властивості сформульовані в наступній лемі. Лемма 1 Безліч допустимих планів задачівипуклого програмування є опуклим. Будь-який локальний максимум увігнутої функції на Х є глобальним. Якби функції обмежень були опуклі, то для визначається безлічі Х (3.14) опуклість вже б не йшла. В цьому випадку можна довести опуклість безлічі: Якби цільова функція була опукла, то твердження леми щодо її максимумів стало б невірним, однак аналогічне твердження можна було б довести для мінімумів. функція називається строго
опуклою
на опуклому безлічі, якщо для будь-яких точок , І довільного числа виконується нерівність. функція називається строго
увігнутою
на опуклому безлічі, якщо для будь-яких точок , І довільного числа виконується нерівність: Лемма 2 Сума опуклих (увігнутих) функцій опукла (увігнута). Твір опуклою (увігнутою) функції на позитивне число опукло (увігнуто). Сума опуклою (увігнутою) і строго опуклою (строго ввігнутої) функцій строго опукла (строго увігнута). теорема 1 Якщо функція строго увігнута (строго опукла) на опуклому безлічі Х, То у неї може бути тільки одна точка максимуму (мінімуму). Доведення
Припустимо гидке, тобто що існує дві точки ,, Є точками максимуму строго ввігнутої функції на Х. Позначивши, маємо . Тоді для будь-якого справедливо: тобто прийшли до протиріччя. Аналогічно доводиться для мінімуму строго опуклою функції. Лінійна функція являє собою єдиний приклад одночасно опуклою і увігнутою функції, отже, вона не є строго опуклою (строго ввігнутої). квадратична функція може бути не опуклою (увігнутою), а може бути строго опуклою (строго ввігнутої); все це визначається матрицею D. елементи матриці D являють собою другі приватні похідні квадратичної функції, тобто . Позначимо матрицю друге приватних похідних через. Лемма 3 Для того щоб квадратична функція була опуклою (увігнутою) на всьому просторі, необхідно і достатньо, щоб матриця D була позитивно (негативно) визначена. якщо D позитивно (негативно) визначена, тобто то строго опукла (строго увігнута). Завдання максимізації (мінімізації) квадратичної функції при лінійних обмеженнях, де D - негативно (позитивно) визначена матриця, причому D T=
D, називається завданням квадратичного програмування
. З леми випливає, що розглянута в розділі 2 завдання лінійного програмування, як і завдання квадратичного програмування, являє собою окремий випадок завдання опуклого програмування. Бувають функції, які опуклі по одній групі змінних і увігнуті по інший. Такі функції є один з основних класів функцій, у яких свідомо існує сідлова точка. теорема 2 (Про існування сідлової точки у увігнуто-опуклою функції). нехай X і
Y суть опуклі замкнуті обмежені підмножини скінченновимірних евклідових просторів, а функція - неперервна по і, увігнута по і опукла по, тоді має на седловую точку. Розглянемо функцію Лагранжа для завдання опуклого програмування: (3.15) певну на прямому творі, де. Ця функція в силу угнутості, є увігнутою по і лінійної, а отже, опуклою по. Однак не можна стверджувати на підставі теореми 1, що вона має седловую точку, так як безліч R не обов'язково є замкнутим і обмеженим, а Y свідомо необмежено. Проте, можна очікувати, що при деяких умовах сідлова точка все ж буде існувати. Найбільш відомою теоремою, що відноситься до цього питання, є теорема Куна-Таккера, яка встановлює зв'язок між існуванням рішення задачі опуклого програмування і сідлової точки у функції Лагранжа при виконанні умови Слейтера
: Завдання опуклого програмування задовольняє умові Слейтера, якщо існує така точка, що виконується умова: . Теорема Куна-Таккера Якщо завдання опуклого програмування задовольняє умові Слейтера, то необхідною і достатньою умовою оптимальності плану є існування такого, що пара є сідловою функції Лагранжа (3.15) на. Те, що умова Слейтера є істотним, показує наступний приклад. приклад 1 Дана задача лінійного програмування: Тут, очевидно, що x
=
0 є рішення задачі, але у функції Лагранжа сідловий точки немає, так як зовнішня грань в мінімаксної задачі не досягається: Розбиття обмежень в задачі опуклого програмування на і , Як уже говорилося, є умовним. Тому зазвичай під R розуміється безліч простого виду, це або весь простір E n, Або ненегативний ортант, або паралелепіпед. Складність же завдання опуклого програмування визначається системою обмежень: . Так як сідлова точка функції Лагранжа шукається на творі множин, де Y також є безліччю простого виду (невід'ємним ортантом), то сенс теореми Куна-Таккера полягає у зведенні задачі пошуку екстремуму функції зі складними обмеженнями на змінні до задачі пошуку екстремуму нової функції з простими обмеженнями. якщо безліч R співпадає з E n, То умови екстремуму, як відомо, мають вигляд: Причому ці умови є не тільки необхідними, для того щоб функція досягала в точці максимуму за, але і достатніми. Це - важлива властивість увігнутих функцій, а для завдання опуклого програмування увігнута по. теорема 3 Для того щоб безперервно диференціюється увігнута функція мала в точці максимум на E n, Необхідно і достатньо, щоб градієнт функції в точці дорівнював нулю, тобто . Згадаймо, що градієнт функції дорівнює: . Таким чином, для знаходження сідлової точки функції Лагранжа на творі, а отже, і для знаходження рішення задачі лінійного програмування при R=
E n треба вирішити систему рівнянь (3.16). Але в цій системі n рівнянь, а невідомих n+
m, Так як крім nмірного вектора нам невідомий і m-мірний вектор множників Лагранжа. Однак для сідлової точки функції Лагранжа виконується дуже важлива властивість: . (3.17) З рівняння (3.17) випливає, що або, або, або те й інше одночасно. Це властивість аналогічно другою теоремою двоїстості (підрозділ. 2.5) лінійного програмування. Обмеження, які виконуються в певній точці як рівності, називаються активними
. Таким чином, тільки ті множники Лагранжа можуть бути відмінні від нуля, які відповідають активним в точці обмеженням. З урахуванням цієї властивості для знаходження рішення задачі лінійного програмування розглянемо наступний спосіб. Лекція 11.опукле програмування Визначення 1.
З
адачі опуклого програмування
називається задача нелінійного програмування, де всі функції є опуклими. Таким чином, завдання опуклого програмування є завданням умовної мінімізації, де цільова функція опукла і допустима область є опукле безліч, утворене системою опуклих нерівностей. Тому твердження, отримані раніше в пара-графі 6, справедливі для завдання опуклого програмування. У цьому параграфі ми конкретизуємо ці загальні результати і наведемо їх у форму зручнішу для дослідження і вирішення наступного завдання опуклого програмування:
(1) ,
(2) .
(3) Нам знадобляться деякі допоміжні побудови в просторі Для завдання (1) - (3) визначимо безліч де Лемма
.
Для завдання опуклого програмування (1) - (3)
безліч
опукло. Доведення.
Виберемо довільні вектори З отриманих нерівностей і випливає опуклість безлічі . Теорема 1.
(Теорема Куна-Таккера в формі про седловой точці функції Лагранжа завдання опуклого програмування
) Нехай в задачі опуклого програмування (1) - (3) система (2) задовольняє умові Слейтера щодо був рішенням завдання (1) - (3), необхідно і достатньо, щоб існував ненегативний вектор такий, що Доведення.
Оскільки достатність цієї умови вже доведена для довільної задачі нелінійного програмування (див. Теорему 2.6 введення), залишилося довести тільки необхідність. Необхідність.
нехай
- рішення задачі (1) - (3). покладемо Переконаємося, що Отже, вектор Переконаємося далі, що всі координати вектора непозитивні. Припустимо гидке. Нехай існує координата Легко побачити, що при будь-якому Покажемо, що позначимо Звідси при
.
(7) З іншого боку, так як . Звідси і з (7) випливає, що в точці .
(8) З (6) і (8) маємо або, що те ж саме, Далі, нехай Нерівності (9), (10) і означають, що лого програмування. Що й треба було. Перш, ніж познайомитися з ще одним варіантом теореми Куна-Таккера, наведемо наступну теорему, яка представляє собою критерій умовного мінімуму в термінах конусів опорних векторів. Теорема 2.
нехай - опукла і диференційована на .
(11) Доказ випливає безпосередньо з теореми 6.5 і визначення конуса теорема
3.
(Теорема Куна-Таккера в диференціальної формі для завдання опуклого програмування
) Нехай дана задача опуклого програмування у вигляді (1), (2), де всі функції ,
(12) . Доведення.
Покажемо, що умови (12) і (13) еквівалентні включенню (11). нехай точка нехай тепер На закінчення параграфа наведемо формулювання двох теорем Куна-Таккера для задачі ви- пукли програмування з лінійними обмеженнями. Теорема 4.
Нехай в задачі опуклого програмування (1) - (3) система обмежень (2) має вигляд існував ненегативний вектор
такий, що
Відзначимо, що в цьому випадку функція Лагранжа має вигляд. теорема
5.
Нехай в задачі опуклого програмування (1), (2) цільова функція
неперервно диференційовна, система обмежень (2) має вигляд Зауважимо, що в теоремах 4 і 5 не потрібно виконання умови Слейтера, тому вони не є окремими випадками теорем 1 і 3 і вимагають самостійного докази.
векторів
. Вектор з перших
компонент точки будемо позначати через . Отже,
.
.
з безлічі і число
. Тоді існують точки і з
такі, що і. Помножимо ці нерівності на і
, Відповідно, і складемо їх. В силу опуклості всіх функцій отримуємо
- сідлова точка функції Лагранжа.
. Очевидно, що
, так як
,
і
.
. Припустимо гидке. Це означає, що знайдеться точка
така, що
. отже, - така допустима точка, значення цільової функції в якій менше мінімального. Отримуємо протиріччя з тим, що
- рішення задачі опуклого програмування.
. Згідно лемі безліч
опукло. Отже, виконуються всі вимоги теореми 8.2. Тому існує ненульовий
опорний в точці до безлічі :
. Зафіксуємо у вектора всі компоненти, крім -ої. Тоді, враховуючи, що твір
може приймати як завгодно великі значення (в силу необмеженість зверху координати ), Отримуємо протиріччя з нерівністю (4).
вектори
включаються в безліч . Тоді з (4) маємо:
. Нехай це не так. тоді
. отже,
. За умовою Слейтера існує вектор
такий, що
. Тому
. Отримане протиріччя і означає, що
.
. Покажемо, що побудований вектор являє собою шуканий вектор множників Лагранжа. Очевидно, що
і з (5) отримуємо
слід
(оскільки
) і
, Отримуємо нерівність
виконується умова доповнює нежорсткості:
. тоді
. Звідси і з (8) отримуємо нерівність
- сідлова точка функції Лагранжа завдання випук-
функція, безліч
опукло. Тоді для того, щоб точка
була умовною мінімумом функції на безлічі
, Необхідно і достатньо, щоб виконувалося включення
опорних векторів в точці до безлічі
.
безперервно мають похідні, система (2) задовольняє умові Слейтера. Тоді для того, щоб вектор
був рішенням завдання (1), (2), необхідно і достатньо, щоб існував ненегативний вектор такий, що виконуються умови
така, що
. тоді
і
.
. Тоді з теорем 2 і 10.5 випливає, що необхідною і достатньою умовою екстремуму є існування таких множників
,
, для яких
. покладемо
для всіх
і отримаємо з останнього рівності умови (12) і (13). Що й треба було.
, B - вектор розмірності
. Тоді для того, щоб ненегативний вектор
був рішенням завдання, необхідно і достатньо, щоб
- сідлова точка функції Лагранжа даного завдання.
, Де A - матриця розмірності
, B - вектор розмірності
.
Тоді для того, щоб вектор
був рішенням завдання, необхідно і достатньо, щоб існував ненегативний вектор
такий, що виконуються умови
,
.