Navigating Grey Zones In Decision-Making: Introducing the Solver API
In today’s complex and ever-changing world, making decisions is rarely straightforward. Often, the best solution is not perfect but requires careful balancing of various factors and compromises. This is where the Solver API comes into play, enabling you to score and find the optimal option from a myriad of possibilities while considering a wide range of requirements. In this blog post, we’ll explore the inner workings of this powerful tool and its versatile applications.
The Core Principle: Descriptors
At the heart of the Solver API’s functionality are descriptors. Descriptors are used to describe the key attributes of items under consideration. They are simple, consisting of a name and a value. Here’s an example of what a descriptor looks like:
{ "type": "item.color", "value": "Red" }
Descriptors provide the necessary foundation for the Solver API to understand and evaluate items.
Defining the Problem: Requirements
To define the problem to solve, you need to specify the requirements of an optimal solution. A requirement is composed of several components:
- Type: Aligns with how the possible options were described.
- Data Type: Specifies the data type of the requirement.
- Values: One or more desired or undesired values.
- Scoring Logic: Allows fine control over how the requirement is compared to the possible option attribute. It includes:
- Comparison Logic (e.g., Greater Than, Less Than, One Of, None Of).
- Method (Reward or Penalize).
- Weight (an arbitrary penalty if the requirement is not met).
- Constraint Hardness (controls the hardness of the penalty, such as soft or hard).
- Value Range (provides value boundaries for penalty calculation).
Here’s an example of a requirement:
{ "type": "item.attribute.performance.zero-to-100-kmph-duration-in-s", "values": ["3"], "valueType": "float", "scoringLogic": { "comparisonLogic": "GreaterThan", "method": "Penalize", "weight": 28, "constraintHardness": "hard", "valueRange": { "minimumValue": "1", "maximumValue": "20" } } }
These requirements help the Solver API understand the criteria for an ideal solution.
Solving Complex Problems
Once you’ve defined both the problem and the possible items, you can set the Solver API to work. It explores various items, evaluating them against the defined requirements. Given the potential complexity of the problem space, the Solver API employs efficient techniques to navigate it. Brute-forcing through the problem is not a viable option.
The Outcome: Scoring Information
After exploring different possibilities, the API returns the best item/solution for the given requirements along with its score. Additionally, it can provide a list of other considered items and their respective scores. The scoring information offers valuable insights into why a particular option was chosen.
Here’s an example of the scoring information returned:
"scoreExplanation": { "overallHardScore": -6, "overallSoftScore": 0, "overallScorePercentage": 0.84210527, "requirementsScorePercentage": 0.78571427, "budgetScorePercentage": 1.0, "brokenRequirements": [ { "type": "item.attribute.performance.zero-to-100-kmph-duration-in-s", "scoringLogic": { "method": "Penalize", "comparisonLogic": "GreaterThan", "weight": 28, "constraintHardness": "hard", "weightRelativePercentage": 1.0, "valueRange": { "minimumValue": 1.0, "maximumValue": 20.0 } }, "values": ["3"], "valueType": "float" } ] }
In this example, the item incurred a hard penalty of 6 points for not meeting a specific requirement. You can also see the impact in the calculation for the requirements and overall score for the item.
Versatile Applications
The Solver API’s versatility extends to various use cases:
- Finding the right product based on requirements.

- Identifying the best operational item considering constraints.
- Selecting the next project from a portfolio backlog.
- Matching individuals to jobs based on skills and availability.
- Determining the next best action in a given situation.
- Evaluating items for straight-through processing.
- Conducting risk assessments by identifying indicators and issues.
- Providing operational guidelines based on business conditions.
Crucially, the Solver API enables real-time problem-solving, allowing you to dynamically adjust requirements to adapt to changing conditions—a vital feature in the ever-evolving landscape of business and decision-making.
If this is something of interest to you and your organization, don’t hesitate to contact me.
In conclusion, the Solver API offers a powerful and flexible solution for navigating the complexities of decision-making, helping you find the best compromise among multiple requirements. Whether you’re optimizing products, operations, or human resources, this tool can guide you through the grey areas, delivering optimal solutions in real time.
Navigating Grey Zones – Consistently Picking the Right Tasks | Mathieu Isabel's Weblog
[…] our previous discussion, we explored the versatility of the Solver API in solving complex decision-making problems. Now, […]
Navigating Grey Zones – Picking an ETF | Mathieu Isabel's Weblog
[…] our previous posts Navigating Grey Zones In Decision-Making: Introducing the Solver API and Navigating Grey Zones – Consistently Picking the Right Tasks, we covered some of the basics […]