%MAKEMC.m test-make MC 6sept98
%revised transitions 15sept98
%uses Act,Sp,lam,theta,L,C,R. K is the interval I.
% Also uses EZ.m for exp and Cmean, mkQ.m for `spares MChain.'
% Should be followed by AVA.m to compute availability
%P=trans probs, U=mean uptime, D=mean downtime
N=Act+Sp;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Sp>0 is first block of code. Sp=0 is separate block at end.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if Sp > 0
%total number of states is
tot=N+1+Sp;
%initialize for right size and zeros
P=zeros(tot,tot);U=P;D=P;
%non-recovery, system-up states 1 thru Sp+1
KK=K;XX=Act*lam;EZ;
%M is the mean number of additional intervals of length K til fail
% like a Bernoulli trial
M=ez/(1-ez);
KK=1/XX;mkQ;
%mkQ computes for the associated continuous- parameter MC called S
%only exiting transitions are for act-fail
for i=1:Sp+1
P(i,Sp+2)=Q(i,Sp+1);
U(i,Sp+2)=M*(K-C);D(i,Sp+2)=M*C+L+Cmean;
for j=N+2:tot
k=j-N-1;
P(i,j)=Q(i,k);
U(i,j)=U(i,Sp+2);D(i,j)=D(i,Sp+2);
end;end;
%recovery states N+2 thru tot=N+1+Sp
% transitions for not(act-fail):
KK=R+K+L;EZ;mkQ;
for i=N+2:tot for j=1:Sp+1
k=i-N-1;
P(i,j)=ez*Q(k,j);U(i,j)=K;D(i,j)=R;
end;end;
% now act-fail transitions for Sys Recov states
KK=Cmean;mkQ;
for i=N+2:tot
P(i,Sp+2)=(1-ez)*Q(i-N-1,Sp+1);D(i,Sp+2)=Cmean;
for j=N+2:tot
k=i-N-1;l=j-N-1;
P(i,j)=(1-ez)*Q(k,l);D(i,j)=Cmean;
end;end;
%system-down (too few procs) states Sp+2 thru N
%corrected for state Sp+2 below
%merging Sys Dwn states into a single representative isn't done here
if Act > 1
for i=(Sp+2):N
XX=(N-i+1)*lam + (i-1)*theta;
P(i,i+1)=(N-i+1)*lam/XX;
P(i,i-1)=(i-1)*theta/XX;
D(i,i+1)=1/XX;D(i,i-1)=D(1,i+1);
end
%now fix the first recovery from sys-fail state Sp+2:
P(Sp+2,tot)=P(Sp+2,Sp+1);P(Sp+2,Sp+1)=0;
D(Sp+2,tot)=1/XX;D(Sp+2,Sp+1)=0;
%`all-failed' sys-fail state N+1:
XX=N*theta;
P(N+1,N)=1;
D(N+1,N)=1/XX;
end
if Act==1 P(Sp+2,tot)=1;D(Sp+2,tot)=1/(N*theta); end
%this ends SP > 0 code
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Here's Sp==0: sys-up state 1 and recovery state N+2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (Act> 1 & Sp==0)
Q=0;q=0;RM=0;
N=Act+Sp;
tot=Act + 2;
P=zeros(tot,tot);U=P;D=P;
% the only sys-up state 1
XX=Act*lam; KK=K; EZ; M=ez/(1-ez);
P(1,2)=1; U(1,2)=M*(K-C);
D(1,2)= M*C + L+ Cmean;
%the only recovery state N+2
KK=R+K+L;EZ;
P(N+2,1)=ez;U(N+2,1)=K;D(N+2,1)=R;
P(N+2,2)=1-ez;D(N+2,2)=Cmean;
% sys-fail state 2
XX=(Act-1)*lam + theta;
P(2,N+2)=theta/XX;
P(2,3)=(Act-1)*lam/XX;
D(2,N+2)=1/XX;D(2,3)=D(2,N+2);
%system-down (too few procs) states 3 thru N
for i=3:N
XX=(N-i+1)*lam + (i-1)*theta;
P(i,i+1)=(N-i+1)*lam/XX;
P(i,i-1)=(i-1)*theta/XX;
D(i,i+1)=1/XX;D(i,i-1)=D(i,i+1);
end;
%`all-failed' sys-fail state N+1:
XX=N*theta;
P(N+1,N)=1;
D(N+1,N)=1/XX;
end;
if (Act==1 & Sp==0)
N=1;
tot=3;
P=zeros(3,3);U=P;D=P;Q=0;
% the only sys-up state 1
KK=K;XX=Act*lam;EZ;
P(1,1)=ez;U(1,1)=K-C;D(1,1)=C;
P(1,2)=1-ez;D(1,2)=L+Cmean;
% recovery state 3
KK=R+K+L;EZ;
P(3,1)=ez;U(3,1)=K;D(3,1)=R;
P(3,2)=1-ez;D(3,2)=Cmean;
% sys-fail state 2
XX=theta;
P(2,3)=1;
D(2,3)=1/XX;
%end of the road
end;