Метод аналізу ієрархій
Побудова матриць попарних порівнянь альтернатив за критеріями та аспектів відносно втрат від придбання програмного забезпечення. Розробка рекомендацій щодо обрання варіанту реалізації проекту системи консолідованої інформації по методу аналізу ієрархій.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | украинский |
Дата добавления | 20.12.2011 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МІНІСТЕРСТВО ОСВІТИ, НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Кафедра інформаційних систем та мереж
Розрахункова робота з курсу:
"Технологія підтримки процесів прийняття рішень"
на тему: "Метод аналізу ієрархій"
Виконав: ІСМ-11м Коринкевич Р.Б.
Прийняв:
доц. каф. ІСМ Верес О.М.
ЛЬВІВ 2011
Задача
В процесі проектування системи консолідованої інформації виникла необхідність обрання варіанту проекту її реалізації. Були конкретизовані альтернативні варіанти, критерії оцінювання їх якості, а також основні аспекти впровадження та використання системи консолідованої інформації. Відповідно до цього були побудовані дві ієрархії: вигоди від закупівлі програмного забезпечення; втрати (витрати), зумовлені придбанням та експлуатацією придбаного програмного забезпечення. Крім того, в результаті опитування експертів виявлені відносні переваги у вигляді матриць попарних порівнянь. Необхідно, використовуючи метод аналізу ієрархій (МАІ), розробити рекомендації щодо обрання того чи іншого варіанту реалізації проекту СКІ.
Матриці попарних порівнянь альтернатив за критеріями
Матриці попарних порівнянь критеріїв за аспектами
Матриця попарних порівнянь аспектів (факторів) відносно вигод від придбання ПЗ
Матриці попарних порівнянь альтернатив за критеріями
Матриці попарних порівнянь критеріїв за аспектами
Матриця попарних порівнянь аспектів (факторів) відносно втрат від придбання ПЗ
матриця порівняння альтернатива консолідований ієрархія
Розв'язання
Обчислимо відповідні характеристики для множин таблиць попарних порівнянь - оцінювання альтернатив. Тобто визначимо середнє геометричне рядків матриці попарних порівнянь А з подальшою нормалізацією всіх складових отриманого вектора за формулою:
Для ієрархії від вигод закупівлі програмного забезпечення
Рис.1. Вектори пріоритетів для альтернатив за критеріями для матриць вигод
Для ієрархії від втрат закупівлі програмного забезпечення
Рис.2. Вектори пріоритетів для альтернатив за критеріями для матриць втрат
Обчислимо відповідні характеристики для множин таблиць попарних порівнянь - оцінювання аспектів. Тобто визначимо середнє геометричне рядків матриці попарних порівнянь А з подальшою нормалізацією всіх складових отриманого вектора:
Для ієрархії від вигод закупівлі програмного забезпечення
Вектори пріоритетів для критеріїв за аспектами для матриць вигод
Для ієрархії від втрат закупівлі програмного забезпечення
Вектори пріоритетів для критеріїв за аспектами для матриць вигод
Обчислимо відповідні характеристики для множин таблиць попарних порівнянь - оцінювання аспектів (факторів). Тобто визначимо середнє геометричне рядків матриці попарних порівнянь А з подальшою нормалізацією всіх складових отриманого вектора:
Вектор пріоритетів |
|||||
1 |
4 |
1 |
0,4974 |
||
1/4 |
1 |
1/3 |
0,0718 |
||
1 |
3 |
1 |
0,4308 |
Вектори пріоритетів для критеріїв за аспектами відносно вигод від придбання ПЗ
Вектори пріоритетів для критеріїв за аспектами відносно втрат від придбання ПЗ
Ми отримали результуючі вектори щодо ієрархії, як по ієрархії вигод, так і по ієрархії втрат, тобто вектори глобальних пріоритетів альтернатив з точки зору глобальної мети. Тепер поділимо отримані вектори один на інший (вектор вигод на вектор втрат) та пронормуємо результат.
Пронормуємо вектор, для цього використаємо формулу:
0,5370 |
|
0,2273 |
|
0,1391 |
|
0,0966 |
В результаті отримаємо такі рекомендації щодо обрання того чи іншого варіанту реалізації проекту:
Альтернатива |
Значення вектора |
Варіант вибору |
|
В1 |
0,5370 |
1 |
|
В2 |
0,2273 |
2 |
|
В4 |
0,1391 |
3 |
|
В3 |
0,0966 |
4 |
Текст програми
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
void read_q(float ***q, int n, FILE *fp, int m)
{
int i, j, k;
char buffer[100], *ptr;
for (i = 0 ; i < n ; i++)
{
for (j = 0 ; j < m ; j++)
{
fgets(buffer, 99, fp);
ptr = buffer;
for (k = 0 ; k < m ; k++)
{
sscanf(ptr, "%f", &q[i][j][k]);
ptr = strchr(ptr, 0x09);
ptr++;
}
}
fgets(buffer, 99, fp);
}
}
void print_q(float ***q, int n, FILE *fp, int m)
{
int i, j, k;
for (i = 0 ; i < n ; i++)
{
for (j = 0 ; j < m ; j++)
{
for (k = 0 ; k < m ; k++)
{
printf("%0.4f ", q[i][j][k]);
}
printf("\n");
}
printf("\n");
}
}
void get_num(float **q, int n, int m, float sqrt_num)
{
int i, j;
double res = 0, *pot_res;
pot_res = (double *) malloc(m * sizeof(float));
for (i = 0 ; i < m ; i++)
{
pot_res[i] = 1;
for (j = 0 ; j < m ; j++)
{
pot_res[i] *= q[i][j];
}
pot_res[i] = pow(pot_res[i], sqrt_num);
res += pot_res[i];
}
for (i = 0 ; i < m ; i++)
{
q[i][m] = pot_res[i] / res;
printf("%0.4f ", q[i][m]);
}
printf("\n");
}
void get_aspects(float **res_matrix, float ***q, float **q_res, int m, int a, int b, int x)
{
int i, j, k = 0, z;
for (j = 0 ; j < m ; j++)
{
for (res_matrix[j][x] = 0, z = 0 ; z < m-1 ; z++)
{
res_matrix[j][x] += q[z+a-1][j][m] * q_res[z][m-1];
}
printf("%0.4f ", res_matrix[j][x]);
}
printf("\n");
}
float *vygody_res(float **res_matrix, float **q, int m)
{
int i, j;
float *res;
res = (float *) calloc(m, sizeof(float));
for (i = 0 ; i < m ; i++)
{
for (j = 0 ; j < m-1 ; j++)
{
res[i] += res_matrix[i][j] * q[j][m-1];
}
printf("%0.4f ", res[i]);
}
printf("\n");
return res;
}
void normuvanya(float *res, int m)
{
int i;
float res_tmp = 0;
printf("\nNormovanuy result: ");
for (i = 0 ; i < m ; i++)
{
res_tmp += res[i];
}
for (i = 0 ; i < m ; i++)
{
res[i] /= res_tmp;
printf("%f ", res[i]);
}
}
int main(void)
{
float ***q1, ***q2, ***q3, sqrt_num, ***w1, ***w2, ***w3;
float **res_matrix1, **res_matrix2, *res1, *res2;
FILE *fp;
int n, i, j, k, z, a, b;
const int m = 4;
char buffer[20];
if ( (fp = fopen("D:/1.txt", "r")) == NULL)
{
printf("error opening file\n");
return 0;
}
fgets(buffer, 99, fp);
sscanf(buffer, "%u", &n);
q1 = (float ***) malloc(n * sizeof(float **));
w1 = (float ***) malloc(n * sizeof(float **));
for (i = 0 ; i < n ; i++)
{
q1[i] = (float **) malloc(m * sizeof(float *));
w1[i] = (float **) malloc(m * sizeof(float *));
for (j = 0 ; j < m ; j++)
{
q1[i][j] = (float *) malloc((m+1) * sizeof(float));
w1[i][j] = (float *) malloc((m+1) * sizeof(float));
}
}
printf("\nthird level q1...q%u: matrix\n", n);
read_q(q1, n, fp, m);
//print_q(q1, n, fp, m);
sqrt_num = (float) 1/m;
for (i = 0 ; i < n ; i++)
{
get_num(q1[i], n, m, sqrt_num);
}
fgets(buffer, 99, fp);
sscanf(buffer, "%u", &k);
q2 = (float ***) malloc(k * sizeof(float **));
w2 = (float ***) malloc(k * sizeof(float **));
for (i = 0 ; i < k ; i++)
{
q2[i] = (float **) malloc(m-1 * sizeof(float *));
w2[i] = (float **) malloc(m-1 * sizeof(float *));
for (j = 0 ; j < m-1 ; j++)
{
q2[i][j] = (float *) malloc(m * sizeof(float));
w2[i][j] = (float *) malloc(m * sizeof(float));
}
}
printf("\nsecond level q1...q%u: matrix\n", k);
read_q(q2, k, fp, m-1);
//print_q(q2, k, fp, m-1);
printf("\n Varianty q1..q3: ");
sqrt_num = (float) 1/(m-1);
for (i = 0 ; i < k ; i++)
{
get_num(q2[i], k, m-1, sqrt_num);
}
fgets(buffer, 99, fp);
sscanf(buffer, "%u", &z);
q3 = (float ***) malloc(z * sizeof(float **));
w3 = (float ***) malloc(z * sizeof(float **));
for (i = 0 ; i < z ; i++)
{
q3[i] = (float **) malloc(m-1 * sizeof(float *));
w3[i] = (float **) malloc(m-1 * sizeof(float *));
for (j = 0 ; j < m-1 ; j++)
{
q3[i][j] = (float *) malloc(m-1 * sizeof(float));
w3[i][j] = (float *) malloc(m-1 * sizeof(float));
}
}
printf("\nfirst level q1...q%u: matrix\n", z);
read_q(q3, z, fp, m-1);
//print_q(q3, z, fp, m-1);
sqrt_num = (float) 1/(m-2);
for (i = 0 ; i < z ; i++)
{
get_num(q3[i], z, m-1, sqrt_num);
}
res_matrix1 = (float **) malloc(m * sizeof(float *));
res_matrix2 = (float **) malloc(m * sizeof(float *));
for (j = 0 ; j < m ; j++)
{
res_matrix1[j] = (float *) malloc(m-1 * sizeof(float));
res_matrix2[j] = (float *) malloc(m-1 * sizeof(float));
}
printf("\n Aspekty q1..q3: ");
fgets(buffer, 99, fp);
for (i = 0 ; i < m-1 ; i++)
{
fgets(buffer, 99, fp);
sscanf(buffer, "%u %u", &a, &b);
get_aspects(res_matrix1, q1, q2[i], m, a, b, i);
}
printf("\n Vygodu q1..q3: ");
res1 = vygody_res(res_matrix1, q3[0], m);
sqrt_num = (float) 1/m;
printf("\nthird level w1...w%u: matrix\n", n);
read_q(w1, n, fp, m);
//print_q(w1, n, fp, m);
for (i = 0 ; i < n ; i++)
{
get_num(w1[i], n, m, sqrt_num);
}
printf("\nsecond level w1...w%u: matrix\n", k);
read_q(w2, k, fp, m-1);
//print_q(w2, k, fp, m-1);
sqrt_num = (float) 1/(m-1);
for (i = 0 ; i < k ; i++)
{
get_num(w2[i], k, m-1, sqrt_num);
}
w2[0][0][m-1] = 0.772; w2[0][1][m-1] = 0.2467; w2[0][2][m-1] = 0.6761;
w2[1][0][m-1] = 0.3793; w2[1][1][m-1] = 0.3313; w2[1][2][m-1] = 0.2894;
w2[2][0][m-1] = 0.88; w2[2][1][m-1] = 0.12;
printf("\nfirst level w1...w%u: matrix\n", z);
read_q(w3, z, fp, m-1);
//print_q(w3, z, fp, m-1);
printf("\n Varianty w1..w3: ");
sqrt_num = (float) 1/(m-2);
for (i = 0 ; i < z ; i++)
{
get_num(w3[i], z, m-1, sqrt_num);
}
printf("\n Aspekty w1..w3: ");
fgets(buffer, 99, fp);
for (i = 0 ; i < m-1 ; i++)
{
fgets(buffer, 99, fp);
sscanf(buffer, "%u %u", &a, &b);
get_aspects(res_matrix2, w1, w2[i], m, a, b, i);
}
printf("\n Vygodu w1..w3: ");
res2 = vygody_res(res_matrix2, w3[0], m);
printf("\nresult: ");
for (i = 0 ; i < m ; i++)
{
res1[i] = res1[i] / res2[i];
printf("%f ", res1[i]);
}
normuvanya(res1, m);
return 0;
}
Результати роботи програми
Висновок
В процесі виконання розрахункової роботи на основі конкретизованих альтернативних варіантів, критеріїв оцінювання їх якості, а також основних аспектів впровадження та використання системи консолідованої інформації, а також на основі матриць попарних порівнянь, за допомогою методу аналізу ієрархій (МАІ) було розроблено рекомендації щодо обрання того чи іншого варіанту реалізації проекту СКІ. На основі проведених розрахунків можна зробити висновки, що найкращим варіантом для впровадження системи консолідованої інформації буде Альтернатива В1, близькою до неї є Альтернатива В2. Найгіршим варіантом впровадження системи консолідованої інформації є Альтернатива В3.
Размещено на Allbest.ru
Подобные документы
Принцип роботи СТО. Аналіз існуючих теоретико-практичних розробок по створенню інформаційних систем. Модель аналізу виконання робіт з ремонту й обслуговування на СТО. Розробка автоматизованої системи обробки інформації, опис програмного забезпечення.
дипломная работа [1,3 M], добавлен 11.10.2013Етапи розробки проекту. Вимоги до апаратного і програмного забезпечення, до користувача. Специфікація та структура даних, які мають бути розміщеними в системі. Вигляд інтерфейсу системи програмного забезпечення. Розробка бази даних косметичного салону.
дипломная работа [1,8 M], добавлен 21.02.2015Аналіз системи збору первинної інформації та розробка структури керуючої ЕОМ АСУ ТП. Розробка апаратного забезпечення інформаційних каналів, структури програмного забезпечення. Алгоритми системного програмного забезпечення. Опис програмних модулів.
дипломная работа [1,9 M], добавлен 19.08.2012Проблеми процесу тестування програмного забезпечення. Розробка алгоритму автоматичної генерації тестів і тестового набору для ручного виконання. Побудова тестів для системи "Банкомат" і для баг-трекінгової системи, представленої графом із циклами.
дипломная работа [1,2 M], добавлен 26.02.2014Проблеми розробки компонентного програмного забезпечення автоматизованих систем управління. Сучасні компонентні технології обробки інформації. Аналіз вибраного середовища проектування програмного забезпечення: мова програмування PHP та Apache HTTP-сервер.
дипломная работа [2,8 M], добавлен 11.05.2012Тривимірна модель мобільного робота. Алгоритмізація моделі та її програмної реалізації з використанням бібліотек MFC та OpenGL. Розробка програмного забезпечення. Середовище розробки проекту Microsoft Visual Studio 2010. Керування рухами маніпулятора.
курсовая работа [462,9 K], добавлен 03.04.2014Аналіз формування податкової звітності. Розробка проекту інтерфейсу, інформаційної, статичної та динамічної моделей програмного забезпечення. Розрахунок економічної ефективності впровадження програмного забезпечення формування податкової звітності.
дипломная работа [3,5 M], добавлен 26.04.2012Класифікація та статистичний аналіз наслідків надзвичайних ситуацій. Розробка архітектури, інформаційного забезпечення, програмних засобів комп'ютерної автоматизованої системи аналізу наслідків природного і техногенного впливу на будинки та споруди.
дипломная работа [2,5 M], добавлен 02.10.2013Основні поняття щодо захисту програмного забезпечення. Класифікація засобів дослідження програмного коду: відладчики, дизасемблери, діскомпілятори, трасировщики та слідкуючі системи. Способи вбудовування захисних механізмів в програмне забезпечення.
курсовая работа [41,7 K], добавлен 14.11.2010Проблема порушення авторських прав в Інтернеті. Системи та сервіси пошуку плагіату. Захист електронних видань від плагіату в Інтернеті. Алгоритми аналізу, подання і порівняння текстової інформації. Вибір методу пошуку текстових документів з запозиченнями.
магистерская работа [1,0 M], добавлен 14.06.2013