Решение задачи кредитования с использованием модифицированного метода принятия решения на основе принципа большинства с учетом коэффициентов согласованности мнений экспертов

Исследование и реализация алгоритмов системы поддержки принятия решений. Коэффициенты согласованности ранжирований альтернатив. Применение модифицированного метода принятия решения в задаче кредитования. Описание модифицированного метода PurrConsistent.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 18.07.2020
Размер файла 1,9 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

}

}

Функция расчета коэффициентов корреляции Кендалла

private ExpertsRankCoefficients[] getRankKendallCorrelation()

{

int pairsCount = expertsCount * (expertsCount - 1) / 2;

ExpertsRankCoefficients[] expertsKendallCorrelation = new ExpertsRankCoefficients[pairsCount];

double[] connectedRanksIndicators = getConnectedRanksCorrelationIndicators();

int index = 0;

for (int e1 = 0; e1 < expertsCount; e1++)

{

for (int e2 = e1 + 1; e2 < expertsCount; e2++)

{

double expertsSum = 0;

for (int i = 0; i < alternativesCount; i++)

{

for (int j = i + 1; j < alternativesCount; j++)

{

int expRank1 = expertAlternativeScores[e1, i] < expertAlternativeScores[e1, j] ? 1

: (expertAlternativeScores[e1, i] == expertAlternativeScores[e1, j] ? 0: -1);

int expRank2 = expertAlternativeScores[e2, i] < expertAlternativeScores[e2, j] ? 1

: (expertAlternativeScores[e2, i] == expertAlternativeScores[e2, j] ? 0: -1);

expertsSum += expRank1 * expRank2;

}

}

double expCount1 = (0.5 * alternativesCount * (alternativesCount - 1)) - connectedRanksIndicators[e1];

double expCount2 = (0.5 * alternativesCount * (alternativesCount - 1)) - connectedRanksIndicators[e2];

ExpertsRankCoefficients pair = new ExpertsRankCoefficients(e1, e2, expertsSum / Math.Sqrt(expCount1 * expCount2));

expertsKendallCorrelation[index] = pair;

index++;

}

}

return expertsKendallCorrelation;

}

Функция расчета коэффициентов корреляции Спирмена

private ExpertsRankCoefficients[] getRankSpearmanCorrelation()

{

int pairsCount = expertsCount * (expertsCount - 1) / 2;

ExpertsRankCoefficients[] expertSpearmanCorrelation = new ExpertsRankCoefficients[pairsCount];

double[] connectedRanksIndicators = getConnectedRanksCorrelationIndicators();

int index = 0;

for (int e1 = 0; e1 < expertsCount; e1++)

{

for (int e2 = e1 + 1; e2 < expertsCount; e2++)

{

double ranksDiff = 0;

for (int i = 0; i < alternativesCount; i++)

{

ranksDiff += Math.Pow(expertAlternativeScores[e1, i] - expertAlternativeScores[e2, i], 2);

}

double alternativesTerm = (alternativesCount * (Math.Pow(alternativesCount, 2) - 1) / 6);

double expCount1 = alternativesTerm - 2 * connectedRanksIndicators[e1];

double expCount2 = alternativesTerm - 2 * connectedRanksIndicators[e2];

double numeratorTerm = alternativesTerm - (connectedRanksIndicators[e1] + connectedRanksIndicators[e2]);

ExpertsRankCoefficients pair = new ExpertsRankCoefficients(e1, e2, (numeratorTerm - ranksDiff) / Math.Sqrt(expCount1 * expCount2));

expertSpearmanCorrelation[index] = pair;

index++;

}

}

return expertSpearmanCorrelation;

}

Функция расчета коэффициентов парной корреляции

private ExpertsRankCoefficients[] getRankPairCorrelation()

{

int pairsCount = expertsCount * (expertsCount - 1) / 2;

ExpertsRankCoefficients[] expertPairCorrelation = new ExpertsRankCoefficients[pairsCount];

double[] connectedRanksIndicators = getConnectedRanksIndicator().Item1;

int index = 0;

for (int e1 = 0; e1 < expertsCount; e1++)

{

for (int e2 = e1 + 1; e2 < expertsCount; e2++)

{

double ranksDiff = 0;

for (int i = 0; i < alternativesCount; i++)

{

ranksDiff += Math.Pow(expertAlternativeScores[e1, i] - expertAlternativeScores[e2, i], 2);

}

double connectedRanksSum = connectedRanksIndicators[e1] + connectedRanksIndicators[e2];

double alternativesTerm = (alternativesCount * (Math.Pow(alternativesCount, 2) - 1) / 6);

ExpertsRankCoefficients pair = new ExpertsRankCoefficients(e1, e2, 1 - (ranksDiff / (alternativesTerm - connectedRanksSum / 12)));

expertPairCorrelation[index]= pair;

index++;

}

}

return expertPairCorrelation;

}

