Operations Research— Key to Organizational Operational Efficiency

Effective process management is key to the success of any organization, and it comes through a combination of data science, operations management, and operations research.

Saif Ali Kheraj
Towards Data Science

--

Abstract

As companies move toward artificial intelligence, they must consider the business, corporate, and functional strategy, as well as how artificial intelligence might fit into each of these strategies. Before I get into the meat of the matter, I’d want to give you a quick rundown. The business strategy includes the business model, as well as the external and internal analysis. As an AI leader, one should understand business strategy, as data science use cases can be influenced by the firm’s internal and external environment.

Secondly, I would like to talk about functional or operational strategy, which is concerned with effectively and efficiently managing resources to meet the expectations of customers while also assisting the organization in making a profit. The organization focuses on important key performance indicators inside its operation strategy, which is critical for AI leaders to understand. If data scientists want to truly make an impact within a business, they must first understand the operation strategy and KPIs within each process.

In the case of insurance, for example, claim turnaround time may be an essential KPI. In the case of telecommunications, the churn rate within the customer lifecycle management process is a critical KPI. Therefore, data scientists must understand KPIs inside each process in order to take full advantage of data science.

In this post, I’d want to concentrate on operation research since it relates to process management inside an operational strategy. Operation Research is an extremely important topic to focus on, and it is one of the areas that has been underrepresented in the data science sphere. Whichever organization you choose, it has multiple processes, and we have resources to deal with inside those processes. Sometimes, certain processes are not effectively optimized, resulting in mismanagement and resource inefficiencies.

In hospitals, for example, inefficient processes may result in longer wait times, resulting in a negative experience. Similarly, inefficient inventory management and demand fulfillment can result in increased holding costs. In addition, when it comes to project management, improper resource allocation might contribute to project failure. This is when operations research comes in handy. In layman’s words, operation research assists managers in making the right decisions at the right time, hence reducing operational inefficiencies and assisting the organization in improving its key performance indicators. More precisely, operation research entails optimization, which aids in the allocation of resources that can meet overall objectives given various constraints.

Introduction

In this post, I will primarily focus on two examples that will motivate you to continue working on them. First, we’ll solve the Knapsack problem, and then we’ll look at some theory using a graphical method. Understanding theory using graphs aids in building intuition. I’m using these trivial examples just to demonstrate how the whole technique works.

Knapsack problem

Figure 1: Camping item list (Figure by Author)

Assume you’re putting together a camping equipment list like the one in the table above. As you can see, the total weight of all the items is 11.29kg, but you can only carry a maximum of 5kg in your bag. How will you then select the items from the list?

The third column in the table also includes the item’s importance/value, which can assist you in choosing the optimum number of items. One approach you can take is to try all of the possible combinations of items, which will take a significant amount of time. This is known as a greedy approach, and coding this problem will result in high time complexity. This is a small problem, but what if you have a large number of items with numerous combinations? This greedy approach will not work.

Let us now use Mathematical programming to solve this problem. The idea of mathematical problems is related to what you must have already studied in your school which includes Linear systems and equations, solving simultaneous equations, etc. In mathematical or linear programming, the important part is to formulate your problem statement.

Formulating Problem Statement

  1. Decision Variables

The decision variable is what we want to determine. In this case, we need to select the combination of items that maximizes the overall value keeping constraint of 5kg into account.

By Author: 1 if item is chosen and 0 if item is not chosen. In case if we exclude an item, that will be marked as 0.

2. Objective function

In this case, we want to maximize the total value. Let us first calculate the value per weight for each item.

Figure 2: Camping item list (Figure by Author)
By Author: Objective Function

So, ideally, we want to maximize the value, and we can do so if we include all of the items, but we don’t have that option. We must choose the best combination of items to meet our constraints.

3. Constraints

Total Weight must not exceed 5kg

By Author: Constraints → Weights must not exceed 5kg

Given these 3 parts, we can use the solver to solve the complete equation. We can make use of Pulp to solve this equation and find the right combination of items.

Pulp Program

from pulp import *v = {'Sleeping bag':4.17,
'Pillow':5.13,
'Torch':10,
'First Aid Kit':8,
'Hand sanitiser':2,
'Coolbox':1.33,
'Rubbish bags':2,
'lantern':0.37,
'Eating/cooking utensils':1.2,
'Compass':8}
w = {'Sleeping bag':1.2,
'Pillow':0.39,
'Torch':0.5,
'First Aid Kit':0.5,
'Hand sanitiser':0.5,
'Coolbox':1.5,
'Rubbish bags':1,
'lantern':2.7,
'Eating/cooking utensils':2.5,
'Compass':0.5}
limit = 5
items = list(sorted(v.keys()))
# Create model
m = LpProblem("Knapsack Problem", LpMaximize)
# Variables
x = LpVariable.dicts('x', items, lowBound=0, upBound=1, cat=LpInteger)
# Objective
m += sum(v[i]*x[i] for i in items)
# Constraint
m += sum(w[i]*x[i] for i in items) <= limit
# Optimize
m.solve()
# Print the status of the solved LP
print("Status = %s" % LpStatus[m.status])
# Print the value of the variables at the optimum
for i in items:
print("%s = %f" % (x[i].name, x[i].varValue))
# Print the value of the objective
print("Objective = %f" % value(m.objective))

