Введём условное обозначение для компактности записи:
Петли первого порядка:
Петель второго, третьего и т.д. порядков граф не содержит.
Тогда, уравнение Мейсона имеет вид:
И эквивалентная W-функция равняется:
Вычисление искомых значений Вычислим математическое ожидание и дисперсию:
Поскольку то , откуда следует, что
Вычисляя первую и вторую производные по s функции и, полагая s=0, находим математическое ожидание:
и дисперсию:
.
Вероятность выхода в завершающий узел графа:
.
Для использования метода аддитивной свертки необходимо выполнить нормировку критериев, с тем чтобы сделать их значения соизмеримыми, а единицы измерения – безразмерными. Нормировка производится делением функции критерия на модуль её минимума или максимума:
Программа для среды Matlab:
clear all;
close all;
clc;
format long g; syms s; P1 = 0.5; M1 = 7;
P2 = 0.5; M2 = 12;
P3 = 1; M3 = 19;
P4 = 0.6; M4 = 40;
P5 = 0.4; M5 = 28;
P6 = 0.3; M6 = 17;
P7 = 0.7; M7 = 11;
P8 = 0.2; M8 = 43;
P9 = 0.8; M9 = 19; % W-functions
W12 = P1*(exp(s*0.4*M1) - exp(s*1.6*M1))/((0.4-1.6)*M1*s);
W13 = P2*(exp(s*0.4*M2) - exp(s*1.6*M2))/((0.4-1.6)*M2*s);
W24 = P3*(exp(s*0.4*M3) - exp(s*1.6*M3))/((0.4-1.6)*M3*s);
W31 = P4*(exp(s*0.4*M4) - exp(s*1.6*M4))/((0.4-1.6)*M4*s);
W35 = P5*(exp(s*0.4*M5) - exp(s*1.6*M5))/((0.4-1.6)*M5*s);
W43 = P6*(exp(s*0.4*M6) - exp(s*1.6*M6))/((0.4-1.6)*M6*s);
W45 = P7*(exp(s*0.4*M7) - exp(s*1.6*M7))/((0.4-1.6)*M7*s);
W51 = P8*(exp(s*0.4*M8) - exp(s*1.6*M8))/((0.4-1.6)*M8*s);
W56 = P9*(exp(s*0.4*M9) - exp(s*1.6*M9))/((0.4-1.6)*M9*s); % We(s)
We = (W13*W35*W56 + W12*W24*W45*W56 + W12*W24*W43*W35*W56)/...
(1 - W13*W31 - W13*W35*W51 - W12*W24*W43*W31 -...
W12*W24*W43*W35*W51 - W12*W24*W45*W51);
% We = simplify(We); We0 = limit(We, 's', 0) % Me(s)
Me = We / We0 % me1
me1 = diff(Me, 's', 1);
me1 = limit(me1, 's', 0);
fprintf('me1 = %.3f\n', double(me1)); % me2
me2 = diff(Me, 's', 2);
me2 = limit(me2, 's', 0);
fprintf('me2 = %.3f\n', double(me2)); % D
D = - me1^2 + me2;
fprintf('D = %.3f\n', double(D));
| Результаты выполнения:
We0 =1
Me = ((125*(exp((24*s)/5)/2 - exp((96*s)/5)/2)*((4*exp((38*s)/5))/5 - (4*exp((152*s)/5))/5)*((2*exp((56*s)/5))/5 - (2*exp((224*s)/5))/5))/(1378944*s^3) - (625*(exp((38*s)/5) - exp((152*s)/5))*(exp((14*s)/5)/2 - exp((56*s)/5)/2)*((7*exp((22*s)/5))/10 - (7*exp((88*s)/5))/10)*((4*exp((38*s)/5))/5 - (4*exp((152*s)/5))/5))/(36024912*s^4) + (3125*(exp((38*s)/5) - exp((152*s)/5))*(exp((14*s)/5)/2 - exp((56*s)/5)/2)*((3*exp((34*s)/5))/10 - (3*exp((136*s)/5))/10)*((4*exp((38*s)/5))/5 - (4*exp((152*s)/5))/5)*((2*exp((56*s)/5))/5 - (2*exp((224*s)/5))/5))/(9353377152*s^5))/((5*((3*exp(16*s))/5 - (3*exp(64*s))/5)*(exp((24*s)/5)/2 - exp((96*s)/5)/2))/(3456*s^2) - (125*(exp((24*s)/5)/2 - exp((96*s)/5)/2)*((2*exp((56*s)/5))/5 - (2*exp((224*s)/5))/5)*(exp((86*s)/5)/5 - exp((344*s)/5)/5))/(3120768*s^3) + (125*(exp((38*s)/5) - exp((152*s)/5))*(exp((14*s)/5)/2 - exp((56*s)/5)/2)*((3*exp(16*s))/5 - (3*exp(64*s))/5)*((3*exp((34*s)/5))/10 - (3*exp((136*s)/5))/10))/(23442048*s^4) + (625*(exp((38*s)/5) - exp((152*\\\r\ns)/5))*(exp((14*s)/5)/2 - exp((56*s)/5)/2)*((7*exp((22*s)/5))/10 - (7*exp((88*s)/5))/10)*(exp((86*s)/5)/5 - exp((344*s)/5)/5))/(81530064*s^4) - (3125*(exp((38*s)/5) - exp((152*s)/5))*(exp((14*s)/5)/2 - exp((56*s)/5)/2)*((3*exp((34*s)/5))/10 - (3*exp((136*s)/5))/10)*((2*exp((56*s)/5))/5 - (2*exp((224*s)/5))/5)*(exp((86*s)/5)/5 - exp((344*s)/5)/5))/(21168169344*s^5) - 1)
me1 = 128.684
me2 = 26456.858
D = 9897.176
| Методика анализа потокового графа Для метода используем теорему 3, выводом которой является:
Разработаем программу для MATLAB:
clear all;
close all;
clc;
format long g; syms s;
syms W61; P1 = 0.5; M1 = 7;
P2 = 0.5; M2 = 12;
P3 = 1; M3 = 19;
P4 = 0.6; M4 = 40;
P5 = 0.4; M5 = 28;
P6 = 0.3; M6 = 17;
P7 = 0.7; M7 = 11;
P8 = 0.2; M8 = 43;
P9 = 0.8; M9 = 19; % W-functions
W12 = P1*(exp(s*0.4*M1) - exp(s*1.6*M1))/((0.4-1.6)*M1*s);
W13 = P2*(exp(s*0.4*M2) - exp(s*1.6*M2))/((0.4-1.6)*M2*s);
W24 = P3*(exp(s*0.4*M3) - exp(s*1.6*M3))/((0.4-1.6)*M3*s);
W31 = P4*(exp(s*0.4*M4) - exp(s*1.6*M4))/((0.4-1.6)*M4*s);
W35 = P5*(exp(s*0.4*M5) - exp(s*1.6*M5))/((0.4-1.6)*M5*s);
W43 = P6*(exp(s*0.4*M6) - exp(s*1.6*M6))/((0.4-1.6)*M6*s);
W45 = P7*(exp(s*0.4*M7) - exp(s*1.6*M7))/((0.4-1.6)*M7*s);
W51 = P8*(exp(s*0.4*M8) - exp(s*1.6*M8))/((0.4-1.6)*M8*s);
W56 = P9*(exp(s*0.4*M9) - exp(s*1.6*M9))/((0.4-1.6)*M9*s); Q = [0 W12 W13 0 0 0;
0 0 0 W24 0 0;
W31 0 0 0 W35 0;
0 0 W43 0 W45 0;
W51 0 0 0 0 W56;
0 0 0 0 0 0]; % A-matrix
A = eye(size(Q, 1)) - transpose(Q);
fprintf('Матрица А\n');
disp(A); % MGF
A_inv = inv(A);
M61 = A_inv(6,1);
disp(M61); % Me(s)
Me = M61; % me1
me1 = diff(Me, 's', 1);
me1 = limit(me1, 's', 0);
fprintf('me1 = %.3f\n', double(me1)); % me2
me2 = diff(Me, 's', 2);
me2 = limit(me2, 's', 0);
fprintf('me2 = %.3f\n', double(me2)); % D
D = - me1^2 + me2;
fprintf('D = %.3f\n', double(D));
| В результате её выполнения получим:
(1720*(exp((38*s)/5) - exp((152*s)/5))*(55*exp(62*s) + 55*exp(80*s) - 55*exp((142*s)/5) + 55*exp((184*s)/5) + 55*exp((244*s)/5) + 55*exp((256*s)/5) - 55*exp((286*s)/5) - 55*exp((298*s)/5) - 55*exp((352*s)/5) - 55*exp((358*s)/5) - 55*exp((412*s)/5) - 55*exp((424*s)/5) + 55*exp((454*s)/5) + 55*exp((466*s)/5) + 55*exp((526*s)/5) - 55*exp((568*s)/5) - 16660*s*exp(28*s) + 16660*s*exp(46*s) + 16660*s*exp((74*s)/5) - 16660*s*exp((116*s)/5) + 16660*s*exp((182*s)/5) - 16660*s*exp((188*s)/5) + 16660*s*exp((254*s)/5) - 16660*s*exp((296*s)/5) - 49742*s^2*exp(16*s) - 49742*s^2*exp(64*s) + 49742*s^2*exp((152*s)/5) + 49742*s^2*exp((248*s)/5)))/(19*(550*exp(102*s) - 550*exp(66*s) - 550*exp(54*s) - 550*exp(108*s) + 550*exp(120*s) - 550*exp(126*s) + 550*exp(162*s) + 550*exp(174*s) + 550*exp((228*s)/5) - 550*exp((342*s)/5) + 550*exp((372*s)/5) + 550*exp((384*s)/5) - 550*exp((396*s)/5) + 550*exp((438*s)/5) + 550*exp((444*s)/5) - 1100*exp((486*s)/5) + 550*exp((498*s)/5) + 550*exp((528*s)/5) - 550*exp((552\\\r\n*s)/5) + 550*exp((588*s)/5) - 550*exp((612*s)/5) - 550*exp((642*s)/5) + 1100*exp((654*s)/5) - 550*exp((696*s)/5) - 550*exp((702*s)/5) + 550*exp((744*s)/5) - 550*exp((756*s)/5) - 550*exp((768*s)/5) + 550*exp((798*s)/5) - 550*exp((912*s)/5) - 166600*s*exp(32*s) + 148995*s*exp(56*s) - 148995*s*exp(62*s) - 166600*s*exp(68*s) - 166600*s*exp(92*s) - 148995*s*exp(104*s) + 148995*s*exp(110*s) - 166600*s*exp(128*s) - 148995*s*exp((166*s)/5) + 166600*s*exp((202*s)/5) + 148995*s*exp((208*s)/5) + 166600*s*exp((226*s)/5) - 17605*s*exp((268*s)/5) + 166600*s*exp((274*s)/5) - 166600*s*exp((316*s)/5) - 148995*s*exp((322*s)/5) + 17605*s*exp((382*s)/5) + 148995*s*exp((406*s)/5) + 166600*s*exp((418*s)/5) + 148995*s*exp((424*s)/5) - 148995*s*exp((448*s)/5) - 166600*s*exp((484*s)/5) - 148995*s*exp((508*s)/5) + 166600*s*exp((526*s)/5) - 166600*s*exp((532*s)/5) + 148995*s*exp((562*s)/5) + 166600*s*exp((574*s)/5) + 166600*s*exp((598*s)/5) + 148995*s*exp((622*s)/5) - 148995*s*exp((664*s)/5) - 134751078*s^3*exp\\\r\n((104*s)/5) + 497420*s^2*exp((166*s)/5) + 134751078*s^3*exp((176*s)/5) - 497420*s^2*exp((238*s)/5) - 497420*s^2*exp((334*s)/5) + 134751078*s^3*exp((344*s)/5) + 497420*s^2*exp((406*s)/5) - 134751078*s^3*exp((416*s)/5) - 497420*s^2*exp((424*s)/5) + 497420*s^2*exp((496*s)/5) + 497420*s^2*exp((592*s)/5) - 497420*s^2*exp((664*s)/5) + 310466483712*s^5))
me1 = 128.684
me2 = 26456.858
D = 9897.176
| И матрица А:
[ 1, 0, ((3*exp(16*s))/5 - (3*exp(64*s))/5)/(48*s), 0, (5*(exp((86*s)/5)/5 - exp((344*s)/5)/5))/(258*s), 0]
[ (5*(exp((14*s)/5)/2 - exp((56*s)/5)/2))/(42*s), 1, 0, 0, 0, 0]
[ (5*(exp((24*s)/5)/2 - exp((96*s)/5)/2))/(72*s), 0, 1, (5*((3*exp((34*s)/5))/10 - (3*exp((136*s)/5))/10))/(102*s), 0, 0]
[ 0, (5*(exp((38*s)/5) - exp((152*s)/5)))/(114*s), 0, 1, 0, 0]
[ 0, 0, (5*((2*exp((56*s)/5))/5 - (2*exp((224*s)/5))/5))/(168*s), (5*((7*exp((22*s)/5))/10 - (7*exp((88*s)/5))/10))/(66*s), 1, 0]
[ 0, 0, 0, 0, (5*((4*exp((38*s)/5))/5 - (4*exp((152*s)/5))/5))/(114*s), 1]
| Результаты решения задачи двумя разными способами совпадают. В обоих способах не получилось рассчитать моменты с порядками больше второго, из-за высокой вычислительной сложности для оборудования.
Вывод
В этой работе был изучен метод GERT для обработки вероятностных графов. При помощи известных значений вероятности переходов, математического ожидания и дисперсии каждой дуги можно рассчитать W-функции, которые используются в формуле Мейсона. При помощи формулы Мейсона можно рассчитать математическое ожидание и дисперсию.
Несмотря на то, что пути решения показали идентичный результат, метод анализа потокового графа предпочтительней, так как выполняется за более короткое время. |