Класс для хранения данных о коэффициентах вариации

class AlternativesRankCoefficients

{

public int alternative;

public String alternativeName;

public double value;

public AlternativesRankCoefficients(int alternative, String alternativeName, double value)

{

this.alternative = alternative;

this.alternativeName = alternativeName;

this.value = value;

}

public override String ToString()

{

return "Ranks coefficient of Alternative " + alternativeName + " equals " + value;

}

}

Функция расчета коэффициентов вариации рангов

private AlternativesRankCoefficients[] getRankVariation()

{

AlternativesRankCoefficients[] alternativeRankCoefficients = new AlternativesRankCoefficients[alternativesCount];

for (int alt = 0; alt < alternativesCount; alt++)

{

int[] alternativeScores = new int[expertsCount];

double l = 0, sum = 0;

for (int e = 0; e < expertsCount; e++)

{

alternativeScores[e] = expertAlternativeScores[e, alt];

}

foreach (int val in alternativeScores.Distinct())

{

int count = alternativeScores.Count(x => x == val);

if (count > 0)

{

l += 1;

sum += count * count;

}

}

double value = (l == 1) ? 0: ((l / (l - 1)) * (1 - (sum / (expertsCount * expertsCount))));

alternativeRankCoefficients[alt] = new AlternativesRankCoefficients(alt, alternativesNames[alt], value);

}

return alternativeRankCoefficients;

}

Функция расчета коэффициентов вариации рангов (Беккера)

private AlternativesRankCoefficients[] G()

{

AlternativesRankCoefficients[] alternativeBeckerCoefficients = new AlternativesRankCoefficients[alternativesCount];

for (int alt = 0; alt < alternativesCount; alt++)

{

int[] alternativeScores = new int[expertsCount];

double sum = 0;

for (int e = 0; e < expertsCount; e++)

{

alternativeScores[e] = expertAlternativeScores[e, alt];

}

List<KeyValuePair<int, int>> ranksCountList = new List<KeyValuePair<int, int>>();

foreach (int val in alternativeScores.Distinct())

{

int count = alternativeScores.Count(x => x == val);

ranksCountList.Add(new KeyValuePair<int, int>(val, count));

}

for (int j = 0; j < ranksCountList.Count(); j++)

{

for (int k = j+1; k < ranksCountList.Count(); k++)

{

sum += ranksCountList[k].Value * ranksCountList[j].Value * (ranksCountList[k].Key - ranksCountList[j].Key);

}

}

double value = sum / (expertsCount * ((double)expertsCount - 1) / 2);

alternativeBeckerCoefficients[alt] = new AlternativesRankCoefficients(alt, alternativesNames[alt], value);

}

return alternativeBeckerCoefficients;

}

Приложение 4 Экспертные оценки в методе PURr

Рисунок 18 Классическая ситуация, Павлов А.Г.

Рисунок 19 Мировая пандемия, Павлов А.Г.

Рисунок 20 Изменение законодательства, Павлов А.Г.

Рисунок 21 Изменение законодателства по время пандемии, Павлов А.Г.

Рисунок 22 Усиление санкций против РФ, Павлов А.Г.

Рисунок 23 Одновременное усиление санкций против РФ и принятие законодательства, Павлов А.Г.

Рисунок 24 Классическая ситуация, Маслов Е.Ю.

Рисунок 25 Мировая пандемия, Маслов Е.Ю.

Рисунок 26 Изменение законодательства, Маслов Е.Ю.

Рисунок 27 Изменение законодателства по время пандемии, Маслов Е.Ю.

Рисунок 28 Усиление санкций против РФ, Маслов Е.Ю.

Рисунок 29 Одновременное усиление санкций против РФ и принятие законодательства, Маслов Е.Ю.

Рисунок 30 Классическая ситуация, Карелин И.П.

Рисунок 31 Мировая пандемия, Карелин И.П.

Рисунок 32 Изменение законодательства, Карелин И.П.

Рисунок 33 Изменение законодателства по время пандемии, Карелин И.П.

Рисунок 34 Усиление санкций против РФ, Карелин И.П.

Рисунок 35 Одновременное усиление санкций против РФ и принятие законодательства, Карелин И.П.

Приложение 5 Измененные оценки третьего эксперта в методе PURrCONSISTENT

Рисунок 36 Классическая ситуация, Карелин И.П.

Рисунок 37 Мировая пандемия, Карелин И.П.

Рисунок 38 Изменение законодательства, Карелин И.П.

Рисунок 39 Изменение законодателства по время пандемии, Карелин И.П.

Рисунок 40 Усиление санкций против РФ, Карелин И.П.

Рисунок 41 Одновременное усиление санкций против РФ и принятие законодательства, Карелин И.П.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.