Trying to find an optimal decision without an optimization engine

All provided solutions to the DMCommunity April 2025 Challenge “Case Assignment” use an optimization engine. The OpenRules solution utilized Rule Solver. I decided to try to solve this problem using only rules without any optimization engine. In doing that, my solution failed to satisfy all problem requirements. I believe it could be helpful for Business Rules practitioners to analyze (and potentially improve) my implementation described below.

I excluded Rule Solver dependencies and any Java code. All test cases remained the same. The glossary is also almost the same:

Now the Results include “Possible Assignments,” and I also added a temporary variable “Analyst Can Be Assigned To Case”.

Rules, Constraints, and Solution Search

I decided to use only business rules without an optimization engine. I wanted to do it in 3 steps:

  1. Build an array of all possible assignments
  2. Sort this array by placing assignments with the smallest overqualifications on the top
  3. Select assignments for each case from the top of the array.

I described these steps (plus showing the arrays) in the following table:

Here is the decision table “DefineAnalystMinMaxCaseComplexity”:

It implements two nested loops: “for each Analyst in Analysts” and “for each CaseQualification in Case Qualifications”.

Here is the decision table “DeterminePossibleAssignments”:

It implements two nested loops that “for each Analyst in Analysts” and “for each AnalyticalCase in New Cases” executes 4 decision tables:

The next table sorts already found Possible Assignments, so the assignments with the smallest overqualifications will sit at the top:

To choose the Optimal Assignments we need “for each AnalyticalCase in New Cases” select one and only one case from the already sorted array Possible Assignments. It can be done using the following table with two nested loops:

To show all Possible Assignments and the selected Optimal Assignments, we can use the following tables:

Execution Results

I executed this decision model using the regular “test.bat”. Here are the execution results:

We can see that our solution did not assign any analyst to case 113. Why? Because only Kevin Jones could do it. However, our assignment mechanism with sorting is too “greedy” assigning Kevin Jones to case 112 as the least over-qualified analyst.

Compare these results with those produced by the real optimal solution:

CONCLUSION. While the described pure rules-based approach may look simpler compared to an optimization-based approach, it is more awkward and error-prone.

Leave a comment

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