Математичною оптимізацією (інколи, оптимізацією) або математичним програмуванням в математиці, інформатиці та дослідженні операцій називають відбір найкращого елементу (за певним критерієм) з множини доступних альтернатив.«The Nature of Mathematical Programming ,» Mathematical Programming Glossary, INFORMS Computing Society.
У найпростішому випадку задача оптимізації полягає у знаходженні екстремуму (мінімуму або максимуму) дійсної функції шляхом систематичного вибору вхідних значень з дозволеного набору та обчислення значення функції. Подальші узагальнення теорії та методів оптимізації до інших формулювань становлять велику область прикладної математики. Взагалі, оптимізація охоплює знаходження «найкращих можливих» значень деякої цільової функції в межах області визначення, включаючи різні типи цільових функцій та різні типи областей значення.
Постановка задачі оптимізації
У процесі проєктування ставиться, звичайно, задача визначення найкращих, у деякому значенні, структури або значення параметрів об'єктів. Така задача називається оптимізаційною. Якщо оптимізація пов'язана з розрахунком оптимальних значень параметрів при заданій структурі об'єкта, то вона називається параметричною. Задача вибору оптимальної структури є структурною оптимізацією.
Стандартна математична задача оптимізації формулюється в такий спосіб. Серед елементів χ, що утворюють множину Χ, знайти такий елемент χ*, що надає мінімальне значення f(χ*) заданій функції f(χ). Для того щоб коректно поставити задачу оптимізації необхідно задати: Допустиму множину — множину (функції задають обмеження на ); Цільову функцію — відображення ; Критерій пошуку (max або min).
Тоді вирішити задачу (при пошуку максимуму буде аналогічне визначення) означає одне з: Показати, що . Показати, що цільова функція не обмежена знизу. Знайти . Якщо , то знайти .
Якщо мінімізована функція не є опуклою, то часто обмежуються пошуком локальних мінімумів і максимумів: точок таких, що всюди в деякому їхньому околі для мінімуму й для максимуму.
Якщо допустима множина , то така задача називається задачею безумовної оптимізації, в іншому разі — задачею умовної оптимізації.
Функцію f в різних галузях називають по різному, цільовою функцією (), функцією втрат () чи функцією витрат () (при мінімізації),W. Erwin Diewert (2008). "cost functions, " The New Palgrave Dictionary of Economics, 2nd Edition Contents. або функцією корисності () чи функцією допасованості () (максимізація), функцією енергії () або функціоналом енергії ().
Нотація Задача оптимізації часто записується у своєрідній спеціальній нотації. Ось деякі приклади:
Мінімальне і максимальне значення функції Розглянемо наступний запис:
Він позначає мінімальне значення цільової функції , якщо x обирається із множини дійсних чисел . Мінімальне значення в такому випадку дорівнює , що відповідає значенню .
Аналогічно, нотація
запитує максимальне значення цільової функції 2x, де x може бути будь-яким дійсним числом. В даному випадку, не існує такого максимуму, оскільки цільова функція необмежена, тож відповідь буде «нескінченністю» або «невизначена».
Оптимальні вхідні аргументи
Розглянемо наступний приклад:
або еквівалентно
Такий запис представляє значення (або декілька значень) аргументу в інтервалі , що мінімізує цільову функцію (пошук фактичного значення мінімуму функції, в цій задачі не вимагається). В даному випадку, відповідь становить , оскільки не підходить, бо не належить заданому інтервалу.
Аналогічно,
або еквівалентно
представляє пару (або пари) значень, яка максимізує (які максимізують) значення цільової функції , із заданими обмеженнями, що знаходиться в інтервалі (знову ж таки, фактичне максимальне значення для виразу не має значення). В цьому випадку, розв'язками будуть пари значень такої форми: та , де може набувати будь-якого цілого значення.
Оператори та іноді записують як та , що розуміють як аргумент для мінімуму та аргумент для максимуму.
Класифікація методів оптимізації Методи оптимізації класифікують відповідно до задач оптимізації: Локальні методи: сходяться до якого-небудь локального екстремуму цільової функції. У разі унімодальної цільової функції, цей екстремум єдиний, і буде глобальним максимумом/мінімумом. Глобальні методи: мають справу з багатоекстремальними цільовими функціями. При глобальному пошуку основною задачею є виявлення тенденцій глобальної поведінки цільової функції.
Існуючі в цей час методи пошуку можна розбити на три великі групи: детерміновані; випадкові (стохастичні); комбіновані.
За критерієм вимірності допустимої множини, методи оптимізації поділяють на методи одномірної оптимізації і методи багатомірної оптимізації.
За видом цільової функції й допустимої множини, задачі оптимізації й методи їхнього розв'язання можна розділити на такі класи: Задачі оптимізації, у яких цільова функція і обмеження є лінійними функціями, розв'язуються так званими методами лінійного програмування. В іншому разі мають справу із задачею нелінійного програмування і застосовують відповідні методи. У свою чергу з них виділяють дві часткові задачі: якщо і — опуклі функції, то таку задачу називають задачею опуклого програмування; якщо , то мають справу із задачею цілочисельного (дискретного) програмування.
За вимогами до гладкості й наявності в цільової функції частинних похідних, їх також можна розділити на: прямі методи, що вимагають тільки обчислень цільової функції в точках наближень; методи першого порядку: вимагають обчислення перших частинних похідних функції, тобто якобіана цільової функції; методи другого порядку: вимагають обчислення других частинних похідних, тобто гессіана цільової функції.
Крім того, оптимізаційні методи поділяються на такі групи: аналітичні методи (наприклад, метод множників Лагранжа і умови Каруша-Куна-Такера); чисельні методи; графічні методи.
Залежно від природи множини X задачі математичного програмування класифікуються так: задачі дискретного програмування (або комбінаторної оптимізації) — якщо X скінченна або зліченна; задачі цілочисельного програмування — якщо X є підмножиною множини цілих чисел; задачі нелінійного програмування, якщо обмеження або цільова функція містять нелінійні функції і X є підмножиною скінченновимірного векторного простору. Якщо ж усі обмеження і цільова функція містять лише лінійні функції, то це — задача лінійного програмування.
Крім того, розділами математичного програмування є параметричне програмування, динамічне програмування і стохастичне програмування. Математичне програмування використовується при розв'язуванні оптимізаційних задач дослідження операцій.
Спосіб знаходження екстремуму повністю обумовлюється класом задачі. Але перед тим, як отримати математичну модель, потрібно виконати 4 етапи моделювання: Визначення меж системи оптимізації Відкидаємо ті зв'язки об'єкта оптимізації із зовнішнім світом, які не можуть сильно вплинути на результат оптимізації, а, точніше, ті, без яких розв'язання спрощується Вибір змінних проєктування (керованих змінних) «Заморожуємо» значення деяких змінних (некеровані змінні). Інші залишаємо приймати будь-які значення з області допустимих розв'язків (керовані змінні) Визначення обмежень на керовані змінні … (рівності й\або нерівності) Вибір числового критерію оптимізації Створюємо цільову функцію
Історія Задачі лінійного програмування були першими, докладно вивченими задачами пошуку екстремума функцій при наявності обмежень типу нерівностей. В 1820 р. Ж. Фур'є і потім в 1947 р. Дж. Данціг запропонував метод направленого перебору суміжних вершин у напрямку зростання цільової функції — симплекс-метод, що став основним при розв'язанні задач лінійного програмування.
Присутність у назві дисципліни терміна «програмування» пояснюється тим, що перші дослідження й перші застосування лінійних оптимізаційних задач були в сфері економіки, тому що в англійській мові слово «programming» означає планування, складання планів або програм. Цілком природно, що термінологія відображає тісний зв'язок, що існує між математичною постановкою задачі і її економічною інтерпретацією (вивчення оптимальної економічної програми). Термін «лінійне програмування» був запропонований Дж. Данцігом в 1949 році для вивчення теоретичних і алгоритмічних задач, пов'язаних з оптимізацією лінійних функцій при лінійних обмеженнях. Тому найменування «Математичне програмування» пов'язане з тим, що метою розв'язання задач є вибір оптимальної програми дій.
Виділення класу екстремальних задач, обумовлених лінійним функціоналом на множині, що задається лінійними обмеженнями, варто віднести до 30-х років XX сторіччя. Одними з перших, що досліджували в загальній формі задачі лінійного програмування, були: Джон фон Нейман, знаменитий математик і фізик, що довів основну теорему про матричні ігри й вивчив економічну модель, що носить його ім'я; радянський академік, лауреат нобелівської премії (1975 р.) Л. В. Канторович, що сформулював ряд задач лінійного програмування й запропонував (1939 р.) метод їхнього розв'язання (метод розв'язних множників), що незначно відрізняється від симплекс-методу.
В 1931 р. угорський математик розглянув математичну постановку й вирішив задачу лінійного програмування, що має назва «проблема вибору», метод розв'язання одержав назву «угорського методу».
Л. В. Канторовичем разом із М. К. Гавуриним в 1949 р. розроблено , що застосовується при розв'язанні транспортних задач. У наступних роботах Л. В. Канторовича, В. С. Немчинова, В. В. Новожилова, А. Л. Лур'є, А. Брудно, , Д. Б. Юдіна, Е. Г. Гольштейна й інших математиків і економістів отримали подальший розвиток як математична теорія лінійного і нелінійного програмування, так і застосування її методів до дослідження різних економічних проблем. Методам лінійного програмування присвячено багато робіт зарубіжних учених. В 1941 р. поставив транспортну задачу. Основний метод розв'язання задач лінійного програмування — симплекс-метод — був опублікований в 1949 р. Дж. Данцігом. Подальший розвиток методи лінійного і нелінійного програмування отримали в роботах , , Гасса (Gass S. I.), Чарнеса (Charnes A.), Е. М. Біла (Beale E. M.) та інших.
Одночасно з розвитком лінійного програмування велика увага приділялася задачам нелінійного програмування, у яких або цільова функція, або обмеження, або те й те нелінійні. В 1951 р. була опублікована робота Куна й Таккера, у якій наведені необхідні й достатні умови оптимальності для розв'язання задач нелінійного програмування. Ця робота послужила основою для наступних досліджень у цій галузі.
Починаючи з 1955 р., опубліковано багато робіт з квадратичного програмування (роботи Била, Е. Баранкіна (Barankin E.) і Дорфмана (Dorfman R.), , , Г. Марковіца та інших). У роботах Денніса (Dennis J. B.), Розена (Rosen J. B.) і Зонтендейка (Zontendijk G.) розроблено градієнтні методи розв'язання задач нелінійного програмування.
У даний час для ефективного застосування методів математичного програмування й розв'язання задач на комп'ютерах розроблені мови алгебраїчного моделювання, представниками якими є AMPL і LANGO.
Обчислювальні методи оптимізації Для розв'язання задач, дослідники можуть використовувати алгоритми, які зупиняються за скінченну кількість кроків, або ітераційні методи, які збігаються до розв'язку (на певному класі задач), або евристики, які можуть надати приблизні розв'язки деяких задач (хоча їхні ітерації не обов'язково будуть збігатись).
Алгоритми оптимізації
Симплекс-метод Джорджа Данцига, створений для лінійного програмування. Розширення симплексного-методу, створене для квадратичного програмування і для дробово-лінійного програмування. Варіанти симплекс-методу, які особливо пасують у випадку оптимізації мережі. Комбінаторні алгоритми Алгоритми квантової оптимізації
Алгоритм оптимізації машинного навчання