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

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Эта книга представляет собой полное руководство по Python Optimization Modeling Objects — пакету с открытым исходным кодом, предназначенному для формулирования и решения крупномасштабных задач оптимизации. Его можно использовать как из командной строки, так и из интерактивного окружения Python, что сильно упрощает создание моделей Pyomo, применение оптимизаторов и изучение решений. Благодаря многочисленным примерам, иллюстрирующим различные способы формулирования моделей, книга прекрасно раскрывает широту средств моделирования, поддерживаемых Pyomo, и ее подходы к сложным практическим приложениям. Издание предназначено для начинающих и опытных разработчиков моделей, в том числе студентов старших курсов и аспирантов, научных работников и инженеров-практиков.

Author(s): Майкл Л. Бинум, Габриэль А. Хакебейл, Уильям Э. Харт, Карл Д. Лэрд, Бетани Л. Николсон, Джон Д. Сиирола, Жан-Поль Уотсон, Дэвид Л. Вудраф
Edition: 1
Publisher: ДМК Пресс
Year: 2023

Language: Russian
Commentary: Publisher's PDF
Pages: 230
City: М.
Tags: Python; Optimization; Pyomo; Mathematical Modeling

От издательства
Предисловие
Глава 1. Введение
1.1. Языки моделирования для оптимизации
1.2. Моделирование на Pyomo
1.2.1. Простые примеры
1.2.2. Пример раскраски графа
1.2.3. Ключевые особенности Pyomo
Python
Настраиваемые возможности
Командные инструменты и скрипты
Определение конкретных и абстрактных моделей
Объектно ориентированный дизайн
Выразительные возможности моделирования
Интеграция с решателями
Открытый исходный код
1.3. Подготовительные действия
1.4. Краткий обзор книги
1.5. Обсуждение
Часть I. Введение в Pyomo
Глава 2. Математическое моделирование и оптимизация
2.1. Математическое моделирование
2.1.1. Общие сведения
2.1.2. Пример моделирования
2.2. Оптимизация
2.3. Моделирование в Pyomo
2.3.1. Конкретная формулировка
2.4. Линейные и нелинейные модели оптимизации
2.4.1. Определение
2.4.2. Линейная версия
2.5. Решение модели Pyomo
2.5.1. Решатели
2.5.2. Python-скрипты
Глава 3. Обзор Pyomo
3.1. Введение
3.2. Задача о расположении складов
3.3. Модели Pyomo
3.3.1. Переменные, целевые функции и ограничения
3.3.2. Индексированные компоненты
3.3.3. Правила конструирования
3.3.4. Конкретная модель для задачи о расположении складов
3.3.5. Компоненты моделирования для множеств и параметров
Глава 4. Модели Pyomo и их компоненты: введение
4.1. Объектно ориентированный AML
4.2. Общие парадигмы компонентов
4.2.1. Индексированные компоненты
4.3. Переменные
4.3.1. Объявления Var
4.3.2. Работа с объектами Var
4.4. Целевые функции
4.4.1. Объявление Objective
4.4.2. Работа с объектами Objective
4.5. Ограничения
4.5.1. Объявление Constraint
4.5.2. Работа с объектами Constraint
4.6. Множества
4.6.1. Объявление Set
4.6.2. Работа с объектами Set
4.7. Параметры
4.7.1. Объявление Param
4.7.2. Работа с объектами Param
4.8. Именованные выражения
4.8.1. Объявление Expression
4.8.2. Работа с объектами Expression
4.9. Суффиксы
4.9.1. Объявления Suffix
4.9.2. Работа с суффиксами
4.10. Другие компоненты моделирования
Глава 5. Программирование нестандартных технологических процессов
5.1. Введение
5.2. Опрос модели
5.2.1. Функция value
5.2.2. Доступ к атрибутам индексированных компонентов
5.2.2.1. Срезы индексов компонентов
5.2.2.2. Обход всех объектов Var в модели
5.3. Модификация структуры модели Pyomo
5.4. Типичные примеры программирования
5.4.1. Цикл по местоположениям складов и построение диаграммы
5.4.2. Решатель судоку
Глава 6. Взаимодействие с решателями
6.1. Введение
6.2. Использование решателей
6.3. Исследование решения
6.3.1. Результаты решателя
Часть II. Дополнительные темы
Глава 7. Нелинейное программирование в Pyomo
7.1. Введение
7.2. Задачи нелинейного программирования в Pyomo
7.2.1. Нелинейные выражения
7.2.2. Задача Розенброка
7.3. Решение задач нелинейного программирования
7.3.1. Нелинейные решатели
7.3.2. Дополнительные советы по нелинейному программированию
Инициализация переменных
Неопределенные вычисления
Сингулярности модели и масштабирование задачи
7.4. Примеры нелинейного программирования
7.4.1. Инициализация переменных для мультимодальной функции
7.4.2. Оптимальные квоты для неистощительной добычи оленей
7.4.3. Оценка моделей инфекционных заболеваний
7.4.4. Проектирование реактора
Глава 8. Структурное моделирование с по­мощью блоков
8.1. Введение
8.2. Блочные структуры
8.3. Блоки как индексированные компоненты
8.4. Правила конструирования внутри блоков
8.5. Извлечение значений из иерархических моделей
8.6. Пример использования блоков: оптимальный многопериодный размер партии
8.6.1. Формулировка без блоков
8.6.2. Формулировка с блоками
Глава 9. Производительность: конструирование модели и интерфейсы с решателями
9.1. Выявление узких мест с по­мощью профилирования
9.1.1. Хронометраж
9.1.2. TicTocTimer
9.1.3. Профилировщики
9.2. Повышение производительности конструирования модели с по­мощью класса LinearExpression
9.3. Многократное решение с применением хранимых решателей
9.3.1. Когда использовать хранимый решатель
9.3.2. Основы использования
9.3.3. Работа с индексированными переменными и ограничениями
9.3.4. Повышение производительности
9.3.5. Пример
9.4. Разреженные множества индексов
Глава 10. Абстрактные модели и их решение
10.1. Общие сведения
10.1.1. Абстрактные и конкретные модели
10.1.2. Абстрактная формулировка модели (H)
10.1.3. Абстрактная модель для задачи о расположении складов
10.2. Команда pyomo
10.2.1. Подкоманда help
10.2.2. Подкоманда solve
10.2.2.1. Задание объекта модели
10.2.2.2. Выбор данных с по­мощью пространств имен
10.2.2.3. Настройка технологического процесса Pyomo
pyomo_preprocess
pyomo_create_model
pyomo_create_modeldata
pyomo_print_model
pyomo_modify_instance
pyomo_print_instance
pyomo_save_instance
pyomo_print_results
pyomo_save_results
pyomo_postprocess
10.2.2.4. Настройка поведения решателя
10.2.2.5. Анализ результатов решателя
10.2.2.6. Управление диагностической печатью
10.2.3. Подкоманда convert
10.3. Команды данных для AbstractModel
10.3.1. Команда set
10.3.1.1. Простые множества
10.3.1.2. Множество кортежей
10.3.1.3. Массивы множеств
10.3.2. Команда param
10.3.2.1. Одномерные параметрические данные
10.3.2.2. Многомерные параметрические данные
10.3.3. Команда include
10.3.4. Пространства имен данных
10.4. Компоненты построения
Часть III. Расширения моделирования
Глава 11. Обобщенное дизъюнктивное программирование
11.1. Введение
11.2. Моделирование ОДП в Pyomo
11.3. Выражение логических ограничений
11.4. Решение моделей ОДП
11.4.1. Преобразование типа «M большое»
11.4.2. Оболочечное преобразование
11.5. Смешанная задача с полунепрерывными переменными
Глава 12. Дифференциальные алгебраические уравнения
12.1. Введение
12.2. Компоненты моделирования ДАУ в Pyomo
12.3. Решения моделей Pyomo с ДАУ
12.3.1. Конечно-разностное преобразование
12.3.2. Преобразование коллокации
12.4. Дополнительные возможности
12.4.1. Применение нескольких дискретизаций
12.4.2. Ограничение формы управляющих входов
12.4.3. Построение графиков
Глава 13. Математические программы с ограничениями равновесия
13.1. Введение
13.2. Моделирование условий равновесия
13.2.1. Условия дополнительности
13.2.2. Выражения дополнительности
13.2.3. Моделирование смешанных условий дополнительности
13.3. Преобразования МПОР
13.3.1. Преобразование standard_form
13.3.2. Преобразование simple_nonlinear
13.3.3. Преобразование simple_disjunction
13.3.4. Интерфейс с AMPL-решателями
13.4. Интерфейсы с решателями и метарешатели
13.4.1. Нелинейные переформулирования
13.4.2. Дизъюнктивные переформулирования
13.4.3. PATH и интерфейс с ASL-решателем
13.5. Обсуждение
Приложение А. Краткое руководство по Python
A.1. Обзор
A.2. Установка и выполнение Python
A.3. Формат строки в Python
A.4. Переменные и типы данных
A.5. Структуры данных
A.5.1. Строки
A.5.2. Списки
A.5.3. Кортежи
A.5.4. Множества
A.5.5. Словари
A.6. Условные предложения
A.7. Итерации и циклы
A.8. Генераторы и списковые включения
A.9. Функции
A.10. Объекты и классы
A.11. Присваивание, copy и deepcopy
A.11.1. Ссылки
A.11.2. Копирование
A.12. Модули
A.13. Ресурсы, посвященные Python
Литература
Предметный указатель