2. 使用層級分析法選才
while (true)
{
Console.WriteLine("輸入比值:");
Console.Write("請輸入 專業能力 對 通識素養 的指標比值(輸入兩個數值):");
var a = Console.ReadLine().Split(' ').Select(double.Parse).ToArray();
Console.Write("請輸入 專業能力 對 合群性 的指標比值(輸入兩個數值):");
var b = Console.ReadLine().Split(' ').Select(double.Parse).ToArray();
Console.Write("請輸入 通識素養 對 合群性 的指標比值(輸入兩個數值):");
var c = Console.ReadLine().Split(' ').Select(double.Parse).ToArray();
var matrix = new double[3, 3];
matrix[0, 0] = 1;
matrix[1, 1] = 1;
matrix[2, 2] = 1;
matrix[1, 0] = a[0] / a[1];
matrix[0, 1] = a[1] / a[0];
matrix[0, 2] = b[1] / b[0];
matrix[1, 2] = c[1] / c[0];
matrix[2, 0] = b[0] / b[1];
matrix[2, 1] = c[0] / b[1];
Console.WriteLine("顯示比值矩陣:");
for (int y = 0; y < 3; y++)
{
for (int x = 0; x < 3; x++)
Console.Write($"{matrix[x, y]:f3} ");
Console.WriteLine();
}
Console.Write("顯示指標的權重:");
double[] ws = new double[3];
for (int i = 0; i < 3; i++)
{
double wi = 0;
for (int j = 0; j < 3; j++)
{
double z = 0;
for (int k = 0; k < 3; k++)
{
z += matrix[j, k];
}
wi += matrix[j, i] / z;
}
wi /= 3;
ws[i] = wi;
Console.Write($"w{i + 1}: {wi:f3} ");
}
var lm = ws.Select((e, i) =>
{
double d = 0;
for (int j = 0; j < 3; j++) d += matrix[i, j];
return e * d;
}).Sum();
var cr = (lm - 3) / ((2) * 0.58);
Console.WriteLine();
Console.WriteLine($"顯示LundaMax={lm:f3}");
Console.WriteLine($"顯示一致性比率 CR={cr:f3}。{(cr < 0.1 ? "CR小於0.1,符合一致性。" : "CR不小於0.1,不符合一致性。")}");
Console.WriteLine("繼續否?(y or n)");
if (Console.ReadLine() == "n") break;
}Last updated