Аналіз можливостей бібліотек python при вивчені курсу "Математичне програмування"

Розгляд використання мови програмування Python для вивчення математичного програмування, зокрема задач оптимізації, у процесі підготовки вчителів математики та інформатики. Аналіз можливості бібліотеки SciPy, яка включає модулі для лінійної алгебри.

Рубрика Педагогика
Вид статья
Язык украинский
Дата добавления 24.06.2024
Размер файла 154,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Аналіз можливостей бібліотек python при вивчені курсу "Математичне програмування"

Медведєва Марія Олександрівна кандидат педагогічних наук, доцент, завідувач кафедри інформатики і інформаційно-комунікаційних технологій, Уманський державний педагогічний університет імені Павла Тичини, м. Умань

Ковальов Леонід Євгенійович кандидат фізико-математичних наук, доцент, завідувач кафедри математики і фізики, Уманський національний університет садівництва, м. Умань

Побережець Іван Іванович кандидат технічних наук, доцент, доцент кафедри математики і фізики, Уманський національний університет садівництва, м. Умань

Анотація

У сучасному цифровому світі зростає потреба в оволодінні програмуванням для розв'язання різноманітних задач. Стаття розглядає актуальність використання мови програмування Python для вивчення математичного програмування, зокрема задач оптимізації, у процесі підготовки вчителів математики та інформатики.

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

Для поглибленого вивчення оптимізації розглядаються бібліотеки PuLP, CVXPY та Pyomo, призначені для формулювання та розв'язання задач лінійного, цілочислового, нелінійного та змішано цілочислового програмування. Порівнюються ці бібліотеки за критеріями встановлення, якості документації, доступності додаткових матеріалів та зручності написання коду. математичне програмування python інформатика

Описано педагогічний експеримент, проведений для оцінки ефективності використання згаданих бібліотек. В експерименті взяли участь здобувачі освіти педагогічних спеціальностей, які вже мали базові знання Python. Результати показали, що бібліотеки SciPy та PuLP є найбільш зручними для розв'язання задач лінійного програмування.

На основі проведеного дослідження робиться висновок про доцільність використання бібліотек Python SciPy та Pyomo в освітньому процесі під час вивчення математичного програмування. Pyomo рекомендовано для ширшого спектра задач оптимізації, враховуючи можливість формулювання як конкретних, так і абстрактних моделей. Підкреслюється важливість підготовки навчально-методичного забезпечення, яке міститиме інструкції з встановлення бібліотек та приклади їх застосування.

Ключові слова: математичне програмування, Python, бібліотеки Python (SciPy, PuLP, CVXPY, Pyomo), оптимізація, педагогічний експеримент, підготовка вчителів.

Medvedieva Mariia Oleksandrivna Candidate of Pedagogical Sciences, Associate Professor, Head of the Department Informatics and Information and Communication Technologies, Pavlo Tychyna Uman State Pedagogical University, Uman,

Kovalev Leonid Evgeniyovych Candidate of Physical and Mathematical Sciences, Associate Professor, Head of the Department of Mathematics and Physics, Uman National University of Horticulture, Uman

Poberezhets Ivan Ivanovich Candidate of Sciences in Technology, Associate Professor, Department of Mathematics and Physics, Uman National University of Horticulture, Uman

ANALYSIS OF THE CAPABILITIES OF PYTHON LIBRARIES IN THE STUDY OF THE COURSE «MATHEMATICAL PROGRAMMING»

Abstract. In the modern digital world, there is a growing need to master programming to solve various problems. The article discusses the relevance of using the Python programming language for learning mathematical programming, in particular optimization problems, in courses for training teachers of mathematics and computer science.

The choice of Python as a learning language characterized by ease of learning and powerful libraries for mathematical computing is substantiated. The capabilities of the SciPy library, which includes modules for linear algebra, integral and differential calculus, optimization and other tasks that are important for students of mathematics and computer science, are analyzed.

For an in-depth study of optimization, the libraries PuLP, CVXPY, and Pyomo are considered, designed to formulate and solve linear, integer, nonlinear, and mixed integer programming problems. These libraries are compared by the criteria of installation, quality of documentation, availability of additional materials, and ease of writing code.

The article describes a pedagogical experiment conducted to evaluate the effectiveness of using these libraries. The experiment involved students of pedagogical specialties who already had basic knowledge of Python. The results showed that the SciPy and PuLP libraries are the most convenient for solving linear programming problems.

