logo资料库

Pyomo – Optimization Modeling in Python 无水印pdf.pdf

第1页 / 共245页
第2页 / 共245页
第3页 / 共245页
第4页 / 共245页
第5页 / 共245页
第6页 / 共245页
第7页 / 共245页
第8页 / 共245页
资料共245页,剩余部分请下载后查看
Cover
Pyomo-Optimization Modeling in Python
Preface
Goals of the Book
Who Should Read This Book
Comments and Questions
Acknowledgements
Contents
Reface
Contents
1 Introduction
1.1 Mathematical Modeling
1.2 Modeling Languages for Optimization
1.3 Modeling Graph Coloring
1.4 Motivating Pyomo
1.4.1 Open Source
1.4.2 Customizable Capability
1.4.3 Solver Integration
1.4.4 Modern Programming Language
1.5 Getting Started
1.6 Book Summary
1.7 Discussion
2 Pyomo Modeling Strategies
2.1 Modeling Components
2.2 Concrete Models: Specifying Components Via Expressions
2.3 Concrete Models: Specifying Components Via Rules
2.4 Abstract Models
2.5 Optimizing Models
2.5.1 Optimization with the pyomo Command
2.5.2 Optimization Scripts
2.6 Discussion
2.A Examples
2.A.1 Concrete Pyomo Model with Explicit Variables
2.A.2 Concrete Pyomo Model with Indexed Variables
2.A.3 Concrete Pyomo Model with External Data
2.A.4 Concrete Pyomo Model with Constraint Rules
2.A.5 Concrete Pyomo Model with Abstract Component Declarations
2.A.6 Using a Function to Construct a Concrete Pyomo Model
2.A.7 Abstract Pyomo Model
2.A.7.1 Pyomo Model
2.A.7.2 Data Commands
2.A.8 A Python Script that Optimizes a Concrete Pyomo Model
2.A.9 A Python Script that Optimizes an Abstract Pyomo Model
3 Model Components: Variables, Objectives, and Constraints
3.1 Modeling with Components
3.2 Variables
3.2.1 Var Declarations
3.2.2 Variable Initialization
3.2.3 Working with Variables
3.3 Objectives
3.3.1 Simple Declarations
3.3.2 Declarations with Rule Functions
3.4 Constraints
3.4.1 Declarations with Logical Expressions
3.4.2 Declarations with Expression Tuples
3.5 Constraint Lists
3.6 Discussion
4 Model Components: Sets and Parameters
4.1 Set Data
4.1.1 Set Declarations
4.1.2 Set Initialization
4.1.3 Set Data Validation
4.1.4 Set Options
4.1.5 RangeSet
4.1.6 Discussion of Index Sets
4.2 Parameter Data
4.2.1 Param Declarations
4.2.2 Parameter Initialization
4.2.3 Data Validation
4.3 Discussion
5 Miscellaneous Model Components and Utility Functions
5.1 Miscellaneous Components
5.2 Advanced Component Indexing
5.3 Functions to Support Modeling
5.3.1 Generalized Dot Products
5.3.2 Generating Sequences
5.3.3 Helper Functions
5.4 Discussion
5.A Examples
5.A.1 Error Checks in a Concrete Model
5.A.2 Error Checks in an Abstract Model
6 Initializing Abstract Models with Data Command Files
6.1 Model Data
6.2 The set Command
6.2.1 Simple Sets
6.2.2 Sets of Tuple Data
6.2.3 Set Arrays
6.3 The param Command
6.3.1 One-dimensional Parameter Data
6.3.2 Multi-Dimensional Parameter Data
6.4 The import Command
6.4.1 Simple Import Examples
6.4.2 Import Syntax Options
6.4.3 Interpreting Relational Tables
6.4.4 Importing from Spreadsheets and Relational Databases
6.5 The include Command
6.6 Data Namespaces
6.7 Discussion
6.A Examples
6.A.1 Namespace Data Commands
6.A.2 The Diet Problem
7 The Pyomo Command-line Interface
7.1 Overview
7.2 Building a Model Instance
7.3 Specifying the Model Object
7.4 Selecting Data with Namespaces
7.5 Customizing Pyomo's Workflow
7.6 Customizing Solver Behavior
7.7 Analyze Solver Results
7.8 Managing Diagnostic Output
7.9 Discussion
7.A Examples
7.A.1 Model Object with Non-Default Name
7.A.2 Pyomo Data Commands with Multiple Namespaces
8 Nonlinear Programming with Pyomo
8.1 Introduction
8.2 Building Nonlinear Programming Formulations
8.2.1 Nonlinear Expressions
8.2.2 The Rosenbrock Example
8.3 Solving Nonlinear Programming Formulations
8.3.1 Nonlinear Solvers
8.3.2 Tips for Nonlinear Programming
Variable Initialization
Undefined Evaluations
Model Singularities and Problem Scaling
8.4 Nonlinear Programming Examples
8.4.1 Variable Initialization in Minimization of Multimodal Function
8.4.2 Optimal Quotas for Sustainable Harvesting of Deer
8.4.3 Estimation of Parameters in Infectious Disease Models
8.4.4 Reactor Design
8.A Examples
8.A.1 Rosenbrock
8.A.2 Multimodal
8.A.3 Deer Harvesting
8.A.4 Disease Estimation
8.A.5 Reactor Design
8.A.5.1 Initial Design
8.A.5.2 Design Table
9 Stochastic Programming Extensions
9.1 Introduction
9.2 Stochastic Programming: Definition and Notations
9.3 Modeling in PySP
9.3.1 The Deterministic Reference Model
9.3.2 The Scenario Tree
9.3.3 Scenario Parameter Specification
9.3.4 Compilation of the Scenario Tree Model
9.4 Generating and Solving the Extensive Form
9.5 Progressive Hedging: A Generic Decomposition Strategy
9.5.1 The runph Script
9.5.1.1 Variable-specific ρ
9.5.1.2 Linearization of the Proximal Penalty Terms
9.6 Progressive Hedging Extensions: Advanced Configuration
9.6.1 Watson and Woodruff Extensions
9.6.1.1 Mipgap Control and Cycle Detection Parameters
9.6.1.2 General Variable Fixing and Slamming Parameters
9.6.1.3 Variable-specific Fixing and Slamming Parameters
9.6.2 Solving a Constrained Extensive Form
9.6.3 Alternative Convergence Criteria
9.6.4 User-Defined Extensions
9.7 Solving PH Scenario Sub-Problems in Parallel
9.8 Discussion
9.A Examples
9.A.1 Farmer Model
9.A.2 Farmer Data File
9.A.3 Scenario Tree Model
9.A.4 Scenario Data Command File
10 Scripting and Algorithm Development
10.1 Introduction
10.2 Scripting Basics
10.2.1 A Canonical Optimization Script
10.3 Common Scripting Tasks
10.3.1 Printing and Comparing Variable Values
10.3.2 Looping Over Variables
10.3.3 Initializing and Fixing Variables
10.3.4 Adding and Dropping Constraints
10.3.5 Sharing Solution Results Across Multiple Models
10.3.6 Plotting Data with Matplotlib
10.3.7 Generating Different Models with a Function
10.4 Hybrid Optimization
10.5 Benders Decomposition
10.6 Discussion
10.A Examples
10.A.1 A Simple Optimization Script
10.A.2 A Simple Optimization Script with Multiple Data Files
10.A.3 A More Comprehensive Optimization Script
10.A.4 A Comprehensive Optimization Script that Mimics the pyomo Command
10.A.5 An Optimization Script with Multiple Models
10.A.6 An Optimization Script that Prints the Value of Variables
10.A.7 A Script that Performs Optimization from Two Starting Points
10.A.8 A Script that Performs Optimization from a Grid of Starting Points
10.A.9 A Script that Reoptimizes a Model after Fixing Variables
10.A.10 An Iterative Optimization Process that Explicitly Activates Select Constraints
10.A.11 Sharing Results Between Models
10.A.12 Plotting Solver Results with Matplotlib
10.A.13 A Sudoku Problem Solved by Iteratively Adding Cuts
10.A.14 Hybrid Optimization for Parameter Estimation
Appendix A Installing Coopr
A.1 Installation Overview
A.2 Using an Installer
A.3 Installing Coopr as a Site Package
A.4 Installing a Coopr Release Using coopr_install
A.5 Installing a Development Branch Using coopr_install
A.6 Discussion
Appendix B A Brief Python Tutorial
B.1 Overview
B.2 Installing and Running Python
B.3 Python Line Format
B.4 Variables and Data Types
B.5 Data Structures
B.5.1 Strings
B.5.2 Lists
B.5.3 Tuples
B.5.4 Sets
B.5.5 Dictionaries
B.6 Conditionals
B.7 Iterations and Looping
B.8 Generators and List Comprehensions
B.9 Functions
B.10 Objects and Classes
B.11 Modules
B.12 Python Resources
Appendix C Pyomo and Coopr: The Bigger Picture
C.1 Coopr Overview
C.2 Optimization Solvers
References
Index
Springer Optimization and Its Applications VOLUME 67 Managing Editor Panos M. Pardalos (University of Florida) Editor–Combinatorial Optimization Ding-Zhu Du (University of Texas at Dallas) Advisory Board J. Birge (University of Chicago) C.A. Floudas (Princeton University) F. Giannessi (University of Pisa) H.D. Sherali (Virginia Polytechnic and State University) T. Terlaky (Lehigh University) Y. Ye (Stanford University) Aims and Scope Optimization has been expanding in all directions at an astonishing rate during the last few decades. New algorithmic and theoretical techniques have been developed, the diffusion into other disciplines has proceeded at a rapid pace, and our knowledge of all aspects of the field has grown even more profound. At the same time, one of the most striking trends in opti- mization is the constantly increasing emphasis on the interdisciplinary na- ture of the field. Optimization has been a basic tool in all areas of applied mathematics, engineering, medicine, economics, and other sciences. The series Springer Optimization and Its Applications publishes under- graduate and graduate textbooks, monographs and state-of-the-art exposi- tory work that focus on algorithms for solving optimization problems and also study applications involving such problems. Some of the topics covered include nonlinear optimization (convex and nonconvex), network flow prob- lems, stochastic optimization, optimal control, discrete optimization, multi- objective programming, description of software packages, approximation techniques and heuristic approaches. For further volumes: http://www.springer.com/series/7393
William E. Hart • Carl Laird • Jean-Paul Watson David L. Woodruff Pyomo—Optimization Modeling in Python
William E. Hart Data Analysis and Informatics Department Sandia National Laboratories Albuquerque, NM 87185 USA wehart@sandia.gov Jean-Paul Watson Discrete Mathematics and Complex Systems Department Sandia National Laboratories Albuquerque, NM 87185 USA jwatson@sandia.gov Carl Laird Department of Chemical Engineering Texas A&M College Station, TX 77843 USA carl.laird@tamu.edu David L. Woodruff Graduate School of Management University of California, Davis Davis, CA 95616 USA dlwoodruff@ucdavis.edu ISSN 1931-6828 - ISBN 978-1-4614- 3225 8 DOI 10.1007/978-1-4614- Springer New York Dordrecht Heidelberg London 3226 5 - e-ISBN 978-1-4614- - 3226 5 L ibrary of Congress Control Number: 2012930924 2 © Springer Science+Business Media, LLC 201 All rights reserved. This work may not be translated or copied in whole or in part without the written permission of the publisher (Springer Science+Business Media, LLC, 233 Spring Street, New York, NY 10013, USA), except for brief excerpts in connection with reviews or scholarly analysis. Use in connection with any form of information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed is forbidden. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. Printed on acid-free paper Springer is part of Springer Science+Business Media (www.springer.com)
ForValerie,Christy,MichelleandBarbara.ThankyouforyoursupportandpatienceduringthemanynightsandweekendsthatwehavespentonPyomoandthisbook.
PrefaceThisbookdescribesanewtoolformathematicalmodeling:thePythonOptimizationModelingObjects(Pyomo)software.Pyomosupportstheformulationandanalysisofmathematicalmodelsforcomplexoptimizationapplications.Thiscapabilityiscommonlyassociatedwithalgebraicmodelinglanguages(AMLs),whichsupportthedescriptionandanalysisofmathematicalmodelswithahigh-levellanguage.AlthoughmostAMLsareimplementedincustommodelinglanguages,Pyomo’smodelingobjectsareembeddedwithinPython,afull-featuredhigh-levelprogram-minglanguagethatcontainsarichsetofsupportinglibraries.Modelingisafundamentalprocessinmanyaspectsofscientificresearch,engi-neeringandbusiness,andthewidespreadavailabilityofcomputingresourceshasmadethenumericalanalysisofmathematicalmodelsacommonplaceactivity.Fur-thermore,AMLshaveemergedasakeycapabilityforrobustlyformulatinglargemodelsforcomplex,real-worldapplications[40].AMLssimplifytheprocessofformulatingcomplexmodelsbysimplifyingthemanagementofsparsedataandsupportingthenaturalexpressionofmodelcomponents.Additionally,AMLslikePyomosupportscriptingwithmodelobjectswhichfacilitatesrapiddevelopmentofnewanalysistools.vii
分享到:
收藏