Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Pyomo. Моделирование оптимизации на Python

Покупка
Новинка
Артикул: 855999.01.99
Доступ онлайн
1 199 ₽
В корзину
Эта книга представляет собой полное руководство по Python Optimization Modeling Objects — пакету с открытым исходным кодом, предназначенному для формулирования и решения крупномасштабных задач оптимизации. Его можно использовать как из командной строки, так и из интерактивного окружения Python, что сильно упрощает создание моделей Pyomo, применение оптимизаторов и изучение решений. Благодаря многочисленным примерам, иллюстрирующим различные способы формулирования моделей, книга прекрасно раскрывает широту средств моделирования, поддерживаемых Pyomo, и ее подходы к сложным практическим приложениям. Издание предназначено для начинающих и опытных разработчиков моделей, в том числе студентов старших курсов и аспирантов, научных работников и инженеров-практиков.
Моделирование оптимизации на Python : практическое руководство / М. Бинум, Г. А. Хакебейл, У. Э. Харт [и др.] ; пер. с англ. А. А. Слинкина. - Москва : ДМК Пресс, 2023. - 232 с. – ISBN 978-5-93700-230-3. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2204251 (дата обращения: 04.04.2025). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Майкл Л. Бинум, Габриэль А. Хакебейл, Уильям Э. Харт,  
Карл Д. Лэрд, Бетани Л. Николсон, Джон Д. Сиирола,  
Жан-Поль Уотсон, Дэвид Л. Вудраф
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


Похожие

Ошибка получения данных
Доступ онлайн
1 199 ₽
В корзину