2 December 2021

Project crashing is the process of compressing a project plan by using additional resources to reduce the duration of some tasks.

Using additional resources incurs additional cost, so it is important that the resources are deployed to the tasks that produce the greatest benefit. A project manager must decide an appropriate trade-off between time and cost for each task, leading to the best revised project plan. Given the dependencies between project tasks, making these trade-offs can be complex and difficult, even for a small project.

This article describes an example of project crashing using an optimization model to help the project manager decide what to do.

16 November 2021

Recently we were working on a small one-dimensional bin packing model. The situation was simple, and we expected the model to be easy to solve. But there was just one problem: we couldn't find an optimal solution, even after letting the solver run overnight for 12 hours.

Initially, we were using the CBC solver. Since that didn't work, we tried CPLEX via NEOS, but we encountered the same problem – CPLEX couldn't find an optimal solution either.

So, we searched the Operations Research literature for an alternative formulation. We discovered a recently published academic paper that has a new, innovative formulation for one-dimensional bin packing (and potentially other types of packing situations).

This article describes the new formulation and our experience applying it to our simple, yet difficult to solve, model.

5 November 2021

There are many tools for building an optimization model, including:

- Excel/OpenSolver, which provides a familiar, interactive, visual grid for modelling.
- Python, plus the CVXPY or PuLP library, which provides a programmatic way to define a model.

Each tool has advantages and disadvantages, as we discussed in Optimization in Excel vs Python.

The tool CMPL (<Coliop|Coin> Mathematical Programming Language) occupies an intermediate position. That is, CMPL combines the advantages of working with the data and solution in Excel, while providing the power and flexibility of a programming language for defining the model.

According to the tool's website:

The CMPL syntax is similar in formulation to the original mathematical model but also includes syntactic elements from modern programming languages. CMPL is intended to combine the clarity of mathematical models with the flexibility of programming languages.

Steglich, M. (2021). "Optimisation Modelling with Excel and CMPL2"

CMPL has recently been updated to version 2.0, as described in the paper "Optimisation modelling with Excel and CMPL2". The paper provides a good overview of CMPL, including a couple of examples to help you get started*.

* Note that there's a bug in the paper's transhipment example. You'll need to add `minCap[edges]`

to the definition in line 01 of Listing 7.

7 October 2021

Vamshi Jandhyala has an interesting series of blog posts about Optimization using linear models.

Each article includes a description of the topic, along with several examples written in Python and solved using the Gurobi commercial solver:

- Modeling using Linear Programming. Illustrates some concepts of linear programming via the formulation and solution of a resource allocation problem.
- Modeling using Integer Programming. Describes several applications of integer programming, including an assignment problem, graph coloring, the 0-1 knapsack problem, a set covering problem, and a class scheduling example.
- Graphs and Integer Programming. Explores some graph theory applications of integer programming, including finding a maximal independent set and finding the maximal clique of a set.

The examples include Python source code, though they are sufficiently small that they could be translated to use your preferred modelling tool and solver.

3 October 2021

OpenSolver uses the free, open-source CBC solver. For most linear models, CBC is good enough. But sometimes CBC struggles to solve a model in a reasonable time. That usually happens when the model has a large number of variables or constraints, though some small models can also be difficult to solve.

When CBC doesn't get the job done, we can try using a more powerful solver. One way to apply more power is to use the NEOS Server, which is an online service that provides access to many different solvers, including commercial solvers, for free.

This article describes an example of how we can solve a model using the CPLEX solver via the NEOS Server.

13 September 2021

Covid-19 has caused havoc in the world's supply chains, with numerous disruptions and delays. But without sophisticated math – including a lot of linear algebra – modern supply chains would not operate at all.

The Guardian newspaper has an interesting article about the math of logistics:

Algebra: the maths working to solve the UK’s supply chain crisis.

As the article says:

The maths of logistics starts with algebra – linear algebra, to be precise. ...

Linear algebra explores solutions for sets of equations that together contain all you need to find out the relationships between the variables. ...

Logistics hasn't stood still with linear algebra, however. It has been developed into algorithms for "linear programming" and "mixed integer programming" and various other odd-sounding mathematical routines, such as "combinatorial optimisation", "greedy heuristics" and "simulated annealing". ...

