Sie sind auf Seite 1von 4

ENGR691, Spring 2015, Homework for Lecture

Block 1

1
1

Code Listing

# F i l e Name : Spring2015HW01Sakil V . 2 2 0 5 . py

2
3

# The o b j e c t i v e o f t h e program i s t h a t we were g i v e n some randomly


g e n e r a t e d data o f i n t e r a r r i v a l time and s e r v i c e time o f a
q u e u e i n g system .
# For p a r t ( a ) o f t h e a s s i g n m e n t , we want t o f i n d t h e w a i t i n g time
f o r each g i v e n s e t o f v a l u e s by u s i n g t h e g i v e n f o r m u l a .
# For p a r t ( b ) o f t h e a s s i g n m e n t , we w i l l e x t e n d t h e Python program
t o p r o c e s s t h e data t o d e t e r m i n e t h e a v e r a g e i n t e r a r r i v a l time
, a v e r a g e s e r v i c e time , and a v e r a g e w a i t i n g time o v e r t h e
number o f a v a i l a b l e s a m p l e s .
# For p a r t ( c ) o f t h e a s s i g n m e n t , we w i l l add a r o u t i n g i n t h e
Python program t o o b t a i n t h e sample complementary d i s t r i b t u i o n
f u n c t i o n f o r an a r b i t a r y d i s c r e t e l i s t o f sample v a l u e s . That
i s , we want t o know t h e p r o p o r t i o n o f v a l u e s t h a t e x c e e d each
d s i c r e t e sample v a l u e i n t h e l i s t .
# For p a r t ( d ) o f t h e a s s i g m e n t , we w i l l be l i t i n g our program
u s i n g LATEX package l i s t i n g s .
# For p a r t ( e ) o f t h e a s s i g m e n t , we w i l l d e v e l o p a p l o t o f t h e data
p o i n t s produced i n t h e p r e v i o u s s t e p u s i n g LATEX and Tikz ; we
w i l l add t h i s t o t h e LATEX document t h a t shows t h e l i s t i n g .
#

10
11
12
13
14

im po rt
im po rt
im po rt
im po rt

numpy a s np
sys
os
math

15
16
17
18
19