Result

Status = Optimal
x_Compass = 1.000000
x_Coolbox = 0.000000
x_Eating_cooking_utensils = 0.000000
x_First_Aid_Kit = 1.000000
x_Hand_sanitiser = 1.000000
x_Pillow = 1.000000
x_Rubbish_bags = 1.000000
x_Sleeping_bag = 1.000000
x_Torch = 1.000000
x_lantern = 0.000000
Objective = 39.300000

As we see right over here, we should choose a compass, first aid kit, hand sanitizer, pillow, rubbish bags, sleeping bag, and torch for our camping. The total weight of all these items is 4.59kg which meets our constraint and maximizes our objective function.

Although this is a very simple example, the same concepts can be applied in numerous practical use cases, such as production planning, where you need to choose the right resources to maximize your profit, order selection, etc.

The problem we just solved is called “Integer Linear Programming” in technical terms, as variables are restricted to be integers. Well, this was just a simple binary 0–1 integer linear programming. I will not move towards other types as I only want you to understand the concept for now.

Theoretical Understanding (Graphical Method)

Let us now understand mathematical concepts in more detail so that you can develop an intuitive sense.

The manufacturer aims to maximize revenue by selling furniture, including tables and chairs. Making a table and chair requires resources such as wood and labor. Assuming that all units are sold as they are produced. To make a table, we require 10 units of wood and 4 hours of labor time. To make chairs, we require 8 units of wood and 6 hours of labor time. However, we only have 200 units of wood and a total of 100 labor hours available.

Per unit profit for tables: $5
Per unit profit for chairs: $6

To maximize revenue(assuming revenue=profit in this example), we could just keep producing tables and chairs, but we can’t due to constraints in terms of wood availability and labor hours. Let us summarize this problem in a tabular format.

Figure 3: Problem Formulation table (Figure by Author)

Formulating problem through table really helps to clarify everything.

We need to identify optimal number of chairs and tables that maximizes profit. This would aid in the decision making process of manufacturer.

Formulating Problem

Step1: Decision Variable (How many tables and chairs we need to produce to maximize profit given constraints)

By Author: This is what we need to determine

Step2: Objective function

By Author: We want to maximize this

Step3: Constraints

By Author: Constraints to satisfy

Because we have two variables, X1 and X2, we can solve this problem graphically.

We have already formulated this problem. The next step is to plot the constraints.

By Author: Wood Constraint→ getting two points to draw straight line

As seen in this example, we have two points to plot constraint 1 on a graph. These two points will be used to draw a straight line on a graph.

We will do same for the constraint 2.

By Author: Labor Constraint→ getting two points to draw straight line

Now that we have points for both constraints 1 and 2, we can plot them on the graph.

Figure 4: Constraint plotted on graph. Shaded part shows feasible region (Figure by Author)

On this graph, we can see a feasible region where both of these constraints are satisfied. We can’t go beyond/above it because it wouldn’t meet our constraints. The feasible region is the area on both sides of the constraint line that is valid.

Now we must determine the value of the objective function for the best solution. To put it another way, we need to find the optimal point on this graph where profit is maximized.

By Author: Objective function Recap

To accomplish this, use this objective function and enter any value of Z. (ideally, start with 0). Then, for any x1, solve for x2. For another point, use a different x1 to solve for x2. This will get you a line for the objective function based on your specified value of Z.

Similarly, try a different value of Z to get a different straight line of equation. You’ll notice that the line will be parallel to the one before it.

To find the most attractive corner, draw the line parallel to the objective function lines that touches the last point in the feasible region.

As in this case, red point is the most attractive corner where the value of Z is maximized.

Thus, the maximum value of the objective function occurs at the extreme point (14.29,7.14) where the value of Z is 114.29. This is the maximum profit we can make from 14 tables and 7 chairs.

Conclusion

We saw the importance of operations research in this post by solving two important problems. There are a plethora of applications for this. When we combine predictive analytics with operations research, we effectively transform data science into decision sciences, allowing management to make actionable decisions.

It is also important to note that when we add a lot of constraints, solutions can become infeasible. Even when we have a feasible region, it can be difficult when those regions are unbounded. Furthermore, multiple optimal solutions for the same problem are possible. Thus, it is critical to carefully formulate the problem.

References

[1] https://pyomo-simplemodel.readthedocs.io/en/latest/knapsack.html#:~:text=The%20Knapsack%20Problem%20considers%20the,items%20that%20can%20be%20carried.

[2] https://thinkinsights.net/strategy/functional-strategy/#:~:text=A%20functional%20strategy%20is%20the,for%20a%20specific%20business%20function.

--

--

Key interests in telecom, media, retail, finance, sustainable business, Climate Change