And it's all done with just one purpose: to deliver to every customer, on time and in full – OTIF as it's known in the trade.

Brooks, M. (2021). "Algebra: the maths working to solve the UK’s supply chain crisis"

The article provides some insight into the hidden complexity of the systems that supply our everyday products and services. The algebra of optimization techniques, embedded within our supply chains, makes the modern world possible.

8 September 2021

Jon Lee, a Professor of Industrial and Operations Engineering at the University of Michigan, offers a free, 304 page, operations research textbook: *A first course in linear optimization*.

This textbook is a great introduction for anyone interested in learning about linear programming and integer programming.

According to the preface:

This book is a treatment of linear optimization meant for students who are reasonably comfortable with matrix algebra (or willing to get comfortable rapidly). It is not a goal of mine to teach anyone how to solve small problems by hand.

My goals are to introduce:

Lee, J. (2021). "A first course in linear optimization"

- The mathematics and algorithmics of the subject at a beginning mathematical level.
- Algorithmically-aware modeling techniques.
- High-level computational tools for studying and developing optimization algorithms (in particular, Python/Gurobi).

Download the full textbook as a PDF: A First Course in Linear Optimization (Version 4.0, August 2021)

The book's source, potentially including updates, is available at GitHub.

20 August 2021

In this article we replicate a wood-cutting model from a published academic paper, "An application of cutting-stock problem in green manufacturing: A case study of wooden pallet industry". A key motivation of the case study is the minimization of waste, as a means of reducing the manufacturer's environmental impact.

The paper's model is built in Excel and solved using OpenSolver, so we do the same. More importantly, the paper illustrates a useful pattern selection technique for formulating and solving large one-dimensional cutting problems.

We focus on replicating the paper's model – though, surprisingly, we obtain a better result.

9 July 2021

There are many tools for implementing and solving optimization models. At Solver Max we specialize in using Solver/OpenSolver in Excel and in the Python programming language, using a library such as Pyomo, CVXPY, or PuLP.

Each tool has advantages and disadvantages, including:

- Excel is, by far, the most widely-used analysis tool. It provides a visual environment for building models, with many built-in tools for analyzing and visualizing data. Excel is relatively easy to get started with, so many people are familiar with using Excel for modelling, analysis, and presentation of results. Prototyping a model in Excel is generally easier than in Python. Excel also has great depth – much more than most people realize. While Excel's grid structure makes data easy to see, its rigidity can complicate the handling of data that varies in size. Consequently, Excel models may not be as flexible as those created using a programming language.
- Python is a popular programming language. Libraries like Pyomo, CVXPY and PuLP handle much of the complexity of the optimization process (like the Solver and OpenSolver add-ins do in Excel). But learning how to program in Python can involve a steep learning curve, which is quite a barrier to entry. Consequently, far fewer people are familiar with programming in Python. Even if the optimization model developer is comfortable with Python, many model users may prefer a more familiar environment for interacting with a model.

To compare Excel and Python, we replicate a Python optimization model described in the blog How to schedule flights in Python. The source article describes the Python implementation. Here we focus on an equivalent Excel implementation. Towards the end of this article we provide a brief comparison of the two implementations.

26 June 2021

Punk Rock Operations Research has an interesting article about a 1967 paper On the art of modeling.

The paper's abstract says:

The problem of teaching or developing creative modeling ability is considered in the light of three basic hypotheses concerning the processes of enrichment (elaboration of very simple models), association (analogy with previously developed structures), and alternating attention to different aspects of the task.

Based on these hypotheses, specific steps are presented which have been developed to help individuals acquire modeling skills. The steps are illustrated by means of an example. Other sources of modeling ability are also suggested.

The discussion focuses on specific hypotheses concerning the differences between the

Morris, W. T. (1967). "On the art of modelling"teaching of modelsand theteaching of modeling.

The paper's insights and lessons are still highly relevant today, so it is definitely worth reading. We haven't found a freely available version of the paper, but it is available via ABI/INFORM or EBSCO which may be accessed through your local library web services.