McdaToolkit 4.0.1-rc3
See the version list below for details.
dotnet add package McdaToolkit --version 4.0.1-rc3
NuGet\Install-Package McdaToolkit -Version 4.0.1-rc3
<PackageReference Include="McdaToolkit" Version="4.0.1-rc3" />
<PackageVersion Include="McdaToolkit" Version="4.0.1-rc3" />
<PackageReference Include="McdaToolkit" />
paket add McdaToolkit --version 4.0.1-rc3
#r "nuget: McdaToolkit, 4.0.1-rc3"
#:package McdaToolkit@4.0.1-rc3
#addin nuget:?package=McdaToolkit&version=4.0.1-rc3&prerelease
#tool nuget:?package=McdaToolkit&version=4.0.1-rc3&prerelease
MCDA Toolkit
MCDA Toolkit is a lightweight .NET library designed to support Multi-Criteria Decision Analysis (MCDA) tasks. It helps developers and analysts define and solve decision-making problems, from simple comparisons to more structured evaluation models.
🚀 Key Features
.NET 6 and .NET Standard 2.0 Support Compatible with both .NET 6 and .NET Standard 2.0, making it suitable for modern applications as well as legacy or cross-platform projects.
⚡ Easy to Use
Designed to be simple and straightforward — no unnecessary setup, no configuration files. You can define and run a decision model with just a few lines of code.
Documentation
<<<<<<< HEAD <<<<<<< HEAD Make sure to read the docs
Make sure to read the docs
c9396c4 (fix(README.md): updated docs path) ======= Make sure to read the docs 99d5ee3 (fix(README.MD): remove /docs/ part from docs path)
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 = DataBuilder
.Create()
.AddWeights(weights)
.AddDecisionCriteria(types)
.AddDecisionMatrix(matrix)
.Build();
5️⃣ Create MCDA method
var vikor = VikorBuilder
.Create()
.WithNormalizationMethod(NormalizationMethod.Vector)
.WithVParameter(0.5)
.Build();
6️⃣ Run
var result = vikor.Run(data);
Outcome
The result of the calculation is returned as an object of type Result<Ranking<T>>, provided by the LightResults library. It encapsulates both the Ranking<T> and information about whether the operation succeeded or failed.
Example returned success result:
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
Example returned success result:
Ranking<double>()
{
RankingItems = List<RankingRow<double>>()
{
RankingRow<double>
{
Alternative = 1,
Rank = 6,
Score = 0.417
},
RankingRow<double>
{
Alternative = 2,
Rank = 2,
Score = 0.552
},
RankingRow<double>
{
Alternative = 3,
Rank = 4,
Score = 0.54
},
RankingRow<double>
{
Alternative = 4,
Rank = 3,
Score = 0.54
},
RankingRow<double>
{
Alternative = 5,
Rank = 5,
Score = 0.429
},
RankingRow<double>
{
Alternative = 6,
Rank = 1,
Score = 0.568
}
}
};
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 (>= 9.0.3)
- MathNet.Numerics (>= 5.0.0)
-
net6.0
- LightResults (>= 9.0.3)
- 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.
RC3 hotfix