16 March 2023 (1,756 words)
In this article we conclude the Python Production mix series. We provide a summary of the optimization libraries that we've used, including the advantages and disadvantages of each. We also indicate which library is our first choice for different types of modelling.
Our objective in this series has been to compare creating a simple linear programming model in a variety of Python libraries, using Pyomo as a baseline.
10 March 2023 (1,518 words)
In this article we continue the Python Production mix series. Specifically, we build Model 11 using the SciPy library.
SciPy is an open source Python package for a wide range of scientific computing applications, including optimization, integration, interpolation, eigenvalue problems, algebraic equations, differential equations, statistics and many other classes of problems.
Our objective is to compare a linear programming model built using SciPy with the same model built using Pyomo.
12 December 2022 (1,451 words)
In this article we continue the Python Production mix series. Specifically, we build Model 10 using the CVXPY library.
CVXPY is an open source Python package for representing and solving convex optimization problems.
Our objective is to compare a model built using CVXPY with the same model built using Pyomo.
22 November 2022 (1,512 words)
In this article we continue the Python Production mix series. Specifically, we build Model 9 using the Gekko library.
Gekko is a Python package for machine learning, optimization of mixed-integer, and differential algebraic equations.
Our objective is to compare a model built using Gekko with the same model built using Pyomo.
31 October 2022 (1,371 words)
In this article we continue the Python Production mix series. Specifically, we build Model 8 using the OR-Tools library.
OR-Tools is a project from Google. The library is freely available, the code is open source, and it is widely used.
Our objective is to compare a model built using OR-Tools with the same model built using Pyomo.
4 October 2022 (1,325 words)
In this article we continue the Python Production mix series. Specifically, we build Model 7 using the PuLP library.
PuLP, like Pyomo, is a COIN-OR project. The library is freely available, the code is open source, and it is widely used.
Our objective is to compare a model built using PuLP with the same model built using Pyomo.
21 September 2022 (1,571 words)
In this article we continue the Python Production mix series, using the Pyomo library. Specifically, we build Model 6, which changes Model 5 to:
- Declare the model as a Pyomo
pyo.AbstractModel
, rather than as apyo.ConcreteModel
. - Read the data from a
dat
file rather than ajson
file.
These changes show that, contrary to how abstract and concrete models are portrayed in most blogs, there is actually little difference between abstract and concrete Pyomo models.
5 September 2022 (1,891 words)
In this article we continue the Python Production mix series, using the Pyomo library. Specifically, we build Model 5, which changes Model 4 to:
- Define the constraints and objective function using
def
function blocks. - Output the slack values and dual prices (also known as shadow prices) for each constraint.
These changes give us more control over how the model is defined and provide more information about the solution.
16 August 2022 (1,815 words)
In this article we continue the Python Production mix series, using the Pyomo library. Specifically, we build Model 4, which changes Model 3 to:
- Import the data from an external json file.
- Read the data into the Model object, rather than into separate objects.
These changes reflect features that we may need to include in an operational model.
2 August 2022 (2,002 words)
In this article we continue the Python Production mix series, using the Pyomo library. Specifically, we build Model 3, which improves Model 2 by:
- Extracting the data from the model, and putting it in an external file.
- Implementing better handling of the solve process.
- Expanding the output to include additional information.
Each of these improvements are important steps in developing a practical design that can be used for operational models.