Автор работы: Пользователь скрыл имя, 11 Октября 2017 в 22:36, контрольная работа
Цель: Найти оптимальное решение, обоснованное с помощью метода анализа иерархий.
Задание:
2.1. Выбрать согласно варианту задачу выбора для лабораторной работы (например, выбор города проживания). Задача должна включать не менее 5 возможных альтернатив и 6-9 критериев.
2.2. Изучить ситуацию выбора для конкретного варианта. Согласовать задачу с преподавателем.
2.3. Составить программу в системе Scilab. Предусмотреть удобный интерфейс программы. Произвести расчёты.
2.4. Произвести выбор альтернативы.
2.5. Сделать выводы по работе.
Теперь будем рассчитывать индексы «согласия» и «несогласия». Для этого сначала необходимо сравнить оценки в баллах при различных конфигурациях серверов. Превосходящие факторы обозначим «+», равноценные « = », остальные « - ».
Таблица 2 - Сравнение конфигураций почтовых серверов
Факторы конкурентоспособности | |||||||
11 |
22 |
3 |
4 |
5 |
6 | ||
AB |
= |
+ |
+ |
= |
- |
+ | |
BA |
= |
- |
- |
= |
+ |
- | |
AC |
+ |
+ |
+ |
+ |
+ |
+ | |
CA |
- |
- |
- |
- |
- |
- | |
AD |
= |
= |
+ |
= |
- |
= | |
DA |
= |
= |
- |
= |
+ |
= | |
AF |
= |
+ |
- |
+ |
+ |
+ | |
FA |
= |
- |
+ |
- |
- |
- | |
BC |
+ |
+ |
= |
+ |
+ |
+ | |
CB |
- |
- |
= |
- |
- |
- | |
BD |
= |
- |
+ |
= |
+ |
- | |
DB |
= |
+ |
- |
= |
- |
+ | |
BF |
= |
= |
- |
+ |
+ |
= | |
FB |
= |
= |
+ |
- |
- |
= | |
CD |
- |
- |
+ |
- |
- |
- | |
DC |
+ |
+ |
- |
+ |
+ |
+ | |
CF |
- |
- |
- |
- |
+ |
- | |
FC |
+ |
+ |
+ |
+ |
- |
+ | |
DF |
= |
+ |
- |
+ |
+ |
+ | |
FD |
= |
- |
+ |
- |
- |
- |
Исходя из таблицы 2, мы подставляем в формулы соответствующие весовые параметры из таблицы 1, таким образом, рассчитывая индексы «согласия» и «несогласия».
Вычисляем важности подмножеств по которым X «предпочтительнее» Y, «равноценно» ему, либо Y «предпочтительнее» X (см. таблицу 3).
Таблица 3 - Важность подмножеств Р+(x, у), Р =(x, у), Р‾ (х, у)
A |
B |
C |
D |
E | |
A |
* |
43 |
94 |
20 |
61 |
Р= |
* |
33 |
0 |
56 |
13 |
Р‾ |
* |
18 |
0 |
18 |
20 |
94 |
94 |
94 |
94 | ||
B Р+ |
18 |
* |
74 |
38 |
38 |
Р= |
33 |
* |
20 |
33 |
36 |
Р‾ |
43 |
* |
0 |
23 |
20 |
94 |
94 |
94 |
94 | ||
C Р+ |
0 |
0 |
* |
20 |
18 |
Р= |
0 |
20 |
* |
0 |
0 |
Р‾ |
94 |
74 |
* |
74 |
76 |
94 |
94 | ||||
D Р+ |
18 |
23 |
74 |
* |
61 |
Р= |
56 |
33 |
0 |
* |
13 |
Р‾ |
20 |
38 |
20 |
* |
20 |
94 | |||||
E P+ |
20 |
20 |
76 |
20 |
* |
Р= |
13 |
36 |
0 |
13 |
* |
Р‾ |
61 |
38 |
18 |
61 |
* |
Теперь строим матрицы индексов «согласия» и «несогласия. При построении матрицы индексов «несогласия» выбирают максимальные показатели.
Таблица 4 - Матрица несогласия
A |
B |
C |
D |
E | |
A |
- |
0,30 |
0,75 |
0,15 |
0,35 |
B |
0,45 |
- |
0,00 |
0,45 |
0,05 |
C |
0,75 |
0,35 |
- |
0,75 |
0,05 |
D |
0,35 |
0,2 |
0,2 |
- |
0,7 |
E |
0,65 |
0,3 |
0,05 |
0,65 |
- |
Таблица 5 - Матрица согласия
A |
B |
C |
D |
E | |
A |
- |
2,38 |
94 |
1,11 |
3,05 |
B |
0,418 |
- |
74 |
1,65 |
1,9 |
C |
0 |
0 |
- |
0,270 |
0,236 |
D |
0,9 |
0,605 |
3,7 |
- |
3,05 |
E |
0,327 |
0,526 |
4,222 |
0,327 |
- |
В соответствии с правилами об индексах согласия и несогласия – в качестве пороговых значений зададим c2 = 0,5 и d2 = 0,4 и таким образом найдем значения превосходства одного почтового сервера над другим.
8 - Таблица превосходства
A |
B |
C |
D |
E | |
A |
– |
+ |
– |
+ |
+ |
B |
– |
– |
+ |
– |
+ |
C |
– |
– |
– |
– |
– |
D |
+ |
– |
+ |
– |
– |
E |
– |
– |
+ |
– |
– |
Таким образом, на основании таблиц превосходства почтовых серверов мы выявили наиболее конкурентоспособный почтовый сервер, по максимальному количеству плюсов при попарном сравнении серверов.
Диаграмма:
В результате получаем, что хорошим почтовым сервером является CommuniGate Pro. Он хоть и дорог по стоимости, однако сильно защищен и многофункционален.
Код программы:
funcprot(0)
a = [19, 20, 13, 20, 14, 17];
b = [19, 11, 10, 20, 20, 10];
c = [14, 5, 10, 15, 13, 7];
d = [15, 20, 6, 20, 17, 17];
e = [19, 11, 16, 18, 8, 10];
MainMtx = [a; b; c; d; e];
mg = [13; 7; 20; 20; 18; 16];
maxim = 0;
factorss = [];
function [factorss]=fun1(obj1, obj2)
for i = 1:length(obj1)
if obj1(i) == obj2(i) then factorss(:,i) = 0
elseif obj1(i) > obj2(i) then factorss(:,i) = 1
elseif obj1(i) < obj2(i) then factorss(:,i) = -1
end
end
endfunction
function [maxim]=getDisagreement(obj1, obj2)
for i =1:length(MainMtx)
diffe = obj1-obj2;
if diffe < 0 then kek = abs(diffe/20)
else kek = diffe/20
end
maxim = max(kek)
end
endfunction
DsgrMatrix = [];
for i =1:5
for j = 1:5
if i ~= j then
DsgrMatrix(i,j) = getDisagreement(MainMtx(j,:),
else DsgrMatrix(i,j) = -1
end
end
end
suma = 0;
function [suma]=getPlus(obj1, obj2)
for i =1:length(obj1)
if (obj1(i) - obj2(i)) > 0 then
suma = suma + mg(i);
end
end
endfunction
function [suma]=getDiffer(obj1, obj2)
for i =1:length(obj1)
if (obj1(i) - obj2(i)) < 0 then
suma = suma + mg(i);
end
end
endfunction
WiPlus = [];
for i = 1:5
for j = 1:5
if i ~= j then
WiPlus(i, j) = getPlus(MainMtx(i,:), MainMtx(j,:));
else WiPlus(i, j) = -10
end
end
end
WiMinus = [];
for i = 1:5
for j = 1:5
if i ~= j then
WiMinus(i, j) = getDiffer(MainMtx(i,:), MainMtx(j,:));
else WiMinus(i, j) = -10
end
end
end
ConsentMatrix = [];
for i = 1:5
for j = 1:5
if i ~= j then
if WiMinus(i, j) ~= 0
ConsentMatrix(i, j) = WiPlus(i,j)/WiMinus(i, j);
else ConsentMatrix(i, j) = WiPlus(i,j);
end
else ConsentMatrix(i, j) = -10
end
end
end
c2 = 0.5;
d2 = 0.4;
prevoshodTable = [];
for i = 1:5
for j = 1:5
if i ~= j then
if ConsentMatrix(i, j) >= c2 & DsgrMatrix(i,j) <= d2 then
prevoshodTable(i, j) = "+"
else prevoshodTable(i, j) = "-"
end
else prevoshodTable(i, j) = "-"
end
end
end
for i = 1:5
MainMtx(i,7) = mg(i);
end
count = [0 0 0 0 0];
for i = 1:5
for j = 1:5
if prevoshodTable(i, j) == "+" then
count(i) = count(i) + 1;
end
end
end
// ПОСТРОЕНИЕ ГРАФИЧЕСКОГО ИНТЕРФЕЙСА
binAns = [0 0 0 0 0];
if max(count) == count(1) then strRes = "iRedMail"; binAns(1) = 1;
elseif max(count) == count(2) then strRes = "IndiMail"; binAns(2) = 1;
elseif max(count) == count(3) then strRes = "Rumble"; binAns(3) = 1;
elseif max(count) == count(4) then strRes = "Axigen"; binAns(4) = 1;
elseif max(count) == count(5) then strRes = "CommuniGate"; binAns(5) = 1;
end
f=figure(); // Создание графического объекта
// Размер окна
set(f,'position',[0,0,700,400]
// Заголовок
set(f,'figure_name','
// Кнопка результата
uicontrol('Style','text','
button1 = uicontrol('style','pushbutton'
button2 = uicontrol('style','pushbutton'
button3 = uicontrol('style','pushbutton'
button4 = uicontrol('style','pushbutton'
button5 = uicontrol('style','pushbutton'
function r=showRes()
scf(0);
pie(count,binAns,["iRedMail","
Информация о работе Метод анализа иерархий для принятия многокритериальных решений