1. Написать программу оптимизации системы по параметрам, заданным преподавателем. Оптимизацию выполнить по критерию суммарных средних потерь при работе системы в единицу времени.
2. Построить график зависимости критерия оптимизации от варьируемых параметров.
Варьировать будем интенсивность обслуживания μ
function [mu,W]=SMO_optim(muMin,muMax,h);
% Многоканальная СМО с накопителем конечной емкости
% Написать программу оптимизации системы по параметрам, заданным
% преподавателем. Оптимизацию выполнить по критерию суммарных средних
% потерь при работе системы в единицу времени.
%!!!Варьировать будем mu от muMin=1 до muMax=20 с шагом h=1
% Исходные данные
l=8; % Интенсивность входящего потока заявок
R=5; % Емкость накопителя
M=6; % Число обслуживающих каналов
mu=muMin:h:muMax;% Интенсивность обслуживания заявки каналом
D = size(mu);
W=zeros(D(1),1); % Затраты на функционирование системы
C1=100; % Потери из-за простоя одного канала
C2=5; % Потери из-за простоя одной заявки в очереди
C3=20; % Потери из-за ухода заявки вследствие отказа в обслуживании или нетерпеливых заявок
C4=20; % Прибыль от каждой обслуженной заявки
Ns=M+R+1; % число состояний
Wmin=0;
for k=muMin:h:muMax
ro = l/mu(k);
p=zeros(12,1); % вероятности состояний
p(1)=1; %p0;
s=1; % вспомогательная сумма
for i=2:M+1
s=s*ro/(i-1);
p(1)=p(1)+s;
end;
for i=M+2:Ns;
s=s*l/M;
p(1)=p(1)+s;
end;
p(1)=1/p(1);
%вероятности состояний без очереди 1-6
for i=2:M+1
p(i)=p(i-1)*ro/(i-1);
end;
%вероятности состояний с очередью 6-11
for i=M+2:Ns
p(i)=p(i-1)*l/M;
end;
% Расчет характеристик
% 1) Число заявок в системе
n=0;
for i=1:Ns
n=n+(i-1)*p(i);
end;
% 2) Число простаивающих (свободных) каналов
Ms=0;
for i=1:M
Ms=Ms+(M-i+1)*p(i);
end;
% 4) Длина очереди
r=0;
for i=M+2:Ns
r=r+(i-1-M)*p(i);
end;
% 5) Вероятность отказа
Potk=p(Ns);
% Поток отказов
lotk=l*Potk;
% 6) Относительная пропускная способность
q=1-Potk;
% 7) Абсолютная пропускная способность
A=q*l;
% Затраты на функционирование системы
W(k)=C1*Ms+C2*r+C3*lotk-C4*A;
fprintf('mu=%f W=%f\r\n', mu(k), W(k));
if ((k==1) || ((k~=1) && (W(k)<Wmin)))
Wmin=W(k);
kmin=k;
end;
end; %for mu=muMin:muMax
fprintf('kmin=%d Wmin=%f\r\n', kmin, Wmin);
plot(mu,W);
end
Результаты работы программы
>> [mu,W]=SMO_optim(muMin,muMax,h);
mu=1.000000 W=-39.138498
mu=2.000000 W=12.224162
mu=3.000000 W=113.946200
mu=4.000000 W=204.799793
mu=5.000000 W=262.589908
mu=6.000000 W=298.067284
mu=7.000000 W=321.276304
mu=8.000000 W=337.588176
mu=9.000000 W=349.734565
mu=10.000000 W=359.179140
mu=11.000000 W=366.764017
mu=12.000000 W=373.007260
mu=13.000000 W=378.246253
mu=14.000000 W=382.711245
mu=15.000000 W=386.565479
mu=16.000000 W=389.928358
mu=17.000000 W=392.889508
mu=18.000000 W=395.517667
mu=19.000000 W=397.866531
mu=20.000000 W=399.978714
kmin=1 Wmin=-39.138498
Задание 3
Cистема дифференциальных уравнений Колмогорова для многоканальной СМО с накопителем конечной емкости.
Подставим наши значения
Программа численного решения системы уравнений
function [ p ] = SMO_Kolmogorov;
% 1. Написать систему дифференциальных уравнений Колмогорова
% для рассматриваемой системы при заданных исходных данных.
% 2. Написать программу численного решения системы уравнений, '
% например, методом Эйлера.
l=8; mu=1;
dt=0.01;
T=40;
Ns=12; %число состояний
Ed=eye(Ns);
Ap=[(-1)*l mu 0 0 0 0 0 0 0 0 0 0;
l (-1)*l-mu 2*mu 0 0 0 0 0 0 0 0 0;
0 l (-1)*l-2*mu 3*mu 0 0 0 0 0 0 0 0;
0 0 l (-1)*l-3*mu 4*mu 0 0 0 0 0 0 0;
0 0 0 l (-1)*l-4*mu 5*mu 0 0 0 0 0 0;
0 0 0 0 l (-1)*l-5*mu 6*mu 0 0 0 0 0;
0 0 0 0 0 l (-1)*l-6*mu 6*mu 0 0 0 0;
0 0 0 0 0 0 l (-1)*l-6*mu 6*mu 0 0 0;
0 0 0 0 0 0 0 l (-1)*l-6*mu 6*mu 0 0;
0 0 0 0 0 0 0 0 l (-1)*l-6*mu 6*mu 0;
0 0 0 0 0 0 0 0 0 l (-1)*l-6*mu 6*mu;
0 0 0 0 0 0 0 0 0 0 l (-1)*6*mu];
% sum(Ap) % должна быть равна 1
D=Ed+dt*Ap;
p=zeros(Ns,T);
p(:,1)=[1;0;0;0;0;0;0;0;0;0;0;0];
for t=2:T
p(:,t)=D*p(:,t-1);
end;
t=1:T;
figure; gr=plot(t,p); title('Вероятности', 'FontName','Arial Unicode MS'); xlabel('t'); ylabel('P');
end
function [ p, n, Ms, Mz, r, Potk, lotk, q, A, Dneobsl, Dotk, ts, tog, tobsl, W ] = SMO_Kolmogorov_raschet;
% 4. Рассчитать программным способом (параллельно с решением
% системы уравнений) все основные характеристики системы массового
% обслуживания и построить графики их зависимости от времени
% до установления стационарного режима.
% Исходные данные
l=8; % Интенсивность входящего потока заявок
R=5; % Емкость накопителя
M=6; % Число обслуживающих каналов
mu=1; % Интенсивность обслуживания заявки каналом
C1=100; % Потери из-за простоя одного канала
C2=5; % Потери из-за простоя одной заявки в очереди
C3=20; % Потери из-за ухода заявки вследствие отказа в обслуживании или нетерпеливых заявок
C4=20; % Прибыль от каждой обслуженной заявки
dt=0.01;
T=40;
Ns=12; %число состояний
Ed=eye(Ns);
Ap=[(-1)*l mu 0 0 0 0 0 0 0 0 0 0;
l (-1)*l-mu 2*mu 0 0 0 0 0 0 0 0 0;
0 l (-1)*l-2*mu 3*mu 0 0 0 0 0 0 0 0;
0 0 l (-1)*l-3*mu 4*mu 0 0 0 0 0 0 0;
0 0 0 l (-1)*l-4*mu 5*mu 0 0 0 0 0 0;
0 0 0 0 l (-1)*l-5*mu 6*mu 0 0 0 0 0;
0 0 0 0 0 l (-1)*l-6*mu 6*mu 0 0 0 0;
0 0 0 0 0 0 l (-1)*l-6*mu 6*mu 0 0 0;
0 0 0 0 0 0 0 l (-1)*l-6*mu 6*mu 0 0;
0 0 0 0 0 0 0 0 l (-1)*l-6*mu 6*mu 0;
0 0 0 0 0 0 0 0 0 l (-1)*l-6*mu 6*mu;
0 0 0 0 0 0 0 0 0 0 l (-1)*6*mu];
% sum(Ap) % должна быть равна 1
D=Ed+dt*Ap;
p=zeros(Ns,T);
p(:,1)=[1;0;0;0;0;0;0;0;0;0;0;0];
for t=2:T
p(:,t)=D*p(:,t-1);
end;
t=1:T;
figure; plot(t,p); title('Вероятности'); xlabel('t'); ylabel('P');
% Расчет характеристик
n=zeros(T,1); Ms=zeros(T,1); Mz=zeros(T,1); r=zeros(T,1); Potk=zeros(T,1);
lotk=zeros(T,1); q=zeros(T,1); A=zeros(T,1); Dneobsl=zeros(T,1);
Dotk=zeros(T,1); ts=zeros(T,1); tog=zeros(T,1); tobsl=zeros(T,1);
W=zeros(T,1);
for t=1:T
% 1) Число заявок в системе
for i=1:Ns
n(t,1)=n(t,1)+(i-1)*p(i,t);
end;
% 2) Число простаивающих (свободных) каналов
for i=1:M
Ms(t,1)=Ms(t,1)+(M-i+1)*p(i,t);
end;
% 3) Число занятых каналов
Mz(t,1)=M-Ms(t,1);
% 4) Длина очереди
for i=M+2:Ns
r(t,1)=r(t,1)+(i-1-M)*p(i,t);
end;
% 5) Вероятность отказа
Potk(t,1)=p(Ns,t);
% Поток отказов
lotk(t,1)=l*Potk(t,1);
% 6) Относительная пропускная способность
q(t,1)=1-Potk(t,1);
% 7) Абсолютная пропускная способность
A(t,1)=q(t,1)*l;
% 8) Доля не обслуженных заявок
Dneobsl(t,1)=lotk(t,1)/l;
% 9) Доля заявок, получивших отказ в обслуживании
Dotk(t,1)=lotk(t,1)/l;
% 10) Время пребывания заявки в системе
ts(t,1)=n(t,1)/A(t,1);
% 11) Время ожидания в очереди
tog(t,1)=r(t,1)/A(t,1);
% 12) Время обслуживания
tobsl(t,1)=ts(t,1)-tog(t,1);
% Затраты на функционирование системы
W(t,1)=C1*Ms(t,1)+C2*r(t,1)+C3*lotk(t,1)-C4*A(t,1);
end;
t=1:T;
%Построение графиков
figure; plot(t,n); title('Число заявок в системе'); xlabel('t'); ylabel('n');
figure; plot(t,Ms); title('Число свободных каналов'); xlabel('t'); ylabel('Ms');
figure; plot(t,Mz); title('Число занятых каналов'); xlabel('t'); ylabel('Mz');
figure; plot(t,r); title('Длина очереди'); xlabel('t'); ylabel('r');
figure; plot(t,Potk); title('Вероятность отказа'); xlabel('t'); ylabel('Potk');
figure; plot(t,lotk); title('Поток отказов'); xlabel('t'); ylabel('lotk');
figure; plot(t,q); title('Относительная пропускная способность'); xlabel('t'); ylabel('q');
figure; plot(t,A); title('Абсолютная пропускная способность'); xlabel('t'); ylabel('A');
figure; plot(t,Dneobsl); title('Доля необслуженных заявок'); xlabel('t'); ylabel('Dneobsl');
figure; plot(t,Dotk); title('Доля заявок, получивших отказ в обслуживании'); xlabel('t'); ylabel('Dotk');
figure; plot(t,ts); title('Время пребывания заявки в системе'); xlabel('t'); ylabel('ts');
figure; plot(t,tog); title('Время ожидания в очереди'); xlabel('t'); ylabel('tog');
figure; plot(t,tobsl); title('Время обслуживания'); xlabel('t'); ylabel('tobsl');
figure; plot(t,W); title('Затраты на функционирование системы'); xlabel('t'); ylabel('W');
end
Данные
t | ![]() | ![]() | ![]() | ![]() | P отк, D необсл, D отк | λотк | q | A |
0,00 | 6,00 | 0,00 | ||||||
0,08 | 5,92 | 0,08 | ||||||
0,16 | 5,84 | 0,16 | ||||||
0,24 | 5,76 | 0,24 | ||||||
0,32 | 5,68 | 0,32 | ||||||
0,39 | 5,61 | 0,39 | ||||||
0,47 | 5,53 | 0,47 | ||||||
0,54 | 5,46 | 0,54 | ||||||
0,62 | 5,38 | 0,62 | 0,00000015 | |||||
0,69 | 5,31 | 0,69 | 0,00000062 | |||||
0,76 | 5,24 | 0,76 | 0,00000188 | |||||
0,84 | 5,16 | 0,84 | 0,00000470 | |||||
0,91 | 5,09 | 0,91 | 0,00001025 | 0,0000000001 | ||||
0,98 | 5,02 | 0,98 | 0,00002022 | 0,0000000001 | 0,0000000004 | |||
1,05 | 4,95 | 1,05 | 0,00003686 | 0,0000000002 | 0,0000000017 | |||
1,12 | 4,88 | 1,12 | 0,00006305 | 0,0000000007 | 0,0000000058 | |||
1,19 | 4,81 | 1,19 | 0,00010234 | 0,0000000020 | 0,0000000163 | |||
1,26 | 4,74 | 1,26 | 0,00015897 | 0,0000000051 | 0,0000000411 | |||
1,32 | 4,68 | 1,32 | 0,00023792 | 0,0000000117 | 0,0000000938 | |||
1,39 | 4,61 | 1,39 | 0,00034482 | 0,0000000247 | 0,0000001980 | |||
1,46 | 4,54 | 1,46 | 0,00048600 | 0,0000000489 | 0,0000003913 | |||
1,52 | 4,48 | 1,52 | 0,00066840 | 0,0000000914 | 0,0000007312 | |||
1,59 | 4,41 | 1,59 | 0,00089956 | 0,0000001628 | 0,0000013023 | |||
1,65 | 4,35 | 1,65 | 0,00118754 | 0,0000002780 | 0,0000022243 | |||
1,71 | 4,29 | 1,71 | 0,00154086 | 0,0000004577 | 0,0000036619 | |||
1,78 | 4,22 | 1,78 | 0,00196844 | 0,0000007294 | 0,0000058352 | 7,99999 | ||
1,84 | 4,16 | 1,84 | 0,00247951 | 0,0000011290 | 0,0000090317 | 7,99999 | ||
1,90 | 4,10 | 1,90 | 0,00308356 | 0,0000017023 | 0,0000136187 | 7,99999 | ||
1,96 | 4,04 | 1,96 | 0,00379025 | 0,0000025071 | 0,0000200566 | 7,99998 | ||
2,02 | 3,98 | 2,02 | 0,00460933 | 0,0000036140 | 0,0000289123 | 7,99997 | ||
2,08 | 3,92 | 2,08 | 0,00555061 | 0,0000051091 | 0,0000408727 | 0,99999 | 7,99996 | |
2,14 | 3,86 | 2,14 | 0,00662385 | 0,0000070948 | 0,0000567585 | 0,99999 | 7,99994 | |
2,20 | 3,81 | 2,19 | 0,00783871 | 0,0000096921 | 0,0000775368 | 0,99999 | 7,99992 | |
2,26 | 3,75 | 2,25 | 0,00920472 | 0,0000130417 | 0,0001043335 | 0,99999 | 7,9999 | |
2,32 | 3,69 | 2,31 | 0,01073119 | 0,0000173056 | 0,0001384446 | 0,99998 | 7,99986 | |
2,37 | 3,64 | 2,36 | 0,01242717 | 0,0000226683 | 0,0001813462 | 0,99998 | 7,99982 | |
2,43 | 3,58 | 2,42 | 0,01430141 | 0,0000293379 | 0,0002347029 | 0,99997 | 7,99977 | |
2,49 | 3,53 | 2,47 | 0,01636234 | 0,0000375469 | 0,0003003756 | 0,99996 | 7,9997 | |
2,54 | 3,48 | 2,52 | 0,01861800 | 0,0000475533 | 0,0003804260 | 0,99995 | 7,99962 | |
2,60 | 3,43 | 2,57 | 0,02107604 | 0,0000596401 | 0,0004771210 | 0,99994 | 7,99952 |
t | ![]() | ![]() | ![]() | W |
0,00 | 0,00 | 440,00 | ||
0,01 | 0,01 | 432,00 | ||
0,02 | 0,02 | 424,08 | ||
0,03 | 0,03 | 416,24 | ||
0,04 | 0,04 | 408,48 | ||
0,05 | 0,05 | 400,79 | ||
0,06 | 0,06 | 393,18 | ||
0,07 | 0,0000000026 | 0,07 | 385,65 | |
0,08 | 0,0000000190 | 0,08 | 378,20 | |
0,09 | 0,0000000776 | 0,09 | 370,81 | |
0,10 | 0,0000002348 | 0,10 | 363,51 | |
0,10 | 0,0000005869 | 0,10 | 356,27 | |
0,11 | 0,0000012814 | 0,11 | 349,11 | |
0,12 | 0,0000025280 | 0,12 | 342,02 | |
0,13 | 0,0000046079 | 0,13 | 335,00 | |
0,14 | 0,0000078811 | 0,14 | 328,05 | |
0,15 | 0,0000127920 | 0,15 | 321,18 | |
0,16 | 0,0000198718 | 0,16 | 314,37 | |
0,17 | 0,0000297399 | 0,17 | 307,64 | |
0,17 | 0,0000431025 | 0,17 | 300,97 | |
0,18 | 0,0000607494 | 0,18 | 294,38 | |
0,19 | 0,0000835496 | 0,19 | 287,85 | |
0,20 | 0,0001124447 | 0,20 | 281,40 | |
0,21 | 0,0001484423 | 0,21 | 275,01 | |
0,21 | 0,0001926077 | 0,21 | 268,70 | |
0,22 | 0,0002460553 | 0,22 | 262,46 | |
0,23 | 0,0003099395 | 0,23 | 256,29 | |
0,24 | 0,0003854459 | 0,24 | 250,19 | |
0,25 | 0,0004737821 | 0,24 | 244,16 | |
0,25 | 0,0005761685 | 0,25 | 238,21 | |
0,26 | 0,0006938297 | 0,26 | 232,32 | |
0,27 | 0,0008279867 | 0,27 | 226,51 | |
0,28 | 0,0009798486 | 0,27 | 220,78 | |
0,28 | 0,0011506055 | 0,28 | 215,12 | |
0,29 | 0,0013414220 | 0,29 | 209,53 | |
0,30 | 0,0015534311 | 0,30 | 204,01 | |
0,30 | 0,0017877288 | 0,30 | 198,57 | |
0,31 | 0,0020453693 | 0,31 | 193,21 | |
0,32 | 0,0023273608 | 0,32 | 187,91 | |
0,32 | 0,0026346620 | 0,32 | 182,70 |
Графики