Оптимізація. Огляд методів

огляд

Оптимізація - важливий розділ сучасної прикладної математики, що поєднує широкий спектр різноманітних методів, що дозволяють вирішувати важливі практичні завдання.

Наприклад, завдання про розподіл інвестицій з різних проектів та підприємств, знаходження оптимальних термінів заміни та ремонту обладнання, якщо відомий річний дохід та залишкова вартість залежно від часу експлуатації.

Саме такі завдання виникають у нафтовидобувній галузі, коли необхідно обґрунтовано приймати рішення щодо термінів ремонту чи заміни насосного обладнання. Це обладнання може виходити з ладу у випадкові моменти часу, що призводить до суттєвих збитків та невиправданих втрат.

Очевидно, завдання оптимізації тісно пов'язані з теорією ймовірностей, статистикою та аналізом даних у найширшому значенні, оскільки потрібно оцінити стан системи за реальними даними і надалі застосувати принципи оптимального управління.

Є кілька важливих принципів, які потрібно знати та з користю застосовувати на практиці, наприклад, принцип оптимальності Беллмана або принцип оптимальності Понтрягіна та ін.

Ви можете не знати деталі методів, але повинні розуміти суть справи та основний стрим оптимізаційних моделей, деталі з'ясуються пізніше, їх можна знайти у довідниках та спеціалізованих виданнях.

Ми почнемо із захоплюючої задачі про лінію найшвидшого спуску або задачі про брахистохрон, насправді це цілий клас дуже цікавих завдань.

Почнемо із практичного питання.

Уявіть, ви зводите житлову будівлю і у вас виникає питання, як найкоротше доставляти предмети з верхніх поверхів на нижні, використовуючи тільки силу тяжіння.

Природно розглянути похилий пандус, що дозволяє за оптимальнечас скочувати предмети з верхніх поверхів на нижні.

Завдання про брахистохрон (лінії найшвидшого схилу).

Термін брахистохрон має грецьке походження і складається з двох слів хронос – час, брахисто – найкоротший (βραχιστoζ – короткий, χρoνoζ – час).

Формальна постановка завдання така.

У вертикальній площині дано точки A і B. Визначити шлях, яким під впливом власної тяжкості, тіло, почавши рухатися з точки A, досягне точку B за найкоротший час.

Дамо малюнок рішення, намагаючись підкреслити основний аналітичний принцип.

Розглядається ідеальний випадок, предмет скочується лише під впливом сили тяжіння.

Насамперед ми можемо припустити, що нам достатньо провести пряму лінію, яка з'єднує точки А та В.

Відрізок прямий буде найкоротшою відстанню між А та В, проте не факт, що час, витрачений на рух по цьому відрізку буде найменшим.

З фізичних міркувань ясно, що спочатку тіло має максимально прискоритись, щоб потім це прискорення працювало на всьому шляху. Рухаючись прямою, тіло має постійне прискорення.

Це змушує припустити, що є траєкторії, які дозволяють спускати вантаж за менший час, ніж при русі по прямій.

Введемо декартову систему координат з центром у точці А, нехай точка розташовується, для визначеності, в 4-му квадранті, її координати x1 & gt; 0, y1 1 щоб ламана лінія була лінією найкоротшого спуску. Який принцип оптимальності тут можна застосувати? Зауважте, що у точках зламу відсутні похідні.

Подальші завдання для самостійних роздумів:

Знайти плоску криву, що з'єднує дві задані точки площини і лежить вище осі x, яка при обертанні навколо цієї осі утворюєповерхню найменшої (найбільшої) площі.

Знайти форму важкої однорідної нерозтяжної нитки, підвішеної кінці (вигин нитки виникає з допомогою сили тяжкості).

У висновку зауважимо, що знамените завдання Дідони, описане нами в розділі геометрія, також може бути вирішене аналітичними методами, спробуйте знайти це рішення.

Для цього передусім введіть декартову систему координат і запишіть функціонал, екстремум якого потрібно знайти.

Далі застосуйте принцип Ейлера для знаходження екстремуму та проведіть математичні викладки.

Зобразимо графічно завдання якнайшвидшого спуску, щоб наочно переконатися, що матеріальна точка швидше спуститься саме брахистохроне, а чи не по прямий. Для цього напишемо невеликий макрос у Microsoft Excel у вбудованому середовищі розробки Visual Basic for Application (VBA).

Для початку зробимо деяку попередню підготовку: побудуємо графіки брахистохрони та прямий у Microsoft Excel. Відповідно до теорії, рівняння брахистохрони в декартових координатах має вигляд:

Введемо перший стовпець робочого листа цифри від 0 до 2 з кроком 0.1.

У другий стовпець введемо таку формулу і розтягнемо її на 22 рядки:

У результаті отримаємо такі дані:

огляд

Тепер займемося побудовою прямої, з якою порівнюватимемо брахистохрону. Ми знаємо, що ця пряма повинна проходити через точки (0; 0) і (2; 3.14). Скористаємося рівнянням прямою за двома точками:

Отримуємо рівняння прямої: y = 1.57x

Тепер вбиваємо в третій стовпець наступну формулу і розтягуємо її на 22 рядки:

Отримуємо в результаті:

методів

Побудуємо точковий графік за наявними стовпцями. Для цього виділимо прямокутну область A1:С22, потімвиберемо пункт меню Вставити -> Діаграма -> Крапкова.

В результаті у нас має вийти наступний графік:

методів

Тепер займемося створенням кульок, які скочуватимуться нашими кривими. Початкове положення куль уже відомо, це точка (2; 3.14). Щоб кульки красиво, реалістично скочувалися, зробимо координату по Oy трохи більше, щоб кульки не були нанизані на криві, а знаходилися на їх поверхні.

Зробимо наступну табличку для координат кульок на брахистохроні (кулька БР) та на прямій (кулька ПР).

Клацніть правою кнопкою миші на графіку, виберемо пункт «Вибрати дані».

Завдання

Потім натиснемо «Додати ряд», у назві вкажемо «Куля БР», у полі «Значення Х» вкажемо комірку F2, у полі «Значення Y» вкажемо комірку G2.

огляд

Завдання

Аналогічним чином додамо кульку на прямій (комірки будуть відповідно H2 та I2).

Щоб криві були більш красивими та цілісними, змінимо тип діаграм. Клацніть правою кнопкою миші на кривій брахистохрони та прямий, виберемо пункт «Змінити тип діаграми для ряду…»:

Завдання

І в тому ж меню Діаграма -> Крапкова, виберемо третій за рахунком вид (Кропкова з гладкими кривими):

методів

Отримаємо такий графік:

оптимізація

На наступному етапі зробимо наші кульки більш круглими та об'ємними. Натисніть на один з них правою кнопкою миші, виберемо Формат ряду даних.

огляд

У наступному меню зробимо налаштування:

огляд

оптимізація

Аналогічним чином зробимо синю об'ємну кульку на брахистохроні. Отримаємо такий вигляд:

методів

А ось і результат нашої роботи:

Завдання

додаток

Dim BrahY(22), BrahX(22) As Double

Dim i As Double

Cells(2, 6) = 2 'початкове положеннякульок