Решение задачи кредитования с использованием модифицированного метода принятия решения на основе принципа большинства с учетом коэффициентов согласованности мнений экспертов
Исследование и реализация алгоритмов системы поддержки принятия решений. Коэффициенты согласованности ранжирований альтернатив. Применение модифицированного метода принятия решения в задаче кредитования. Описание модифицированного метода 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
Подобные документы
Классификация систем поддержки принятия решений. Сравнительный анализ методик для оценки рисков розничного кредитования. Структура системы поддержки принятия решений, формирование начальной базы знаний. Проектирование базы данных информационной системы.
дипломная работа [1,9 M], добавлен 10.07.2017Методы решения проблем, возникающих на стадиях и этапах процесса принятия решений, их реализация в информационных системах поддержки принятия решений (СППР). Назначение СППР, история их эволюции и характеристика. Основные типы СППР, области их применения.
реферат [389,3 K], добавлен 22.11.2016Требования к защите систем электронных платежей. Разновидности процедур, выполняемые лицом, принимающим решения. Методы иерархического упорядочивания альтернатив на заданном множестве критериев. Описание применения метода ОРКЛАСС, схема базы данных.
дипломная работа [1,7 M], добавлен 02.03.2016Разработка алгоритмического и программного обеспечения для решения задачи поддержки принятия решений о выпуске новой продукции. Математическое обеспечение задачи поддержки принятия решений о выпуске новой продукции, основные входные и выходные данные.
дипломная работа [943,0 K], добавлен 08.03.2011Решение задачи на тему максимизации функций многих переменных. Описание метода дихотомии, его применение для решения нелинейных уравнений. Решение данной задачи с использованием метода покоординатного спуска. Составление алгоритмов, листинг программы.
курсовая работа [138,5 K], добавлен 01.10.2009Сферы использования компьютеров, сущность и языки программирования. Применение модифицированного метода Гаусса и расширенной матрицы для решения системы линейных алгебраических уравнений (СЛАУ). Разработка программы, системные требования для ее работы.
курсовая работа [657,1 K], добавлен 09.01.2014Описание предметной области автоматизации. Программа обследования и план-график выполнения работ на предпроектной стадии. Метод группового принятия решения с помощью кластеризации экспертных оценок альтернатив. Построение диаграммы потоков данных DFD.
дипломная работа [375,8 K], добавлен 07.12.2014Система поддержки принятия решений "Мыслитель" и метод, заложенный в её основу. Порядок работы в программе: новая задача, составление списка альтернатив, списка критериев их оценки, сравнение критериев по степени важности, попарное сравнение альтернатив.
отчет по практике [719,2 K], добавлен 08.03.2016Особенности метода неопределенных множителей Лагранжа, градиентного метода и метода перебора и динамического программирования. Конструирование алгоритма решения задачи. Структурная схема алгоритма сценария диалога и описание его программной реализации.
курсовая работа [1010,4 K], добавлен 10.08.2014Изучение характеристик магазина "Мир дверей" и видов его деятельности. Выявление условий труда и функций продавца-консультанта, подлежащих автоматизации. Описание системы поддержки принятия решения подбора товаров на платформе "1С: Предприятие 8.3".
дипломная работа [3,9 M], добавлен 30.05.2015