Based on the study, it is concluded that it is advisable to use the Python libraries SciPy and Pyomo in the educational process when studying mathematical programming. Pyomo is recommended for a wider range of optimization problems, given the possibility of formulating both concrete and abstract models. The importance of preparing educational and methodological support, which will contain instructions for installing libraries and examples of their use, is emphasized.

Keywords: mathematical programming, Python, Python libraries (SciPy, PuLP, CVXPY, Pyomo), optimization, pedagogical experiment, teacher training.

Постановка проблеми

У сучасному цифровому світі, де програмування стає необхідним інструментом для розв'язання різноманітних завдань у різних галузях, вивчення математичного програмування з використанням Python є актуальним і важливим аспектом освіти. Математичне програмування знаходить застосування в наукових дослідженнях, інженерних розробках, фінансовому аналізі, машинному навчанні та багатьох інших областях.

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

Аналіз можливостей бібліотек Python при вивченні курсу «Математичне програмування» є актуальним завданням, оскільки він дозволяє оцінити потенціал цієї мови програмування у вирішенні математичних задач. Python має багато бібліотек, які спеціально розроблені для математичних обчислень, такі як NumPy, SciPy, SymPy, matplotlib та інші. Ці бібліотеки надають здобувачам освіти потужні інструменти для розв'язання складних математичних проблем, а також можливості для візуалізації даних та аналізу результатів.

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

Аналіз останніх досліджень і публікацій

Щодо визначення найбільш ефективних інструментів та підходів для розв'язання математичних задач з використанням мови програмування Python присвячено багато праць закордонних вчених. Зокрема, Ентоні Скопач та Кетрін де Ньоф розглядають використання Python у наукових обчисленнях, включаючи математичне програмування, та надають конкретні приклади та методики для вирішення різноманітних завдань у фізиці [5]. Роберт Йохансон пропонує практичний підхід до використання Python у числових обчисленнях та математичному програмуванні, включаючи вивчення бібліотек NumPy, SciPy та SymPy [1]. Джон Стеварт надає детальний огляд використання Python у наукових дослідженнях, включаючи числові методи, обробку даних та візуалізацію результатів [6]. Автор Джейк Вандер-Плас розглядає використання Python у наукових обчисленнях та аналізі даних, включаючи роботу з бібліотеками NumPy, SciPy, matplotlib та іншими [7]. Дослідники Рубін Ландау, Мануель Поец та Крістіан Бордеяну пропонують підхід до викладання фізики за допомогою Python та включає в себе розділи про числові методи та математичне програмування [2].

Проте, в наукові літературі недостатньо розглянуті методичні підходи до використання мови програмування Python для розв'язання задач оптимізації з курсу математичного програмування.

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

Виклад основного матеріалу

Освітня компонента «Математичне програмування» відноситься до дисциплін вільного вибору і вивчається на 1 курсі у 1 семестрі на освітньо-професійній програмі «Середня освіта (Інформатика)» ОС «Магістр» та на 4 курсі у 8 семестрі на освітньо- професійній програмі «Середня освіта (Математика. Інформатика)» ОС «Бакалавр».

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

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

У результаті вивчення дисципліни здобувачі освіти повинні:

знати: основні поняття лінійного та нелінійного програмування; основні поняття стосовно систем лінійних нерівностей, опуклих множин, властивості розв'язків задач лінійного та нелінійного програмування; основні методи розв'язування задач: графічний метод, симплекс-метод, метод потенціалів, метод Гоморі, метод множників Лагранжа; властивості взаємно двоїстих задач та способи їх розв'язання;

вміти: конструювати математичні моделі економічних задач та зводити їх до канонічного виду; розв'язувати різні типи задач відповідними методами та надавати геометричну інтерпретацію цим методам.

При вивчені курсу «Математичне програмування» доцільно для розв'язуванні задач використовувати обчислювальні системи. Нами була обрана мова високого рівня Python. В Python існує багато інструментів для розв'язання задач оптимізації. Ми поставили перед собою задачу проаналізувати ці інструменти з точки зору методики їх використання. Нами було обрано чотири бібліотеки Python, які можуть бути використані для розв'язання задач дослідження операцій: SciPy, PuLP, CVXPY та Pyomo.

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

Введемо позначення, які найчастіше використовуються у літературі:

- LP (linear programming) - задача лінійного програмування;

- MILP (mixed integer linear programming) - задача лінійного програмування, в якій деякі змінні повинні бути цілочисловими;

- NLP (nonlinear programming) - задача нелінійного програмування;

- MINLP (mixed integer nonlinear programming) - задача нелінійного програмування, в якій деякі змінні повинні бути цілочисловими.