#g e t t i n g i n t o c u r r e n t d i r e c t o r y
f i l e p a t h = o s . path . dirname (
file
i f f i l e p a t h != :
os . chdir ( f i l e p a t h )

20
21
22

23

# We u s e l o a d t x t ( ) t o i mp ort data from t h e g i v e n f i l e .


# we d e c l a r e d 2 a r r a y s f o r i n t e r a r r i v a l time and s e r v i c e time
and were s a v e d
# s e p a r a t e l y . we a l s o change t h e t h r e s h o l d v a l u e s o t h a t we can
p r i n t l a r g e number o f v a l u e s o f a r r a y .

24
25

i n t e r a r r i v a l t i m e = np . l o a d t x t (
s a m p l e d a t a i n t e r a r r i v a l a n d s e r v i c e t i m e ( Random ) . t x t ,

26

27
28

s k i p r o w s =1 , u s e c o l s = ( 0 , ) )
s e r v i c e t i m e = np . l o a d t x t (
s a m p l e d a t a i n t e r a r r i v a l a n d s e r v i c e t i m e ( Random ) . t x t ,
s k i p r o w s =1 , u s e c o l s = ( 1 , ) )
np . s e t p r i n t o p t i o n s ( t h r e s h o l d= nan )
np . s e t p r i n t o p t i o n s ( t h r e s h o l d=np . nan )

29
30
31
32
33

p r i n t ( I n t e r a r r i v a l t i m e s : \n )
print ( interarrival time )
p r i n t ( \n S e r v i c e t i m e s : \n )
print ( service time )

34
35
36
37
38
39
40
41

# We c a l c u l a t e t h e w a i t i n g time h e r e by u s i n g t h e g i v e n f o r m u l a .
copy interarrival = interarrival time
a = [0]
arr = interarrival time . size
c o p y s t = np . a r r a y ( s e r v i c e t i m e )
c o p y s t = np . append ( a [ 0 ] , c o p y s t )
c o p y s t = np . d e l e t e ( c o p y s t , a r r , 0 )

42
43
44

serviceT minus interarrivalT = copy st interarrival time


print ( serviceT minus interarrivalT )

45
46

w a i t i n g t i m e = np . z e r o s ( s e r v i c e T m i n u s i n t e r a r r i v a l T . s i z e )

47
48
49
50

51

f o r i in range ( len ( s e r v i c e T m i n u s i n t e r a r r i v a l T ) ) :
i f ( i > 0) :
w a i t i n g t i m e [ i ] = w a i t i n g t i m e [ i 1] +
serviceT minus interarrivalT [ i ]
w a i t i n g t i m e [ i ] = max( w a i t i n g t i m e [ i ] , 0 )

52
53
54

p r i n t ( \n Waiting Time )
print ( waiting time )

55
56

# Part ( b ) : c a l c u l a t i n g a v e r a g e i n t e r a r r i v a l time , a v e r a g e
s e r v i c e time , and a v e r a g e w a i t i n g time u s i n g t h e np . mean ( )

57
58
59
60
61
62
63
64

a v g w a i t i n g t i m e = np . mean ( w a i t i n g t i m e )
p r i n t ( \n )
p r i n t ( Average w a i t i n g time : )
print ( avg waiting time )
p r i n t ( \n )
a v g s e r v i c e t i m e = np . mean ( s e r v i c e t i m e )
a v g i n t e r a r r i v a l t i m e = np . mean ( i n t e r a r r i v a l t i m e )

65
66

67

# Part (C) : we u s e u n i q u e ( ) t o f i n d t h e p r o p o r t i o n o f each u n i q u e


w a i t i n g time
# Thus we can f i n d out what p r o p o r t i o n o f t h e system have w a i t i n g
time 0 , 1 , 2 . . and s o on .

68
69

70
71
72

s o r t w a i t i n g t i m e = unique , c o u n t s = np . u n i q u e ( w a i t i n g t i m e ,
r e t u r n c o u n t s=True )
np . a s a r r a y ( ( unique , c o u n t s ) ) . T
np . put ( w a i t i n g t i m e , [ 0 ] , [ 0 ] )
array size = interarrival time . size

73
74

# We s o r t t h e a r r a y based on w a i t i n g time . and d i v i d e i t by

75

a r r a y s i z e which i s t h e
# t o t a l number o f p o i n t s t o f i n d t h e p r o p o r t i o n o f each w a i t i n g
time ( d i s c r e t e v a l u e )

76
77
78
79
80

freq count
freq count
p r i n t ( \n
print ( freq

w a i t i n g = np . m a t r i x ( s o r t w a i t i n g t i m e )
w a i t i n g = np . t r a n s p o s e ( f r e q c o u n t w a i t i n g )
Waiting Time ( s o r t e d ) : \n )
count waiting )

81
82
83
84

85
86

#f i n d i n g pmf
f r e q c o u n t w a i t i n g [ : , 1 ] /= i n t e r a r r i v a l t i m e . s i z e
p r o p o r t i o n o f u n i q u e w a i t i n g t i m e s = np . t r a n s p o s e (
freq count waiting )
p r i n t ( \n pmf o f W a i t i n g t i m e : \n )
print ( proportion of unique waiting times )

87
88

#f i n d i n g c d f from pmf

89
90
91
92
93

bb
bb
cc
dd

=
=
=
=

np . a s a r r a y ( p r o p o r t i o n o f u n i q u e w a i t i n g t i m e s )
np . t r a n s p o s e ( bb )
0
bb [ : , 1 ]

94
95
96
97
98
99
100

f o r i i n r a n g e ( l e n ( dd ) ) :
if i > 0 :
dd [ i ] = dd [ i ] + dd [ i 1]
else :
cc = 0 ;
bb [ : , 1 ] = dd

101
102
103
104
105
106

p r i n t ( \n c d f : \n )
print ( proportion of unique waiting times )
c s v f o r m a t t i n g v a r = np . a s a r r a y ( p r o p o r t i o n o f u n i q u e w a i t i n g t i m e s )
c s v f o r m a t t i n g v a r = np . t r a n s p o s e ( c s v f o r m a t t i n g v a r )
np . s a v e t x t ( CDF of waitingTime . c s v , c s v f o r m a t t i n g v a r , fmt =
%1.4 f , d e l i m i t e r= , )

107
108
109
110

111

#complementary c d f
p r o p o r t i o n o f u n i q u e w a i t i n g t i m e s [ 1 , : ] = 1
proportion of unique waiting times [ 1 , : ]
c c d f v a r = np . m a t r i x . round ( p r o p o r t i o n o f u n i q u e w a i t i n g t i m e s ,
decimals = 4)

112
113
114
115
116
117
118

# we s a v e d t h e data i n s e p a r a t e c s v f i l e .
a = np . a s a r r a y ( c c d f v a r )
a = np . t r a n s p o s e ( a )
a = np . c l i p ( a , 0 . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 , 3 0 )
p r i n t ( \n Complementary CDF: \n )
print (a)

119
120

np . s a v e t x t ( c o m p l i m e n t a r y d i s t r i b u t i o n f i l e o f w a i t i n g T i m e . c s v , a ,
fmt= %10.5 f , d e l i m i t e r= , )

HomeWork - 01 : A graph using Tikz


\begin{figure}[h]
\begin{center}\begin{tikzpicture}
\begin{semilogyaxis}[restrict expr to domain={y}{1e-6:1},unbounded coords=discard,
xlabel={waiting time, $w$},
ylabel=Complementary CDF ]
\addplot [
only marks,
jump mark left,
discontinuous,
thin, black
]table[x index = {0}, y index = {1}] {\mydata};
\end{semilogyaxis}
\end{tikzpicture}
\begin{minipage}{5in}
\caption{Survivor function for example data.}
\end{minipage}
\end{center}
\end{figure}
The graph looks like this:

Complementary CDF

100

101

102

10
15
20
waiting time, w

25

Figure 1: Complementary Distribution of Waiting Time.

Das könnte Ihnen auch gefallen