MCDA Toolkit is a lightweight and flexible .NET library designed to support Multi-Criteria Decision Analysis (MCDA) processes. It helps developers and analysts structure, evaluate, and solve decision-making problems.
🧩 .NET 6 and .NET Standard 2.0 Compatibility Fully compatible with both .NET 6 and .NET Standard 2.0, ensuring support for a wide range of application
🧠 Simple and Intuitive API Built with a fluent interface that makes setup fast and readable. Easily configure decision-making data with minimal code and maximum clarity.
⚡ Quick Integration Plug-and-play design means you can get started in seconds. No complex setup or learning curve—just import and go.
Make sure to read the docs for the full API.
Here's a simple example to show how to prepare and structure your data for an MCDA calculation using the MCDA Toolkit.
Each row represents an alternative, and each column corresponds to a criterion.
double[,] matrix = new double[,]
{
{ 66, 56, 95 },
{ 61, 55, 166 },
{ 65, 49, 113 },
{ 95, 56, 99 },
{ 63, 43, 178 },
{ 74, 59, 140 },
};
They must be double values between 0 and 1, and must sum to 1
double[] weights = new double[]
{
0.4, 0.25, 0.35
};
Each criterion is marked as either a cost (-1) or a benefit (1).
int[] types = new int[]
{
-1, -1, 1
};
var data = new DataProviderBuilder()
.AddWeights(weights)
.AddDecisionCriteria(types)
.AddDecisionMatrix(matrix)
.Build();
var vikor = MethodFactory
.CreateVikor(new VikorOptions())
var result = vikor.Run(data);
The result of the calculation is returned as an object of type Result<T>
, provided by the LightResults library.
This structure not only contains the output data Value
, but also encapsulates information about whether the operation failed or succeed.
Before accessing the Value
property of the result object, it is essential to verify that the operation completed successfully.
Attempting to access the value without this check may throw InvalidOperationException
This approach follows the principles of Railway Oriented Programming, a functional programming pattern that models the flow of data along two possible tracks — one for success and one for failure.
More about Result
type can be readed on official LightResult documentation