Pyomo. Моделирование оптимизации на Python
Покупка
Новинка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Авторы:
Бинум Майкл Л., Хакебейл Габриэль А., Харт Уильям Э. , Лэрд Карл Д., Николсон Бетани Л., Сиирола Джон Д., Уотсон Жан-Поль, Вудраф Дэвид Л.
Перевод:
Слинкин Алексей Александрович
Год издания: 2023
Кол-во страниц: 232
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-93700-230-3
Артикул: 855999.01.99
Эта книга представляет собой полное руководство по Python Optimization Modeling Objects — пакету с открытым исходным кодом, предназначенному для формулирования и решения крупномасштабных задач оптимизации. Его можно использовать как из командной строки, так и из интерактивного окружения Python, что сильно упрощает создание моделей Pyomo, применение оптимизаторов и изучение решений. Благодаря многочисленным примерам, иллюстрирующим различные способы формулирования моделей, книга прекрасно раскрывает широту средств моделирования, поддерживаемых Pyomo, и ее подходы к сложным практическим приложениям.
Издание предназначено для начинающих и опытных разработчиков моделей, в том числе студентов старших курсов и аспирантов, научных работников и инженеров-практиков.
- Полная коллекция по информатике и вычислительной технике
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Программирование и алгоритмизация
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Майкл Л. Бинум, Габриэль А. Хакебейл, Уильям Э. Харт, Карл Д. Лэрд, Бетани Л. Николсон, Джон Д. Сиирола, Жан-Поль Уотсон, Дэвид Л. Вудраф Pyomo. Моделирование оптимизации на 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 Pyomo – Optimization Modeling in Python Third Edition
Майкл Л. Бинум, Габриэль А. Хакебейл, Уильям Э. Харт, Карл Д. Лэрд, Бетани Л. Николсон, Джон Д. Сиирола, Жан-Поль Уотсон, Дэвид Л. Вудраф Pyomo. Моделирование оптимизации на Python Москва, 2023
УДК 004.04 ББК 32.372 Б62 Бинум М. Л., Хакебейл Г. А., Харт У. Э., Лэрд К. Д., Николсон Б. Л., Сиирола Д. Д., Уотсон Ж.-П., Вудраф Д. Л. Б62 Pyomo. Моделирование оптимизации на Python / пер. с англ. А. А. Слинкина. – М.: ДМК Пресс, 2023. – 230 с.: ил. ISBN 978-5-93700-230-3 Эта книга представляет собой полное руководство по Python Optimization Modeling Objects — пакету с открытым исходным кодом, предназначенному для формулирования и решения крупномасштабных задач оптимизации. Его можно использовать как из командной строки, так и из интерактивного окружения Python, что сильно упрощает создание моделей Pyomo, применение оптимизаторов и изучение решений. Благодаря многочисленным примерам, иллюстрирующим различные способы формулирования моделей, книга прекрасно раскрывает широту средств моделирования, поддерживаемых Pyomo, и ее подходы к сложным практическим приложениям. Издание предназначено для начинающих и опытных разработчиков моделей, в том числе студентов старших курсов и аспирантов, научных работников и инженеров-практиков. УДК 004.04 ББК 32.372 First published in English under the title Pyomo – Optimization Modeling in Python, 3rd ed. by Michael L. Bynum, Gabriel A. Hackebeil, William E. Hart, Carl D. Laird, Bethany L. Nicholson, John D. Siirola, Jean-Paul Watson, David L. Woodruff. This edition has been translated and published under licence from Springer Nature Switzerland AG. Springer Nature Switzerland AG takes no responsibility and shall not be made liable for the accuracy of the translation. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-3-030-68927-8 (англ.) © Springer Nature Switzerland AG, 2023 ISBN 978-5-93700-230-3 (рус.) © Перевод, оформление, издание, ДМК Пресс, 2023
Посвящается пользователям Pyomo – прошлым, настоящим и будущим
Содержание От издательства.......................................................................................................12 Предисловие.............................................................................................................13 Глава 1. Введение....................................................................................................17 1.1. Языки моделирования для оптимизации........................................................17 1.2. Моделирование на Pyomo...................................................................................19 1.2.1. Простые примеры.........................................................................................19 1.2.2. Пример раскраски графа.............................................................................21 1.2.3. Ключевые особенности Pyomo...................................................................24 Python...................................................................................................................24 Настраиваемые возможности...........................................................................24 Командные инструменты и скрипты..............................................................24 Определение конкретных и абстрактных моделей.......................................24 Объектно ориентированный дизайн...............................................................25 Выразительные возможности моделирования..............................................25 Интеграция с решателями................................................................................25 Открытый исходный код...................................................................................25 1.3. Подготовительные действия..............................................................................26 1.4. Краткий обзор книги...........................................................................................26 1.5. Обсуждение...........................................................................................................27 Часть I. ВВЕДЕНИЕ В PYOMO..........................................................................28 Глава 2. Математическое моделирование и оптимизация......................29 2.1. Математическое моделирование......................................................................29 2.1.1. Общие сведения............................................................................................29 2.1.2. Пример моделирования...............................................................................30 2.2. Оптимизация........................................................................................................32 2.3. Моделирование в Pyomo.....................................................................................34 2.3.1. Конкретная формулировка.........................................................................34 2.4. Линейные и нелинейные модели оптимизации.............................................36 2.4.1. Определение..................................................................................................36 2.4.2. Линейная версия...........................................................................................37 2.5. Решение модели Pyomo.......................................................................................37 2.5.1. Решатели........................................................................................................37 2.5.2. Python-скрипты............................................................................................37
Содержание 7 Глава 3. Обзор Pyomo.............................................................................................39 3.1. Введение................................................................................................................39 3.2. Задача о расположении складов........................................................................40 3.3. Модели Pyomo.......................................................................................................41 3.3.1. Переменные, целевые функции и ограничения......................................41 3.3.2. Индексированные компоненты.................................................................42 3.3.3. Правила конструирования..........................................................................44 3.3.4. Конкретная модель для задачи о расположении складов......................45 3.3.5. Компоненты моделирования для множеств и параметров...................48 Глава 4. Модели Pyomo и их компоненты: введение.................................51 4.1. Объектно ориентированный AML.....................................................................51 4.2. Общие парадигмы компонентов.......................................................................53 4.2.1. Индексированные компоненты.................................................................53 4.3. Переменные..........................................................................................................54 4.3.1. Объявления Var.............................................................................................54 4.3.2. Работа с объектами Var................................................................................57 4.4. Целевые функции.................................................................................................57 4.4.1. Объявление Objective...................................................................................58 4.4.2. Работа с объектами Objective......................................................................59 4.5. Ограничения.........................................................................................................59 4.5.1. Объявление Constraint.................................................................................60 4.5.2. Работа с объектами Constraint....................................................................62 4.6. Множества.............................................................................................................62 4.6.1. Объявление Set..............................................................................................63 4.6.2. Работа с объектами Set................................................................................66 4.7. Параметры.............................................................................................................68 4.7.1. Объявление Param.........................................................................................68 4.7.2. Работа с объектами Param...........................................................................71 4.8. Именованные выражения...................................................................................72 4.8.1. Объявление Expression.................................................................................73 4.8.2. Работа с объектами Expression...................................................................74 4.9. Суффиксы..............................................................................................................74 4.9.1. Объявления Suffix.........................................................................................75 4.9.2. Работа с суффиксами....................................................................................76 4.10. Другие компоненты моделирования..............................................................77 Глава 5. Программирование нестандартных технологических процессов...................................................................................................................79 5.1. Введение................................................................................................................79 5.2. Опрос модели.......................................................................................................82 5.2.1. Функция value...............................................................................................83 5.2.2. Доступ к атрибутам индексированных компонентов.............................84 5.2.2.1. Срезы индексов компонентов.............................................................84 5.2.2.2. Обход всех объектов Var в модели......................................................84
8 Содержание 5.3. Модификация структуры модели Pyomo..........................................................85 5.4. Типичные примеры программирования.........................................................86 5.4.1. Цикл по местоположениям складов и построение диаграммы............86 5.4.2. Решатель судоку............................................................................................88 Глава 6. Взаимодействие с решателями.........................................................94 6.1. Введение................................................................................................................94 6.2. Использование решателей..................................................................................95 6.3. Исследование решения.......................................................................................97 6.3.1. Результаты решателя....................................................................................97 Часть II. ДОПОЛНИТЕЛЬНЫЕ ТЕМЫ...........................................................99 Глава 7. Нелинейное программирование в Pyomo....................................100 7.1. Введение..............................................................................................................100 7.2. Задачи нелинейного программирования в Pyomo.......................................101 7.2.1. Нелинейные выражения............................................................................101 7.2.2. Задача Розенброка......................................................................................102 7.3. Решение задач нелинейного программирования.........................................104 7.3.1. Нелинейные решатели...............................................................................105 7.3.2. Дополнительные советы по нелинейному программированию.........105 Инициализация переменных.........................................................................105 Неопределенные вычисления........................................................................106 Сингулярности модели и масштабирование задачи..................................106 7.4. Примеры нелинейного программирования..................................................107 7.4.1. Инициализация переменных для мультимодальной функции...........107 7.4.2. Оптимальные квоты для неистощительной добычи оленей...............108 7.4.3. Оценка моделей инфекционных заболеваний.......................................112 7.4.4. Проектирование реактора.........................................................................115 Глава 8. Структурное моделирование с по-мощью блоков.....................119 8.1. Введение..............................................................................................................119 8.2. Блочные структуры............................................................................................121 8.3. Блоки как индексированные компоненты....................................................123 8.4. Правила конструирования внутри блоков.....................................................124 8.5. Извлечение значений из иерархических моделей.......................................125 8.6. Пример использования блоков: оптимальный многопериодный размер партии...........................................................................................................126 8.6.1. Формулировка без блоков.........................................................................127 8.6.2. Формулировка с блоками..........................................................................129 Глава 9. Производительность: конструирование модели и интерфейсы с решателями.............................................................................131 9.1. Выявление узких мест с по-мощью профилирования...................................131 9.1.1. Хронометраж...............................................................................................133 9.1.2. TicTocTimer..................................................................................................133
Содержание 9 9.1.3. Профилировщики.......................................................................................134 9.2. Повышение производительности конструирования модели с по-мощью класса LinearExpression............................................................................................137 9.3. Многократное решение с применением хранимых решателей.................138 9.3.1. Когда использовать хранимый решатель...............................................138 9.3.2. Основы использования..............................................................................139 9.3.3. Работа с индексированными переменными и ограничениями..........141 9.3.4. Повышение производительности............................................................142 9.3.5. Пример.........................................................................................................142 9.4. Разреженные множества индексов.................................................................143 Глава 10. Абстрактные модели и их решение.............................................145 10.1. Общие сведения...............................................................................................145 10.1.1. Абстрактные и конкретные модели.......................................................145 10.1.2. Абстрактная формулировка модели (H)................................................147 10.1.3. Абстрактная модель для задачи о расположении складов.................148 10.2. Команда pyomo.................................................................................................150 10.2.1. Подкоманда help.......................................................................................151 10.2.2. Подкоманда solve......................................................................................152 10.2.2.1. Задание объекта модели...................................................................154 10.2.2.2. Выбор данных с по-мощью пространств имен..............................155 10.2.2.3. Настройка технологического процесса Pyomo.............................158 pyomo_preprocess..............................................................................................159 pyomo_create_model..........................................................................................159 pyomo_create_modeldata..................................................................................159 pyomo_print_model............................................................................................159 pyomo_modify_instance.....................................................................................160 pyomo_print_instance........................................................................................160 pyomo_save_instance.........................................................................................160 pyomo_print_results...........................................................................................160 pyomo_save_results............................................................................................161 pyomo_postprocess............................................................................................161 10.2.2.4. Настройка поведения решателя......................................................161 10.2.2.5. Анализ результатов решателя.........................................................162 10.2.2.6. Управление диагностической печатью..........................................162 10.2.3. Подкоманда convert..................................................................................164 10.3. Команды данных для AbstractModel.............................................................165 10.3.1. Команда set................................................................................................166 10.3.1.1. Простые множества...........................................................................166 10.3.1.2. Множество кортежей........................................................................167 10.3.1.3. Массивы множеств............................................................................168 10.3.2. Команда param..........................................................................................168 10.3.2.1. Одномерные параметрические данные........................................169 10.3.2.2. Многомерные параметрические данные......................................171 10.3.3. Команда include........................................................................................173 10.3.4. Пространства имен данных....................................................................173
10 Содержание 10.4. Компоненты построения................................................................................174 Часть III. РАСШИРЕНИЯ МОДЕЛИРОВАНИЯ.........................................176 Глава 11. Обобщенное дизъюнктивное программирование.................177 11.1. Введение............................................................................................................177 11.2. Моделирование ОДП в Pyomo........................................................................180 11.3. Выражение логических ограничений...........................................................182 11.4. Решение моделей ОДП....................................................................................183 11.4.1. Преобразование типа «M большое».......................................................183 11.4.2. Оболочечное преобразование................................................................184 11.5. Смешанная задача с полунепрерывными переменными.........................185 Глава 12. Дифференциальные алгебраические уравнения...................187 12.1. Введение............................................................................................................187 12.2. Компоненты моделирования ДАУ в Pyomo..................................................188 12.3. Решения моделей Pyomo с ДАУ......................................................................190 12.3.1. Конечно-разностное преобразование...................................................191 12.3.2. Преобразование коллокации..................................................................192 12.4. Дополнительные возможности......................................................................193 12.4.1. Применение нескольких дискретизаций..............................................193 12.4.2. Ограничение формы управляющих входов..........................................194 12.4.3. Построение графиков...............................................................................194 Глава 13. Математические программы с ограничениями равновесия..............................................................................................................196 13.1. Введение............................................................................................................196 13.2. Моделирование условий равновесия............................................................197 13.2.1. Условия дополнительности.....................................................................197 13.2.2. Выражения дополнительности...............................................................198 13.2.3. Моделирование смешанных условий дополнительности..................198 13.3. Преобразования МПОР...................................................................................202 13.3.1. Преобразование standard_form...............................................................202 13.3.2. Преобразование simple_nonlinear..........................................................203 13.3.3. Преобразование simple_disjunction.......................................................203 13.3.4. Интерфейс с AMPL-решателями............................................................204 13.4. Интерфейсы с решателями и метарешатели...............................................205 13.4.1. Нелинейные переформулирования.......................................................205 13.4.2. Дизъюнктивные переформулирования................................................206 13.4.3. PATH и интерфейс с ASL-решателем.....................................................206 13.5. Обсуждение.......................................................................................................207 Приложение А. Краткое руководство по Python........................................208 A.1. Обзор...................................................................................................................208 A.2. Установка и выполнение Python.....................................................................209 A.3. Формат строки в Python...................................................................................210
Похожие
Ошибка получения данных