Автор работы: Пользователь скрыл имя, 09 Декабря 2014 в 18:46, лабораторная работа
3.1. Сформировать следующие матрицы:
а) парных сравнений влияния характеристик альтернатив (решений) на общую цель принятия решений (матрицу А1);
б) парных сравнений наличия рассматриваемых свойств (характеристик) у предлагаемых к анализу решений – матрицы (где , m – количество критериев (свойств, характеристик) рассматриваемых альтернатив);
3.2. Реализовать процедуру, которая используя заданный в варианте метод, определяет вектор собственных значений W каждой из матриц парных сравнений, вычисляет собственное значение матрицы и индекс согласованности (ИС) оценок в ней.
Министерство образования и науки Российской Федерации
Севастопольский государственный университет
Кафедра ИС
Отчет по лабораторной работе №4
ИССЛЕДОВАНИЕ ПРИМЕНЕНИЯ МЕТОДА АНАЛИЗА ИЕРАРХИЙ ДЛЯ РЕШЕНИЯ ЗАДАЧИ ВЫБОРА АЛЬТЕРНАТИВ
Выполнил
ст.гр. И-31д
Довженко М.И.
Проверил
Токарев А.И.
Севастополь
2014
ЦЕЛЬ РАБОТЫ
Исследовать применение аппарата метода анализа иерархий при принятии решений по выбору альтернатив.
ВАРИАНТЫ ЗАДАНИЯ
3.1. Сформировать следующие матрицы:
а) парных сравнений влияния характеристик альтернатив (решений) на общую цель принятия решений (матрицу А1);
б) парных сравнений наличия рассматриваемых свойств (характеристик) у предлагаемых к анализу решений – матрицы (где , m – количество критериев (свойств, характеристик) рассматриваемых альтернатив);
3.2. Реализовать процедуру, которая используя заданный в варианте метод, определяет вектор собственных значений W каждой из матриц парных сравнений, вычисляет собственное значение матрицы и индекс согласованности (ИС) оценок в ней.
3.3. Проверить выполнение
условия согласованности
3.4. Разработать процедуру, которая на основе векторов собственных значений матриц ( , количество элементов в каждом из векторов равно количеству рассматриваемых решений (альтернатив), т.е. n) для каждого из решений сформировать вектор весовых коэффициентов , каждый из которых соответствует наличию j-ой характеристики (свойства, критерия) у соответствующего i-го решения (количество элементов в каждом из этих векторов равно количеству свойств решений, влияющих на общую цель принятия решений, т.е. m);
3.5. Разработать процедуру,
которая на основе векторов
весовых коэффициентов на
Вариант 1.
У студентов в процессе обучения возникает необходимость определения предмета, который они хотели бы изучать по выбору. Характеристиками (критериями), соответствующими свойствам предметов, на основе которых выполняется выбор (влияющих на выбор предмета) являются: фундаментальные знания, которые содержит преподаваемый предмет, соответствие современному уровню развития науки в данной области, возможность использования в профессиональной деятельности, симпатии к преподавателю. Для анализа и выбора могут быть предложены следующие предметы: теория принятия решений, теория алгоритмов, теория вероятностей и математическая статистика, теория информационных процессов, технологии обработки информации, технологии программирования. Для реализации выбора необходимо сформировать требуемые матрицы парных сравнений и реализовать процедуру принятия решений. При этом для определения значений элементов собственных векторов матриц парных сравнений использовать первый из предложенных в Приложении А методов.
ТЕКСТ ПРОГРАММЫ
#include <iostream>
#include <vector>
const int N=4;
using namespace std;
float * determine(float A[N][N], float *W1);
float determine2(float A[N][N], float *W1);
int main()
{
//Хар-ки:
float A1[N][N] = {{1, 1/4, 1/3, 7}, //"Фундаментальные знания
{4, 1, 5, 1/2}, //"Соответствие современному уровню развития науки
{3, 1/5, 1, 8}, //"Возможность использования в профессиональной деятельности
{1/7, 2, 1/8, 1}}; //"Cимпатии к преподавателю
//Решения:
float A21[4][4]={{1, 4, 1/5, 7}, //теория принятия решений
{1/4, 1, 3, 6}, //теория алгоритмов
{5, 1/3, 1, 1/2}, //теория вероятностей
{1/7, 1/6, 2, 1}}; //математическая статистика
float A22[4][4]={{1, 6, 7, 1/3},
{1/6, 1, 5, 9},
{1/7, 1/5, 1, 8},
{3, 1/9, 1/8, 1}};
float A23[4][4]={{1, 1, 1, 1},
{1, 1, 1, 1},
{1, 1, 1, 1},
{1, 1, 1, 1}};
float A24[4][4]={{1, 1/3, 1/2, 4},
{3, 1, 3, 1/5},
{2, 1/3, 1, 6},
{1/4, 5, 1/6, 1}};
float *W1 = new float[N];
determine(A1, W1);
cout<<"Приоритеты характеристик :"<<endl;
cout<<"Фундаментальные знания : "<<W1[0]<<endl;
cout<<"Соответствие современному уровню развития науки : "<<W1[1]<<endl;
cout<<"Возможность использования в профессиональной деятельности : "<<W1[2]<<endl;
cout<<"Cимпатии к преподавателю : "<<W1[3]<<endl;
determine2(A1,W1);
cout<<"-----------------------
float *W21=new float[N];
determine(A21, W21);
cout<<"Степень эффективности дисциплин для характеристики \"Фундаментальные знания\" "<<endl;
cout<<"Теория принятий решений : "<<W21[0]<<endl;
cout<<"Теория алгоритмов : "<<W21[1]<<endl;
cout<<"Теория вероятностей : "<<W21[2]<<endl;
cout<<"Математическая статистика : "<<W21[3]<<endl;
determine2(A21, W21);
cout<<"-----------------------
float *W22=new float[N];
determine(A22, W22);
cout<<"Степень эффективности дисциплин для характеристики \"Соответствие современному уровню развития науки :\" "<<endl;
cout<<"Теория принятий решений : "<<W22[0]<<endl;
cout<<"Теория алгоритмов : "<<W22[1]<<endl;
cout<<"Теория вероятностей : "<<W22[2]<<endl;
cout<<"Математическая статистика : "<<W22[3]<<endl;
determine2(A21, W22);
cout<<"-----------------------
float *W23=new float[N];
determine(A23, W23);
cout<<"Степень эффективности дисциплин для характеристики \"Возможность использования в профессиональной деятельности :\" "<<endl;
cout<<"Теория принятий решений : "<<W23[0]<<endl;
cout<<"Теория алгоритмов : "<<W23[1]<<endl;
cout<<"Теория вероятностей : "<<W23[2]<<endl;
cout<<"Математическая статистика : "<<W23[3]<<endl;
determine2(A23, W23);
cout<<"-----------------------
float *W24=new float[N];
determine(A24, W24);
cout<<"Степень эффективности дисциплин для характеристики \"Cимпатии к преподавателю:\" "<<endl;
cout<<"Теория принятий решений : "<<W24[0]<<endl;
cout<<"Теория алгоритмов : "<<W24[1]<<endl;
cout<<"Теория вероятностей : "<<W24[2]<<endl;
cout<<"Математическая статистика : "<<W24[3]<<endl;
determine2(A24, W24);
float D[N]={0};//вектор общей характеристики решения
for(int i=0; i<N; ++i){
D[i]+=W1[0]*W21[i];
D[i]+=W1[1]*W22[i];
D[i]+=W1[2]*W23[i];
D[i]+=W1[3]*W24[i];
cout<<"Общая хар-ка решения №"<<i<<" : "<<D[i]<<endl;
}
float max=1;
for(int i=1; i<N; ++i){
if(D[i]>max)
max=i+1;
}
cout<<"=> Наиболее предпочтительным является решение №"<<max;
return 0;
}
float* determine(float A[N][N], float* W1){
float sum=0;
for(int i=0; i<N; ++i)
for(int j=0; j<N; ++j)
sum+=A[i][j];
for(int i=0; i<N; ++i){
for(int j=0; j<N; ++j){
W1[i]+=A[i][j];
}
W1[i]/=sum;
}
return W1;
}
float determine2(float A[N][N], float* W1){
float W2[N]={0};
//перемножение матриц
for (int i=0; i<N; i++)
for (int k=0;k<N; k++)
W2[i]+=A[i][k]*W1[k];
float W3[N]={0};
float Y_max=0;
for(int i=0; i<N; ++i){
W3[i]=W2[i]/W1[i];
Y_max+=W3[i];
}
Y_max/=N;
cout<<"Собственное значение матрицы : "<<Y_max<<endl;
float index=(Y_max-N)/3;
cout<<"Индекс согласованности матрицы : "<<index<<endl;
return index;
}
РЕЗУЛЬТАТЫ ВЫПОЛНЕНИЯ ПРОГРАММЫ
Рисунок 1 – Результат выполнения программы
ВЫВОДЫ
В ходе выполнения данной лабораторной работы было исследовано применение аппарата метода анализа иерархий при принятии решений по выбору альтернатив. В результате была разработана программа, реализующая определение наиболее предпочтительного решения, используя метод анализа иерархий.