Розглянемо деякі особливості застосування вищеназваних бібліотек при розв'язанні задач дослідження операцій.

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

Таблиця 1

Бібліотека

Pyton

Зовнішній

розв'язувач

LP

MILP

NLP

MINLP

SciPy

ні

+

+

+

-

SciPy

так

-

-

-

-

PuLP

ні

+

+

-

-

PuLP

так

+

+

-

-

CVXPY

ні

+

-

+

-

CVXPY

так

+

+

+

+

Pyomo

ні

-

-

-

-

Pyomo

так

+

+

+

+

Слід відмітити, що бібліотека SciPy не дозволяє підключати зовнішні розв'язувачі, а бібліотека Pyomo вимагає підключення зовнішнього розв'язувача (при встановленні бібліотеки розв'язувачі не встановлюються). Підключення зовнішнього розв'язувача до бібліотеки PuLP не розширює клас задач, які вона може розв'язати.

Відмітимо ще деякі особливості розглянутих бібліотек.

Бібліотеки SciPy та CVXPY розв'язують задачі на мінімум цільової функції, тому при розв'язуванні задач на максимум цільову функцію необхідно помножити на мінус одиницю.

Бібліотека SciPy ефективна для розв'язання невеликих задач (кількість змінних не більше 100).

Виходячи з огляду бібліотек Python нами було прийняте рішення запропонувати здобувачам освіти для розв'язання задачу лінійного програмування, в якій система обмежень містить як рівності, так й нерівності:

Для проведення педагогічного експерименту були обрані групи здобувачів освіти, що навчаються на освітньо-професійній програмі «Середня освіта (Інформатика)» освітнього ступеня «Магістр» (20 здобувачів освіти) та на освітньо-професійній програмі «Середня освіта (Математика. Інформатика)» ОС «Бакалавр» (23 здобувачі освіти) факультету фізики, математики та інформатики Уманського державного педагогічного університету імені Павла Тичини, яка вивчає курс «Математичне програмування». Здобувачі освіти цих груп вже знайомі з мовою програмування Python, яку вони застосовували при вивченні дисципліни «Мови програмування» та «Мови та середовища програмування».

Експеримент проводився на чотирьох заняттях по дві пари (на кожному занятті розглядалась одна бібліотека Python) в комп'ютерному класі, де на комп'ютерах вже встановлений інтерпретатор Python та інтегроване середовище розробки PyCharm.

Здобувачам освіти пропонувалось на кожному занятті виконати наступні дії:

встановити необхідну бібліотеку Python; ознайомитись з офіційною документацією бібліотеки;

• знайти та ознайомитись з іншою літературою по бібліотеці та прикладами її застосування;

• розв'язати запропоновану задачу.

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

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

1. За п'ятибальною системою оцініть зручність встановлення бібліотеки.

2. За п'ятибальною системою оцініть інформативність офіційної документації бібліотеки.

3. За п'ятибальною системою оцініть наявність додаткової літератури (українською мовою; англійською мовою).

4. За п'ятибальною системою оцініть зручність написання коду.

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

Повністю всі завдання самостійно виконали 13 здобувачів освіти (30,2 %). Здобувачів освіти, яким потрібна була допомога лише для однієї бібліотеки було 20 (46,5 %). Решті здобувачів освіти - 10 (23,3 %) знадобилась допомога у використанні більшої кількості бібліотек.

Допомога з боку викладача надавалась для всіх бібліотек, але найбільше труднощів викликало застосування бібліотеки Pyomo. Перш за все це було пов'язано із складністю встановлення розв'язувачів для цієї бібліотеки. Розв'язувач потрібно було розпакувати у якійсь папці та потім прописати виконуючий файл у системній змінній оточення «Path».

Рис. 1. Співвідношення самостійності виконання завдань

Порівняння часу виконання завдання для чотирьох бібліотек проводилось для кожного здобувача освіти окремо, а потім результати оброблялись методами математичної статистики [1]. Середній час виконання одного завдання визначався методом середнього зваженого, в якому вага кожного здобувача освіти відповідала його оцінці за це завдання.

Менше часу здобувачі освіти витратили при виконанні завдання за допомогою бібліотек SciPy і PuLP. Дещо більше часу було потрібно для розв'язання задачі за допомогою бібліотеки CVXPY та ще більше при використанні бібліотеки Pyomo.

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

Результати проведення експерименту та анкетування після його завершення показало:

1. Більші труднощі виникли при встановленні бібліотеки Pyomo.

2. Найкраща офіційна документація представлена для пакету SciPy, а найгірша - для пакету PuLP.

3. Додаткова література українською мовою практично відсутня для всіх бібліотек (є окремі ресурси). Іншими мовами література краще представлена для бібліотек SciPy та Pyomo.

4. Найбільш зручною для здобувачів освіти у написанні коду виявилась бібліотека PuLP.

Висновки

Аналіз можливостей бібліотек Python та результати проведеного педагогічного експерименту дозволили нам зробити наступні висновки:

На нашу думку при вивченні дисципліни «Математичне програмування» здобувачам освіти доцільно запропонувати використання бібліотек SciPy та Pyomo.

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

Бібліотека Pyomo призначена для формулювання та розв'язання великомасштабних задач оптимізації. Pyomo включає класи Python для визначення розріджених множин, параметрів та змінних, за допомогою яких записуються алгебраїчні вирази, що визначають цільові функції та обмеження [3].

Конкурентом Pyomo є бібліотека CVXPY, але ми віддали превагу першій по двом причинам.

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

По-друге, для бібліотеки Pyomo існує, крім офіційної документації, декілька літературних джерел англійською мовою.

Для ефективного використання в освітньому процесі запропонованих бібліотек Python необхідно підготувати відповідне навчально-методичне забезпечення, яке містило б інструкції зі встановлення бібліотек на комп'ютер (особливо це стосується бібліотеки Pyomo), опис команд та приклади застосування. Навчально-методичне забезпечення повинно бути структурованим, доступним та включати практичні завдання для поглиблення знань та навичок здобувачів.

Література:

1. Johansson R. Numerical Python: A Practical Techniques Approach for Industry. Apress, 2015. 512 p.

2. Landau R. H., Paez M. J., Bordeianu C. C. Computational Physics: Problem Solving with Python. Wiley & Sons, Incorporated, John, 2015. 644 p.

3. Pyomo - Optimization Modeling in Python 3rd Ed. / B. M. Lee et al. OSTI.GOV | U.S. Department of Energy Office of Scientific and Technical Information. URL: https://www.osti.gov/ servlets/purl/1771935

4. SciPy -. SciPy -. URL: https://scipy.org/.

5. Scopatz A., Huff K. D. Effective Computation in Physics: Field Guide to Research with Python. O'Reilly Media, 2015. 552 p.

6. Stewart, J. Python for Scientists, 2nd ed.; Cambridge University Press: Cambridge, UK,

2017.

7. VanderPlas J. Python Data Science Handbook: Essential Tools for Working with Data / ed. by D. Schanafelt. O'Reilly Media, 2016. 548 p.

8. Безлюдний О. І., Ковальов Л. Є., Краснобокий Ю. М. Магістерська робота у педагогічному вузі : посіб. для студентів-магістрантів. Київ : Наук. світ, 2000. 117 с.

9. Березовський В. Є., Ковальов Л. Є., Медведєва М. О. Чисельні методи з прикладами реалізації мовою Python : навчальний посібник. Умань : ВПЦ «Візаві», 2023. 88 с.

References:

1. Johansson, R. (2015). Numerical Python: A Practical Techniques Approach for Industry.

Apress.

2. Landau, R. H., Paez, M. J., & Bordeianu, C. C. (2015). Computational Physics: Problem Solving with Python. Wiley-VCH.

3. Pyomo - Optimization Modeling in Python 3rd Ed. / B. M. Lee et al. OSTI.GOV | U.S. Department of Energy Office of Scientific and Technical Information. URL: https://www.osti.gov/ servlets/purl/1771935.

4. SciPy -. SciPy -. URL: https://scipy.org/.

5. Scopatz, A., & Huff, K. D. (2015). Effective Computation in Physics: Field Guide to Research with Python. O'Reilly Media.

6.

7. Stewart, J. M. (2017). Python for Scientists. Cambridge University Press.

8. VanderPlas, J. (2016). Python Data Science Handbook. O'Reilly Media.

9. Bezliudnyi, O. I., Kovalov, L. Ye., & Krasnobokyi, Yu. M. (2000). Mahisterska robota u pedahohichnomu vuzi [Master's thesis in a pedagogical university]. Naukovyi svit. [in Ukrainian].

10. Berezovskyi, V. Ye., Kovalov, L. Ye., & Medvedieva, M. O. (2023). Chyselni metody z prykladamy realizatsii movoiu Python [Numerical methods with examples of implementation in Python]. VPTs «Vizavi». [in Ukrainian].

Размещено на Allbest.ru

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.