How decision models deal with fairness

The discussion “Decision Modeling and Fairness” raises very interesting issues, some of which were addressed in the original Guido Tack’s presentation as well in several solutions for Stable Marriage Challenge including OpenRules. In this post I’d like to look at this problem from the perspective of real-world decision-making applications. Do they actually deal with the fairness of the recommended decisions and if yes, then how?

Listening to Guido’s presentation many people pay attention to the attempt to maximize “fairness” using Corrago Gini‘s equality approach. He demonstrate that such equality makes everybody equally unhappy (no wonder Gini being a serious scientist also was a fascist). However, there were two important aspects behind the word “fairness” that people could miss or not notice. First, contrary to the famous Gale-Sharpley algorithm that tells exactly how to find a solution, Guido advocates the declarative decision modeling approach when he only states the problem constraints and objectives but relies on a universal decision engine to find feasible or optimal solutions. And this is a very practical approach needed for many real-world applications. Second, Guido recommends to consider not a “one and done” solution but rather applying the same solving method to multiple problem instances and try to achieve an optimal solution over certain time periods. This corresponds to sequential decision optimization advocated by Prof Warren Powell.

Watching Guido’s presentation I thought about the recent comment made by the decision optimization expert Meinolf Sellmann: “Operations Research solutions frequently solve a problem that no one has. A problem that simplifies the real-world complexity until a solver can handle it.” Really, the discussed Stable Marriage problem is hardly can be called a real-world one.  Probably the closest real-world problem can be found in online dating systems such as “eHarmony.com”. Still, these applications do not try to satisfy preferences for groups of people considering “fair” distributions. Instead, they find the best available matches for individuals by considering many different compatibility factors. It is a quite clear problem that is easy to solve.

There are many similar real-world problems that deal with matching, e.g. allocating teachers to classes, service personnel to customers, nurses to shifts, students to universities, donated organs to patients, and others. Most of them have been successfully addressed in practical decision-making applications using rule engines and/or constraint/linear solvers.

I decided to look at several real-world decision-making applications in development of which I or my colleagues were involved. Majority of these applications dealt with complex business problems for which we had clearly defined business objectives. Below is a brief list that comes to my mind and for which I have good references.

  1. Field Service Scheduling. I would name at least two systems for which we developed a scheduler that allocated people to job considering their skills, durations, travel time, etc. In the case of a large utility company LILCO in New York, my scheduler implemented multi-objective optimization by tweaking weights of multiple frequently contradicting factors: resource utilization, travel time, and scheduling jobs ASAP. In case of Trimble we used OpenRules rule engine to determine service territories and worker skills, and define optimum parameter settings for their existing scheduler. If I remember correctly, the word “fairness” appeared only ones when we defined optional constraints to avoid giving “hard to do” jobs to younger workers with less experience.
  2. Flash Sales Pricing. We built a pricing system for online retailer GILT that supported their flash sales processes. The system utilized sales history to predict demand for ever-changing assortments of thousands of products. The pricing engine was based on 3 technologies: machine learning, rule engine, and constraint/linear solvers. Our engine was used to find the best combination of prices that satisfied multiple business objectives: revenue, margin, and sell-through. We faced many complex problems to deal with but never had complains about fairness of the recommended prices.
  3. Truck Loading. We developed (and then successfully sold to a large logistic company) truck loading software. It was capable to maximize the utilization of space inside trucks while satisfying various loading, uploading, and shipping constraints. Our Loader handled such concepts as “keep similar product together”, “do not split product type across trucks”, “do not split purchase orders across trucks”, “ship highest profit margin product first”, etc. It helped our customers to save a lot of money by using more efficiently their fleets. It respected driver and union constraints, but fairness was not explicitly defined.
  4. Flight Rebooking. This problem was offered as the Decision Management Community Oct-2016 Challenge. The objective of this decision model was to find a “fair” rebooking solution for people waiting for a new flight after their old flight being cancelled. Different people submitted many solutions to this problem using mainly rules-based decisioning tools. Many of them used the procedural approach with strictly defined algorithm for HOW to find one possible solution. Such an approach did not allow an explicit fairness specification. In OpenRules’ declarative solution we posted assignment and capacity constraints, assigned different importance (weights) to different factors (delay penalties), and concentrated on “WHAT” instead of “HOW”. Then we specified the minimization objective as the sum of all penalties for passenger-flight assignments. This structure allowed us to find the optimal and reasonably fair solution. More importantly, it allowed us easily adding more factors such as numbers of children or veterans to produce more “fair” solutions.
  5. Resource allocation problem for large data centers. We helped a large data center to solve recurring resource allocation problems by moving applications between servers. We tracked the behavior of the servers over time and used a combination of rule engine and constraint solver in order to properly identify and resolve overloads. No fairness was considered.
  6. Implementing Fairness in Java. Developers who deal with Java Concurrency are well-aware of the situations when implementing “fairness” for competing threads may badly affect overall performance. It is a very interesting topic (see e.g. ReentrantLock) but not for business decision modeling.
  7. Rule-based traffic management. This system was presented by Silvie Spreeuwenberg at DecisionCAMP-2017. It detected bottlenecks, optimized travel time on route segments, and supported many other traffic control functions. It managed conflicting service requests by turning down requests from the least severe traffic situations. It means the system dealt with fairness for different groups of people waiting in traffic. Hopefully, Silvie will provide more comments about this system.

Conclusion. The described systems used different decision intelligence technologies to find optimal solutions. What is really important is the fact that the proper decision model explicitly defined business objectives that could be easily adjusted or completely modified by simple business rules. More than that, they could adjust optimization objectives and various settings based on a particular problem instance. Such flexible design of decision models may help people to specify what they exactly mean by “fairness” for each particular problem and it will lead to more fair decisions.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.