This appendix contains the complete ODML listing for the information retrieval domain model described in Section 3.1 and inspired by work presented in [214, 215].
The original abstract model is shown graphically above in Figure D.1. The raw textual model given below contains additional structure not shown in that figure; a complete structural graph is shown in Figure D.2. The key differences include separating out the user and other mediator roles, as well as the addition of a role node. These changes are for modeling convenience only, and do not affect the discussion given in Section 3.3.
As with other ODML models, this one is structured with the organization char- acteristics defined first, followed by a series of node definitions for the other entities in the organization. The environment node specifies a set of scenario constants, and contains the two variables that decide the size of the search and query sets of the mediator. The user node is similarly used to store scenario information, in this case to define the rate at which queries will enter the system.
The mediator role follows the user, and begins by specifying the agent it will be bound to, and the number and type of source entities that will exist below it. The mediator’srank andquery probabilityare computed next, which determine how likely it is the mediator will be selected to answer a query. From this the work load can be deduced, which is used to determine the pdf and cdf distributions described in Section 3.3.4. The service and response times are computed last.
organization
environment
1
mediator
topic_mediators
agent
1
source
num_sources
aggregator database
1 num_sources
1
Figure D.1. Graphical view of the ODML information retrieval model.
The other mediator node is used to represent the mediators in the system that do not compete with the mediator, but are still a distraction because they must be searched during the first part of the query handling phase. They are nearly identical to the normal mediator, except that they have no sources below them.
The aggregator and databasenodes are similar to mediators, except they do have have the ranking and query probability computations. The local query rateof each is determined from the manager above it. This is used to determine the work load and response times of the entity.
The agent and regular agent nodes contain a small number of default character- istics. The role, manager and sources nodes do as well, although they serve a dual purpose in helping frame the structural decision problems by providing base types that the other entities may inherit.
The code for the model follows below.
< ? xml v e r s i o n = " 1.0 " e n c o d i n g = " UTF -8 " ? >
< o r g a n i z a t i o n name = " c o n t e n t _ o r g a n i z a t i o n " >
< !- - C r e a t e the r o o t l e v e l p a r t i c i p a n t s - ->
< has - a name = " env " > e n v i r o n m e n t ( this ) < / has - a >
< has - a n a m e = " u s e r s " s i z e = " n u m _ u s e r s " > user ( env , this ) < / has - a >
< has - a name = " m e d i a t o r s " size = " n u m _ t o p i c _ m e d i a t o r s " > m e d i a t o r ( env , this ) < / has - a >
< has - a name = " o t h e r _ m e d i a t o r s " size = " n u m _ o t h e r _ m e d i a t o r s " > o t h e r _ m e d i a t o r ( env , this ) < / has - a >
agent
regular_agent aggregator
1
source
num_sources
database manager
mediator other_mediator
1
environment role
1 num_sources
organization
1 num_topic_mediators
user
num_users num_other_mediators
1 1
Figure D.2. Graphical view of the complete ODML information retrieval model obtained from the source in this appendix.
< !- - S o m e s c e n a r i o v a l u e s - ->
< v a r i a b l e name = " n u m _ t o p i c _ m e d i a t o r s " > 1 ,2 ,3 ,4 < / v a r i a b l e >
< c o n s t a n t name = " n u m _ u s e r s " > 1 < / c o n s t a n t >
< c o n s t a n t name = " n u m _ o t h e r _ m e d i a t o r s " > 3 < / c o n s t a n t >
< c o n s t a n t name = " t o t a l _ m e d i a t o r s " > n u m _ t o p i c _ m e d i a t o r s + n u m _ o t h e r _ m e d i a t o r s < / c o n s t a n t >
< !- - G r o s s o r g a n i z a t i o n a l c h a r a c t e r i s t i c s - ->
< c o n s t a n t name = " r e s p o n s e _ t i m e " > max ( m e d i a t o r s . r e s p o n s e _ t i m e ) < / c o n s t a n t >
< c o n s t a n t name = " r e s p o n s e _ r e c a l l " > f o r a l l s u m ( m e d i a t o r s . r e c a l l _ p o r t i o n ) / env . t o p i c _ s i z e < / c o n s t a n t >
< c o n s t r a i n t name = " r e s p o n s e _ r e c a l l " op = " & gt ;= " > 0 . 7 0 < / c o n s t r a i n t >
< c o n s t a n t name = " u t i l i t y " > r e s p o n s e _ r e c a l l * 10 - r e s p o n s e _ t i m e / 100 < / c o n s t a n t >
< !- - D a t a to log - ->
< log name = " o r g a n i z a t i o n _ d o t " f i l e = " o r g a n i z a t i o n - s h a p e . dot " a p p e n d = " f a l s e " > t o d o t ( this , " t r u e " , " f a l s e " ) < / log >
< log name = " u t i l i t y " > u t i l i t y < / log >
< log name = " o t h e r _ m e d i a t o r s " > n u m _ o t h e r _ m e d i a t o r s < / log >
< log name = " r e s p o n s e _ r e c a l l " > r e s p o n s e _ r e c a l l < / log >
< log name = " r e s p o n s e _ t i m e " > r e s p o n s e _ t i m e < / log >
< !- - E n v i r o n m e n t - ->
< node type = " e n v i r o n m e n t " >
< p a r a m > o r g a n i z a t i o n : o r g < / p a r a m >
< c o n s t a n t name = " t o p i c _ s i z e " > 700 < / c o n s t a n t > < !- - T o t a l a m o u n t of t o p i c d a t a - ->
< c o n s t a n t name = " t o p i c _ q u e r y _ r a t e " > f o r a l l s u m ( org . u s e r s . t o p i c _ q u e r y _ r a t e ) < / c o n s t a n t >
< c o n s t a n t name = " n o n t o p i c _ q u e r y _ r a t e " > f o r a l l s u m ( org . u s e r s . n o n t o p i c _ q u e r y _ r a t e )
< / c o n s t a n t >
< c o n s t a n t name = " m e s s a g e _ l a t e n c y " > 20 < / c o n s t a n t > < !- - T i m e to s e n d a m e s s a g e - ->
< c o n s t a n t name = " q u e r y _ s e r v i c e _ r a t e " > 2 5 / 2 5 < / c o n s t a n t > < !- - S e r v i c e r a t e to i n t e r p r e t q u e r y - ->
< c o n s t a n t name = " p r o c e s s _ s e r v i c e _ r a t e " > 1 / 2 0 0 < / c o n s t a n t > < !- - S e r v i c e r a t e to p e r f o r m q u e r y - ->
< c o n s t a n t name = " r e s p o n s e _ s e r v i c e _ r a t e " > 1 / 5 0 < / c o n s t a n t > < !- - S e r v i c e r a t e to i n t e r p r e t r e s p o n s e - ->
< v a r i a b l e name = " s e a r c h _ s i z e " > 1 ,2 ,3 ,4 ,5 ,6 < / v a r i a b l e > < !- - How far s e a r c h e s p r o p o g a t e - ->
< v a r i a b l e name = " q u e r y _ s i z e " > 1 ,2 ,3 ,4 ,5 ,6 < / v a r i a b l e > < !- - How far q u e r i e s p r o p o g a t e - ->
< c o n s t r a i n t name = " s e a r c h _ s i z e " op = " & lt ;= " > org . t o t a l _ m e d i a t o r s < / c o n s t r a i n t >
< c o n s t r a i n t name = " q u e r y _ s i z e " op = " & lt ;= " > org . n u m _ t o p i c _ m e d i a t o r s < / c o n s t r a i n t >
< c o n s t a n t name = " s e a r c h _ s e t _ s i z e " > s e a r c h _ s i z e < / c o n s t a n t >
< c o n s t a n t name = " q u e r y _ s e t _ s i z e " > q u e r y _ s i z e < / c o n s t a n t >
< c o n s t a n t name = " s e a r c h _ p r o b a b i l i t y " > s e a r c h _ s e t _ s i z e / org . t o t a l _ m e d i a t o r s < / c o n s t a n t >
< c o n s t a n t name = " m e d i a t o r _ q u e r y _ r a t e " > t o p i c _ q u e r y _ r a t e * s e a r c h _ p r o b a b i l i t y
* min (1 , q u e r y _ s e t _ s i z e / org . n u m _ t o p i c _ m e d i a t o r s ) < / c o n s t a n t >
< log name = " t o p i c _ q u e r y _ r a t e " > t o p i c _ q u e r y _ r a t e < / log >
< log name = " t o p i c _ s i z e " > t o p i c _ s i z e < / log >
< log name = " q u e r y _ s e t _ s i z e " > q u e r y _ s e t _ s i z e < / log >
< log name = " s e a r c h _ s e t _ s i z e " > s e a r c h _ s e t _ s i z e < / log >
< / n o d e >
< !- - U s e r s - ->
< node type = " user " >
< p a r a m > e n v i r o n m e n t : e n v , o r g a n i z a t i o n : o r g < / p a r a m >
< has - a n a m e = " a g e n t " > a g e n t < / has - a >
< c o n s t a n t name = " q u e r y _ l i m i t " > 1 0 0 0 0 < / c o n s t a n t >
< c o n s t a n t name = " t o p i c _ q u e r y _ r a t e " > 2 / 1 0 0 0 < / c o n s t a n t >
< c o n s t a n t name = " n o n t o p i c _ q u e r y _ r a t e " > 0 / 1 0 0 0 < / c o n s t a n t >
< / n o d e >
< !- - Top L e v e l T o p i c M e d i a t o r s - ->
< node type = " m e d i a t o r " >
< p a r a m > e n v i r o n m e n t : e n v , o r g a n i z a t i o n : o r g < / p a r a m >
< is - a > m a n a g e r < / is - a >
< has - a n a m e = " a g e n t " > a g e n t < / has - a >
< has - a name = " s o u r c e s " size = " n u m _ s o u r c e s " > s o u r c e ( this , env ) < / has - a >
< v a r i a b l e name = " n u m _ s o u r c e s " > 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 < / v a r i a b l e >
< c o n s t a n t name = " s e a r c h _ s e t _ s i z e " > env . s e a r c h _ s e t _ s i z e < / c o n s t a n t >
< c o n s t a n t name = " q u e r y _ s e t _ s i z e " > env . q u e r y _ s e t _ s i z e < / c o n s t a n t >
< !- - D e t e r m i n e the m e d i a t o r s rank , b a s e d on its p e r c i e v e d r e c a l l - ->
< c o n s t a n t name = " rank " > 1 + f o r a l l s u m ( f o r a l l ( s , org . m e d i a t o r s . p e r c e i v e d _ r e s p o n s e _ s i z e ,
0^ max ( p e r c e i v e d _ r e s p o n s e _ s i z e - s , 0) - 0^ abs ( p e r c e i v e d _ r e s p o n s e _ s i z e - s ) ) ) < / c o n s t a n t >
< c o n s t a n t name = " r a n k _ t i e s " > f o r a l l s u m ( f o r a l l ( r , org . m e d i a t o r s . rank , 0^ abs ( r - rank ) ) ) < / c o n s t a n t >
< !- - D e t e r m i n e the p r o b a b i l i t y the m e d i a t o r w i l l be q u e r i e d - ->
< c o n s t a n t name = " q u e r y _ p r o b a b i l i t y " > ( s e a r c h _ s e t _ s i z e / org . t o t a l _ m e d i a t o r s ) * (1 / c h o o s e ( org . t o t a l _ m e d i a t o r s - 1 , s e a r c h _ s e t _ s i z e - 1) ) *
f o r a l l s u m ( f o r r a n g e ( r , 0 , q u e r y _ s e t _ s i z e ,
f o r a l l s u m ( f o r r a n g e ( g , 0 , min ( s e a r c h _ s e t _ s i z e , r a n k _ t i e s ) , c h o o s e ( org . t o t a l _ m e d i a t o r s - rank - r a n k _ t i e s + 1 ,
s e a r c h _ s e t _ s i z e - r - g - 1)
* c h o o s e ( r a n k - 1 , r )
* c h o o s e ( r a n k _ t i e s - 1 , g )
* min (1 , ( q u e r y _ s e t _ s i z e - r ) / ( g + 1) ) ) )
) ) < / c o n s t a n t >
< c o n s t a n t name = " d a t a _ s i z e " > f o r a l l s u m ( s o u r c e s . d a t a _ s i z e ) < / c o n s t a n t >
< c o n s t a n t name = " t o p i c _ s i z e " > f o r a l l s u m ( s o u r c e s . t o p i c _ s i z e ) < / c o n s t a n t >
< c o n s t a n t name = " t o p i c _ p e r c e n t a g e " > t o p i c _ s i z e / d a t a _ s i z e < / c o n s t a n t >
< c o n s t a n t name = " a c t u a l _ r e s p o n s e _ s i z e " > t o p i c _ s i z e < / c o n s t a n t >
< c o n s t a n t name = " p e r c e i v e d _ r e s p o n s e _ s i z e " > t o p i c _ s i z e < / c o n s t a n t >
< c o n s t a n t name = " r e c a l l _ p o r t i o n " > q u e r y _ p r o b a b i l i t y * a c t u a l _ r e s p o n s e _ s i z e < / c o n s t a n t >
< !- - D e t e r m i n e the w o r k l o a d the m e d i a t o r w i l l see - ->
< c o n s t a n t name = " q u e r y _ r a t e " > q u e r y _ p r o b a b i l i t y * env . t o p i c _ q u e r y _ r a t e + (1 - t o p i c _ p e r c e n t a g e ) * env . n o n t o p i c _ q u e r y _ r a t e < / c o n s t a n t >
< c o n s t a n t name = " r e s p o n s e _ r a t e " > 0 < / c o n s t a n t >
< c o n s t a n t name = " a r r i v a l _ r a t e " > q u e r y _ r a t e < / c o n s t a n t >
< c o n s t a n t name = " s e r v i c e _ r a t e " > env . r e s p o n s e _ s e r v i c e _ r a t e / n u m _ s o u r c e s < / c o n s t a n t >
< c o n s t a n t name = " e f f e c t i v e _ s e r v i c e _ r a t e " > a r r i v a l _ r a t e / a g e n t . w o r k _ l o a d < / c o n s t a n t >
< c o n s t a n t name = " p o i s s o n _ r a t e " > e f f e c t i v e _ s e r v i c e _ r a t e - a r r i v a l _ r a t e < / c o n s t a n t
>
< c o n s t r a i n t name = " a r r i v a l _ r a t e " op = " & lt ;= " > e f f e c t i v e _ s e r v i c e _ r a t e < / c o n s t r a i n t
>
< m o d i f i e r n a m e = " a g e n t . w o r k _ l o a d " op = " + " > a r r i v a l _ r a t e / s e r v i c e _ r a t e < / m o d i f i e r
>
< c o n s t a n t name = " l o c a l _ p d f _ l i s t " > f o r r a n g e ( x , 0 , ( d i s t _ r a n g e / d i s t _ s t e p ) , p o i s s o n _ r a t e * e ^( - p o i s s o n _ r a t e * ( x ) * d i s t _ s t e p ) /* Exp pdf f ( x )
*/
) < / c o n s t a n t >
< c o n s t a n t name = " l o c a l _ c d f _ l i s t " > f o r r a n g e ( x , 0 , ( d i s t _ r a n g e / d i s t _ s t e p ) ,
1 - e ^( - p o i s s o n _ r a t e * ( x +1) * d i s t _ s t e p ) /* Exp cdf F ( x )
*/
) < / c o n s t a n t >
< c o n s t a n t name = " s o u r c e _ p d f _ l i s t " > f o r r a n g e ( x , 0 , ( d i s t _ r a n g e / d i s t _ s t e p ) , f o r a l l p r o d ( f o r a l l ( s , sources , l i s t i t e m ( s . cdf_list , x ) ) )
* f o r a l l s u m ( f o r a l l ( s , sources , l i s t i t e m ( s . pdf_list , x ) / l i s t i t e m ( s . cdf_list , x ) ) )
) < / c o n s t a n t >
< c o n s t a n t name = " s o u r c e _ c d f _ l i s t " > f o r r a n g e ( x , 0 , ( d i s t _ r a n g e / d i s t _ s t e p ) , f o r a l l p r o d ( f o r a l l ( s , sources , l i s t i t e m ( s . cdf_list , x ) ) )
) < / c o n s t a n t >
< c o n s t a n t name = " p d f _ l i s t " > f o r r a n g e ( x , 0 , ( d i s t _ r a n g e / d i s t _ s t e p ) , f o r a l l s u m ( f o r r a n g e ( i , 0 , x +1 ,
l i s t i t e m ( s o u r c e _ p d f _ l i s t , i ) * l i s t i t e m ( l o c a l _ p d f _ l i s t , x - i ) * d i s t _ s t e p
) ) ) < / c o n s t a n t >
< c o n s t a n t name = " c d f _ l i s t " > f o r r a n g e ( x , 0 , ( d i s t _ r a n g e / d i s t _ s t e p ) , f o r a l l s u m ( f o r r a n g e ( i , 0 , x +1 ,
l i s t i t e m ( s o u r c e _ p d f _ l i s t , i ) * l i s t i t e m ( l o c a l _ c d f _ l i s t , x - i ) * d i s t _ s t e p
) ) ) < / c o n s t a n t >
< log name = " pdf " file = " pdf . dat " > f o r r a n g e ( x , 0 , ( d i s t _ r a n g e / d i s t _ s t e p ) , [( x * d i s t _ s t e p ) + o v e r h e a d _ t i m e , l i s t i t e m ( pdf_list , x ) ]
) < / log >
< !- - D e t e r m i n e s e r v i c e and r e s p o n s e t i m e s - ->
< c o n s t a n t name = " s e r v i c e _ t i m e " > f o r a l l s u m ( f o r r a n g e ( x , 1 , ( d i s t _ r a n g e / d i s t _ s t e p ) ,
( x * d i s t _ s t e p ) * ( l i s t i t e m ( pdf_list , x ) * d i s t _ s t e p ) ) ) < / c o n s t a n t >
< c o n s t a n t name = " o v e r h e a d _ t i m e " >
env . m e s s a g e _ l a t e n c y /* Query down from user */
+ env . m e s s a g e _ l a t e n c y /* S e a r c h to m e d i a t o r s */
+ env . m e s s a g e _ l a t e n c y /* S e a r c h r e p l y f r o m m e d i a t o r s */
+ env . m e s s a g e _ l a t e n c y /* Q u e r y to m e d i a t o r s */
+ env . m e s s a g e _ l a t e n c y /* Q u e r y d o w n to s o u r c e s */
+ max ( s o u r c e s . o v e r h e a d _ t i m e ) /* S u b o r d i n a t e o v e r h e a d */
+ env . m e s s a g e _ l a t e n c y /* R e s p o n s e from m e d i a t o r s */
+ env . m e s s a g e _ l a t e n c y /* R e s p o n s e up to user */
< / c o n s t a n t >
< c o n s t a n t name = " r e s p o n s e _ t i m e " > o v e r h e a d _ t i m e + s e r v i c e _ t i m e < / c o n s t a n t >
< log name = " t o p i c _ s i z e " > t o p i c _ s i z e < / log >
< log name = " rank " > rank </ log >
< log name = " q u e r y _ p r o b a b i l i t y " > q u e r y _ p r o b a b i l i t y < / log >
< log name = " r e s p o n s e _ t i m e " > r e s p o n s e _ t i m e < / log >
< log name = " p o i s s o n _ r a t e " > p o i s s o n _ r a t e < / log >
< log name = " q u e r y _ r a t e " > q u e r y _ r a t e < / log >
< log name = " s e r v i c e _ r a t e " > s e r v i c e _ r a t e < / log >
< log name = " r e s p o n s e _ r a t e " > r e s p o n s e _ r a t e < / log >
< log name = " s e r v i c e _ t i m e " > s e r v i c e _ t i m e < / log >
< / n o d e >
< !- - Non - T o p i c M e d i a t o r s - ->
< node type = " o t h e r _ m e d i a t o r " >
< p a r a m > e n v i r o n m e n t : e n v , o r g a n i z a t i o n : o r g < / p a r a m >
< is - a > m a n a g e r < / is - a >
< has - a n a m e = " a g e n t " d i s c r i m i n a t o r = " w o r k _ l o a d " > a g e n t < / has - a >
< c o n s t a n t name = " s o u r c e s " > l i s t () < / c o n s t a n t >
< c o n s t a n t name = " n u m _ s o u r c e s " > 0 < / c o n s t a n t >
< c o n s t a n t name = " s e a r c h _ s e t _ s i z e " > env . s e a r c h _ s e t _ s i z e < / c o n s t a n t >
< c o n s t a n t name = " q u e r y _ s e t _ s i z e " > env . q u e r y _ s e t _ s i z e < / c o n s t a n t >
< c o n s t a n t name = " q u e r y _ r a t e " > q u e r y _ p r o b a b i l i t y * env . t o p i c _ q u e r y _ r a t e + (1 - t o p i c _ p e r c e n t a g e ) * env . n o n t o p i c _ q u e r y _ r a t e < / c o n s t a n t >
< c o n s t a n t name = " r e s p o n s e _ r a t e " > 0 < / c o n s t a n t >
< c o n s t a n t name = " o v e r h e a d _ t i m e " >
env . m e s s a g e _ l a t e n c y + /* Q u e r y d o w n */
env . m e s s a g e _ l a t e n c y /* R e s p o n s e up */
< / c o n s t a n t >
< c o n s t a n t name = " r e s p o n s e _ t i m e " > o v e r h e a d _ t i m e < / c o n s t a n t >
< c o n s t a n t name = " s e r v i c e _ r a t e " > 1 < / c o n s t a n t >
< c o n s t r a i n t name = " q u e r y _ r a t e " op = " & lt ;= " > s e r v i c e _ r a t e < / c o n s t r a i n t >
< c o n s t a n t name = " rank " > 1 + f o r a l l s u m ( f o r a l l ( s , org . m e d i a t o r s . p e r c e i v e d _ r e s p o n s e _ s i z e ,
0^ max ( p e r c e i v e d _ r e s p o n s e _ s i z e - s , 0) - 0^ abs ( p e r c e i v e d _ r e s p o n s e _ s i z e - s ) ) ) < / c o n s t a n t >
< c o n s t a n t name = " r a n k _ t i e s " > f o r a l l s u m ( f o r a l l ( r , org . m e d i a t o r s . rank , 0^ abs ( r - rank ) ) ) < / c o n s t a n t >
< c o n s t a n t name = " q u e r y _ p r o b a b i l i t y " > ( s e a r c h _ s e t _ s i z e / org . t o t a l _ m e d i a t o r s ) * (1 / c h o o s e ( org . t o t a l _ m e d i a t o r s - 1 , s e a r c h _ s e t _ s i z e - 1) ) *
f o r a l l s u m ( f o r r a n g e ( r , 0 , q u e r y _ s e t _ s i z e ,
f o r a l l s u m ( f o r r a n g e ( g , 0 , min ( s e a r c h _ s e t _ s i z e , r a n k _ t i e s ) , c h o o s e ( org . t o t a l _ m e d i a t o r s - rank - r a n k _ t i e s + 1 ,
s e a r c h _ s e t _ s i z e - r - g - 1)
* c h o o s e ( r a n k - 1 , r )
* c h o o s e ( r a n k _ t i e s - 1 , g )
* min (1 , ( q u e r y _ s e t _ s i z e - r ) / ( g + 1) ) ) )
) ) < / c o n s t a n t >
< c o n s t a n t name = " d a t a _ s i z e " > f o r a l l s u m ( s o u r c e s . d a t a _ s i z e ) < / c o n s t a n t >
< c o n s t a n t name = " t o p i c _ s i z e " > f o r a l l s u m ( s o u r c e s . t o p i c _ s i z e ) < / c o n s t a n t >
< c o n s t a n t name = " t o p i c _ p e r c e n t a g e " > t o p i c _ s i z e / d a t a _ s i z e < / c o n s t a n t >
< c o n s t a n t name = " a c t u a l _ r e s p o n s e _ s i z e " > t o p i c _ s i z e < / c o n s t a n t >
< c o n s t a n t name = " p e r c e i v e d _ r e s p o n s e _ s i z e " > t o p i c _ s i z e < / c o n s t a n t >
< c o n s t a n t name = " r e c a l l _ p o r t i o n " > q u e r y _ p r o b a b i l i t y * a c t u a l _ r e s p o n s e _ s i z e < / c o n s t a n t >
< log name = " t o p i c _ s i z e " > t o p i c _ s i z e < / log >
< log name = " rank " > rank </ log >
< log name = " q u e r y _ p r o b a b i l i t y " > q u e r y _ p r o b a b i l i t y < / log >
< / n o d e >
< !- - Mid - L e v e l A g g r e g a t i o n N o d e s - ->
< node type = " a g g r e g a t o r " r e c u r s e = " 5 " >
< p a r a m > m a n a g e r : m a n a g e r , e n v i r o n m e n t : e n v < / p a r a m >
< is - a > s o u r c e ( manager , env ) < / is - a >
< is - a > m a n a g e r < / is - a >
< has - a n a m e = " a g e n t " d i s c r i m i n a t o r = " w o r k _ l o a d " > a g e n t < / has - a >
< has - a name = " s o u r c e s " size = " n u m _ s o u r c e s " > s o u r c e ( this , env ) < / has - a >
< v a r i a b l e name = " n u m _ s o u r c e s " > 2 ,3 ,4 < / v a r i a b l e >
< c o n s t a n t name = " q u e r y _ r a t e " > m a n a g e r . q u e r y _ r a t e < / c o n s t a n t >
< c o n s t a n t name = " r e s p o n s e _ r a t e " > 0 < / c o n s t a n t >
< !- - D e t e r m i n e the w o r k l o a d the a g g r e g a t o r w i l l see - ->
< c o n s t a n t name = " a r r i v a l _ r a t e " > q u e r y _ r a t e < / c o n s t a n t >
< c o n s t a n t name = " s e r v i c e _ r a t e " > env . r e s p o n s e _ s e r v i c e _ r a t e / n u m _ s o u r c e s < / c o n s t a n t >
< c o n s t a n t name = " e f f e c t i v e _ s e r v i c e _ r a t e " > a r r i v a l _ r a t e / a g e n t . w o r k _ l o a d < / c o n s t a n t >
< c o n s t a n t name = " p o i s s o n _ r a t e " > e f f e c t i v e _ s e r v i c e _ r a t e - a r r i v a l _ r a t e < / c o n s t a n t
>
< c o n s t r a i n t name = " a r r i v a l _ r a t e " op = " & lt ;= " > e f f e c t i v e _ s e r v i c e _ r a t e < / c o n s t r a i n t
>
< m o d i f i e r n a m e = " a g e n t . w o r k _ l o a d " op = " + " > a r r i v a l _ r a t e / s e r v i c e _ r a t e < / m o d i f i e r
>
< c o n s t a n t name = " l o c a l _ p d f _ l i s t " > f o r r a n g e ( x , 0 , ( d i s t _ r a n g e / d i s t _ s t e p ) , p o i s s o n _ r a t e * e ^( - p o i s s o n _ r a t e * ( x ) * d i s t _ s t e p ) /* Exp pdf f ( x )
*/
) < / c o n s t a n t >
< c o n s t a n t name = " l o c a l _ c d f _ l i s t " > f o r r a n g e ( x , 0 , ( d i s t _ r a n g e / d i s t _ s t e p ) ,
1 - e ^( - p o i s s o n _ r a t e * ( x +1) * d i s t _ s t e p ) /* Exp cdf F ( x )
*/
) < / c o n s t a n t >
< c o n s t a n t name = " s o u r c e _ p d f _ l i s t " > f o r r a n g e ( x , 0 , ( d i s t _ r a n g e / d i s t _ s t e p ) , f o r a l l p r o d ( f o r a l l ( s , sources , l i s t i t e m ( s . cdf_list , x ) ) )
* f o r a l l s u m ( f o r a l l ( s , sources , l i s t i t e m ( s . pdf_list , x ) / l i s t i t e m ( s . cdf_list , x ) ) )
) < / c o n s t a n t >
< c o n s t a n t name = " s o u r c e _ c d f _ l i s t " > f o r r a n g e ( x , 0 , ( d i s t _ r a n g e / d i s t _ s t e p ) , f o r a l l p r o d ( f o r a l l ( s , sources , l i s t i t e m ( s . cdf_list , x ) ) )
) < / c o n s t a n t >
< c o n s t a n t name = " p d f _ l i s t " > f o r r a n g e ( x , 0 , ( d i s t _ r a n g e / d i s t _ s t e p ) , f o r a l l s u m ( f o r r a n g e ( i , 0 , x +1 ,
l i s t i t e m ( s o u r c e _ p d f _ l i s t , i ) * l i s t i t e m ( l o c a l _ p d f _ l i s t , x - i ) * d i s t _ s t e p
) ) ) < / c o n s t a n t >
< c o n s t a n t name = " c d f _ l i s t " > f o r r a n g e ( x , 0 , ( d i s t _ r a n g e / d i s t _ s t e p ) , f o r a l l s u m ( f o r r a n g e ( i , 0 , x +1 ,
l i s t i t e m ( s o u r c e _ p d f _ l i s t , i ) * l i s t i t e m ( l o c a l _ c d f _ l i s t , x - i ) * d i s t _ s t e p
) ) ) < / c o n s t a n t >
< !- - D e t e r m i n e the s e r v i c e and r e s p o n s e t i m e s - ->
< c o n s t a n t name = " s e r v i c e _ t i m e " > f o r a l l s u m ( f o r r a n g e ( x , 1 , ( d i s t _ r a n g e / d i s t _ s t e p ) ,
( x * d i s t _ s t e p ) * ( l i s t i t e m ( pdf_list , x ) * d i s t _ s t e p ) ) ) < / c o n s t a n t >
< c o n s t a n t name = " o v e r h e a d _ t i m e " >
env . m e s s a g e _ l a t e n c y /* Q u e r y d o w n to s o u r c e s
*/
+ max ( s o u r c e s . o v e r h e a d _ t i m e ) /* S u b o r d i n a t e o v e r h e a d
*/
+ env . m e s s a g e _ l a t e n c y /* R e s p o n s e up to m a n a g e r
*/
< / c o n s t a n t >
< c o n s t a n t name = " r e s p o n s e _ t i m e " > o v e r h e a d _ t i m e + s e r v i c e _ t i m e < / c o n s t a n t >
< c o n s t a n t name = " d a t a _ s i z e " > f o r a l l s u m ( s o u r c e s . d a t a _ s i z e ) < / c o n s t a n t >
< c o n s t a n t name = " t o p i c _ s i z e " > f o r a l l s u m ( s o u r c e s . t o p i c _ s i z e ) < / c o n s t a n t >
< m o d i f i e r name = " m a n a g e r . r e s p o n s e _ r a t e " op = " + " > r e s p o n s e _ r a t e / n u m _ s o u r c e s < / m o d i f i e r >
< log name = " d a t a _ s i z e " > d a t a _ s i z e < / log >
< log name = " t o p i c _ s i z e " > t o p i c _ s i z e < / log >
< log name = " r e s p o n s e _ t i m e " > r e s p o n s e _ t i m e < / log >
< log name = " p o i s s o n _ r a t e " > p o i s s o n _ r a t e < / log >
< log name = " s e r v i c e _ t i m e " > s e r v i c e _ t i m e < / log >
< / n o d e >
< !- - L e a f S o u r c e N o d e s - ->
< node type = " d a t a b a s e " >
< p a r a m > m a n a g e r : m a n a g e r , e n v i r o n m e n t : e n v < / p a r a m >
< is - a > s o u r c e ( manager , env ) < / is - a >
< has - a n a m e = " a g e n t " d i s c r i m i n a t o r = " w o r k _ l o a d " > a g e n t < / has - a >
< !- - D e t e r m i n e the w o r k l o a d the a g g r e g a t o r w i l l see - ->
< c o n s t a n t name = " q u e r y _ r a t e " > m a n a g e r . q u e r y _ r a t e < / c o n s t a n t >
< c o n s t a n t name = " a r r i v a l _ r a t e " > q u e r y _ r a t e < / c o n s t a n t >
< c o n s t a n t name = " s e r v i c e _ r a t e " > env . p r o c e s s _ s e r v i c e _ r a t e < / c o n s t a n t >
< c o n s t a n t name = " e f f e c t i v e _ s e r v i c e _ r a t e " > a r r i v a l _ r a t e / a g e n t . w o r k _ l o a d < / c o n s t a n t >
< c o n s t a n t name = " p o i s s o n _ r a t e " > e f f e c t i v e _ s e r v i c e _ r a t e - a r r i v a l _ r a t e < / c o n s t a n t
>
< c o n s t r a i n t name = " a r r i v a l _ r a t e " op = " & lt ;= " > e f f e c t i v e _ s e r v i c e _ r a t e < / c o n s t r a i n t
>
< m o d i f i e r n a m e = " a g e n t . w o r k _ l o a d " op = " + " > a r r i v a l _ r a t e / s e r v i c e _ r a t e < / m o d i f i e r
>
< c o n s t a n t name = " l o c a l _ p d f _ l i s t " > f o r r a n g e ( x , 0 , ( d i s t _ r a n g e / d i s t _ s t e p ) , p o i s s o n _ r a t e * e ^( - p o i s s o n _ r a t e * ( x ) * d i s t _ s t e p ) /* Exp pdf f ( x )
*/
) < / c o n s t a n t >
< c o n s t a n t name = " l o c a l _ c d f _ l i s t " > f o r r a n g e ( x , 0 , ( d i s t _ r a n g e / d i s t _ s t e p ) ,
1 - e ^( - p o i s s o n _ r a t e * ( x +1) * d i s t _ s t e p ) /* Exp cdf F ( x )
*/
) < / c o n s t a n t >
< c o n s t a n t name = " p d f _ l i s t " > l o c a l _ p d f _ l i s t < / c o n s t a n t >
< c o n s t a n t name = " c d f _ l i s t " > l o c a l _ c d f _ l i s t < / c o n s t a n t >
< c o n s t a n t name = " s e r v i c e _ t i m e " > f o r a l l s u m ( f o r r a n g e ( x , 1 , ( d i s t _ r a n g e / d i s t _ s t e p ) ,
( x * d i s t _ s t e p ) * l i s t i t e m ( pdf_list , x ) * d i s t _ s t e p ) ) < / c o n s t a n t >
< c o n s t a n t name = " o v e r h e a d _ t i m e " >
env . m e s s a g e _ l a t e n c y /* R e s p o n s e up to
m a n a g e r */
< / c o n s t a n t >
< c o n s t a n t name = " r e s p o n s e _ t i m e " > o v e r h e a d _ t i m e + s e r v i c e _ t i m e < / c o n s t a n t >
< c o n s t a n t name = " d a t a _ s i z e " > 100 < / c o n s t a n t >
< c o n s t a n t name = " t o p i c _ p e r c e n t a g e " > 0.8 < / c o n s t a n t >
< c o n s t a n t name = " t o p i c _ s i z e " > d a t a _ s i z e * t o p i c _ p e r c e n t a g e < / c o n s t a n t >
< m o d i f i e r name = " m a n a g e r . r e s p o n s e _ r a t e " op = " + " > q u e r y _ r a t e < / m o d i f i e r >
< log name = " d a t a _ s i z e " > d a t a _ s i z e < / log >
< log name = " t o p i c _ s i z e " > t o p i c _ s i z e < / log >
< log name = " r e s p o n s e _ t i m e " > r e s p o n s e _ t i m e < / log >
< log name = " p o i s s o n _ r a t e " > p o i s s o n _ r a t e < / log >
< / n o d e >
< !- - A g e n t s - ->
< n o d e t y p e = " a g e n t " a b s t r a c t = " true " >
< c o n s t a n t name = " w o r k _ l o a d " > 0 < / c o n s t a n t >
< / n o d e >
< node type = " r e g u l a r _ a g e n t " n a m e = " a g e n t " s i z e = " 50 " >
< is - a > a g e n t < / is - a >
< / n o d e >
< !- - T y p e s - ->
< node type = " m a n a g e r " a b s t r a c t = " true " >
< is - a > r o l e < / is - a >
< c o n s t a n t name = " r e s p o n s e _ t i m e " > 0 < / c o n s t a n t >
< c o n s t a n t name = " q u e r y _ r a t e " > 0 < / c o n s t a n t >
< / n o d e >
< n o d e t y p e = " s o u r c e " a b s t r a c t = " true " >
< is - a > r o l e < / is - a >
< p a r a m > m a n a g e r : m a n a g e r , e n v i r o n m e n t : e n v < / p a r a m >
< c o n s t a n t name = " r e s p o n s e _ t i m e " > 0 < / c o n s t a n t >
< c o n s t a n t name = " t o p i c _ s i z e " > 0 < / c o n s t a n t >
< c o n s t a n t name = " d a t a _ s i z e " > 0 < / c o n s t a n t >
< / n o d e >
< node type = " role " a b s t r a c t = " true " >
< c o n s t a n t name = " e " > 2 . 7 1 8 2 8 1 8 3 < / c o n s t a n t >
< c o n s t a n t name = " d i s t _ s t e p " > 10 < / c o n s t a n t >
< c o n s t a n t name = " d i s t _ r a n g e " > 4 0 0 0 < / c o n s t a n t >
< / n o d e >
< / o r g a n i z a t i o n >
APPENDIX E