McdaToolkit 4.0.0-rc1
See the version list below for details.
dotnet add package McdaToolkit --version 4.0.0-rc1
NuGet\Install-Package McdaToolkit -Version 4.0.0-rc1
<PackageReference Include="McdaToolkit" Version="4.0.0-rc1" />
<PackageVersion Include="McdaToolkit" Version="4.0.0-rc1" />
<PackageReference Include="McdaToolkit" />
paket add McdaToolkit --version 4.0.0-rc1
#r "nuget: McdaToolkit, 4.0.0-rc1"
#:package McdaToolkit@4.0.0-rc1
#addin nuget:?package=McdaToolkit&version=4.0.0-rc1&prerelease
#tool nuget:?package=McdaToolkit&version=4.0.0-rc1&prerelease
MCDA Toolkit
🧭 Introduction
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.
🚀 Key Features
🧩 .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.
Documentation
Make sure to read the docs for the full API.
Dependencies
Quick Example
Here's a simple example to show how to prepare and structure your data for an MCDA calculation using the MCDA Toolkit.
1️⃣ Define the Decision Matrix
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 },
};
2️⃣ Prepare Weights
They must be double values between 0 and 1, and must sum to 1
double[] weights = new double[]
{
0.4, 0.25, 0.35
};
3️⃣ Define Criteria Types
Each criterion is marked as either a cost (-1) or a benefit (1).
int[] types = new int[]
{
-1, -1, 1
};
4️⃣ Build the Data Object
var data = new DataProviderBuilder()
.AddWeights(weights)
.AddDecisionCriteria(types)
.AddDecisionMatrix(matrix)
.Build();
5️⃣ Create MCDA method
var vikor = MethodFactory
.CreateVikor(new VikorOptions())
6️⃣ Run
var result = vikor.Run(data);
Outcome
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
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- LightResults (>= 8.0.11)
- MathNet.Numerics (>= 5.0.0)
-
net6.0
- LightResults (>= 8.0.11)
- MathNet.Numerics (>= 5.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Added support for PrometheeII