Исследовать применения аппарата метода анализа иерархий при принятия решений по выбору альтернатив

Автор работы: Пользователь скрыл имя, 09 Декабря 2014 в 18:46, лабораторная работа

Краткое описание

3.1. Сформировать следующие матрицы:
а) парных сравнений влияния характеристик альтернатив (решений) на общую цель принятия решений (матрицу А1);
б) парных сравнений наличия рассматриваемых свойств (характеристик) у предлагаемых к анализу решений – матрицы (где , m – количество критериев (свойств, характеристик) рассматриваемых альтернатив);
3.2. Реализовать процедуру, которая используя заданный в варианте метод, определяет вектор собственных значений W каждой из матриц парных сравнений, вычисляет собственное значение матрицы и индекс согласованности (ИС) оценок в ней.

Прикрепленные файлы: 1 файл

lab4.docx

— 74.82 Кб (Скачать документ)

Министерство образования и науки Российской Федерации

Севастопольский государственный университет

 

 

 

Кафедра ИС

 

 

 

 

Отчет по лабораторной работе №4

ИССЛЕДОВАНИЕ ПРИМЕНЕНИЯ МЕТОДА АНАЛИЗА ИЕРАРХИЙ ДЛЯ РЕШЕНИЯ ЗАДАЧИ ВЫБОРА АЛЬТЕРНАТИВ

 

 

 

 

Выполнил

ст.гр. И-31д

Довженко М.И.

Проверил

Токарев А.И.

 

 

 

 

 

Севастополь

2014

ЦЕЛЬ РАБОТЫ

Исследовать применение аппарата метода анализа иерархий при принятии решений по выбору альтернатив.

ВАРИАНТЫ ЗАДАНИЯ

3.1. Сформировать следующие  матрицы:

а) парных сравнений влияния характеристик альтернатив (решений) на общую цель принятия решений (матрицу А1);

б) парных сравнений наличия рассматриваемых свойств (характеристик) у предлагаемых к анализу решений  – матрицы (где , m – количество критериев (свойств, характеристик) рассматриваемых альтернатив);

3.2. Реализовать процедуру, которая используя заданный в  варианте метод, определяет вектор  собственных значений  W каждой из матриц парных сравнений, вычисляет собственное значение матрицы и индекс согласованности (ИС) оценок в ней.

3.3. Проверить выполнение  условия согласованности оценок  в каждой из матриц парных  сравнений на каждом уровне. В  случае плохой согласованности  повторить шаги 1 и 2.

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<<"------------------------------------------------------------------------------"<<endl;

    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<<"------------------------------------------------------------------------------"<<endl;

    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<<"------------------------------------------------------------------------------"<<endl;

    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<<"------------------------------------------------------------------------------"<<endl;

    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 – Результат выполнения программы

 

ВЫВОДЫ

 

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


Информация о работе Исследовать применения аппарата метода анализа иерархий при принятия решений по выбору альтернатив