ВИКОРИСТАННЯ ПРОГРАМНИХ ПРОДУКТІВ ДЛЯ РОЗВ’ЯЗКУ ЗАДАЧ ОПТИМІЗАЦІЇ
07.12.2023 19:59
[1. Информационные системы и технологии]
Автор: Мала Юлія Анатоліївна, кандидат технічних наук, доцент, Університет митної справи та фінансів, м. Дніпро;
Селівьорстова Тетяна Віталіївна, кандидат технічних наук, доцент, Український державний університет науки і технологій, м. Дніпро;
Кондратенко Михайло Юрійович, студент, Університет митної справи та фінансів, м. Дніпро
В практичній діяльності людини при розв’язуванні різноманітних проблем, чи то в професійній сфері, чи в повсякденному житті, виникають ситуації, коли необхідно застосовувати задачі оптимізації та методи їх розв’язку. Якщо побутові життєві оптимізаційні задачі можна здебільшого вирішити інтуїтивно, то для вирішення оптимізаційних задач, що виникають в різних сферах професійної людської діяльності таких як бізнес, інженерія, інформаційні технології, логістика, управління та ін., необхідно використовувати математичні алгоритми для отримання науково обґрунтованих точних результатів.
Суть оптимізаційних задач полягає в знаходженні найкращого розв’язку з множини можливих варіантів. Існують різні типи оптимізаційних задач за певними ознаками: умовні і безумовні задачі, безумовні задачі в свою чергу поділяються на багатокритеріальні задачі та задачі математичного програмування, серед яких є задачі лінійного, нелінійного, стохастичного, дискретного програмування та ін. Відповідно до типу задачі існують і різноманітні аналітичні та чисельні методи їх розв’язку.
Проблеми оптимізації та методи розв’язання різноманітних оптимізаційних задач досить детально досліджені в роботах Ульянченко О. В., Романюка Т. П., Терещенко Т. О. та ін.
Бурхливий розвиток програмно-технічних засобів створення, збереження й обробки інформації у світі, виникнення складних практичних задач в різних галузях людської діяльності, необхідність швидкого прийняття рішення спонукає до використання при виконанні обчислень програмних продуктів, після побудови математичної моделі оптимізаційних задач і вибору методу її вирішення.
Існує велика кількість програмних засобів, що дозволяє вирішувати оптимізаційні задачі: універсальні мови програмування типу Pascal, C++, С#, Java, Python; спеціалізовані мови програмування R, GAMS; системи автоматизованих інженерних та економічних розрахунків Excel та MathCad; пакети моделювання математичних та технічних систем MatLab Optimization Toolbox, Simulink, AnyLogic, AMPL, CPLEX, GurobiPy, JuMP, Pyomo та інші [1, 2].
Серед різноманіття програмних засобів було обрано для огляду пакет Pyomo (Python Optimization Modeling Objects), як інструмент для моделювання і розв’язку задач оптимізації на основі Python. Вибір обґрунтовано тим, що Pyomo підтримує формулювання та аналіз математичних моделей для складних задач оптимізації, що зазвичай можливо робити в комерційних мовах моделювання (наприклад AML) проте він наявний у вільному доступі. Pyomo реалізує розвинений набір засобів моделювання та аналізу та надає доступ до цих засобів з повнофункціональної високорівневої мови програмування Python, для якої написано велика кількість бібліотек.
Декотрі переваги використання Pyomo для розв’язання оптимізаційних задач [3, 4]:
- Pyomo проект з відкритим вихідним кодом, що поширюється на умовах ліцензії BSD (Berkeley Software Distribution), яка накладає менше обмежень на використання в комерційних або державних організаціях;
- зрозумілий синтаксис Python дозволяє Pyomo виражати математичні вирази зрозуміло і лаконічно;
- можливість використання великої кількості додаткових бібліотек (наприклад, numpy, scipy, matplotlib), що дозволяє аналізувати моделі і розв’язки Pyomo;
- Pyomo можна використовувати для різних типів оптимізаційних задач (лінійне програмування, квадратичне програмування, нелінійне програмування, стохастичне програмування, оптимізація в умовах невизначеності та змішано-цілочисельне нелінійне програмування і інші);
- в Pyomo є можливість побудувати два типи моделей даних –абстрактна і конкретна. В абстрактній моделі відокремлюється модель і дані. У конкретній моделі дані визначаються в самій моделі. Моделі обох типів легко ініціалізують дані з самих різних джерел (наприклад, файли у форматах csv, json, yaml, excel і база даних);
- можливість імпортувати дані в Python з метою проведення аналізу даних, застосування методів машинного навчання і розв’язку оптимізаційних задач одним файлом.
Таким чином, пакет програмного забезпечення Pyomo з відкритим кодом є ефективним, потужним і перспективним інструментом для вирішення практичних задач оптимізації.
Література
1. Springer Optimization and Its Applications. Volume 67. Pyomo – Optimization Modeling in Python. / Michael L. Bynum , Gabriel A. Hackebeil , William E. Hart , Carl D. Laird , Bethany L. Nicholson , John D. Siirola , Jean-Paul Watson , David L. Woodruff Switzerland: Springer Nature Switzerland A, 2021. 226 p.
2. Добровольська Н. В. Методика використання інформаційних технологій при розв’язанні оптимізаційних задач. Сучасні інформаційні технології та інноваційні методики навчання в підготовці фахівців: методологія, теорія, досвід, проблеми. 2018. Вип. 52. С. 290-296.
3. William E. Hart, Jean-Paul Watson, David L. Woodruff. Pyomo: modeling and solving mathematical programs in Python. Math. Prog. Comp. 2011. P. 219-260.
4. Performance in Optimization Models: A Comparative Analysis of GAMS, Pyomo, GurobiPy, and JuMP. GAMS: веб-сайт. URL: https://www.gams.com/ (дата звернення: 05.12.2023).