Программа для оптимизации




 

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

 


 

Графики



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: