ENGR691, Spring 2015, Homework For Lecture Block 1: 1 Code Listing
ENGR691, Spring 2015, Homework For Lecture Block 1: 1 Code Listing
Block 1
1
1
Code Listing
# F i l e Name : Spring2015HW01Sakil V . 2 2 0 5 . py
2
3
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
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
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
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
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= , )
Complementary CDF
100
101
102
10
15
20
waiting time, w
25